基于低功耗A R M的物联网Wi-F i接入方案设计与实现

2014-03-24 03:22陈广飞崔立鹏
医疗卫生装备 2014年3期
关键词:固件低功耗命令

李 祯,陈广飞,崔立鹏

基于低功耗A R M的物联网Wi-F i接入方案设计与实现

李 祯,陈广飞,崔立鹏

目的:设计一种低功耗物联网Wi-Fi接入方案,便于传感器网络接入互联网。方法:采用低功耗ARM作为主控芯片,驱动Marvell 88W8686网卡芯片,并移植LWIP(轻量型TCP/IP)协议,共同实现Wi-Fi网络的加网、建立TCP连接、发送数据等一系列工作。结果:经测试,本系统可快速连接Wi-Fi网络,最大发送电流在170 mA以内,灵敏度为-85 dBm。结论:该系统具有功耗低、速度快、支持多协议等优点,非常适合应用于物联网网关以及传感器节点的设计方案中,具有广阔的发展空间。

物联网;ARM;Wi-Fi

0 引言

电子信息技术的发展和计算机的出现,以及互联网、移动通信技术的问世以前所未有的方式改变着人类的生活[1]。与此同时,我们不仅仅满足于人与人之间的通信,更希望能够在物品与物品之间、人与物品之间,甚至人与现实环境之间实现高效的信息交互。

物联网概念的提出为满足人类的新要求带来了希望。概括来说,物联网是信息技术与物理环境的高度融合。物联网是将物品信息通过传感器网络与互联网联接,进行信息交换,以实现智能化识别、定位、跟踪、监控和管理的一种网络,是信息化在人类社会综合应用达到的更高境界。

传感器网络是物联网的关键技术之一,由很多传感器节点组成。这些节点具有数据采集、处理、无线通信和自组织的能力,协作完成大规模复杂的监测任务,其组成包括传感器、微处理器、通信模块以及电源管理模块。网络中通常只有少量的sink节点负责发布命令和收集数据,实现与互联网的通信[2]。在工作过程中,传感器节点可以通过短距离的无线通信技术将信息直接传送至Internet,也可先传送至sink节点,汇总后再发送给Internet,方案视具体应用情况而定。

在多种短距离的无线通信方式中,蓝牙(Blue tooth)、ZigBee都具有低成本、低功耗的优点,但传输距离近、速率低使得其应用范围受限。随着低功耗Wi-Fi技术的发展以及业界与IEEE 802.11标准的普遍认可,基于Wi-Fi的传感器网络接入Internet方案越发受到人们的青睐。IEEE 802.11已经成为事实上的局域网标准,与TCP/IP协议完美结合,一些网络管理工具都在此基础上开发,相应的知识体系被建立并完善,IT技术人员也已经很熟悉管理Wi-Fi网络,使其在无线智能终端上得到广泛应用。传感器网络采用Wi-Fi接入技术,还可节省开发需兼容私有协议网关的大量投入,非常有利于物联网的应用发展[3]。

1 系统硬件设计

本方案采用STM32作为系统微控制器,将传感器网络中的数据整合,一方面,通过SPI口传送数据;另一方面,驱动Wi-Fi芯片下载固件程序,并使其完成初始化、扫描、加网、建立连接和发送数据等一系列操作。数据传输至上位机接收软件,可进一步将数据整合并发送至Internet,实现互联网接入。其系统组成如图1所示。

图1 系统组成

1.1 STM32介绍

STM32系列是为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核,按性能分成2个不同的系列——STM32F103“增强型”系列和STM32F101“基本型”系列。考虑到移植协议栈需要较大的存储空间,本方案采用 “增强型”STM32F103RE,它具有72 MHz主频、512 KB Flash以及64 KB SRAM。

1.2 Marvell 88W8686芯片介绍

