您现在的位置: 通信界 >> IT >> 技术正文  
 
基于嵌入式ARM-Linux无线ZigBee协调器驱动设计[图]
[ 通信界 / 佚名 / www.cntxj.net / 2012/2/14 8:27:01 ]
 

摘要:以ARM9处理器S3C2410作为嵌入式Linux的系统开发和运行平台,利用适合田间要求的无线ZigBee节点CC2430,在Linux内核中实现协调器的字符驱动,使其通过IO进行数据传输,避免了串口数据传输速率低、数据冗余性差、程序设计繁琐等缺点。详细介绍了该系统的设计和开发过程,包括网络通信协议的选取,bootloader、内核、文件系统以及驱动程序的实现和移植。

农田中大范围的环境信息监测已成为网络应用范围重点之一。针对农田布线不便的特点,ZigBee无线节点网络成为农田信息采集系统的首选,可对其所分布区域内的各种环境和检测对象的信息进行实时的监控[1]。然而,控制下层整个网络状态的核心是上位机ARM处理器,而且上位机与下位机通信大多以串口模式来实现[2-3]。但串口通信模式存在串口传输速率低(波特率双方一致)、传送距离短[4]、数据冗余差(数据校验)以及设计串口协议繁琐(帧格式)等不足。因此本文研究了ZigBee在ARM9内核中的协调器字符驱动,利用I/O传输数据,控制具有协调器驱动的设备在农田任何位置即可组网,以减少协调器的布局,实现方便快捷的动态数据监测。

1 田间监测系统的要求

因监测节点需要零散分布在田间,以监测田间的空气和地表的温度,因此,田间监测系统所需要的技术指标应满足:(1)低功耗。田间采电受到布线限制,因此节点模块的耗电量应尽可能低。(2)低成本。田间需要大量布局节点,投资成本成为广泛实施的制约因素。(3)低复杂度和高可靠性。田间节点开发设备应采用结构简单、采集数据尽可能精确又廉价的设计。综合上述特点,ZigBee可以作为田间无线协议首选。

ZigBee协议是基于IEEE802.15.4标准的低功耗、低速率、低复杂度的双向通信技术。它可工作在国际上免授权的2.4GHz,具有250Kb/s的最高数据传输速率和10~75m的可靠传输距离。ZigBee支持星型、树型、对等和混合型网络拓扑结构,网络中的从设备高达254个。根据如图1所示的节点在网络分布的特点,节点在网络中可实现多条数据链路通信,以选择最佳的路径进行传输,提高了网络通信的可靠性。

基于嵌入式ARM-Linux无线ZigBee协调器驱动设计

协调器是整个网络的核心部分,负责完成整个网络的无线接入和组建,是维持路由器和终端节点之间的数据通信的关键。在田间固定放置协调器节点会浪费大量的资源,若动态地测量田间任意位置的数据,把协调器作为移动设备动态地测量数据则是最好的选择,并且可以减少田间协调器的放置,降低设计难度的成本。

2 嵌入式Linux驱动开发环境的搭建

Linux操作系统环境的搭建如图2所示。

基于嵌入式ARM-Linux无线ZigBee协调器驱动设计

2.1 Bootloader的移植

Bootloader是操作系统内核运行之前运行的一小段程序,它为加载内核提供合适的硬件环境。Bootloader分成Stage1和Stage2两个阶段,具体实现框图如图3所示。

基于嵌入式ARM-Linux无线ZigBee协调器驱动设计

Stage1:主要由汇编实现,包括GPIO驱动、使开发板上电LED闪烁、关闭所有中断、设置系统时钟、关闭看门狗、SDRAM初始化、实现相应驱动(提供更大的执行空间)、NAND Flash初始化(驱动开发板上唯一的固态存储掉电不消失设备)以及设置SP栈指针为Stage2中的C语言代码执行做好准备。

Stage2:实现加电自搬移过程、串口调试信息、函数库、shell命令等扩展功能。

2.2 内核的编译和移植

本硬件移植2.6.27版本的Linux内核:(1)解压缩tar xf linux-2.6.27.tar.bz2,进入该目录。(2)移植平台为ARM体系结构,修改Makefile中的ARCH?=arm CORSS_COMPILE?=arm-linux-(交叉编译器的前缀)。(3)配置内核:make deconfig(清除原来编译的config,如果是第一次配置可省略);make menuconfig进入配置菜单,选择硬件所需的驱动。大部分可选择默认选项,但注意网卡驱动一定必选,硬件类型也要匹配。(4)编译内核make bzImage在~/linux-2.6.27/arch/arm/boot/bzImage生成内核映像,通过tftp把bzImage烧到地址为0x30008000内存上,然后用nand erase kernel擦除kernel分区上的数据,最后用nand write 0x30008000把内存上的数据烧到Flash对应的kernel分区上。

