kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> TinyOS在CC2530上的移植
TinyOS在CC2530上的移植
来源:电子技术应用2013年第7期
林 语1,张金榜2,何秀春1,刘 军3
1.武警工程大学 研究生管理大队,陕西 西安710086; 2.武警警官学院 信息工程系,四川 成都610213; 3.武警工程大学 信息工程系,陕西 西安710086
摘要:针对TinyOS不支持CC2530平台的问题,首先分析TinyOS移植的可行性;其次完成了Timer组件、Adc组件、Radio组件、Uart组件、I/O组件和Flash组件在CC2530上的移植;最后验证了移植的正确性。结果表明,各组件均能正常工作,实现了TinyOS对CC2530平台的支持。
中图分类号:TP399
文献标识码:A
文章编号: 0258-7998(2013)07-0025-03
The portability of TinyOS to the chip of CC2530
Lin Yu1,Zhang Jinbang2,He Xiuchun1,Liu Jun3
1.Graduate Management Team, Engineering University of CAPF, Xi′an 710086,China; 2.Department of Information Engineering,Officers College of CAPF,Chengdu 610213,China; 3.Department of Information Engineering, Engineering University of CAPF,Xi′an 710086,China
Abstract:Aiming at the problem that the CC2530 platform wasn’t supported by TinyOS, the fessibility of TinyOS was analyzed,and then, the portability of the TinyOS component to the CC2530 was completed, which included the Timer component, the Adc component, the Radio component, the Uart component, the I/O component and the Flash component. Lastly, the correctness of portability has been verified. The results show that every component is working well. It means that TinyOS has supported the CC2530 platform.
Key words :TinyOS;CC2530;the portability of operating system

无线传感器网络WSN(Wireless Sensor Network)是集传感器、嵌入式、分布式信息处理等技术于一体的与应用相关的无结构网络。它由大量体积较小、能源受限且具有一定计算、存储和无线通信能力的传感器节点组成,已广泛应用于战场态势感知、远程医疗监护、环境监测等领域。由于传感器节点的硬件资源有限,因此,WSN节点硬件平台及操作系统的选择与实现是两个重要的研究课题[1]。

CC2530芯片是TI公司推出的用于IEEE 802.15.4的真正的片上系统解决方案。它集成了微处理器、存储器和射频模块,只需要极少的外部元件就可应用于其他电路设计。CC2530具有集成度高、功耗低、体积小、成本低、电路结构简单、接口丰富的特点,能够满足传感器节点在数据采集、处理与无线传输时对处理器的需求,CC2530已成为无线传感器网络节点硬件平台设计的首选。TinyOS(TinyMicro Threading Operation System)是一个开源微型嵌入式操作系统,是针对WSN节点硬件资源受限、并发性高等问题而量身定做的操作系统。TinyOS的代码量小且高效,具有极其低的资源消耗,已成为WSN主流的操作系统。
由于TinyOS还不支持CC2530,所以在该平台上开发基于TinyOS的应用程序前,需将TinyOS移植到CC2530上,使其支持该平台。因此,实现TinyOS在CC2530上的移植能为WSN提供更多的平台选择,具有重要的应用价值。
1 移植的可行性
对TinyOS层次性的架构模型研究发现,其移植性的实现直接与硬件抽象封装层相关,该层组件完成物理硬件到TinyOS组件模型的映射。TinyOS硬件抽象层可进一步分成如图1所示的层次结构[2]。硬件抽象层明确了每一层的功能,每层依赖于下层提供的接口,越往上层对硬件的依赖性越小[3]。通过对TinyOS的进一步抽象,使得各层的组件可实现对物理硬件的不同程度封装和屏蔽,有区别地实现硬件平台和上层组件的隔离,不同层上的组件只完成特定功能,增强了TinyOS的移植性。使得TinyOS移植时只需要修改、设计相应的组件即可。

2 移植准备
2.1 修改编译工具链

TinyOS和基于TinyOS的应用程序均使用nesC语言编写,生成以“.nc”为后缀的源文件,它经过TinyOS自带的NCC编译器编译后生成app.c文件。它的部分语法与KEIL的语法不兼容,是不能被KEIL直接编译到8051平台上运行的,因此需要对不兼容的语法进行修改。而app.c代码较多,人工修改不仅费时费力,而且极易出错[4],所以本文采用perl语言编写语法编辑脚本Mangle script来实现app.c文件与KEIL的耦合,将app.c文件转换成app_Mangled.c文件,作为KEIL编译器的输入,最终生成app.hex文件。具体编译过程如图2所示。