88W8686是Marvell公司针对移动电话、PDA、数字摄像机等移动应用推出的一款低成本、低功耗、高集成度的Wi-Fi SoC芯片。它的物理层采用一个802.11a/b/g基带,可实现多种调制技术,如DSSS、OFDM、DBPSK、DQPSK、CCK和QAM等,并且可在2.4和5 GHz双频无线收发,兼容性强。MAC层定义了2种介质访问控制方式,即基本访问机制和集中控制访问机制。本方案中采用基本访问机制中的载波侦听多路访问/冲突避免(CSMA/CA)来实现无线工作站点和接入点之间的媒介共享。同时,该芯片还提供了电源管理和数据加密功能。以上所有的功能模块由其内部自带的ARM处理器来管理协调。

2 Wi-Fi接入方案驱动程序的实现

88W8686的驱动程序框架如图2所示。这里的主机驱动(host driver)负责与 88W8686内的固件(firmware)进行通信。其中firmware是Wi-Fi SoC芯片中运行的一段程序,系统上电启动之后,处理器将其下载到Wi-Fi芯片中,之后该firmware即可运行在SoC内,基于SoC内部的ARM CPU、MAC和基带模块、射频模块以及硬件接口等实现硬件接口控制、数据服务、802.11 MAC层管理、硬件控制等功能。host driver与firmware之间有数据通道与命令通道2个通道。数据通道用来传输要发送和接收的数据,命令通道用来传输控制命令。host driver将标准802.3帧发送给 SoC内的WLAN firmware,WLAN firmware将其处理为802.11帧之后通过无线发送出去;WLAN firmware接收到802.11帧之后,将其转化为802.3帧,然后通过数据通道发送给host driver。

2.1 硬件接口驱动

本方案中,控制器与Wi-Fi芯片通过SPI口通信。具体连接方法如图3所示。

这里采用的GSPI口为SPI接口的增强版,其接口分别为 SPI_CLK、SPI_ SDI、SPI_SCSn、SPI_ SDO、SPI_SINTn。与标准SPI相比,增加了一个中断信号线,可使其与STM32上的一个设置为输入的GPIO管脚相连,通过外部中断来实现具体功能。

图2 驱动程序分层结构

图3 STM32与Marvell 88W8686硬件接口

2.2 固件下载

系统上电后只能进行一些寄存器的读写操作。想要实现Wi-Fi芯片的功能,需要先下载helper,然后helper再与host一同工作,将88W8686的固件下载至芯片内,最后检查固件的运行状态,若固件的运行状态良好才开始进行其他初始化操作。这里给出使用SPI接口下载固件的步骤[4],如图4所示。

2.3 网卡初始化

在驱动代码中构建lbs_private结构体,其中包括网卡设备的全部信息。在主程序中建立newpower_Wi-Fi_iface结构体,这里定义了对网卡设备进行

操作的具体函数。

固件下载成功后,通过调用scan_work()函数扫描Wi-Fi网络,并将结果存放至priv->network数据域中,返回并打印存放于exist_ap_list中的扫描结果名单。之后调用assoc_ap()函数向firmware发送身份验证信息以及与指定AP的关联命令,这其中包括事先定义好的ssid与密码。

图4 固件下载及启动流程

2.4 收发命令与数据

命令收发通过control path来完成,host驱动和88W8686固件之间的交互采用请求-应答模式。STM32发出命令CMD_XXX,88W8686收到命令后进行处理,返回命令结果CMD_RES_XXX。命令交互采用串行结构,主机驱动必须等到接收到当前请求命令的响应后, 才能发送下一个命令[5](CMD_CODE_DNLD命令除外,该命令不需要返回命令响应),如图5所示。

图5 命令交互模式

88W8686的命令可实现固件重启与初始化、基带/MAC/射频控制、状态信息、扫描、关联、认证、电源管理等功能。

数据收发通过data path来完成。每个通过接口传输的数据包都必须添加一个包描述符(packet descriptor),数据包的帧格式如图6所示。

图6 数据包帧结构

2.5 完整加网流程

以加入一个典型的Infrastructure网络并进行数据收发为例,host驱动的工作流程如下:

(1)首先使用CMD_CODE_DNLD命令下载固件至88W8686,设置固件为基础模式(Infrastructure模式);

(2)等待固件下载完成并启动;

(3)使用CMD_802_11_SCAN命令,搜索当前环境中的无线网络;

(4)使用CMD_802_11_AUTHENTICATE命令,设置固件为开放认证模式;

