TinyOS (moteiv & mica)
编辑器
没有特定的编辑器,记事本类似的都行,保证所编辑的源文件是.nc结尾的nesC程序
工程管理一个目录即为一个工程,包括一个makefile檔和一个或多个components,组件有两种:
1. 配件(configuration):描述不同组件之间的关系;
2. 模块:(module):描述组件提供的接口中的函数功能的实验过程
开发环境在windows下安装cygwin环境,并在cygwin下安装TinyOS的开发工具包,其中包括
avr-binutils, 二进制代码工具
avr-gcc,
avr-insight,
avr-libc,
nesC-1.1.2 nesC编译器
编译运行和下载TinyOS支持多种硬件平台,每个硬件平台在tos/platform有自己的目录
在应用程序的目录里/app/Blink下输入:
make tmote //其中tmote代表的是平台种类如果target为pc,刚生成的main.exe可
//用于GDB的调试
上面的语句实际上是按照当前目录的makefile文件运行的,makefile檔中包含了编译连接等具体的实现如下:
1.ncc编译链接: #ncc omain.exetarget=tmoteBlink.nc //编译生成了main.exe,可以作
//PC机上的模拟之用
2.转换:#msp430-objcopyoutput-target=ihexmain.exemain.ihex //生成了main.ihex
下载:运行: #make tmotereinstall,1 //设置网络地址为1
其中运行过程中主要的两个命令如下:
installing tmote bootloader using bsl ####安装启动引导檔,根据开发板的不同而不同
tos-bsl telosb c 7 r I p C:/cygwin/opt/moteiv/tos/lib/Deluge/TOSBoot/build/tmote/main.ihex
installing tmote binary using bsl #####安装二进制程序ihex与ihex.out-1文件相同
tos-bsl telosb c 7 r I p build/tmote/main.ihex.out-1
make过程分析其中提到的目录说明如下:(具体参照上面的图)
opt\tinyos-1.x\tos\lib ----------------包括了用到的库函数.
opt\tinyos-1.x\tos\interfaces---------包括接口函数,
opt\tinyos-1.x\tos\platform----------包括了不同硬件平台间的配置文件.(启动引导檔在这里)
opt\tinyos-1.x\tos\sensorboards------包括板载传感器的具体实现
可以看到所有的程序都是调用了同一个make规则,除了工程本身所在目录的makefile文件与本工程相关外,在\opt\tinyos-1.x\apps目录下的makerule文件是公用的,其中定义了选用的编译器及硬件平台的选择
TinyOS操作系统设计思想1.轻量级线程技术(lightweight thread)
2.主动消息通信技术(active message)
3.事件驱动模块(event driver)
4.组件化编程(component-based programming)
nesC语言把组件化/模块化思想和基于事件驱动的执行模型结合起来
组件化:其中的组件即Configuration(配件)Module两个东西就像零件一样组合在一起
模块化:
MSPGCC编辑器可以配置一些IDE(集成开发环境),如VIMUltraEditCodeBlocks等,其中VIM是命令行的,用起来很有感觉,CodeBlocks是开源的,UltraEdit为商业软件但不管怎么样,都是调用的mspgcc安装程序里的make.exe,调试环境是msp430-insight
工程管理用UltraEdit可以很好的管理工程文件,在工程目录里面应该有一个makefile檔,告诉make如何去生成所要的目录文件和文件之间的依赖关系同样,用开源的CodeBlocks也可以自己搭建一个很好的IDE,鉴于对CodeBlocks都比较熟悉,即采用之!
开发环境在windows下安装mspgcc-2007021.exe,注意,这里最好是安装最新版的,在之前我下载的是2003版的,又很多工具都不全,导致一个人摸索了好久
然后在CodeBlocks里的settings项里配置相关的compiler和debugger,最重要的部分是库函数所在的目录位置
编译运行和下载编译和链接部分基本上和相同,只是分别调用的是msp430-gcc.exemsp430-ld.exe
下载是通过msp430-downloader.exe来下载的
make过程分析下面是makefile文件的部分分析:
${NAME}.elf: ${OBJECTS} #######################msp430-gcc进行编译
msp43o-gcc.exe -mmcu=${CPU} -o $@ ${OBJECTS} ####生成了*.elf文件
${NAME}.a43: ${NAME}.elf ##################目标文件进行转换
msp430-objcopy-O ihex $^ $@ ##################将elf文件转换为*.a43文件
${NAME}.lst: ${NAME}.elf ##################反汇编,生成*.lst文件,其中
msp430-objdump -dSt $^ >$@ ##################这个文件包含了c源码,汇 ##################编原码
download-jtag: all
msp430-jtag -e ${NAME}.elf
download-bsl: all #####这里的下载工具也是bsl,和TinyOS的tos-bsl类似
msp430-bsl -e ${NAME}.elf
其中,*.a43为TI-Text格式, *.hex为Intel-hex格式.