2020/1/231TinyOS2020/1/232报告内容TinyOS简介TinyOS的特点TinyOS的编程TinyOS的移植2020/1/23mice3TinyOS简介TinyOS是一个开源的嵌入式操作系统,它是由加州大学的伯利克分校开发出来的,主要应用于无线传感器网络方面。它是基于一种组件(Component-Based)的架构方式,使得能够快速实现各种应用。2020/1/23mice4TinyOS简介TinyOS的程序采用的是模块化设计,所以它的程序核心往往都很小(一般来说核心代码和数据大概在400Bytes左右),能够突破传感器存储资源少的限制,这能够让TinyOS很有效的运行在无线传感器网络上并去执行相应的管理工作等。2020/1/23mice5TinyOS简介TinyOS本身提供了一系列的组件,可以很简单方便的编制程序,用来获取和处理传感器的数据并通过无线电来传输信息。可以把TinyOS看成是一个可以与传感器进行交互的API接口,它们之间可以进行各种通讯。2020/1/23mice6TinyOS简介TinyOS在构建无线传感器网络时,它会有一个基地控制台,主要是用来控制各个传感器子节点,并聚集和处理它们所采集到的信息。TinyOS只要在控制台发出管理信息,然后由各个节点通过无线网络互相传递,最后达到协同一致的目的,比较方便。2020/1/23mice7TinyOS模型2020/1/23mice8TinyOS简介2020/1/23mice9TinyOS的特点Componented-BasedArchitectureTinyOS提供一系列可重用的组件,一个应用程序可以通过连接配置文件(AWiringSpecification)将各种组件连接起来,以完成它所需要的功能。Event-DrivenArchitectureTinyOS的应用程序都是基于事件驱动模式的,采用事件触发去唤醒传感器工作。2020/1/23mice10TinyOS的特点TasksAndEventsConcurrencyModeltasks一般用在对于时间要求不是很高的应用中,且tasks之间是平等的,即在执行时是按顺序先后来得,而不能互相占先执行,一般为了减少tasks的运行时间,要求每一个task都很短小,能够使系统的负担较轻;events一般用在对于时间的要求很严格的应用中,而且它可以占先优于tasks和其他events执行,它可以被一个操作的完成或是来自外部环境的事件触发,在TinyOS中一般由硬件中断处理来驱动事件。2020/1/23mice11TinyOS的特点Split-PhaseOperations在TinyOS中由于tasks之间不能互相占先执行,所以TinyOS没有提供任何阻塞操作,为了让一个耗时较长的操作尽快完成,一般来说都是将对这个操作的需求和这个操作的完成分开来实现,以便获得较高的执行效率。2020/1/23mice12TinyOS的特点•Supportself-configurationforsensornetwork•ThemessageinTinyOSisfixedsize•Twokindofinterrupt—ClockandRadio•Single-sharedstack•Nokernel,processmanagement,virtualmemory•Completeintegrationwithhardware2020/1/23mice13TOSSchedulerFIFOScheduler由于在TinyOS中没有进程管理的概念,它对任务是按简单的FIFO队列进行处理的,对资源采取预先分配,且这个队列里最多只能有7个未解决的任务。TinyOS对任务的处理是按“bit-manipulation”方式进行的。2020/1/23mice14TOSSchedulerPrioritizedSchedulera)Eachtaskgivenpriorityb)Send/Receive,Encryptiontasksgivenhigherpriorityc)HigherprioritytasksinsertedaheadintheFIFOqueued)Queuefull—lowerprioritypostedtaskdroppede)Taskspreemptedforeverybitreceived2020/1/23mice15NetworkManagement—ActiveMessagea)Simple,extensibleparadigmb)Widelyusedinparallelanddistributedsystemsc)Integratingcommunicationandcomputationd)Distributedeventmodelwherenetworkednodessendevent2020/1/23mice16NetworkManagement—ActiveMessagee)EachActiveMessageContainsUser-levelhandlertobeinvokedonarrivalDatapayloadpassedasargumentf)Event-centricnatureEnablesnetworkcommunicationtooverlapwithsensor-interaction2020/1/23mice17NetworkManagement—ActiveMessageg)HandlerFunctionsExtractmessagequicklyfromnetworkProvidedataforcomputation/forwarddataPreventnetworkcongestionh)MinimalBuffering—PipelineanalogyQuickexecutionofhandlerspreventsuseofsend/receivebuffers2020/1/23mice18TinyOS的编程nesC—是一种类似C的语言,它是对C的扩展,也是结构化的语言。它是基于组件式的编程,模块化的设计。nesC组件有两种:•Module(模块)•Configuration(连接配置文件)2020/1/23mice19nesCComponentModule—在模块中主要实现代码的编制它可以使用和提供接口,在它的实现部分必须对提供接口里的command和使用接口里的event进行实现。Configuration—在连接配置文件中主要是将各个组件和模块连接起来成为一个整体,它也可以提供和使用接口。2020/1/23mice20nesCInterfaceInterface•在接口里可以声明command和event•Interface有无参数和带参数两种。带参数的接口可以提供多个此接口的实例,每一个实例都有唯一的id标定,从而可以提供一种“fan-out”式的使用;且它的command和event在组件中使用时也必须带上这个参数2020/1/23mice21TinyOS的移植工作基础•DIKU的TinyOS8051WG项目•Radio(SimpleMac)ADCPinsUARTFlashTimer2020/1/23mice23FutureworkSupportforsleepmodesPrecisetimersSerialstackActivemessage(AM)networkingstack2020/1/23mice24报告完毕谢谢大家