
张昊-基于国产CPU的嵌入式医疗电子无线网络设计.ppt
47页基于国产 CPU的无线医疗电子 设备研究与设计张昊 0110349009研究意义和背景• 医疗电子是综合集成电路、传感器、生物 医学、嵌入式系统、无线通信、网络技术 等的一个综合性的高新技术学科 • 医疗电子是半导体增长最迅速的领域之一 ,根据相关的数据统计,全球医疗电子支 出正以每年15%的速度增长,医疗应用的半 导体的消耗量增长速度高达11%研究意义和背景•2006-2011年中国便携医疗电子市场规模研究意义和背景• 在嵌入式的处理器方面,目前使用最广泛 都是国外厂商生产设计的• 医疗电子无线化是将来发展的趋势传统 的医疗电子设备基本都还不具备无线的功 能,现阶段,已经有通过无线通信网络实 现医疗监控的研究,但是大部分的无线网 络都是基于IPV4的主要工作• 移植Linux内核和Bootloader • 设计并且实现基于IPV6的无线网络协议 • 移植6LoWPAN协议到Linux系统之上• 设计并且实现了医疗应用程序 • 测试系统的功能系统硬件平台和Linux系统移植• Bootloader的移植• Linux系统在ckm5208开发板的移植• Linux根文件系统的制作Bootloader的移植• Bootloader是系统上电后操作系统内核运行 之前的一段小程序,它初始化硬件设备, 准备好软件环境,将系统的软硬件环境带 到一个合适的状态,最终调用操作系统内 核。
• 将高度依赖于所使用的CPU架构的代码,比 如初始化硬件的代码,作为第一阶段 • 第二阶段通常使用C语言来实现,实现比较 复杂的功能Bootloader的移植• CPU的一些参数, pll频率,CPU,AHB, APB频率,全部修改为ck5208CPU的参数• 各个模块的寄存器地址的修改 • 板级的一些配置,主要是SDRAM起始地址 ,Flash起始地址,Linux内核在Flash中存放 的起始地址和内核的大小Linux系统在ckm5208开发板的移植• Linux内核的配置包括CPU型号选择、 MMU、设备驱动、文件系统、NFS等等• ckm5208开发板的板级移植实现板级接口 函数板级接口函数的实现•必须实现的5个板级API接口函数•mach_time_init•初始化具体定时器硬件,并注册定时器中断处理函数•mach_tick•清除定时器中断标志•mach_hwclk•设置或获取当前实时时钟•mach_init_ IRQ•该函数初始化快速中断控制器、设置中断优先级,并设置中断的硬件操作函 数(使能、屏蔽等) •mach_gettimeoffset•获取上次时钟中断发生后到当前所经历的毫秒数。
Linux根文件系统的制作• 编译Linux内核之后,要想使系统启动起来 ,还需要有一个根文件系统根文件系统 的作用是存放系统运行需要的各种工具、 库文件和应用程序等等 • 使用busybox创建根文件系统的busybox的配置和编译• busybox是构建根文件系统最常用的软件工 具包,虽然busybox只是一个单独的可执行 程序,但是却组合了许多常用的Linux命令 和工具 • 指定交叉编译工具和编译选项大小 端、CPU型号、交叉编译工具链前缀) • 配置使用到的Linux命令创建必需的文件和目录• 为了完善文件系统的内容,除此以外,还必须 输入以下命令来创建系统所需要的目录: • #mkdir dev etc lib mnt proc sbin sys root • #mkdir etc/var etc/tmp • inittab文件: sysinit(rcS)、 restart、 ctrlaltdel分别执行的命令 • rcS文件:可以添加一些自动初始化的命令, 比如设置IP地址,挂载由/etc/fstab文件指定的 根文件系统 • fstab文件:指定要挂载的根文件系统医疗电子网络设计• 在网络层,我们决定组建一个基于IPV6的医疗电子 网络。
使用IPV6的好处有以下两点: • 1. IPV6地址丰富,解决了IPV4地址不足的问题,网 络中每个节点都有自己独立的网络地址 • 2. 如果该无线医疗电子网络接入因特网,外部网络 可以直接访问该网络的内部节点通常的无线网络 的网络层都没有统一的标准,不同网络实现的方法 不太相同,因此外部网络想要访问该网络的内部节 点就必须通过网关进行协议的转换,这又额外增加了设备成本而对于使用IPV6协议的网络,由于使 用了相同的IP协议,因此外部网络可以直接访问其 中的节点,这样可以简化网络设计,降低设备成 本医疗电子网络设计• 有多个节点,但是只有一个控制器 • 由ck5208开发板与医疗电子板和CC2420组 成的一个系统称为一个节点 • 由PC、ckm5208开发板和CC2420组成的系统 称为控制器医疗电子网络设计• 为了建立和维护无线网络,必须要发送和处理 三种形式的数据包,分别是路由请求包、路由 广播包和路由汇报包 • 路由请求包是每个新加入的节点发送的,是ICMP广播包,网络中每个收到该数据包的节点 都会向新加入的节点回应路由广播包 • 路由广播包是ICMP广播包,内容包括网络地址 前缀和该节点路由表中默认路由的总链路代 价。
• 路由汇报包的内容是该节点的路由表的内容 • 控制器根据路由汇报包的内容建立和维护整个 无线网络的拓扑结构路由表信息• 下一跳节点(ID) • 总链路代价C • 长期发送数据包总数LT • 长期发送数据包成功数LS • 近期发送数据包总数ST • 近期发送数据包成功数SS • 前驱节点链路代价P网络系统的软件架构• 路由协议程序• 射频适配程序6LoWPAN协议的实现• IPV6包头过长,超过zigbee协议最大包长 127字节• 节省节点的能量消耗 • 在上层有数据来的时候先经过6LoWPAN的 处理压缩之后,再通过驱动CC2420发送数 据,在CC2420收到数据的时候,将数据经 过6LoWPAN的还原之后交给Linux内核,实 现无线收发数据包的功能6LoWPAN协议的实现• 压缩算法会先压缩IPV6报头,再压缩UDP报头,其 中IPV6报头部分采用HC1编码压缩,UDP报头采用 HC2方式压缩• 压缩之后会形成2个域,第一个域是HC1编码域和 HC2编码域,大小都是1字节;第二个域是IPV6报 头和UDP报头未被压缩的字段,该部分长度不是 固定的6LoWPAN协议的实现• 6LowPAN首部压缩的处理方案如下[]: •(1)首部中所有在传输过程中保持不变的字 段都可以完全压缩掉; •(2)首部中变化的可以预先知道的字段,也 可以压缩掉; •(3)首部中由链路层可获知的信息字段可以 压缩掉; •(4) 报头中某些字段是支持某些特殊应用或 者可选的可以被压缩IPv6首部压缩•(1)版本。
该字段指明使用的IP版本我们使用IPV6,可以完全压 缩 •(2)通信量类(traffic class)和流标号(flow label)对我们的无线医疗电子 没有意义,可以压缩 •(3)有效载荷长度该字段可以从链路层的帧长度(Frame Length) 得到,可以压缩 •(4)扩展首部该字段是为了识别紧跟IPv6头后的包头类型,在我们 的无线医疗电子网络,所使用到的报文只会是ICMP、UDP、TCP中的 一种,所以该字段可以用2bit来表示,减少了6bit空间 •(5)跳数限制用来防止数据报在网络中无限期地存在,不可以压 缩 •(6)源地址和目的地址IPV6地址是由网络前缀和接口标识两部分 组成的如果是链路本地地址,则网络前缀是FE80::/64,而接口标识 可以由链路层推断,因此,使用如果链路本地地址,则可以压缩该字 段IPv6首部压缩•第一字节是IPV6类型字段,表示后面跟随的是IPV6报头的数据包 •Ipv6sourceaddress和Ipv6destinationaddress字段IPV6地址由网络前缀和接口 ID组成,这两个字段表示的是对网络前缀和接口ID的压缩情况,其中0表示未 被压缩,1表示被压缩。
网络前缀如果被压缩,则前缀是FE80/64,接口ID如 果被压缩,则在链路层可以得到网络前缀或者接口ID如果未被压缩,则放 在未压缩域里 •TrafficClass&FlowLabel:如果该字段为0表示未被压缩,该信息被放置在后面的 未压缩域中,如果该值为1则表示流量类型和流标签被压缩掉了 • NextHeader:下一个首部字段如果该字段的值为00,则表示IPv6报头的 NextHeader字段未被压缩,被放置在后面的未压缩域中当该字段的值为01 、10和11时,表示IPv6网络层的负载分别是UDP、ICMP和 TCP报文 • HC2encoding:该字段如果为0,表示HC1字段之后的是未压缩域,如果该字段 的值为1,则表示HC1域之后的是HC2编码域,HC2编码域之后是未压缩域UDP报头压缩• UDpsoureeport和UDPdestinationPort这两个字段表示的是 源端口和目的端口的压缩情况,如果是0表示没被压缩, 在后面的未压缩域里,如果是1,则被压缩为4bit,在随后 的未压缩域里只有当端口号前12bit为0XF0B时才会进行 端口压缩 • Length字段,如果为0表示未压缩,存储在未压缩域中, 为1表示被压缩,可以通过IPV6报头长度信息得到。
• Reserved:保留字段应用软件的总体设计• 节点每2秒钟向控制器汇报一次医疗电子设 备检测到的参数控制器收到节点发来的 数据包之后,解析该包的内容,并将结果 图形化显示出来 • 控制器除了接收节点发来的医疗电子参数 之外,还可以向节点发送命令节点在接 收到这些信息之后会进行相关的处理节点应用软件模块• 程序一直循环,不断读取来自socket端口的 UDP数据包UDP数据包的内容是控制节点 行为的命令 • 关闭/启动测量( CPU将不再读取串口的数 据,也不会向控制器汇报测量数据) • 立即汇报数据(节点立即将当前测量到的 数据汇报给控制器) • 更改汇报周期(将汇报周期修改为设定的 值)控制器中CK5208 CPU应用软件• 在网络拓扑结构发生变化之时将拓扑结构发送 给PC主机 • 一直循环调用recv函数读取来自UDP socket的 数据 • 如果该数据包来自节点,那么一定是节点的医 疗电子测量数据,将该数据包调用send函数发 送给PC主机; • 如果该数据包来自PC主机,则一定是对节点发 送的控制命令,通过网络层转发给对应节点即 可控制器中PC主机应用软件• 通过UDP socket同CK5208 CPU通信,接收节 点的医疗电子测量数据和网络的拓扑结构 信息,然后将其图形化显示出来。
• 提供图形化方式同用户交互,等待用户输 入控制节点行为的命令外网访问内部节点Bootloader测试Linux启动测试网络测试• 首先开启节点ID为1和2的两个节点,将其距离 放置得离控制器较近网络测试• 我们加入节点ID为3的节点,将其位置放置 得离控制器较远网络测试• 我们再将节点2电源关掉应用测试6LoWPAN测试•使用节点1(地址为fec0::1)发送了一个8字节的UDP数据包,其内容为“0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07” •IPV6的报文内容为 •0x60, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x41, •0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, •0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, •0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, •0x00, 0x00, 0x00。












