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

嵌入式系统基础教程第19讲第9章嵌入式操作系统.pptVIP

嵌入式系统基础教程第19讲第9章嵌入式操作系统.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

μC/OS-II的代码结构(续)2008年12月15日南京大学计算机系*μC/OS-II的任务代码有两种框架结构,如下列出:voidUsertask(void*pdata){for(;;){用户代码;OSMboxPend();OSQPend();OSSemPend();OSTaskDel(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF);OSTimeDly();OSTimeDlyHMSM();用户代码;}}voidUsertask(void*pdata){用户代码;OSTaskDel(OS_PRIO_SELF);}μC/OS-II的代码结构(续)2008年12月15日南京大学计算机系*对于执行无限循环的任务,通常采用第一种形式;对于只执行一次就自我删除的任务,采用第二种形式。以下是推荐的μC/OS-II应用程序任务的基本结构voidUsertask(void*pdata){INT8UReturnNum;//返回值InitTimer();//可选for(;;)………..//应用程序代码OSTimeDly(n);//常用的语句}μC/OS-II的代码结构(续)2008年12月15日南京大学计算机系*μC/OS-II的启动过程Bootloader执行完毕后,调用应用程序主文件(通常是main.c)里的main()函数。main()函数在执行过程中,除硬件初始化函数和用户函数外,按以下次序执行三个主要的μC/OS-II函数:①操作系统初始化OSInit();②任务创建OSTaskCreate();③任务调度开始OSStart()一旦OSStart()函数开始执行,就标志着μC/OS-II进入了多任务调度的正常运行状态μC/OS-II的内核2008年12月15日南京大学计算机系*μC/OS-II内核只提供任务调度、任务间通信(ITC)与同步、任务管理、时间管理和内存管理等基本功能01可裁剪编译到8K左右,全部只有100K左右,消耗资源非常小02在小规模的代码内实现了抢占式任务调度、多任务通信功能03μC/OS-II的内核(续1)2008年12月15日南京大学计算机系*μC/OS-II的临界区μC/OS-II调用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个宏来执行关中断和开中断,对于不同的体系结构,这两个宏定义不一样。OS_CPU.H文件中含有OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()的定义μC/OS-II的内核(续2)2008年12月15日南京大学计算机系*μC/OS-II的任务状态01最大任务数64个,最高优先级为0,最低优先级取值为实际定义的最大任务数减1.02任务建立之后,拥有优先级,执行函数,自用栈空间和任务控制块(TCB),在运行时刻能够完全控制CPU的操作以及全部用户可访问寄存器的操作。03μC/OS-II的任务状态转换图2008年12月15日南京大学计算机系*μC/OS-II的每个任务都是一个无限的循环。每个任务都处在休眠态、就绪态、运行态、挂起态和被中断态的某种状态下(任务状态变迁如右图所示)μC/OS-II的内核(续3)2008年12月15日南京大学计算机系*休眠态(dormant)这种状态相当于该任务驻留在内存中,但还没有交给内核管理。把任务交给内核是通过调用任务创建函数实现的μC/OS-II两个任务创建函数OSTaskCreate()和OSTaskCreateExt()μC/OS-II的内核(续3)2008年12月15日南京大学计算机系*STEP5STEP4STEP3STEP2STEP1就绪态(ready)在这种状态下意味着该任务已经准备好,且可运行,但由于该任务的优先级比正在运行的任务的优先级低,所以还暂时不能运行μC/OS-II就绪表为每一个优先级的任务提供了一个位元,登记该任务是否就绪,就绪时取值为1,没有就绪时取值为0运行态得到了CPU的控制权正在运行之中的任务状态μC/OS-II的内核(续4)2008年12月15日南京大学计算机系*挂

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档