嵌入式系统 第五章 嵌入式操作系统教学精品.ppt

嵌入式系统 第五章 嵌入式操作系统教学精品.ppt

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

5.5.6 任务中断 5.5 ?C/OS-II内核结构 中断是一种硬件机制,用于通知CPU“有一个异步事件发生了”。 中断一旦被识别,CPU保存部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。 在?C/OS-II中,中断服务子程序要用汇编语言编写。如果用户使用的C语言编译器支持内嵌汇编,则可以直接将中断服务子程序代码放在C语言的程序文件中。 中断服务子程序的结构 用户中断服务子程序: { 保存全部CPU寄存器; 调用OSIntEnter()或OSIntNesting 直接加1; 执行用户代码做中断服务; 调用OSIntExit(); 恢复所有CPU寄存器; 执行中断返回指令; } 图5-10 ?C/OS-II的中断服务 5.5 ?C/OS-II内核结构 5.5.1 临界段 5.5.2 任务 5.5.3 任务控制块 5.5.4 任务调度 5.5.5 任务管理 5.5.6 中断服务 5.5.7 时钟节拍与时间管理 5.5.8 任务间同步与通信的管理 5.5.9 内存管理 5.5.10 ?C/OS-II的初始化 5.5.11 ?C/OS-II的启动 5.5.7 时钟节拍与时间管理 5.5 ?C/OS-II内核结构 时钟节拍(clock tick)是特定的周期性中断,中断之间的时间间隔取决于不同的应用,一般为10~200ms。 时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时提供等待超时。 时钟节拍率越快,系统的额外开销越大。?C/OS-II的节拍率为10~100Hz。 时钟节拍源可以是专门的硬件定时器,也可以是来自交流电源的信号。 5.5.7 时钟节拍与时间管理 5.5 ?C/OS-II内核结构 在?C/OS-II中,必须在多任务系统启动以后,即调用OSStart()函数之后,再打开时钟节拍器。 如果将时钟节拍器中断放在初始化函数OSInit()之后、在多任务系统启动函数OSStart()函数之前,这是错误的做法会导致时钟节拍中断有可能在?C/OS-II启动第一个任务之前发生。 时钟节拍服务是通过在中断服务子程序中调用函数OSTimeTick()来通知?C/OS-II发生了时钟节拍中断。OSTimeTick()能够跟踪所有任务的定时器以及超时限制。 5.5.7 时钟节拍与时间管理 5.5 ?C/OS-II内核结构 ?C/OS-II提供了5个时间管理函数来处理有关时间的问题。 任务延时函数,OSTimeDly() 按时、分、秒、毫秒延时函数,OSTimeDlyHMSM() 恢复延时的任务,OSTimeDlyResume() 系统时间函数,OSTimeGet()和OSTimeSet() 5.5 ?C/OS-II内核结构 5.5.1 临界段 5.5.2 任务 5.5.3 任务控制块 5.5.4 任务调度 5.5.5 任务管理 5.5.6 中断服务 5.5.7 时钟节拍与时间管理 5.5.8 任务间同步与通信的管理 5.5.9 内存管理 5.5.10 ?C/OS-II的初始化 5.5.11 ?C/OS-II的启动 5.5.8 任务间同步与通信的管理 5.5 ?C/OS-II内核结构 ?C/OS-II通过向任务发信号来使不同的任务相互同步或进行通信。 在?C/OS-II中,任务或中断服务子程序使用事件控制块ECB(Event Control Block)来向其他任务发信号。 这里的信号是指某个事件,如信号量、邮箱或消息队列。 事件控制块ECB 信号量管理 消息邮箱管理 消息队列管理 5.5 ?C/OS-II内核结构 5.5.8 任务间同步与通信的管理 1. 事件控制块ECB 事件控制块ECB是用于实现信号量管理、消息邮箱管理及消息队列管理等功能函数的基本数据结构。 ?C/OS-II通过定义OS_EVENT数据结构,来确定一个事件控制块ECB的所有信息。 5.5.8 任务间同步与通信的管理 OS_EVENT数据结构 Typedef struct { INT8U OSEventType; INT8U OSEventGrp; INT16U OSEventCnt; void *OSEventPtr; INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; } OS_EVENT; 1. 事件控制块ECB ?C/OS-II提供以下几种功能函数来实现对事件控制块ECB的操作 : 5.5.8 任务间同步与通信的管理 初始化一个事件控制块,OS_EventWaitListInit() 使一个任务进入就绪态,OS_Ev

文档评论(0)

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

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

1亿VIP精品文档

相关文档