TinyOS操作系统开发技术及实践第3章 TinyOS的体系结构.pptVIP

TinyOS操作系统开发技术及实践第3章 TinyOS的体系结构.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TinyOS操作系统开发技术及实践第3章 TinyOS的体系结构

第3章 TinyOS体系结构          3.1 概述   TinyOS操作系统采用组件式结构,是一个基于事件的系统。系统本身提供了一系列的组件供用户调用,其体系结构如图3-1所示。   TinyOS体系结构由下到上将一系列组件分为以下4大类:   硬件抽象组件:将物理硬件映射到TinyOS的组件模型。   综合硬件组件:模拟高级的硬件行为,如感知组件、执行组件和通信组件。   高层软件组件:包含应用组件,其主要功能是向底层组件发出命令,底层组件向高层组件报告事件。   任务调度组件:即主组件,负责对整个TinyOS进行任务的调度,它包括一个任务调度器。 图3-1 TinyOS体系结构   任务调度器具有两层结构,第一层维护着命令和事件,主要是在硬件中断发生时对组件的状态进行处理;第二层维护着任务,负责各种计算,只有当组件状态维护工作完成后,任务才能被调度。   TinyOS调度模型主要有以下几个特点:   任务单线程运行,且运行结束后,只分配单个任务栈,这对内存受限的系统很有利。   没有进程管理概念,对任务按简单的FIFO队列进行调度。   FIFO的任务调度策略具有能耗敏感性,当任务队列为空时,处理器进入休眠,随后由外部中断事件唤醒CPU进行任务调度。   两级的调度结构,可以实现优先执行少量同事件相关的处理,同时打断长事件运行的任务。   基于事件的调度策略,只需要少量空间就可获得并发性,与事件相关的任务可以很快被处理,不允许阻塞,具有高度并发性。   任务之间相互平等,没有优先级的概念。        3.2 硬件抽象组件   在TinyOS体系架构中硬件抽象组件主要负责物理硬件的控制,采用硬件抽象架构的组件设计模型主要有以下优点:   提高代码的可重用性和可移植性。   实现效率和性能的优化。   本节将介绍硬件抽象架构及其分层结构。 3.2.1 硬件抽象架构   TinyOS 2.x提出了一个具有3层结构的硬件抽象架构,并结合其组件特点形成一个高效的组织结构,如图3-2所示。   硬件抽象架构的3层分别是硬件表示层、硬件适配层和硬件接口层。3层的作用描述如下:   硬件表示层与硬件的寄存器和中断密切相关,不同芯片的硬件平台的硬件表示层是不同的,这一层与平台的移植息息相关。   硬件适配层带有丰富的硬件相关的接口,有助于提高效率;不同平台的硬件适配层有可能不同。   硬件接口层提供与平台无关的接口,便于代码的移植。这一层与平台无关,上层可以调用这一层的接口实现对下层的控制。 图3-2 硬件抽象架构 3.2.2 硬件表示层   硬件表示层(Hardware Presentation Layer,以下简称HPL)由一系列组件组成,该层组件直接位于硬件与软件的接口之间。该层组件访问硬件的一般方法是通过内存或I/O映射,并且硬件可以通过中断信号来请求服务。   HPL组件提供的接口完全由平台的硬件模块本身功能决定。因此HPL组件和硬件的紧密联系会降低组件设计和实现的自由度。尽管每个HPL组件和底层硬件都是独一无二的,但这些组件都有类似的大体结构。为了能够和硬件抽象架构的其余部分更加完美地结合起来,每个HPL组件都应该具备以下几个功能:   为了实现更有效的电源管理,必须有硬件模块的初始化、开始和停止命令。   为控制硬件操作的寄存器提供“get”和“set”命令。   为常用的标识位设定和测试操作提供单独的命令。   开启和禁用中断的命令。   硬件中断的服务程序,HPL组件的中断服务程序只负责临界操作,如复制一个变量、清空一些标识等行为。   以mytinyos平台为例,此平台的HPL组件大都存在于与CC2530芯片相关的文件中。如图3-3所示,硬件表示层组件存在于“tos/chips/cc2530/”目录中。 图3-3 芯片目录   以“tos/chips/cc2530/”目录下的HplCC2530GeneralIOC.nc文件为例,HplCC2530 GeneralIOC.nc文件是针对CC2530的I/O的实现,打开此文件如图3-4所示。 图3-4 HplCC2530GeneralIOC.nc文件 【代码3-1】 HplCC2530GeneralIOC. nc #include cc2530.h module HplCC2530GeneralIOC { provides { /*P0有关的接口*/ interface GeneralIO as Port00; interface GeneralIO as Port01; interface GeneralIO as Port02; interface GeneralIO as Port03; inte

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档