和大家一样,我是按照 ../tinyos/cygwin/opt/tinyos-1.x/doc/tutorial 中的8个lesson进行操作和学习的。虽然很痛苦,可是还真没有什么别的更好的方法来学习这门奇怪的嵌入式语言。相信绝大多数同学在面对NesC的时候,最大的问题就是不知道从哪里下手,和自己到底要写些什么。以下的步骤,至少可以让你知道,你要使用NesC去做什么。
第一步,我们要根据实际情况去选择使用什么组件。 以编写blink为例:
首先我们需要main, main是程序开始的组件,是每个的TinyOS 程序(application)都必须的组件。或者可以说是NesC程序的入口,类似于C语言的main(),“Main”调用其他的 component以实现程序的功能。
第二,需要一个来控制程序逻辑的组件,或者说具体实现程序逻辑功能的组件。一般表达程序的逻辑思路,用和配置文件一样的名字,但是多了一个M,表示是module文件,本例中就是BlinkM,也就是我们上一篇当中提到的module文件所对应的组件。
第三,因为程序中用到了LED,所以需要系统提供的ledc。 没办法,这个是只有多看系统lib才行。
第四,因为程序需要时间控制,所以用到系统提供的timer(或者是用户定义的singletimer,其实用户定义的singletimer依然是调用了系统的timer. 后面会附上修改好去掉simpletimer的blink代码,需要的同学自己看)
总结,没有任何好方法,只有对系统熟悉,才能完成对底层的控制,必须去了解和学习那些底层的interface,不然是没有办法学习nesC的。
第二步,选择合适的组件之后就需要编写顶层配置文件(configuration)
从逻辑上来说,当你选定了组件之后,就需要顶层配置文件来wiring组件们,让他们协同工作,以完成你需要的程序功能。
事实上,一个程序中可以有多个配置文件,但一定要有一个顶级配置文件,通常会以application的名字来命名。
配置文件configuration首先声明了其应用程序下的组件