【嵌入式操作系统讲解】uCOS嵌入式开发.pptVIP

【嵌入式操作系统讲解】uCOS嵌入式开发.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2002年1月 What is uC/OS? u: Micro C:control uC/OS : 适合于小的、控制器的操作系统 小巧 公开源代码,详细的注解 可剥夺实时内核 可移植性强 多任务 确定性 The Story of uC/OS 美国人Jean Labrosse 1992年编写的 商业软件的昂贵 应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等 1998年uC/OS-II,目前的版本uC/OS-II V2.51 www.uCOS-II.com 概要 内核结构-任务以及调度机制 任务间通信 uC/OS的移植 在PC机上运行uC/OS 任务task 典型的一个无限循环。 void mytask(void *pdata) { for (;;) { do something; waiting; do something; } } 支持64个任务,每个任务一个特定的优先级。优先级越高,数字越小 系统占用了两个任务,空闲任务和统计任务。 任务的数据结构—任务控制块 任务控制块 OS_tcb,包括 任务堆栈指针,状态,优先级,任务表位置,任务链表指针等。 所有的任务控制块分为两条链表,空闲链表和使用链表。 任务控制块结构 Struct os_tcb { OS_STK *OSTCBStkPtr; struct os_tcb *OSTCBNext; struct os_tcb *OSTCBprev; OS_EVENT *OSTCBEventPtr; void *OSTCBMsg; INT16U OSTCBDly; INT8U OSTCBStat; INT8U OSTCBPrio; INT8U OSTCBX, OSTCBY, OSTCBBitX, OSTCBBitY; } OS_TCB 任务的状态 任务的状态 OSTCBStat 运行,就绪,等待,挂起… 可以有多个准备就绪的任务,但一个时刻只有一个任务可以运行,OSHighRdy 任务的调度--OSSched uC/OS是占先式实时多任务内核,优先级最高的任务一旦准备就绪,则拥有CPU的所有权开始投入运行。 uC/OS中不支持时间片轮转法,每个任务的优先级要求不一样且是唯一的,所以任务调度的工作就是:查找准备就绪的最高优先级的任务并进行上下文切换。 任务的调度 就绪任务表:用于存贮每个任务的就绪状态标志。由两个变量组成: OSRedyGrp:8位,每位表示一组(8个)任务中是否有就绪的任务。 OSRdyTbl[]:位图方式表示某个任务是否就绪。 就绪状态标志 根据优先级找到任务在就绪任务表中的位置 根据优先级确定就绪表 假设优先级为12的任务进入就绪状态,12=1 100b,则OSRdyTbl[1]的第4位置1,且OSRdyGrp的第1位置1,相应的数学表达式为: OSRdyGrp |=0x02; OSRdyTbl[1] |=0x10; 而优先级为21的任务就绪21=10 101b,则OSRdyTbl[2]的第5位置1,且OSRdyGrp的第2位置1,相应的数学表达式为: OSRdyGrp |=0x04; OSRdyTbl[2] |=0x20; 根据优先级确定就绪表 从上面的计算我们可以得到:若第n位置1,则应该与2n 相或。uC/OS中,把2n的n=0-7的8个值 先计算好存在数组OSMapTbl[7]中,也就是: OSMapTbl[0] =20=0x1; OSMapTbl[1] =21=0x2; ? …… OSMapTbl[7] =27=0x80; 根据优先级确定就绪表 利用OSMapTbl,通过任务的识别号-优先级prio来设置任务在就绪组和就绪表数组中相应位置的数学式为: OSRdyGrp |=OSMapTbl[prio3]; OSRdyTbl[prio3] |=OSMapTbl[prio 0x07]; 假设优先级为12,1 100b OSRdyGrp |=0x02; OSRdyTbl[1] |=0x10; 根据就绪表确定最高优先级(1) 两个关键: 优先级数分解为高三位和低三位分别确定; 高优先级有着小的优先级号 ; 根据就绪表确定最高优先级(2) 通过OSRdyGrp值确定高3位,假设为0x2

文档评论(0)

精品资料 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档