TinyOS下的makefile(持续更新)

背景知识:

节点 主要由 微处理芯片  和 无线射频芯片 组成
Mica2:        Atmega128L        CC1000
Micaz:        Atmega128L        CC2420
telos:          MSP430               CC2420

芯片代码存于tos/chips目录或平台子目录里。一个平台通常有一个.platform文件,其中包含有nesC语言的编译选项。例如,Mica2平台的.platform文件会告诉ncc编译器在chips/cc1000和chips/atm128目录里寻找所需文件。


之前节点一直无法接收消息的原因是:未定义预处理器符号CC1K_DEFAULT_FREQ ,即没有定义CC1000无线射频芯片的默认频率。

该符号在文件/opt/tinyos-2.1.2/tos/chips/cc1000/CC1000Const.h中

具体解决方法如下:

方法1:每次make的时候,加上编译选项-DCC1K_DEFAULT_FREQ,即在某一app目录(如BlinkToRadio)下输入以下命令:

CFLAGS=-DCC1K_DEFAULT_FREQ make mica2 install.1 mib520,/dev/ttyUSB0

方法2:由于每次烤程序都需要输入一长串命令,故可在/opt/tinyos-2.1.2/support/make/Makedefaults 文件中添加如下语句:

MIB520 ?= /dev/ttyUSB0
PFLAGS = -DCC1K_DEFAULT_FREQ

PFLAGS选项定义了C语言预处理符号CC1K_DEFAULT_FREQ,并会在程序编译时传递给nesC编译器;选项MIB520设定了编程器MIB520烧录程序时的相关参数值,即

make mica2 install mib520

相当于

make mica2 install mib520,/dev/ttyUSB0

以上忽略了节点的ID,实际烧录时要在install后加上节点ID。

缺点是,如果编程板的端口改变了,需要改动文件内容,将ttyUSB0改为ttyUSBn


因此,现在每次烧录程序时只要输入以下命令即可:

make mica2 install.n mib520

(n代表节点编号,在实际输入时用数字1,2,3...代替)

你可能感兴趣的:(TinyOS)