最近无意间看到网友说MSP430也有了GCC编译器,即MSPGCC,欣喜之余我也开始想到,那在Linux下开发MSP430也不远了。谷歌了一端时间,找到MSPGCC的Wiki:http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=MSPGCC_Wiki,并且在Ubuntu下已经有编译好的安装包,说到这里,其实本人并不是太喜欢从Ubuntu的源中安装这些工具链,我更倾向于MSPGCC官方发布的工具链,不过官方的工具链找了好久都没有找到,因此现在就暂时先用Ubuntu的安装包吧,上面的链接中找到Ubuntu的链接,https://launchpad.net/ubuntu/oneiric/+search?text=msp430,lp上有6个包,分别是
msp430-libc:
Standard C library for TI MSP430 development
430的C标准库
mspdebug:
debugging tool for MSP430 microcontrollers
430的调试工具,用来连接仿真器
msp430mcu:
Spec files, headers and linker scripts for TI's MSP430 targets
430的头文件以及链接脚本
binutils-msp430:
Binary utilities supporting TI's MSP430 targets
430的二进制工具包
gcc-msp430:
The GNU C compiler (cross compiler for MSP430)
430的GCC编译器
gdb-msp430:
The GNU debugger for MSP430
430的GDB调试器
关于这些包的作用以及它们与GCC的关系可以参考下面这篇帖子,个人觉得讲的非常好。
我们一并装上!在终端中输入:
sudo apt-getinstall msp430-libc mspdebug msp430mcu binutils-msp430 gcc-msp430 gdb-msp430
不过装的过程中出现了一些小插曲,会出现如下错误:
dpkg:处理 /var/cache/apt/archives/gdb-msp430_7.2~mspgcc-7.2-20110612-1ubuntu1_i386.deb (--unpack)时出错:
正试图覆盖 /usr/share/gdb/python/gdb/__init__.py,它同时被包含于软件包 gdb 7.4-2012.04-0ubuntu2.1
正在处理用于 man-db 的触发器...
在处理时有错误发生:
/var/cache/apt/archives/gdb-msp430_7.2~mspgcc-7.2-20110612-1ubuntu1_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
这里的意思应该是gdb-msp430包中的安装文件会覆盖掉gdb包中的文件,这里参考了这篇博客:
上面说是直接覆盖就可以了,因为两个东西本质上是一样的,在终端输入:
sudo apt-get-oDpkg::Options::="--force-overwrite"install gdb-msp430
接下来会看到如下信息:
dpkg:警告:由于开启了 --force 选项,以下问题被忽略:
正试图覆盖 /usr/share/gdb/python/gdb/__init__.py,它同时被包含于软件包 gdb 7.4-2012.04-0ubuntu2.1
dpkg:警告:由于开启了 --force 选项,以下问题被忽略:
正试图覆盖 /usr/share/gdb/python/gdb/types.py,它同时被包含于软件包 gdb 7.4-2012.04-0ubuntu2.1
dpkg:警告:由于开启了 --force 选项,以下问题被忽略:
正试图覆盖 /usr/share/gdb/python/gdb/printing.py,它同时被包含于软件包 gdb 7.4-2012.04-0ubuntu2.1
dpkg:警告:由于开启了 --force 选项,以下问题被忽略:
正试图覆盖 /usr/share/gdb/python/gdb/command/__init__.py,它同时被包含于软件包 gdb 7.4-2012.04-0ubuntu2.1
dpkg:警告:由于开启了 --force 选项,以下问题被忽略:
正试图覆盖 /usr/share/gdb/python/gdb/command/pretty_printers.py,它同时被包含于软件包 gdb 7.4-2012.04-0ubuntu2.1
正在处理用于 man-db 的触发器...
正在设置 msp430mcu (20110613-3) ...
正在设置 binutils-msp430 (2.22~msp20110716p5-1) ...
正在设置 gcc-msp430 (4.5.3~mspgcc-20110716-4) ...
正在设置 msp430-libc (20110612-2) ...
正在设置 mspdebug (0.18-1) ...
正在设置 gdb-msp430 (7.2~mspgcc-7.2-20110612-1ubuntu1) ...
到这里表示安装成功。
接下来新建一个文件编译,内容如下:
/* Blink LED example */
#include
/** Delay function. **/
delay(unsignedintd){
inti;
for(i=0;i
nop();
}
}
intmain(void){
WDTCTL=WDTPW|WDTHOLD;
P1DIR=0xFF;
P1OUT=0x01;
for(;;){
P1OUT=~P1OUT;
delay(0x4fff);
}
}
终端中输入:
msp430-gcc-Os-mmcu=msp430g2553-o led.elf led.c
编译成功!关于在线调试以及eclipse+msp430-gdb的调试敬请期待。