第五章COS-II在ARM系统中的应用与开发6.ppt

第五章COS-II在ARM系统中的应用与开发6.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章COS-II在ARM系统中的应用与开发6

第五章 ?C/OS-II在ARM系统中的应用与开发 5.1 ?C/OS-II系统的特点及结构 μC/OS-Ⅱ是一个免费的、源代码公开的实时嵌入式内核,其内核提供了实时系统所需要的一些基本功能。其中包含全部功能的核心部分代码占用8.3 KB,全部的源代码约5500行,结构合理、清晰易懂,且注解详尽,非常适合初学者进行学习分析。而且由于μC/OS-Ⅱ是可裁剪的,所以用户系统中实际的代码最少可达2.7 KB,可谓短小精悍。μC/OS-Ⅱ不仅使用户得到廉价的解决方案,而且由于μC/OS-Ⅱ的开放源代码特性,还使用户可针对自己的硬件优化代码,获得更好的性能。 μC/OS-Ⅱ是在PC机上开发的,C编辑器使用的是Borland C/C++3.1版。从早期使用的μCOS到现在的μC/OS-Ⅱ V2.52版,应用的实例也进一步说明了该内核的实用性和可靠性。 5.1.1 μC/OS-Ⅱ系统的特点 1.有源代码,μC/OS-Ⅱ源代码是开放的,用户可登录μC/OS-Ⅱ的网站(www.uCOS-II.com)下载针对不同微处理器的移植代码。这极大地方便了实时嵌入式系统μC/OS-Ⅱ的开发,降低了开发成本。 2.可移植(Portable),μC/OS-Ⅱ的源代码中,除了与微处理器硬件相关的部分是使用汇编语言编写的,其绝大部分是使用移植性很强的ANSI C来编写的。并且把用汇编语言编写的部分已经压缩到最低的限度,以使μC/OS-Ⅱ更方便于移植到其他微处理器上使用。如Intel公司、Zilog公司、Motorola公司的微控制器和TI公司的DSP,以及包括ARM公司、Analog Device公司、三菱公司、日立公司、飞利浦公司和西门子公司的各种微处理器。 3.可固化(ROMable),μC/OS-Ⅱ是为嵌入式应用而设计的操作系统,只要具备有合适的软硬件工具,就可将μC/OS-Ⅱ嵌入到产品中去,从而成为产品的一部分。 4.可裁剪(Scalable),μC/OS-Ⅱ可根据实际用户的应用需要使用条件编译来完成对操作系统的裁剪,这样就可以减少μC/OS-Ⅱ对代码空间和数据空间的占用。 5.可剥夺型(Preemptive),μC/OS-Ⅱ是完全可剥夺型的实时内核,运行就绪条件下优先级最高的任务。 6.多任务,μC/OS-Ⅱ可管理64个任务。一般情况下,建议用户保留8个任务给μC/OS-Ⅱ。这样,留给用户应用程序的任务最多可有56个。系统赋给每个任务的优先级必须不同,这意味着μC/OS-Ⅱ不支持时间片轮转调度法(Round-robin Scheduling)。 7.可确定性,绝大多数μC/OS-Ⅱ的函数调用和服务的执行时间具有确定性。在任何时候用户都能知道μC/OS-Ⅱ的函数调用与服务的执行时间。 8.任务栈,μC/OS-Ⅱ的每个任务都有自己单独的栈和栈空间。使用μC/OS-Ⅱ的栈空间校验函数可确定每个任务到底需要多少栈空间。 9.系统服务,提供了例如信号量、互斥信号量、消息邮箱、事件标志、数据队列、块大小固定的内存的申请与释放及时间管理函数等。 10.中断管理,中断可使正在执行的任务暂时挂起,如果优先级更高的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行。中断嵌套层数可达255层。 11.稳定性与可靠性,2000年7月,μC/OS-Ⅱ在一个航空项目中得到了美国联邦航空管理局对商用飞机的符合RTCA DO--178B标准的认证。可以说,μC/OS-Ⅱ的每一种功能、每一个函数及每一行代码都经过了考验与测试。 5.1.2 μC/OS-Ⅱ系统的内核结构 与其他操作系统不同,μC/OS-Ⅱ其实只有一个内核,提供任务调度、任务间的通信与同步、任务管理、时间管理和内存管理等基本功能。 任务 在μC/OS-Ⅱ中,一个任务通常是一个无限的循环。一个任务看起来像其他c语言的函数一样,有函数返回类型,有形式参数变量,但任务是决不会返回的。故返回参数必须定义成void,例如: Void YourTask(void *pdata) { for(;;){ /*用户代码*/ /*调用μC/OS-II的某种系统服务:*/ /*用户代码*/ } } 任务调度 μC/OS-II可以管理多达64个任务,其优先级可以从0到OS_LOWEST_PRIO,优先级号越低,其任务的优先级就越高。但目前版本的μC/OS-II有两个任务已经被系统占用了,而且保留了优先级0、1、2、3、和OS_LOWEST_PRIO-3、OS_LOWEST__PRIO-2、0S_LOWEST_PRIO-1以及OS_LOWEST_PRIO这8个任务已备将来使用。OS_LOWEST_PRIO是作为常数在OS_CFG.H文件中用定义常数语句#define consta

文档评论(0)

jyf123 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档