首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

TinyOS移植技术分析及在CC2430平台的应用 03

TinyOS移植技术分析及在CC2430平台的应用 03

3.3 TinyOS在CC2430上的移植过程
    3.3.1 组件编写
        
由于TinyOS的组件模式是基于不同抽象层组件的系统,当移植到新的平台时,可以通过添加新的底层硬件的抽象并使用已有的上层组件。为实现CC2430的基本功能,需要对各功能模块进行移植,文中移植的功能包括Timer定时器,UART通信,AD采样,射频通信等。具体模块移植方法如下:
        (1)通用I/O口。首先要对CC2430的各个接口进行定义,CC2430共有21个可编程的I/O接口,通过设置一组寄存器来控制来控制这些接口作为通用I/O口或者是用作外部电路。在HplCC2430GeneralIOC文件及相关头文件中对各个引脚进行定义。由于需要用到CC2430的UART功能,ADC功能,射频功能以及Timer定时器功能,所以需要对相应的寄存器定义。
        (2)UART通信。由于需要向上位机发送数据,所以需要使用CC2430的UART通信功能。CC2430有两个UART接口,分别为UART0和UART1。分别对应CC2430两个I/O接口。选用的UART1,RX和TX对应P0_4接口和P0_5接口,通过SerialByteComm接口实现该功能。在HalCC2430SimpleUartP文件中实现SerialByteComm接口,该接口有两个命令:get和put,分别用来对U1BUF寄存器进行读写。在HplCC2430SimpleUartP文件中对CC24 30芯片串口通信所需要的配置的寄存器各位的值以及波特率等硬件信息进行设置。
        在PlatformSerialC文件中对这些接口进行一个封装,并对SerialByteComm接口的put操作作一个判断,如果UART1的8位寄存器U1CSR的最低位为0,说明串口处于空闲状态,这是向串口发送数据,否则串口处于繁忙状态,不进行任何操作。
        通过这3层组件对SerialByteComm接口的抽象,实现向串口发送数据的功能。
        (3)数模转换。通过传感器感器采集到的模拟信号,需要通过AD转换为数字信号后才能进行下一步的处理。CC2430的ADC有最高14 bit的转换精度,可以采用内部电压或者外部电压。ADCL和ADCH两个8位寄存器存放采样到的数据,其中ADCL的有效位是2到7位,所以有效数据是14 bit。通过对READ接口的抽象实现该组件。在adc.h头文件中配置CC2430的寄存器ADCCON1、ADCCON2、ADCCON3,可以设置转换精度以及采样到的数据传输到芯片的管脚地址。
        可以看到这里定义一组宏,对应了寄存器需要的值。这里使用CC2430芯片的单次采样,由于节点使用了外部传感器这里将ADC的参考电压设为外部电压,精度设为14 bit,将P0_4引脚的电压值数模转换后传入芯片处理器。
        (4)定时器。CC2430有一个16位定时器Timer1和两个8位定时器Timer3和Timer4,以及一个MAC定时器Timer2。这里完成了Timer1的移植。在HplCC2430Timer1P文件中定制相关配置,通过HplCC2430Timer16接口实现基本的计时功能。
        (5)射频模块。传感器节点采集到数据后需要通过无线射频的方式发送出去,这就需要使用CC2430的射频功能。TinyOS通过SimpleMac接口实现该功能,SimpleMac接口可以实现简单的数据收发功能。SimpleMac接口非常适合802.15.4协议,缺点是不支持数据重传和路由功能。在文件HPLCC2430RadioP文件及相关中对CC2430的的寄存器进行读写,HALCC2430RadioP组建对它进行进一步的抽象。
    3.3.2 编译过程修改
        
为使TinyOS的编译系统能够找到目标平台CC2430,我们需要修改它的编译环境。基于TinyOS开源代码的约定,除核心程序外的其余项目开发放在contrib文件中。因此将代码放于cygwin/opt/tinyos-2.x-contrib/ncepu中。这里需要在此文件夹中添加CC2430的编译路径以及具体的编译方法。



        (1)在ncepu文件夹下增加环境定制文件“env”,定制编译路径,使编译系统能够寻找到编译平台。修改后的编译工具链如图3所示。程序的编译结果如图4所示
        (2)在ncepu/support/make文件下增加“cc2430em.target”文件。
        将编译好的app.hex下载到CC2430上,程序即可运行。
返回列表