原创 [博客大赛]MSP430F2616开发笔记(一)搭建Linux开发环境

2014-2-23 10:00 2191 22 24 分类: MCU/ 嵌入式 文集: MSP430

首先,why MSP430?虽然现在ARM系列MCU正在以不可逆转之势占领市场,TI公司的MSP430系列仍然有稳固的一席之地,很重要的原因是它的超低功耗特性。相比于其他架构单片机,它具备灵活丰富的时钟选项、外设时钟配置和工作模式选择,能够最大限度的降低工作电流,从而使它非常适合对功耗敏感的场合。

一、如何在Linux下搭建开发环境?

准备一块MSP430F2616的开发板,以及JTAG仿真器FET430UIF(如果是其它种类的仿真器,先要确认mspdebug是否支持)。然后,以Linux桌面发行版Fedora为例,使用yum安装msp430-gcc、mspdebug、msp430-libc(如果是Linux的桌面发行版Ubuntu,则使用apt-get)。


二、如何下载并调试程序?

将开发板与仿真器连接好,上电,在终端输入命令:
mspdebug -j uif -d /dev/ttyUSB0

-j的意思是使用JTAG而不是Spy-Bi-Wire;-d的意思是仿真器对应的设备号,如果有多个设备,就执行dmesg | grep ttyUSB,看看打印信息就知道了。不出意外的话,mspdebug命令会出现下面这样的提示信息:

Type "help
" for more information.
Use the "opt" command ("help opt") to set options.
Press Ctrl+D to quit.

(mspdebug)

提示符后面可以输入命令。prog用来烧写程序,reset用来复位,run用来执行,而step用来单步执行等等。如果想要烧写程序,则输入:
(mspdebug)prog xxx.elf


三、如果编写简单的main.c文件并编译?

因为安装msp430-libc的时候,在/usr/msp430/include/下生成了头文件,所以最简单的main.c函数只需要:

#include // 使用尖括号,include对应MCU的头文件

int main (void)
{
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR = 0xFF;
    while (1) {
        P1OUT = 0x00;
        P1OUT = 0xFF;
    }
    return 0;
}

编译使用msp430-gcc命令:
msp430-gcc -mmcu=msp430f2616 -o main.elf main.c
(要注意的是,因为msp430系列的单片机watch dog是默认打开的,所以需要先将它关闭,然后再操作IO口。)


四、如何编写Makefile文件?

如果源文件不止main.c,而是包括很多其他的.c文件,就需要编写Makefile文件告诉编译器该怎么做了。Makefile的基本格式是:描述一个.o文件由哪几个.c和.h文件组成(与.o文件同名的.c文件可省略不写),然后执行xxx-gcc的编译命令。

.PHONY表示,clean是个伪目标文件,执行make时不会执行它,而执行make clean时才会执行。编译命令必须以tab键开始,否则不能识别。

OBJECTS = main.o led.o timedelay.o uart.o
CC = msp430-gcc
MCU = msp430f2616
FLAGS = -mmcu=$(MCU) -Wall

main.elf: $(OBJECTS)
    $(CC) $(FLAGS) -o main.elf $(OBJECTS)
main.o: timedelay.h led.h uart.h
    $(CC) $(FLAGS) -c main.c
timedelay.o: timedelay.h
    $(CC) $(FLAGS) -c timedelay.c
led.o: led.h timedelay.h
    $(CC) $(FLAGS) -c led.c
uart.o: uart.h timedelay.h
    $(CC) $(FLAGS) -c uart.c

.PHONY: clean
clean:
    rm -f main.elf $(OBJECTS)


这样,MSP430F2616的开发环境就在Linux下搭好了,要继续后续的开发,就要开始学习MSP430F2616的特性和寄存器操作了。值得注意的是,MSP430F2616区别于其他单片机的地方,是它的时钟源和工作模式,这也是它低功耗的主要原因之一,所以最好能把它的时钟管理部分好好的看一看,设置并观察一下不同时钟源的寄存器,感受一下运行速度,然后再学习UART、TIMER等等外设。

文章评论2条评论)

登录后参与讨论

DiracFatCat 2014-2-25 13:47

使用Linux开发,会有一种透彻感,开发的过程中没有为操作而优化的程序会承现硬件本身完整而清晰的逻辑。这种感觉,和windows舒适妥贴的顺畅感完全不同。

345002072_353389109 2014-2-25 12:22

其实不太理解为什么要在linux下面去开发,我们一般都是window下的
相关推荐阅读
DiracFatCat 2018-09-05 12:14
【博客大赛】卡尔曼滤波学习笔记(11)从位置估计速度
卡尔曼滤波器,不仅仅是一个低通滤波器,否则也不会持续发展50年。 示例:桑先生需要测试高速列车的性能。测试的目的是判断列车在直线上能否保持80m/s的速度。速度和位置每0.1秒测量一次,但是由于...
DiracFatCat 2018-08-31 19:32
【博客大赛】卡尔曼滤波学习笔记(10)一个简单的示例
《Kalman Filtering: Theory and Practice Using MATLAB》第三章,看不懂,暂时略过。《Kalman Filtering: Theory and Pract...
DiracFatCat 2018-07-19 15:09
对sed命令的练习
sed是流编辑器。它每次处理一个输入,因此很有效率。官方手册:https://www.gnu.org/software/sed/manual/sed.html学习Linux命令,当然要阅读官方手册,所...
DiracFatCat 2018-06-19 15:10
【博客大赛】卡尔曼滤波学习笔记(八)可观测性和可控制性 ...
可观测性是指,在给定模型的情况下,动力学系统的状态是否由它的输入输出唯一确定。可观测性是系统模型的特征。如果传感器矩阵H是可逆的,则本系统可观测,因为有:如果传感器矩阵H某些时候是不可逆的,则本系统仍...
DiracFatCat 2018-06-19 10:56
【博客大赛】卡尔曼滤波学习笔记(七)Z变换
如果我们仅仅对离散线性系统感兴趣,那么就使用下面这个表达式:如果u是常量,那么可以写成:为了简化表达式,我们可以将上面写成:离散线性时不变系统的Φ求解,可以使用Z变换。(* 由于本人已经忘记了Z变换的...
DiracFatCat 2018-06-19 10:54
【博客大赛】卡尔曼滤波学习笔记(六)拉普拉斯变换
对于线性时变/时不变系统,求解Φ(t)有多种方式,拉普拉斯变换是其中一种。(* 由于本人已经忘记了拉普拉斯变换的内容,因此本节待续。)...
我要评论
2
22
关闭 站长推荐上一条 /2 下一条