(5)使用CMD_802_11_ASSOCIATE命令,与AP建立关联。

至此,终端即与AP建立起连接,可进行数据的收发,如图7所示。

图7 通信流程示意图

3 LWIP协议移植

LWIP(light weight IP)是瑞士计算机科学院(Swedish Institute of Computer Science)的Adam Dunkels等开发的TCP/IP协议栈。该协议栈适用于相对PC而言资源较少的嵌入式系统,且代码开源,无论是否有操作系统的支持均可运行。

LWIP通过内存共享的方式实现应用层与底层协议之间的通信,从而避免了内存复制产生的性能损失。因此,它只需要不超过100 KB的RAM和40 KB左右的ROM就可以运行,这使LWIP协议栈能够在低端嵌入式系统中使用。

LWIP的源码和详细文档可从其官方网站获得。在本项目中,采用LWIP的稳定版本LWIP v1.4.0。

LWIP的移植包括数据类型及定义、lib_arch中的一些库函数、网络接口层的移植等[6]。

3.1 数据类型及定义

在/src/include/lwip目录下,一些头文件包含了

有关编译器或处理器结构的定义。在这里,需要将所有的定义与STM32相匹配。首先,在数据类型以及长度方面,分别定义了u8_t为无符号8位数据,s8_t为有符号8位数据,16位和32位定义与此类似。其次,在字节序的转换方面,#define PACK_STRUCT_ FIELD(x)定义了小端模式。另外,C语言的结构体默认为4字节对齐,但LWIP在处理数据包时是根据不同数据的长度来读取的,因此,在定义结构体时,一定要使用_packed关键字,让编译器放弃字节对齐。例如宏定义 #define PACK_STRUCT_BEGIN _packet就采用了这种方法。

3.2 库函数

LWIP用到了一些外部库函数,这些函数通常与用户使用的处理器或编译器有关,因此,需自行编写。修改数据大小端的函数为:

u16_t htons(u16_t n);//16位数据高低字节交换u16_tntohs(u16_t n);

u32_t htonl(u32_t n);//32位数据大小端对调u32_tntohl(u32_t n);

对字符串的操作定义函数包括:

char*strncpy(char*s1,const char*s2,size_t n);//将s1的前n位拷贝至s2

intstrncmp(const char*s1,const char*s2,intlen);//字符串s1与s2比较

intstrlen(const char*str);//计算字符串长度

void_membitcpybl(void*dest,const void*src,intdestoffset,intsrcoffset,size_tnbits);//用于小端模式以字节为单位的内存数据块之间的互相拷贝

这些函数可参考标准函数库实现。

3.3 网络接口层移植

LWIP向上提供应用层接口,向下提供与硬件相关的网络接口,与网卡的驱动程序相关联。在驱动中需要实现网络接口的收、发、初始化以及中断服务程序。

LWIP通过netif结构体来描述硬件网络接口,其中包含了对接口的属性变量以及收发函数的定义。所有的网络接口都保存在一个全局链表中,并通过结构体中的next指针连接。上层协议通过调用netif结构体中的方法netif→input()及netif→output()进行以太网packet的收、发等操作。

对网络接口的移植主要就是以下几个函数:err_t(*input)(structpbuf*p,structnetif*inp);//该函数被驱动调用,传递数据包给TCP/IP栈

err_t(*output)(structnetif*netif,structpbuf*p,structip_addr*ipaddr);//该函数被IP模块调用,向以太网上发送一个数据包,函数要先通过IP地址获得解决硬件地址,然后发包

err_t(*linkoutput)(structnetif*netif,structpbuf *p);//该函数提供直接发送数据包的接口。

4 讨论

经实验测试,本系统可顺利完成扫描加网等功能,并通过路由器与Internet连接,最大发送电流在170 mA以内,灵敏度为-85 dBm。将Wi-Fi技术加入传感器节点,使得传感器网络与Internet的连接更加简单易行,也为物联网应用提供了更加广阔的平台。在医用物联网中,通过无线传感器网络、Wi-Fi、Internet、数据库等技术,提供生理参数感知与监测、健康管理与慢病管理、紧急医疗救助、移动医护服务、医用资源管理、远程手术、电子健康档案、区域健康监测与一体化等服务[7-8]。

