目前,TinyOS官网发布的TinyOS2.1.1,其内部支持的mspgcc还是老版本3.2.3,对于TI 430系列高端单片机都不支持,支持的也仅为msp430x1611等低端系列。为了把TinyOS移植到更高端的单片机上,比如msp430f2618,就必须升级MSP Toolchain。
Sourceforge上已经更新了最新版本的mspgcc4,这个本版全面的支持TI 430全系列,最新支持GCC版本为4.4.3 ,支持GDB本版为7.0.1,Insight最新版本为6.8-1。更多的性能改进可以参考。
首先,安装必要的软件包,这些可以使用debian的apt-get命令获得,相关命令如下:
这样就可以安装相关的软件包了。
sudo apt-get install subversion gcc-4.4 texinfo patch libncurses5-dev zlibc zlib1g-dev libx11-dev libusb-dev libreadline6-dev
接下来,从Sourceforge下载mspgcc4,这里我使用SVN
svn checkout https://mspgcc4.svn.sourceforge.net/svnroot/mspgcc4 mspgcc4
下载完之后就可以开始安装了,很简单,一句话再加上一系列Enter就OK
cd mspgcc4 && sudo ./buildgcc.sh
安装时提示的选项可以都使用默认,一路enter到底。其中选项“Create binary package after build?”耗时较长,其目的在于生存软件包,会在mspgcc4目录下创建build子目录,生成的软件包有binutils-2.20.1.tar.bz2,gcc-core-4.4.3.tar.bz2,gdb-7.0.1.tar.bz2,insight-6.8-1.tar.bz2等一些压缩包。这个选项可以根据需要选择,我选择了n。
最后,配置下其路径
echo 'export PATH="${PATH}:/opt/msp430-gcc/bin/"' >> ~/.bashrc
为了使用方便,写一个shell脚本,实现一步安装
1 . #!/bin/bash
2 .
3 . echo "--> Install packages <--"
4 . sudo apt-get install git subversion gcc-4.4 texinfo patch libncurses5-dev zlibc zlib1g-dev libx11-dev libusb-dev libreadline6-dev
5 .
6 . cd $HOME/
7 .
8 . echo "--> Download mspgcc <--"
9 .
10 . git clone git://mspgcc4.git.sourceforge.net/gitroot/mspgcc4/mspgcc4
11 . cd mspgcc4
12 .
13 . echo "--> Build mspgcc <--"
14 .
15 . ./buildgcc.sh <<EOF
16 . 1
17 . 1
18 . 1
19 . 2
20 . n
21 .
22 . n
23 . y
24 . EOF
25 .
26 . export PATH=$PATH:/opt/msp430-gcc-4.4.5/bin;
经过以上几步实现mspgcc完美升级,不过到此为止,我们的Tinyos还是没有得到更新,下面就逐步实现TinyOS的蜕变。
虽然mspgcc已经可以支持大部分MSP430系列单片机了,但是,TinyOS自己的那套mspgcc还没有同步上,所以我们要把最新的TOOLCHAIN链接给TinyOS。如果你在安装TinyOS时选择了默认的安装路径,那么下面的操作步骤可以仿效,否则,根据你自己的安装目录进行修改。
我们可以在终端通过命令 $which msp430-gcc查看msp430-gcc工具的路径,我的显示的是/usr/bin/msp430-gcc,这样我们就可以动手了,通过创建一个软连接来替代这个msp430-gcc,相应的命令可以输入$ln -s /(你的mspgcc4的安装目录,如果你是默认安装那么必定是/opt/msp430-gcc-4.4.3) /bin/msp430-gcc /usr/bin 在执行这个命令之前最好删除usr/bin下的旧版本。其他的工具软连接的创建可以效仿,最后把/usr下msp430文件夹用/opt/msp430-gcc-4.4.3下的msp430文件夹替换。
把所有的全部建好之后,我们可以测试下TinyOS能不能运行正常,可以修改epic平台下的.platform文件,把 -mmcu=msp430x1611改为-mmcu=msp430x2618(这个系列老版本是不支持的),还有下面的版本信息“version_major/minor”改成相应的版本号,改version=msp430-4.4.3。好了,下面到app中找一个例子试一下(最好使用最简单的那个Blink,因为不同cpu的相关定义也不同),可以发现,现在的TinyOS已经可以认识新的MCU,再也不会提示什么MCU XXX not supported,然后就是一长串该死的低端MSP430.