2.2 搭建CC2530平台
搭建CC2530平台的目的是为TinyOS组件的移植和应用程序的编译提供编译参数和声明环境变量信息。搭建CC2530平台需要以下4个步骤:
(1)在/opt/tinyos-2.x/tos/platforms/CC2530目录下创建.platform文件、hardware.h文件、PlatformP.nc和PlatformC.nc文件[4]。
(2)在/opt/tinyos-2.x/support/make目录下创建.target文件。.target文件为CC2530平台配置编译环境,让TinyOS知道并支持所创建的平台。
(3)在/opt/tinyos-2.x/support/make/mcs51目录下创建mcs51.rules文件。mcs51.rules的作用是解析命令参数、设置编译路径、提取和指向目标平台。
(4)在/opt/tinyos-2.x/tos/chips/mcs51目录下创建mcs51hardware.h文件和McuSleepC.nc文件。
3 移植实现
组件移植是TinyOS移植的核心,包括CC2530寄存器声明和组件移植[5-6]。
3.1 创建ioCC2530.h文件
在/opt/tinyos-2.x/tos/chips/CC2530目录下创建ioCC2530.h文件。
3.2 组件移植
(1)Timer组件的移植。Timer组件是一个定时器组件,其Timer接口用来触发事件。在Timer组件移植时,先根据CC2530芯片内部定时器部分数据资料定义各层需要定制的接口和组件列表;然后用nesC语言编写上述各层列表中定义的接口、组件的代码和timer.h文件,并一起存放到/opt/tinyos-2.x/tos/chips/CC2530目录下的timer文件夹中。
(2)Adc组件的移植。Adc组件是一个具有模/数转换功能的组件,它的AdcControl接口用来控制Adc组件的开始和关闭;Read接口提供读取模数转换结果的功能。用nesC语言编写各层接口、组件代码和Adc.h文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目录下的adc文件夹中。
(3)Radio组件的移植。Radio组件是TinyOS的射频组件,提供Packet、Receive、AMSend和SpiltControl接口。Packet用来实现数据包的管理,Receive具有数据包的接收功能,AMSend具有发送数据包的功能,SpiltControl用来控制天线的状态,负责天线的开启和关闭。用nesC语言编写各层接口和组件的代码和Radio.h文件,并一起存放到/opt/tinyos-2.x/tos/chips/CC2530目录下的radio文件夹中。
(4)Uart组件的移植。Uart组件提供模块组件HalCC2530SimpleUartP和配置组件HalCC2530SimpleUartC,通过Init接口实现Uart组件的初始化;通过SerialByteComm接口实现该异步串行接收和转发的功能。用nesC语言实现各层接口和组件文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目录下的uart文件夹中。
(5)I/O组件的移植。I/O组件具有GeneralIO口的配置功能,可将端口配置成输入或输出,允许置位和清零,该功能由HplCC2530GeneralIOC组件实现,它包含了io8051.h文件和ioCC2530.h文件。用nesC语言实现各层接口和组件文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目录下的pins文件夹中。
(6)Flash组件的移植。Flash组件通过SimpleFlash接口实现对Flash的读、写和删除操作。用nesC语言实现各层接口和组件文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目录下的flash文件夹中。
4 移植测试
CC2530平台TinyOS的测试是对所移植组件的相应功能进行测试。串口传输设置:波特率57 600 b/s,校验位为无,数据位为8 bit,停止位为1 bit。
本文以Radio组件测试为例介绍对Timer组件、Adc组件、Radio组件、I/O组件和Flash组件的测试环境、测试程序、测试过程,并分析了测试结果。
(1)测试环境。测试过程使用基于CC2530的节点2个,一个节点独立放置,另外一个节点通过串口与PC连接,两个节点相距15 m。
(2)测试程序。独立放置节点的测试程序是Radio-
SendTestApp,它在Radio组件、Timer组件初始化完成后,启动Radio组件,定时发送数据包;与PC相连节点的测试程序是RadioReceiveTestApp,它将接收数据包并将数据包通过串口传送至PC;PC上运行串口调试助手,观察是否有数据上传。
(3)测试过程。程序编译、下载至节点后,按复位开关,配置好串口调试工具,观察串口调试工具的输出。
(4)测试结果及分析。Radio组件的测试结果如图3所示。串口调试显示能正常接收到数据包,表明Radio组件的移植是正确的。

按照Radio的测试过程,对Timer、Adc、Uart、I/O和Flash组件进行了测试。结果表明,这些组件均能正常工作,实现了TinyOS对CC2530平台的支持。
本文针对TinyOS不支持CC2530平台的问题,在分析TinyOS层次结构模型的基础上,确定了移植的可行性;通过修改编译工具链、搭建CC2530平台、编写硬件抽象层各层的组件和接口文件,完成了TinyOS在CC2530上的移植。验证结果表明,Timer组件、Adc组件、Radioz组件、Uart组件、I/O组件和Flash组件均可正常工作。TinyOS在CC2530平台上的移植,为其他硬件平台的移植提供了参考,为WSN和TinyOS的研究与应用提供了更多的平台选择。
参考文献
[1] 钱开国,桑楠.基于TinyOS的无线传感器网络操作系统移植性研究与实现[C].第二届全国通信理论与新技术学术大会会议论文集,2008:131.
[2] HANDZISKI V,POLASTRE J,HAUER J H,et al.Flexible hardware abstraction for wireless sensor networks[C].In:Proceeding of the 2nd European Workshop on Wireless Sensor Networks(EWSN2005),Turkey,2005.
[3] 钱开国.无线传感器网络嵌入式操作系统的研究和应用[D].成都:电子科技大学,2010.
[4] 庄雄,杨永明,丁唯.基于CC2431的无线传感器网络节点设计[J].电子技术应用,2008,34(6):98-101.
[5] 李响.无线传感器网络节点嵌入式操作系统TinyOS的研究与移植[D].成都:电子科技大学,2008.
[6] 钱开国.无线传感器网络嵌入式操作系统的研究和应用[D].成都:电子科技大学,2010.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map