在智能家居系统中,可为电视、冰箱等家用电器、烟雾报警器、电灯等扩展Wi-Fi功能,实现对其远程开关控制;或结合医用物联网,为家庭健康终端扩展Wi-Fi功能,实现远程家庭保健。

Wi-Fi技术除了在终端上使用外,还可以作为物联网网关,与ZigBee、蓝牙、RFID或其他短距离的无线通信技术结合起来,以网关的形式实现这些通信技术的Internet接入。同时它可提供如TCP/IP、HTTP、WebServer等高层应用和图形用户界面,用来进行整个网络中设备的添加、删除、状态查询、参数配置等管理和控制。

物联网的网络通信技术发展日趋成熟。基于Wi-Fi技术的物联网可以充分利用现有的已普及的Wi-Fi网络资源,特别是电信运营商大量部署的“无线城市”网。与3G网络无缝对接来部署和实施,将大大节约网络建设的投入。Wi-Fi技术的普及性、标准化程度高,以及便于安装管理等一系列优点,决定了其将在物联网中得到更广泛的应用。

[1]孙传宁,张雪.物联网概念及关键技术综述[J].福建电脑,2010(12):39-41.

[2]孙其博,刘杰.物联网:概念、架构与关键技术研究综述[J].北京邮电大学学报,2010,33(3):1-9.

[3]Serbulent Tozlu,Murat Senel,Wei Mao,et al.Wi-Fi enabled sensors for internet of things:A practical approach[J].IEEE Communications Magazine,2012,50(6):134-143.

[4]范皖勇.嵌入式Wi-Fi技术研究与应用[D].上海:华东师范大学,2009.

[5]庄艺唐.嵌入式Wi-Fi技术研究及其在语音通信中的应用[D].上海:华东师范大学,2004.

[6]杨晔.实时操作系统uC/OS-II下TCP/IP协议栈的实现[J].单片机与嵌入式系统,2003(7):80-83.

[7]陆家星.面向普适医疗的无线传感器网络研究[D].上海:东华大学,2009.

[8]王升才,周承仙.无线局域网在医疗系统中的应用[J].沈阳工业大学学报,2005,27(3):61-65.

(收稿:2013-04-26 修回:2013-07-15)

Design and Implementation of Wi-Fi Access Solution with Internet of Things Based on Low Power ARM

LI Zhen,CHEN Guang-fei,CUI Li-peng
(General Hospital of the PLA,Beijing 100853,China)

Objective To design a low-powerWi-Fiaccesssolutionwith internetof things to connectsensorsnetwork to Internet. Methods Low-power ARM main controller,Marvell88W8686 network chip and light TCP/IPwere involved in the solution for Wi-Fiaccess,establishing TCP connection,data sending and etc.Results Wi-Finetwork could be accessed to Internet rapidly,with themaximum currentnotmore than 170 mA and sensitivity of-85 dBm.Conclusion The solution results in low-power,high-speed and multi-protocol-compatibleWi-Fiaccess,and thus isworth applying to internet of things gateway and sensor node.[Chinese Medical Equipment Journal,2014,35(3):52-55]

internet of things;ARM;Wi-Fi

R318;TP393.02

A

1003-8868(2014)03-0052-04

10.7687/J.ISSN1003-8868.2014.03.052

解放军总医院临床科研扶持基金(2012FC-ZHCG-005)

李 祯(1988—),女,硕士研究生,研究方向为医疗物联网,E-mail:lizhen_301@163.com。

100853北京,解放军总医院(李 祯,陈广飞,崔立鹏)

猜你喜欢
固件低功耗命令
只听主人的命令
一种高速低功耗比较器设计
一种宽带低功耗四合一接收机设计
移防命令下达后
低功耗便携智能翻译手套系统
低功耗技术在驾驶行为管理模块中的应用
基于SHA1的SCADA系统PLC固件完整性验证方法
基于UEFI固件的攻击验证技术研究*
基于固件的远程身份认证
这是人民的命令