嵌入式系统设计与开发 马文华 主编 邓耀华 汤秀春 胡伟 副主编 5嵌入式系统设计与开发新.ppt

嵌入式系统设计与开发 马文华 主编 邓耀华 汤秀春 胡伟 副主编 5嵌入式系统设计与开发新.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统设计与开发 第5章 ?C/OS-Ⅱ实时操作系统 本章提要 5.1 ?C/OS-Ⅱ实时操作系统概述 5.2 ?C/OS-Ⅱ的内核结构 5.3 同步 5.4 ?C/OS-Ⅱ中的基本数据类型 5.5 ?C/OS-Ⅱ在ARM上的移植 5.1 ?C/OS-Ⅱ实时操作系统概述 概述 实时系统概念 1.任务 任务是一个简单的程序,也称作一个线程,该程序可以认为 CPU完全属于该程序占用。 2.任务切换 多任务系统中,任务切换是指CPU的控制权由当前运行任务转 移到另外一个准备就绪任务时所发生的事件。 3.操作系统内核 多任务系统中,内核负责管理各个任务,或者说为每个任务分 配CPU时间,并且负责任务之间的通信,内核提供的基本服务 是任务切换。 4.调度 调度是内核的主要职责之一,就是决定该轮到哪个任务运行, 多数实时内核是基于优先级调度法的。 5.可重入性 可重入性是指可重入型函数可以被一个以上的任务调用,而不 必担心数据被破坏。 6.任务优先级 每个任务都有其优先级,任务越重要,赋予的优先级应越高。 8.优先级继承 优先级继承可以用来解决优先级反转的问题。 9.互斥 互斥是用来控制多任务对共享数据进行访问的同步机制。 10.中断延迟 中断延迟是指从硬件中断发生的一条指令,到开始执行中断处 理程序的一条指令之间的这段时间。 11.时钟节拍 时钟节拍是特定的周期性中断,这个中断可以看作是系统心脏 的脉动。 ?C/OS-Ⅱ的主要特点 4.可剪裁性 μC/OS-II使用条件编译实现可剪裁,用户程序可以只编译自己需要的 (μC/OS-II的)功能,而不编译不要需要的功能,以减少μC/OS-II对 代码空间和数据空间的占用。 5.抢占性 μC/OS-II是抢占性的实时内核.这意味着μC/OS-II总是运行就绪条件下 优先级最高任务。 6.多任务 μC/OS-II可以管理64个任务,然而,μC/OS-II的作者建议用户保留8个 给μC/OS-II。这样,留给用户的应用程序最多可有56个任务。 7.可确定性 绝大多数μC/OS-II的函数调用和服务的执行时间具有确定性,也就是 说,用户总是能知道μC/OS-II的函数调用与服务执行了多长时间。 5.2 μC/OS-II的内核结构 μC/OS-II内核保护机制 在多任务与中断并存的实时操作系统中,为了保护核心 区代码, μC/OS-II的内核需要在存取代码核心区时禁 止中断,存取完成后再将中断重新打开,以免出现多个 任务或中断服务程序同时进入该代码区。中断禁止时间 是实时内核的一项最重要的指标,因为它影响着系统对 实时事件的响应能力。 μC/OS-II试图将这段中断禁止 时间减至最小。但是,这在很大程度上还取决于系统的 CPU结构,以及编译器生成的代码质量。 μC/OS-II定义了两个宏: OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来实 现对中断的允许和禁止,关中断和开中断是为了保护临 界段代码,这些代码与处理器有关,是需要移植的代 码。 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()可以有3种不同的 实现方法: (1)方法1:#define OS_CRITICAL_METHOD 1 这是最简单的一种实现OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()的方法。如果用户在中断禁止的情况下调 用了一个μC/OS-II函数,而在从一个μC/OS-II函数返回时, 中断将被允许。但是,如果用户在调用μC/OS-II之前已禁止 了中断,而一般在调用返回以后仍要求禁止中断。 (2)方法2:#define OS_CRITICAL_METHOD 2 这种实现方法在实现OS_ENTER_CRITICAL()时,是将禁止的中 断状态保留在堆栈中,然后禁止中断。而OS_EXIT_CRITICAL() 的实现只需简单地将中断状态从堆栈中恢复出来。无论是在中 断禁止时,还是中断允许时调用μC/OS-II服务,都可以在该 调用前后保留中断状态。 (3)方法3:#define OS_CRITICAL_METHOD 3 有些编译器提供了一些功能扩展,允许用户获取CPU状态 (PSW),并可将它存入函数的局部变量中。于是,这一变量 被重新恢复到PSW中,就可以用伪码表示。 任务 一个任务,也称作一个线程,是一个简单的程 序,该程序可以认为CPU完全属于该程序自 身。在C语言中,任务一般是指一个无限循环 函数。 任务函数 void myTask (void *pdata)

文档评论(0)

时间加速器 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档