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