TinyOS课后习题

发布时间 : 星期日 文章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 as ADSensorRead; interface Timer as SensorTimer; interfaceStdControl; interfaceUarlStream; } }

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) {}}

联系合同范文客服:xxxxx#qq.com(#替换为@)