发布时间 : 星期日 文章TinyOS课后习题更新完毕开始阅读
第一章
1、下列关于TinyOS描述错误的是(C)
A.TinyOS起源于吉利福尼亚大学伯克利分校的研究项目
B.WSN操作系统是无线传感器 网络的关键支撑技术之一
C.TinyOS是使用C语言编写D.最新的TinyOS版本支持IPv6协议 2、下列不属于TinyOS编程特点的是(A)
A.结构式编程 B.组件式编程 C.事件驱动编程 D.平台化编程 3、使用mytinyOS平台编译并下载程序的命令是(make cc2530 install) 4、简述TinyOS的优缺点。 (1)、优点:TinyOS有成千上万的用户,现有的体系结构已有5年以上的历史,代码可靠、有效,错误极少,这对项目工程来说至关重要;支持低功耗和并发执行模式,因此特别适合于无线传感器节点;支持技术上优异的网络协议,如汇聚协议CTP和6LoWPAN协议等。 (2)、缺点:它的组件式编程模型对于新手来说需要一段时间来适应;对于计算机密集型程序需要程序员将程序分成若干小部分,逐个执行,即需要使用TinyOS的“分阶段作业”机制,此类程序比较难写。
第二章
1、对于C程序员来说,nesC提出了三个“新概念”: 组件、 接口和__并发执行模型____。 2、nesC程序的入口函数是_booted事件函数。
3、关于nesC程序文件组成叙述正确的是____D_____。 A只能是nc文件 B不可以包含C语言头文件
C可以不使用Makefile文件 D.程序中的nc文件可分为组件文件和接口文件 4、下列关于nesC语言叙述错误的是_C 。
A.接口是一个被声明的有意义函数的集合 B.参数化接口实质上是接口数组 C.通用接口是指有数据类型的接口,其意义在于可以使接口多次实例化 D.通用组件多次声明后,它将在程序内存在多份代码或组件关系组织 5、nesC程序文件组成:
C语言头文件:TinyOS程序的运行需要少量的C谙言头文件.它们被组件文件包含从而参与程序的编译。这些头文件主要包括结构体、数据定义以及宏定义等。
接口文件::当系统提供的接口不能满足要求时.用户可自定义接口类型。组件文件:包括程序中的逻辑算法代码和组件配置关系文件。Makefile文件:被make 工具调用的编译管理文件。 6、并发模型概念
nesC程序采用由任务(Task)和硬件中断((Hardware Event Handler)构成的并发模型.进行运行,该模型包含三个要点:(1)、任务:是操作系统提供的一种简单的延期计算机制,本质上是一个可以被操作系统调度执行的函数。(2)、中断:本质上是硬件中断服务函数,如定时器中断、射频中断等。(3)、任务可以被中断处理程序打断。
第三章
1、下列不是TinyOS 2.x提出的3层结构的硬件抽象架构的是_D_____。 A.硬件表示层 B.硬件抽象层 C.硬件接口层 D.综合硬件层
2、TinyOS体系结构由下到上将一系列组件分为四大类:硬件抽象组件、综合硬件组件、高层软件组件、任务调度组件。
3、TinyOS 2.x的启动过程使用三个接口:Init、Scheduler、boot。 4、TinyOS 2.x 的启动过程. (1)硬件平台启动。(2)调度器初始化。(3)平台初始化。(4)软件相关组件初始化。(5)中断使能。 (6)触发启动完成的信号。(7)循环运行任务调度。
第四章
1、下列关于TinyOS平台目录叙述正确的是 A 。 A、\目录存放的是平台代码 B、\”目录存放的是编译脚本
C、平台的驱动代码一般存放在“tos/chips”目录
D、平台的设置环境变量的启动脚本存在“apps”目录下 2、关于TinyOS的make系统工作流程叙述错误的是__C_。
A、.应用程序目录下的Makefile文件是make首先要解析的脚本 B、变量\”是由用户定义的
C、Makerules文件是由TinyOS提供给make编译用户程序使用的 D、环境变量“TOSDIR”指向新发布平台的目录
3、简述“.target\”和“.platform”文件的作用。 (1)、“.target”文件产生以下两个直接影响:1)、调用make工具编译程序时的命令要使用“make平台目标”。2)、make工具调用相关脚本自动寻找“芯片名”目录下的“芯片名.rules”文件并解析执行。 (2)、.rules文件主要完成以下工作:1)、定义指向“参与编译的路径”变量以传递给nesC编译器,让编译器可以找到程序所用的合适的组件和接口。2)、调用nesC编译器编译nesC程序为C程序。3)、调用平台硬件所需要的本地C语言编译器编译硬件可执行的二进制代码。4)、调用平台硬件所需要的烧写程序将可指定行代码下载至硬件。 (3)、“.platform”文件:指定nesC编译器要搜索的芯片驱动、射频驱动、传感器、网络驱动等目录,以及为TinyOS的任务调度器指定要使用的组件。
第五章
1、下列组件是主动消息组件的是 A 。
A. AMSenderC.nc B. AdcP.nc C. HdlTranslatec D. SerialP.nc 2、修改串口的波特率使用的是哪个组件 C 。
A. HdlTranslateC.nc B. SerialP.nc C. HplCC2530UartP.nc D. SerialActiveMessageP.nc
3、TinyOS的编程的基本思想也采用分层结构,即上层调用下层,其分层结构大致可分为底层驱动层、中间层、应用层。
第六章
1、汇聚协议的主要接口有Send接口、Receive接口、Intercept接口和RootControl接口。 2、汇聚服务组件主要通过CollectionC组件、CollectionSenderC组件和CollectionSenderP组件来进行汇聚服务。 3、在分发协议中分发服务提供了两个主要的接口:DisseminationValue接口和DisseminationUpdate接口。
四、编程:
1、开机点亮LED的TinyOS程序。-12-与-42-考一个 LedOnAppC.nc LedOnC.nc /*LedOnAppC.nc文件*/ Configuration LedOnAppC { }
implementation {
components MainC. LedOnC,LedsC; MainC.Boot<- LedOnC.boot; LedOnC.Leds->LedsC.Leds; }
/*LedOnC.nc文件*/ moduleLedOnC {
uses interface Boot; uses interface Leds; }
implementation {
task void DoLedOn() {
call Leds.led0On(); }
event void Boot.booted() {
postDoLedOn(); } }
2、编写一个程序,通过控制CC2530的ADC进行信息的采集,并通过串口传输到PC机。-146 ADSensorC.nc #include \moduleADSensorP { uses {
interface Boot;
interfaceAdcControl as ADSensorControl; interface Read
Implementation {
Uint8_t m_len;
uint8_t m_send_buf[2]; /*AD采集任务*/
task void sensorTask() {
callADSensorControl.enable(ADC_REF_AVDD,ADC_14_BIT,ADC_AIN7); callADSensorRead.read(); }
/*启动接口,开启定时器,开启串口*/ even void Bootbooted() {
callSensorTimer.startPeriodic(l000); callStdControl.start(); }
/*开始AD采集*/
event void SensorTimer.fired() {
postsensorTask(); }(一般考到这儿)
/*AD采集完成之后通过串口传输*/
event void ADSensorRead.readDone(error_t result,int l6_t val) {m_send_buf[0]=vab>>8; m_send_buf[1]=val& 0x00ff;
callUartStream.send(m_send_buf,2);}
async even void UartStream.sendDone(uint8_t *buf,uint16_t len, error_t error) {}
async event void UartStream.receivedByte(uint8_t byte) { ; }
/*在接收完receive命令欲接收的长度后会调用此事件*/
async event void UartStream.receiveDone(uint8_t *buf, uintl6_t error) {}}