背景知识:
节点 主要由 微处理芯片 和 无线射频芯片 组成
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编译器ÿ