2.3 根文件系统的移植

运行Linux操作系统,除了内核外还需要根文件系统。用mkdir创建rootfs文件夹,在其中创建根文件系统目录并安装busybox。busybox是专门为嵌入式系统设计的,它把大多数常用的命令(如ls,cp,cd,tar等)拼接在一起,在根文件系统中只有一个可执行文件/bin/busybox,其余都是busybox的链接。安装busybox与安装内核类似,在~$tar xf busybox-1.9.1.tar.bz2、cd busybox-1.9.1/下修改ARCH?=arm CROSS_COMPILE?=arm-linux-;make defconfig、make menuconfig设置busybox安装路径rootfs文件夹。将make、make install、busybox文件与一系列链接文件安装在rootfs下。其他链接文件在/bin、/sbin、/usr/bin、/usr/sbin中,配置Linuxrc启动文件、安装glibc共享库,在/dev目录下创建设备文件,将主机系统时钟拷贝到根文件系统中去,并配置网路和http相关配置文件。最后将文件系统配置成YAFFS文件系统,可直接对文件系统进行读写。设置开发板为NFS方式,启用可以直接在主机上操作开发板的根文件系统并进行调试。

3 硬件设计及驱动实现

3.1 系统硬件设计

本系统平台是采用ARM体系结构的S3C2410作为处理器,通过移植的字符设备驱动与ZigBee CC2430无线收发节点进行数据的传输。系统硬件框架图如图4所示。

基于嵌入式ARM-Linux无线ZigBee协调器驱动设计

CC2430是一个真正的片上系统(SoC),以高性能和低功耗的8051为内核,专门针对IEEE802.15.4和ZigBee应用,它可以用很低的费用构成ZigBee节点。

现有的硬件是通过串口实现数据传输,数据传输的格式要按照串口通信协议的格式封装,大量数据的传输还需要在串口通信格式的基础上再进行设计封装,不仅数据传输速度慢,而且容错能力低。如果在内核中加入ZigBee的字符驱动则可省去数据发送时的封装以及接收时需要解析的麻烦。

3.2 Linux设备驱动实现

Linux的输入输出设备分为字符设备、块设备和网络设备三类。字符设备是发送和接收都按照字符方式进行。块设备则是传输固定大小的数据给设备。网络设备则是通过BSD套接口访问设备。驱动程序一般以模块方式编写,加载和卸载主要由module_init()和module_exit()完成[2]。

(1)模块加载和卸载

模块需要入口函数module_init(zigbee_init)的实现代码如下:

基于嵌入式ARM-Linux无线ZigBee协调器驱动设计

在不同的系统中,同一设备的设备号不尽相同,如果静态设置设备号,则在换另外的平台时,设备号有可能冲突,所以动态分配是最佳选择。

(2)模块驱动实现

注册设备编号后要将设备驱动与之连接,因此必须用file_operation结构建立链接,并建立中断通知相关数据。其实现代码如下:

基于嵌入式ARM-Linux无线ZigBee协调器驱动设计

当上层应用调用驱动程序时,驱动程序需要完成以下功能:

①初始化设备。S3C2410与下层ZigBee CC2430连接管脚处于工作状态,注册并使能中断。
     ②按照ZigBee协议规则构建数据包并发送给CC2430,实现不同控制命令,使芯片完成数据发送和状态间的转换。
     ③当下位机接收到的数据与协议包格式不符时,产生中断,用户须重新发送数据。

其实现代码如下:

基于嵌入式ARM-Linux无线ZigBee协调器驱动设计

除实现以上函数外,还需要实现zigbee_relese(struct inode*inode,struct file*filp),释放程序运行中所有资源。

本文通过上位机处理器ARM9CS3C2410,设计了ZigBee内核字符驱动,轻松地实现了对下位机的控制,也方便了用户的上层开发,提供了用户与下位机数据传输的接口,避免了用串口进行数据传输时程序设计的繁琐性。由于篇幅限制本文没给出控制下层模块命令的具体实现代码。希望通过本文能促进ZigBee协调器驱动的进一步实现和研究。

参考文献

