网站大量收购闲置独家精品文档,联系QQ:2885784924

第三章嵌入式实时操作系统分析 - 第一章.ppt

第三章嵌入式实时操作系统分析 - 第一章.ppt

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

第 三 章 嵌入式实时操作系统( ?C/OS )分析 嵌入式实时操作系统?C/OS 嵌入式Linux WinCE 嵌入式实时操作系统?C/OS ?C/OS简介 ?C/OS内核结构 ?C/OS简介 ?C/OS即MicroC/OS,微控制器操作系统 美国人Jean Labrosse 1992年完成 应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等 1998年?C/OS -II,目前必威体育精装版的版本是?C/OS -II V2.70 网站www.ucos- II.com ?C/OS –II的特点 公开源码 可移植性 ?C/OS –II源码绝大部分是用移植性很强的ANSI C写的,与微处理器硬件相关的部分是用汇编语言写的,汇编语言写的部分已经压到最低限度,以使?C/OS –II便于移植到其他微处理器上。 ?C/OS –II可以在绝大多数8位、16位、32位以至64位微处理器、微控制器及数字信号处理器(DSP)上运行。 ?C/OS-II内核结构 ?C/OS-II的文件结构 任务管理 时间管理 任务间通信 ?C/OS-II的文件结构 ?C/OS-II (与处理器类型无关的代码) OS_CORE.C OS_FLAG.C OS_MBOX.C OS_MEM.C OS_MUTEX.C OS_Q.C OS_SEM.C OS_TASK.C OS_TIME.C uCOS_II.C uCOS_II.H ?C/OS-II配置文件 (与应用程序有关) OS_CFG.H INCLUDES.H 移植?C/OS-II (与处理器类型有关的代码) OS_CPU.H OS_CPU_A.ASM OS_CPU_C.C 任务管理 建立任务 任务格式 任务状态 任务调度 任务切换 建立任务 OS TaskCreate() OSTaskCreateExtended() 任务格式 任务通常是一个无限循环。 每个任务不能占用全部CPU的资源。 需要有等待,或延时等系统调用。 任务状态 睡眠态 就绪态 运行态 等待状态 中断服务状态 任务控制块(OS_TCB) 任务一旦建立,一个任务控制块OS_TCB 就被赋值。任务控制块是一个数据结构, 当任务的CPU使用权被剥夺时, ?C/OS-II 用它来保存该任务的状态。当任务重新得 到CPU的使用权时,任务控制块能确保任 务从中断处继续执行。 任务调度 ?C/OS-II是占先式实时多任务内核,优先级最高的任务一旦准备就绪,则拥有CPU的所有权开始投入运行。 ?C/OS-II中任务级的调度是由函数OSSched( ) 完成的,每个任务的优先级要求不一样且是唯一的,所以任务调度的工作就是:查找准备就绪的最高优先级的任务并进行上下文切换。 ?C/OS-II任务调度所花的时间为常数,与应用程序中建立的任务数无关。 中断与时钟节拍 ?C/OS-II需要提供周期性信号源,用于实 现时间延时和确认超时。 ?C/OS-II中的时 钟节拍服务是通过中断服务子程序钟调用 OSTimeTick( )实现的。OSTimeTick( )跟踪 所有任务的定时器以及超时时限。 时间管理 OSTimeDly( ) OSTimeDlyHMSM( ) OSTimeDlyResume( ) OSTimeGet( ) OSTimeSet( ) 任务间的通信 ?C/OS-II中,采用多种方法保护任务之间的共享数据和提供任务之间的通信。 提供OS_ENTER_CRITICAL和OS_EXIT_CRITICAL来对临界资源进行保护。 OSSchedLock( )禁止调度保护任务级的共享资源。 提供了经典操作系统任务间通信方法:信号量、邮箱、消息队列,事件标志。 举例 创建2个任务,任务1是让灯亮,任务2让灯灭 void Task1(void) void Task2(void) { { while(1) while(1) { { led_on(); led_off(); OSTimeDly(25); OSTimeDly(50); } } } } OSTimeDlyHMSM( )函数功能同OSTi

文档评论(0)

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

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

1亿VIP精品文档

相关文档