APP下载

基于嵌入式构件的医疗物联网关软件设计与实现

2012-07-03杨绚渊蒋建武

制造业自动化 2012年21期
关键词:以太以太网嵌入式

杨绚渊,蒋建武

(泰州职业技术学院,泰州 225300)

0 引言

日趋激烈的社会竞争导致了亚健康状态人群增多。通过建立健康档案预防重大生理疾病将越来越被大众所接受。健康档案建立要求在家庭部署简单方便易于操作的生理信息采集装置,并能传输到社区医疗服务中心,采集装置的核心是医疗物联网关。

图1 医疗物联接入网关测试模型结构框图

1 总体设计

本文介绍了一种以MK60N512VMD100芯片(以下简称K60)内嵌以太网控制模块(以太网MAC)为核心控制部件的医疗物联网关(以下简称医疗物联网关)的设计方法,同时构建了以集成医用体温传感器与血压传感器作为前端采样装置,医疗物联网关为接入中介,内嵌K60芯片的web service为服务支持,IE浏览器为测试终端的测试模型,通过测试模型验证了本文所设计医疗物联网关的正确性与实用性,医疗物联网关以及测试模型的机构框图如图1所示。

2 硬件设计

医疗物联网关的硬件结构包含三部分内容:K60最小系统、网络输出模块和采样接入模块。本文涉及相关硬件设计在笔者另一篇论文《基于嵌入式构件的医疗物联网关硬件设计与实现》将做详细阐述,在此不再赘述。

3 软件设计

医疗物联网关软件利用SD-FSL-K60嵌入式构件库(以下简称K60构件库)设计,K60构件库中包含了14类针对K60芯片不同功能模块的底层构件封装,在本设计中使用其中的UART、ENTH两部分内容,以下将结合这两个构件介绍医疗物联网关软件的设计。

3.1 UART构件

UART构件是用于实现芯片异步串行通信的功能模块,封装了包括初始化、单字节收发、多字节收发、串行中断开关等8个功能函数。

3.2 ENET 构件

3.2.1 物理层构件

物理层构件函数包括两类,一类是内部函数,用于对MII接口的读写操作,仅限于构件内部访问;第二类是对外接口函数,提供物理层的初始化和网络连接判断功能。物理层初始化完成后,物理层与外部设备之间通过硬件完成二进制比特流的发送。

图2 SD-FSL-K60嵌入式构件库结构图

3.2.2 链路层构件

链路层构件函数用于对链路层初始化以及对于缓冲区数据的收发。初始化操作在主程序开始处调用,发送缓冲区数据函数在网络层封装好数据后向链路层发送时调用,接收缓冲区数据函数在以太帧中断接收时调用。在此层构件中可以获得发送方设备MAC地址,响应信息以太帧的目标从此处获取。

3.2.3 网络层构件

网络层构件完成IP数据报的解析与封装,网络层中包含了IP信息,最主要作用是获取发送放设备的IP地址,响应信息IP数据包的目标IP在此获取。

3.2.4 TCP传输层构件

TCP传输层构件用于完成TCP的握手连接,TCP或UDP数据报文段的解析与封装,提供给应用层调用。

3.3 UART传感器信号采样模块设计

测试模型中UART0模块接收数字体温计采集的体温信息,UART1模块接收血压传感器采集的血压信息。

根据HKT-09系列数字体温传感器使用说明[4]和HKB-08血压模块通信协议V1.0[5],传感器通信参数均为:采用全双工串行通讯接口,1个起始位、8个数据位、1个停止位、无奇偶校验位,波特率57600bps。

具体协议设计利用UART构建中提供的相关接口函数设计即可,此处不做重点讲解。

3.4 Web Service 服务设计

系统提供Web Service 服务需要解决以太网数据帧的接收、以太网数据帧的解析、以太网数据帧的封装和以太网数据帧发送四个问题。

3.4.1 以太网数据帧存储队列

在设计中为了存储以太网数据设计了两个数据存储队列,结构如下:

struct list_head enthdatalist;

struct list_head enthfreelist;

enthdatalist队列用于存储放从外部接收的所有以太网数据帧,帧内容存放到pbuf中。系统在以太网接收中断中将接收数据封装好后插入enthdatalist队列中。在主程序中依次取出该队列中数据进行处理,每次处理完一个节点后将该节点回收存储到enthfreelist中。

3.4.2 以太网数据帧接收设计

