- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章基于ARM9和ucos-ii嵌入式操作系统设计讲述
第五章 基于ARM9和uC/OS-II嵌入式系统设计 5.1 uC/OS-II 简介 u C / O S 是一种公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统,商业应用需要付费。 用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌人到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 5.2 uC/OS-II的内核结构 uC/OS_II应用软件 (用户程序) uC/OS-II与处理器无关代码 OS_CORE.C OS_SEM.C OS_FLAG.C OS_TASK.C OS_MBOX.C OS_TIME.C OS_MUTEX.C uCOS_II.C OS_Q.C uCOS_II.H uC/OS-II配置文件 (与应用程序有关) OS_CFG.H INCLUDES.H 移植uCOS-II与处理器类型有关代码 OS_CPU.H OS_CPU_A.ASM OS_CPU_C.C CPU 定时器 软件 ---------------------------------------------------------------------------------------------------------------------------------------- 硬件 图5.1 uCOS-II的文件结构与硬件关系 5.2.1 任务 在μC/OS-Ⅱ中,一个任务通常是一个无限的循环。一个任务看起来像其他c语言的函数一样,有函数返回类型,有形式参数变量,但任务是决不会返回的。故返回参数必须定义成void,例如: Void YourTask(void *pdata) { for(;;) { /*用户代码*/ /*调用μC/OS-II的某种系统服务:*/ /*用户代码*/ } } 事件驱动的编程模型:每个用户的任务都必须符合事件驱动的编程模型,即uC/OS-II的应用程序都必须是“事件驱动的编程模型”。 一个任务首先等待一个事件的发生,事件可以是系统中断发出的,也可以是其它任务发出的,又可以是任务自身等待的时间片。当一个事件发生了,任务再作相应处理,处理结束后又开始等待下一个事件的发生。 事件驱动模型也涵盖了中断驱动模型,uC/OS-II事件归根结底来自三个方面:(1)中断服务函数发送的事件(2)系统延时时间到所引起的(3)其它任务发送的事件。??? 其中“中断服务函数发送的事件”就是指每当有硬件中断发生,那么中断服务程序就会以事件的形式告诉任务,而等待该事件的最高优先级任务就会马上得以运行; “系统延时时间到所引起的”事件其实也是硬件中断导致的,那就是系统定时器中断。 而“其它任务发送的事件”则是由任务代码自身决定的,这是完全的“软事件”。不管“软事件”还是“硬事件”,反正引起uC/OS-II任务切换的原因就是“事件”,所以用户编写应用代码的时候一定要体现出“事件驱动的编程模型”。 5.2.2 任务状态 在任一给定的时刻,任务的状态一定是一下5种状态之一: 睡眠态(task dormat):任务驻留于程序空间(rom或ram)中,暂时没交给ucos-ii处理。 就绪态(task ready):任务一旦建立,这个任务就进入了就绪态。 运行态(task running):调用OSStart()可以启动多任务。OSStart()函数只能调用一次,一旦调用,系统将运行进入就绪态并且优先级最高的任务。 等待状态(task waiting):正在运行的任务,通过延迟函数或pend(挂起)相关函数后,将进入等待状态。 中断状态(ISR running):正在运行的任务是可以被中断的,除非该任务将中断关闭或者ucos-ii将中断关闭。 5.2.3 任务的调度 uCOS II提供最简单的实时内核任务调度,算法简单,因此也只支持优先级抢占任务调度,不支持时间片轮训调度算法,不支持优先级逆转。 为了使μC/OS-II能管理用户任务,用户必须在建立一个任务的时候,将任务的
您可能关注的文档
- 第十三章销售与收款循环审计详解.ppt
- 第五章保险产品讲述.ppt
- 第五章_采购谈判讲述.ppt
- 第五章传热过程基础讲述.doc
- 第五章信息化战争讲述.ppt
- 第五章之衍生知识支付方式讲述.ppt
- 第五章保险原则上讲述.ppt
- 第五章、智能排课讲述.doc
- 第五章信用管理的监管讲述.ppt
- 第十四节《勇气》详解.doc
- 携程产品营销经理岗面试题库参考答案和答题要点.docx
- 携程产品经理岗面试题库参考答案和答题要点.docx
- 携程供应链管理专员岗面试题库参考答案和答题要点.docx
- 携程交易数据分析师岗面试题库参考答案和答题要点.docx
- 携程公共关系专员岗面试题库参考答案和答题要点.docx
- 携程内部培训专员岗面试题库参考答案和答题要点.docx
- 福建省福州市2023-2024学年高二上学期期末测试英语试卷(含答案).pdf
- 携程人力资源专员岗面试题库参考答案和答题要点.docx
- 福建省三明市2023-2024学年高二上学期期末测试英语试卷(含答案).docx
- 福建省三明市2023-2024学年高二上学期期末测试英语试卷(含答案).pdf
文档评论(0)