MC9S12单片机原理及嵌入式应用开发技术陈万忠第9章节嵌入式实时操作系统使用范例.pptVIP

MC9S12单片机原理及嵌入式应用开发技术陈万忠第9章节嵌入式实时操作系统使用范例.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文档。上传文档
查看更多
PPT研究院 POWERPOINT ACADEMY * * 尚辅网 / 第9章 嵌入式实时操作系统使用范例 主编 第9章 嵌入式实时操作系统使用范例 9.1 嵌入式实时操作系统 9.2 移植μC/OS-II 9.3 应用范例 9.1 嵌入式实时操作系统 9.1.1 嵌入式实时操作系统简介 9.1.2 嵌入式实时操作系统μC/OS-II 9.1.1 嵌入式实时操作系统简介 在嵌入式应用中提倡使用实时操作系统(RTOS),这样既可以使系统的实时性得以保证,达到或接近理论上可以达到的最好水平,又可以使系统更加稳定可靠。但是,开发嵌入式应用的工程师们一般只是某应用领域的专家,他们对计算机的理解尚不能与计算机专家相比。而计算机专家们又往往缺乏各应用对象的专业知识,不太有能力深入到某具体应用的更深层次。这就形成了计算机专家与嵌入式应用工程师之间的一道鸿沟。RTOS是计算机科学这一学科的计算机专家们数十年潜心研究发展而来的精美成果,教会应用工程师直接应用RTOS这一成果是跨越上述鸿沟的有效途径。提倡使用RTOS的第二个原因是它可以提高开发效率、缩短开发周期、使程序更便于修改与维护。一个复杂的应用程序,可以分解成多个任务,每个任务模块的调试、修改几乎不影响其他模块。 9.1.2 嵌入式实时操作系统μC/OS-II 1) 基于优先级的可剥夺型实时多任务内核,优先级算法采用查表法、切换速度快。 2) 可以处理和调度最多60个任务,任务的优先级可以动态调整。 3) 任务间通信同步使用信号量函数、邮箱和消息队列。 4) 95%以上代码用C语言写成,可移植性好。 5) 具有较好的可剪裁性,用户可以只嵌入那些用得着的函数,使应用程序使用的ROM、RAM尽量小。 6) 源代码是以PC的80x86 CPU为例在DOS环境下给出的,因此很容易在PC上运行,对初学者甚为方便。 7) 书中不但对源代码做了详尽的解释,而且对RTOS的概念、原理等做了细致的描述,对高校学生及嵌入式应用工程师无疑是一本很好的教材。 9.2 移植μC/OS-II 9.2.1 重新定义内核的大小和功能 9.2.2 OS—CPU.H 9.2.3 编写与硬件相关的代码 9.2.4 中断服务子程序OSTickISR() 9.2.5 任务堆栈初始化函数OSTaskStkInit() 9.2.6 让优先级最高的就绪态任务开始运行函数OSStartHighRdy() 9.2.7 任务级任务切换函数OSCtxSw() 9.2.8 中断级任务切换函数OSIntCtxSw() 9.2.9 相关接口函数 9.2 移植μC/OS-II 图9-1 μC/OS-II的文件结构 9.2.3 编写与硬件相关的代码 ① 中断服务子程序OSTickISR()。 ② 任务堆栈初始化函数OSTaskStkInit()。 ③ 让优先级最高的就绪态任务开始运行函数OSStartHighRdy()。 ④ 中断级任务切换函数OSIntCtxSw()。 ⑤ 任务级任务切换函数OSCtxSw()。 ⑥ 相关接口函数。 9.2.7 任务级任务切换函数OSCtxSw() ① 保存被挂起的任务的页面寄存器的值,即将PPAGE推入当前任务栈。 ② 保存即将被挂起任务的堆栈指针到它的任务控制块中。 ③ 需要时在这里调用用户接口函数。 ④ 由于新的当前任务是将要重新开始运行的那个任务,任务切换代码将优先级最高的就绪态任务的任务控制块指针OSTCBHighRdy复制给当前运行的任务控制块中的OSTCBCur。 ⑤ 将新任务的优先级OSPriHighRdy赋给当前运行任务的优先级OSPriCur。 ⑥ 换入新任务的页面寄存器,即换入新任务代码,换出挂起任务的代码。 ⑦ 运行中断返回指令RTI,从OS—TCB中找出将要重新开始运行的那个任务的堆栈指针,装入CPU的SP寄存器,新任务恢复运行。 9.2.8 中断级任务切换函数OSIntCtxSw() 1)由于μC/OS-II V2.51版本后中断级任务切换时堆栈指针保存策略的改变,使得普通中断服务子程序在开始处需要多加上保存堆栈指针的操作。 2)由于在本例的移植中,要将不同的任务代码分配到不同的存储页中,这些存储页地址空间相同,靠PPAGE进行区分,所以要将任务与任务所处的PPAGE保持某种联系。 9.2.9 相关接口函数 相关接口函数目前都是空函数,留给用户应用程序,只有当用户希望向内核添加用户定义的新功能时才会用到。 #if OS—CPU—HOOKS—EN void OSTaskCreateHook (OS—TCB *ptcb) {   ptcb = ptcb;  /* Prevent compiler warning   */ } void

您可能关注的文档

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档