[1] 杨帆,廖桂平,李锦卫,等.无线传感器网络在农田环境信息监测中的应用[J].农业网络信息,2008(3):20-23.
     [2] 甘勇,王华,常亚军,等.基于ARM平台的ZigBee网关设计[J].通信技术,2009,42(1):199-201.
     [3] 魏守包,唐慧强.基于嵌入式ARM-uClinux的ZigBee网络设计[J].仪表技术与传感器,2009(1):62-64.
     [4] 包长春,石瑞珍,马玉泉.基于ZigBee技术的农业设施测控系统的设计[J].农业工程学报,2007,23(8):160~163.

 

作者:佚名 合作媒体:不详 编辑:顾北

 

 

 
 热点技术
普通技术 “5G”,真的来了!牛在哪里?
普通技术 5G,是伪命题吗?
普通技术 云视频会议关键技术浅析
普通技术 运营商语音能力开放集中管理方案分析
普通技术 5G网络商用需要“无忧”心
普通技术 面向5G应运而生的边缘计算
普通技术 简析5G时代四大关键趋势
普通技术 国家网信办就《数据安全管理办法》公开征求意见
普通技术 《车联网(智能网联汽车)直连通信使用5905-5925MHz频段管理规定(
普通技术 中兴通讯混合云解决方案,满足5G多元业务需求
普通技术 大规模MIMO将带来更多无线信道,但也使无线信道易受攻击
普通技术 蜂窝车联网的标准及关键技术及网络架构的研究
普通技术 4G与5G融合组网及互操作技术研究
普通技术 5G中CU-DU架构、设备实现及应用探讨
普通技术 无源光网络承载5G前传信号可行性的研究概述
普通技术 面向5G中传和回传网络承载解决方案
普通技术 数据中心布线系统可靠性探讨
普通技术 家庭互联网终端价值研究
普通技术 鎏信科技CEO刘舟:从连接层构建IoT云生态,聚焦CMP是关键
普通技术 SCEF引入需求分析及部署应用
  版权与免责声明: ① 凡本网注明“合作媒体:通信界”的所有作品,版权均属于通信界,未经本网授权不得转载、摘编或利用其它方式使用。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:通信界”。违反上述声明者,本网将追究其相关法律责任。 ② 凡本网注明“合作媒体:XXX(非通信界)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。 ③ 如因作品内容、版权和其它问题需要同本网联系的,请在一月内进行。
通信视界
华为余承东:Mate30总体销量将会超过两千万部
赵随意:媒体融合需积极求变
普通对话 苗圩:建设新一代信息基础设施 加快制造业数字
普通对话 华为余承东:Mate30总体销量将会超过两千万部
普通对话 赵随意:媒体融合需积极求变
普通对话 韦乐平:5G给光纤、光模块、WDM光器件带来新机
普通对话 安筱鹏:工业互联网——通向知识分工2.0之路
普通对话 库克:苹果不是垄断者
普通对话 华为何刚:挑战越大,成就越大
普通对话 华为董事长梁华:尽管遇到外部压力,5G在商业
普通对话 网易董事局主席丁磊:中国正在引领全球消费趋
普通对话 李彦宏:无人乘用车时代即将到来 智能交通前景
普通对话 中国联通研究院院长张云勇:双轮驱动下,工业
普通对话 “段子手”杨元庆:人工智能金句频出,他能否
普通对话 高通任命克里斯蒂安诺·阿蒙为公司总裁
普通对话 保利威视谢晓昉:深耕视频技术 助力在线教育
普通对话 九州云副总裁李开:帮助客户构建自己的云平台
通信前瞻
杨元庆:中国制造高质量发展的未来是智能制造
对话亚信科技CTO欧阳晔博士:甘为桥梁,携"电
普通对话 杨元庆:中国制造高质量发展的未来是智能制造
普通对话 对话亚信科技CTO欧阳晔博士:甘为桥梁,携"电
普通对话 对话倪光南:“中国芯”突围要发挥综合优势
普通对话 黄宇红:5G给运营商带来新价值
普通对话 雷军:小米所有OLED屏幕手机均已支持息屏显示
普通对话 马云:我挑战失败心服口服,他们才是双11背后
普通对话 2018年大数据产业发展试点示范项目名单出炉 2
普通对话 陈志刚:提速又降费,中国移动的两面精彩
普通对话 专访华为终端何刚:第三代nova已成为争夺全球
普通对话 中国普天陶雄强:物联网等新经济是最大机遇
普通对话 人人车李健:今年发力金融 拓展汽车后市场
普通对话 华为万飚:三代出贵族,PC产品已走在正确道路
普通对话 共享退潮单车入冬 智享单车却走向盈利
普通对话 Achronix发布新品单元块 推动eFPGA升级
普通对话 金柚网COO邱燕:天吴系统2.0真正形成了社保管