当网络数据通过RJ45接口进入到网关后,首先进入物理层收发器(EPT)芯片KSZ8041NL中,EPT芯片完成接收后存入相关寄存器中,并向主控芯片K60发送以太网数据传输中断请求,后继处理过程如图3所示。

3.4.3 TCP数据报解析与封包

当主程序从以太网数据队列enthdatalist摘下一个节点后,首先将其中pbuf内容拷贝到以太网物理帧原始数据包指针中,根据需求分别解析出以太帧头部(Dlc_Header),IP报头(Ip_Header),TCP 报头(Tcp_Header)。

图3 K60 以太网数据帧接收数据流程图

图4 以太帧数据格式图

图5 医疗物联接入网关测试界面

TCP数据报是根据IP报头结构中的ip_prot参数来判断的,当该值为6时为TCP数据报。以下将客户端HTTP请求TCP三次握手以后的以太帧为例介绍系统医疗物联网关TCP响应请求数据封包的方法。

图4为完整的以太帧包含的数据格式,其中应用层首部和用户数据部分是在客户端IE浏览器看到的静态网页的HTML源码。该数据中时间数据通过读取系统时钟获得,体温、收缩压、舒张压以及脉搏数据通过前端采样传感器获得,其他部分为静态网页的固定数据。将以上数据送入字符数组page[]中,等待传输层封装。

TCP数据报头部的源端口号(tcp_srcPort)由为医疗物联网关提供固定值为80;目标端口号(tcp_dstPort)、顺序号(tcp_seqNum)从客户端请求数据包中解析获得;确认号(tcp_ackNum)在三次握手后系统生成;头长(tcp_dataOff)固定为5;标志位(tcp_f l ags)为PUSH与ACK置1;窗口默认最大为0xFFFF;校验和(tcp_chksum)由固定算法获取;紧急指针(tcp_urgptr)默认值为0x00。由此完成TCP封装工作。

IP头部源IP(ip_srcIP[4])由医疗物联网关提供为192.168.1.80;目标IP(ip_dstIP[4])由客户端请求数据包中解析获得;报文总长度(ip_totalLen)由TCP头长,加IP头长,应用层头长和用户数据长度相加获得;分片标识(ip_ID)随机产生,3位标志和13位片内偏移( ip_f l agsOff)取固定值为0x0000;生存时间( ip_timeLive)初始值设为0x80;上层协议(ip_prot)设为0x60,表示上层为TCP协议;校验和( ip_checkSum)按固定算法计算。由此完成IP封装。

以太帧头部源机器地址 (mac_srcMac[6])由医疗物联网关提供,目前设置为00:BA:DB:AD:01:02;目标机器地址(mac_desMac[6])由客户端请求数据包中解析获得;以太帧长度(mac_typLen)由Dlc_Header长度、IP_Header长度、TCP_Header长度、上层协议头长度、用户数据长度以及以太帧结尾长度相加获得。

至此完成了对TCP数据报的以太帧封装,当客户端收到响应信息后显示如图5所示的浏览界面。

4 结束语

本文分析了SD-FSL-K60嵌入式构件库的结构,介绍了利用K60构件库完成设计医疗物联网关的方法,并结合前端医用采样传感器设计了医疗物联网关的测试模型,通过测试验证了医疗物联网关的正确性。本文对于利用内嵌网络模块芯片设计嵌入式网关的应用具有一定的参考价值。

[1] 王宜怀, 吴瑾, 蒋银珍. 嵌入式系统原理与实践——ARM Cortex-M4 Kinetis微控制器[M]. 北京: 电子工业出版社,2012.

[2] 陈安宇. 医用传感器[M]. 北京: 科学出版社, 2008.

[3] 华科医用传感器选型目录V9.1[M]. 合肥华科电子技术研究所, 2011.

[4] HKT-09系列数字体温传感器使用说明[Z]. 合肥华科电子技术研究所, 2011.

[5] HKB-08血压模块通信协议[Z]. V1.0合肥华科电子技术研究所, 2011.

猜你喜欢

以太以太网嵌入式
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
基于活跃节点库的以太坊加密流量识别方法
以太万物理论概述
TS系列红外传感器在嵌入式控制系统中的应用
车易链:做汽车业的“以太坊”
嵌入式PLC的设计与研究
搭建基于Qt的嵌入式开发平台
谈实时以太网EtherCAT技术在变电站自动化中的应用
浅谈EPON与工业以太网在贵遵高速公路中的应用