所需E币: 5
时间: 2020-1-16 14:22
大小: 107.56KB
基于Tinyos0基于TinyOS0.6的BLINK程序源码分析TinyOS是UCBerkeley开发的专门针对传感器网络节点的微型嵌入式操作系统。早期的版本采用的是C语言,后来逐渐过渡到了nesC(Network-Embeded-System-C)。由于nesC采用的基于组件的程序设计思想,不便于对内部实现机制的研究,因此这里采用了C语言版本的TinyOS及其应用来进行讨论。虽然形式上有所不同,但是一旦理解了内部的实现原理和机制,那么过渡到nesC也将是十分自然的。这就好比是精通了DOS和WIN3.1的人,如果现在要转移到WINDOWS98及以后的平台,将会十分的顺畅,而且比直接学习WINDOWS要能够更加深刻的理解WINDOWS的设计理念。由于TinyOS的内核实在是非常的小,一共只有短短数百行代码,我们这里采用了结合应用的方式来进行分析。着重理解TinyOS的系统结构,包括任务调度,硬件驱动以及源代码级的模块划分。需要具备的知识非常简单:精通C语言和模块设计的思想,对于MAKE的原理和思想有一定深度的理解,具备基本的嵌入式开发的知识。这里,我选择了DavidCuller教授经典的BLINK应用来进行分析。虽然很简单,但是如果仔细分析,思考,仍然可以从中窥探到TinyOS应用系统设计的精华。BLINK应用的文件目录结构由于考虑到了运行时的效率和程序空间占用率,TinyOS系统采用了静态编译链接的方式。但是,仍然做到了非常良好的模块的划分。采用的最主要的手段就是预编译时进行的宏替换,以及在预编译之前调用perl脚本根据描述文件生产一些C编译需要的头文件,来完成C模块之间的通信工作。可以说,这是一个设计十分优良的系统。所有的平台无关的模块的源文……