基于ARM9的嵌入式Zigbee网关设计与实现
μC/OS-II模拟层相关代码编写;
●与μC/OS-II相关的一些结构和函数;
●lib_arch中库函数的实现;
●STR912网络驱动程序编写。
完成以上代码移植的工作后,LwIP就可以顺利运行在μC/OS-II下,主要通过以下程序完成LwIP的初始化及运行:
main(){
OSInit();//μC/OS-II初始化
OSTaskCreate(lwip_init_task,LineNo11,lwip_init_stk[TASK_STK_SIZE-1], 0); //创建LwIP初始化任务
OSTaskCreate(usr_task,LineNo12,usr_stk[TASK_STK_SIZE-1],1);//创建用户任务
OSStart();//启动LwIP }
在main函数中创建了lwip_init_task来初始化LwIP任务(优先级为0)和usr_task用户任务(优先级为1)。需要指出的是,在lwip_init_task任务中除了完成初始化硬件时钟和LwIP本身等工作之外,还创建了tcpip_thread(优先级为5)和tcpecho_thread(优先级为6),其中tcpip_thread才是LwIP的主线程,也是应该先创建的。
3.2 μC/OS-II下的Zigbee协议栈的实现
我们在该网关平台上运行自主编写Zigbee协议栈的子集ez_PAN。ez_PAN目前还很不完善,只实现了Zigbee的部分关键功能,仅支持星型和簇状网络(Cluster),支持网络的动态组网配置和动态绑定等。ez_PAN协议栈结构如图4所示:
图4 ez_PAN协议栈结构
下面给出ez_PAN 协议栈上的协调器(Coordinator)、路由器(Router)和精简节点(RFD)实现的关键代码。Coordinator通过aplFormNetwork()函数建立网络,等待其它节点(Router和RFD)的加入,主要程序如下:
Main()
{
halInit(); //初始化 HAL 层
hawInit();//硬件初始化
aplInit(); //初始化APL
ENABLE_GLOBAL_INTERRUPT(); //开中断
aplFormNetwork(); //建立网络
while(apsBusy)()) {apsFSM();} //等待建立完成
while(1) {apsFSM();} //循环执行协议栈
}
其中调用apsBusy()来判断当前协议栈是否忙于其它程序调用,apsFSM()是在APS层上实现的FSM(有限状态机),被apsBusy周期调用来维持ez_PAN的运行。在Coordinator建立网络完成后,允许Router或RFD节点动态加入,关键代码实现如下:
do {
aplJoinNetwork();//Router或RFD加入网络
while(apsBusy ()) { apsFSM();} //等待加入完成
} while (aplGetStatus ()! =LRWPAN_SUCCESS);
3.3 协议转换软件设计
在TCP/IP协议簇中,以太网的数据传输使用硬件地址(MAC)来进行识别,其中ARP(地址解析协议)完成IP地址和数据链路层使用的硬件地址之间的转换,因此为了保证Zigbee网关在以太网中的通信,首先要实现ARP协议的功能。Zigbee网络中的节点数理论上最多可达65536个,每个节点同样有自己唯一的MAC地址(64位长地址或16位短地址)。参考TCP/IP下的实现机制,我们实现了Zigbee协议中的适配层和ARP,实现IP地址到Zigbee节点地址的映射。协议转换的工作原理如图5所示,下面简单描述一下数据包在网关中从Ethernet向Zigbee单方向转换过程:Ethernet端从某网络接口接收一个正常发往本机的IP数据包,简单判断后向上发给对应的UDP或TCP处理函数进行相应处理,然后再向上发给网关应用程序处理;网关应用程序经过简单分析后,确定要转发给Zigbee网络中的哪个节点,通过Zigbee端的ARP解析出该节点在Zigbee网络中的MAC地址,然后将相应数据包成功交至该节点,这样就完成此次从Ethernet向Zigbee端的协议转换。Zigbee向Ethernet端转换类似,不再赘述。
图5 网关协议转换框图
4 结论
本文设计的网关已在我们的“基于Zigbee无线传感器网络的煤矿井下定位跟踪系统”项目中得以实用,取得了较好的效果。经测试该网关具有效率高、响应实时、可靠性高、功耗低,抗干扰能力强等特点,同时具有很好的通用性。由于当前Zigbee技术还在不断的更新和完善中,如何跟踪最新的Zigbee技术来提高网关的性能以及如何提高ez_PAN的多平台可移植性,将是我们以后研究的重点。
本文作者创新点:采用集成Ethernet (MAC)接口的ARM9芯片STR912作为核心扩展设计了一个Zigbee网关,它很好地克服了传统网关架构下Zigbee传输速率的瓶颈,大大降低了协议转换过程中的资源和处理时间消耗。该网关设计思路、技术实现新颖,具有较强的实用性。
参考文献
[1] Zigbee specification v1.1. Zigbee Alliance.http://www.zigbee.org,2006
[2] LwIP v1.2.0 source code. Leon Woestenberg.http://savannah.nongnu.org/projects/lwip/, 2006
[3] Patrick Kinney, Kinney Consulting LLC.Gateways: Beyond the Sensor Network .Zigbee Alliance, 2005
[4] http://www.ece.msstate.edu/~reese/msstatePAN/, 2006
[5] 赵晨,
设计 实现 网关 Zigbee ARM9 嵌入式 基于 相关文章:
- 直接变频接收机设计可实现多标准/多频带运行(10-11)
- 基于蓝牙芯片的无线通信模块设计与开发(02-03)
- 无线通信网络设计与现场测试(10-10)
- WiMAX数据传输加密方案设计与实现(05-25)
- 高性能TD-SCDMA接收机的设计(03-15)
- 初步设计WiMAX射频系统(03-29)