- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
结构体系
L21-uCOS结构体系 uC/OS-II内核结构 嵌入式系统开发 μC/OS-Ⅱ的主要结构概貌 μC/OS-Ⅱ是怎样处理临界段代码的; 什么是任务,怎样把用户的任务交给μC/OS-Ⅱ; 任务是怎样调度的; 应用程序CPU的利用率是多少,μC/OS-Ⅱ是怎样知道的; 怎样写中断服务子程序; 什么是时钟节拍,μC/OS-Ⅱ是怎样处理时钟节拍的; μC/OS-Ⅱ是怎样初始化的,以及 怎样启动多任务; 服务于应用程序的函数描述 OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL(), OSInit(), OSStart(), OSIntEnter() 和 OSIntExit(), OSSchedLock() 和 OSSchedUnlock(), 以及 OSVersion(). 临界段(Critical Sections) 和其它内核一样,μC/OS-Ⅱ为了处理临界段代码需要关中断,处理完毕后再开中断。这使得μC/OS-Ⅱ能够避免同时有其它任务或中断服务进入临界段代码。 μC/OS-Ⅱ定义两个宏(macros)来关中断和开中断,以便避开不同C编译器厂商选择不同的方法来处理关中断和开中断。 μC/OS-Ⅱ中的这两个宏调用分别是:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。 因为这两个宏的定义取决于所用的微处理器,故在文件OS_CPU.H中可以找到相应宏定义。每种微处理器都有自己的OS_CPU.H文件。 任务 一个任务通常是一个无限的循环 。 当任务完成以后,任务可以自我删除 。 不同的任务可以有不同的优先级。 μC/OS-Ⅱ可以管理多达64个任务,但目前版本的μC/OS-Ⅱ有两个任务已经被系统占用了。 为了使μC/OS-Ⅱ能管理用户任务,用户必须在建立一个任务的时候,将任务的起始地址与其它参数一起传给下面两个函数中的一个:OSTastCreat()或OSTaskCreatExt()。OSTaskCreateExt()是OSTaskCreate()的扩展,扩展了一些附加的功能。 任务的例子 任务状态 睡眠态 绪态 等待(挂起) 运行 被中断 任务状态切换 任务控制块(Task Control Blocks, OS--_TCBs) 一旦任务建立了,任务控制块OS--_TCBs将被赋值 。 任务控制块是一个数据结构,当任务的CPU使用权被剥夺时,μC/OS-Ⅱ用它来保存该任务的状态。当任务重新得到CPU使用权时,任务控制块能确保任务从当时被中断的那一点丝毫不差地继续执行。 任务的结构体定义 任务链表 应用程序中可以有的最多任务数(OS_MAX_TASKS)是在文件OS_CFG.H中定义的。 所有的任务控制块OS_TCBs都是放在任务控制块列表数组OSTCBTbl[]中的。 当任务一旦建立,空任务控制块指针OSTCBFreeList指向的任务控制块便赋给了该任务,然后OSTCBFreeList的值调整为指向下链表中下一个空的任务控制块。一旦任务被删除,任务控制块就还给空任务链表。 就绪表(Ready List) 每个任务被赋予不同的优先级等级,从0级到最低优先级OS_LOWEST_PR1O,包括0和OS_LOWEST_PR1O在内(见文件OS_CFG.H)。当μC/OS-Ⅱ初始化的时候,最低优先级OS_LOWEST_PR1O总是被赋给空闲任务idle task。 每个任务的就绪态标志都放入就绪表中的,就绪表中有两个变量OSRedyGrp和OSRdyTbl[]。 为确定下次该哪个优先级的任务运行了,内核调度器总是将OS_LOWEST_PR1O在就绪表中相应字节的相应位置1 任务调度(Task Scheduling) μC/OS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。 确定哪个任务优先级最高,下面该哪个任务运行了的工作是由调度器(Scheduler)完成的。 任务级的调度是由函数OSSched()完成的。中断级的调度是由另一个函数OSIntExt()完成的,。 调度器(Scheduler) 给调度器上锁和开锁(Locking and UnLocking the Scheduler) 给调度器上锁函数OSSchedlock() 用于禁止任务调度,直到任务完成后调用给调度器开锁函数OSSchedUnlock()为止。 调用OSSchedlock()的任务保持对CPU的控制权,尽管有个优先级更高的任务进入了就绪态。然而,此时中断是可以被识别的,中断服务也能得到(假设中断是开着的)。 OSSchedlock()和OSSchedUnlock()必须成对使用。 空闲任务(Idle Task) μC/OS-Ⅱ总是建立一个空闲任务,这个任务在没有其它任
您可能关注的文档
最近下载
- 商业秘密保护知识培训.ppt VIP
- 生态学全套配套课件第三版杨持第二章.ppt VIP
- 《向上管理 与你的领导相互成就》读书笔记思维导图.pptx VIP
- 钢结构工程维修施工方案.docx VIP
- 2023年武汉科技大学计算机科学与技术专业《计算机网络》科目期末试卷A(有答案).docx VIP
- 电信春节通信保障应急预案.docx VIP
- 女装设计 全套课件(上).pptx VIP
- 珠海市政府投资项目建设监督管理中心招考合同制职员考前自测高频考点模拟试题(共500题)含答案详解.docx VIP
- 体例格式9:工学一体化课程《小型网络安装与调试》任务4学习任务工作页.docx VIP
- 建筑节能工程监理质量评估报告.pdf VIP
文档评论(0)