最新版本的TinyOS2.1.1,虽然增加了更多的平台支持,比如epic、shimmer,但是这些平台都有一个共同的局限性:采用的微控制器都是低端的MSP430系列,如MSP430F149、MSP430F1611。在一些应用场合,这些处理器已经不能达到性能要求,而基于ZigBee的开发平台,如TI推出的开发套件已经开始使用高性能的处理器,并且国内一些公司,如成都无线龙也都纷纷推出基于MSP430F2618和CC2520无线收发模块,这个模块自从它诞生就很好的支持了ZigBee,因为有TI的全力支持,并且相关的演示代码TI都已经准备好了。但是,目前还没有把TinyOS移植到MSP430F2618上的先例。网上很多人说,这个移植很简单,但是为什么现在还没有成功的案例呢?或许是有的,只是我没有找到而已。那么下面就先分析一下移植的关键点:
首先,通过比较MSPF2618与MSP430F1611的datasheet可以发现,这两款芯片的存储器映射就大不相同,下图是2618的存储器组织结构
值得注意的就是code memory的起始地址以及占用空间长度、中断向量表地址映射、RAM空间的地址映射。下图是1611存储器组织图
对比可以发现,两个地址空间有很大的不同。在TinyOS中设置存储器映射的文件是在/msp430/lib/script中,不过这些只是编译时的脚本文件,直接修改这些文件并不能解决问题,所以最终的办法就是升级你的mspgcc编译工具链,其安装升级方法可以参阅我的另一篇文章Ubuntu 下TinyOS msp430 Toolchain mspgcc升级 。还有就是两种MCU相关寄存器地址的映射,主要还是USCI端口的设置,2618提供4组USCIA0/1,USCIB0/1,比1611多了两组,还有就是2618的USC1A1/B1的中断使能以及状态寄存器不再是由特殊功能寄存器设置,并且没有了mode enable registers 1/2。USCI接口的移植可以说是最繁琐也是最核心的。其他寄存器的配置可以参考数据手册。当升级了mspgcc,MSP430相关库中也已经包含了相应的头文件,需要修改的就是.platform文件中-mmcu的设置,以及版本信息的设置。
在《TinyOS在MSP430F2618上移植(二)》中将详细介绍USCI的移植 。