关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > STM32和CC2520的TinyOS移植与驱动分析

STM32和CC2520的TinyOS移植与驱动分析

作者:时间:2012-12-06来源:网络收藏

3.4 修改编译工具链
3.4.1 配置交叉开发工具链
支持的编译器有很多,比如:ARM—NONE—EABI—GCC、KEIL、IAR等。本文采用ARM—NONE—EABI—GCC编译器。NesC程序的编译主要分两步,首先调用ncc编译器把NesC预编译成C文件(即预编译过程);然后通过一个脚本程序,将经过NesC预编译生成的应用程序转换成可以下载到开发板的hex格式文件;最后送入J—Flash ARM下载器下载到硬件。修改后的编译工具链如图3所示。

本文引用地址:http://www.eepw.com.cn/article/159652.htm

f.JPG


下面对这个过程进行详细的介绍。
第一步:源组件文件(.nc源文件)的分析和转换,在这个阶段调用自带的编译器ncc,对.nc源文件进行文法、语法分析,检测共享数据缓冲区等。再根据各个组件和接口对其使用的函数和变量进行名字扩展,使其具有全局唯一性。最后把所有的函数和变量都整合到一个主函数main()中,并生成相应的app.c文件。此时生成的已经是普通的C语言程序。以上这个替换过程是由ncc的核心程序nescl.exe完成的。
第二步:在生成app.c文件后,ncc调用arm—none—eabi—gcc的交叉编译器工具对该C文件进行编译、链接生成可执行文件main.exe,然后通过arm—none—eabi—objcopy工具转换成main.hex,以便最后下载到平台上运行调试。
3.4.2 定制编译环境
为使编译系统能够寻找到编译平台,在工程主文件夹下增加环境定制文件“setup.sh”,定制工程目录、编译工具、解释工具等路径。在/support/make目录增加“-p103.target”文件。定制STM32的MAKE系统。在make文件中指定用arm—none—eabi—gcc为编译器,arm-none-eabi-objcopy为输出格式转换器。
以一个简单的应用程序radioCountToLeds为例,在STM32平台上编译的结果如图4所示。

a.JPG


可以通过自带的工具生成各个组件的连线关系,只需要在make命令后面添加docs选项。

4 测试
TinyOS自带的radioCountToLeds测试程序,需用通用I/O接口、Timer、Leds、SPI和无线模块()等组件。为了查看USART模块,也为了便于跟踪程序执行流程,在源程序中加入了串口输出代码,结果如图5所示。

b.JPG


本实验通过一个节点每一秒定时广播数据包,定时器中断触发时发送一个16位的数据,并把此数加1。其他节点接收此数据,并根据接收数据的低3位是否为1来分别控制3个Led灯闪烁。通过观察节点上Led灯的有规律闪烁,能够证明各模块成功

结语
本文简单介绍了NesC语言的特点和TinyOS系统架构,重点介绍了TinyOS的编译机制,并在此基础上详细说明了将TinyOS内核程序到以STM32核处理器和无线模块芯片为核心的开发板上的具体方法。通过测试发现,各个模块能够正常稳定工作。但无线模块协议栈还不够完善,功能还不全面,仍需要进一步的研究。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