ucosii任务切换机理及中断.pdfVIP

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多
ucosii任务切换机理及中断.pdf

综合调度:μC/OS-II的任务切换机理及中断调 度优化 疯狂代码 http://CrazyC/ ĵ http:/CrazyC/NetworkProgramming/Article33558.html 作 者: ■ 上海自动化仪表股份有限公司 倪敏 周怡廷页 杨继堂 摘要:μC/OS-II是种适用于嵌入式系统抢占式实时多任务操作系统开放源代码便于学习和使用介绍μC/OS-II在 任务级和中断级任务切换原理以及这操作系统基于嵌入式系统对于中断处理;相对于内存资源较少单片机着重 讨论种优化实用堆栈格式和切换形式以提高资源利用率;结合MSP430单片机做具体分析 关键词:实时多任务操作系统 μC/OS MSP430 中断 堆栈 引 言:   在嵌入式操作系统领域由Jean J. Labrosse开发μC/OS由于开放源代码和强大而稳定功能曾经度在嵌入式 系统领域引起强烈反响而其本人也早已成为了嵌入式系统会议(美国)顾问委员会成员   不管是对于初学者还是有经验工程师μC/OS开放源代码方式使其不但知其然还知其所以然通过对于系统内 部结构深入了解能更加方便地进行开发和调试;并且在这种条件下完全可以按照设计要求进行合理裁减、扩充 、配置和移植通常购买RTOS往往需要大笔资金使得般学习者望而却步;而μC/OS对于学校研究完全免费只有 在应用于盈利项目时才需要支付少量版权费特别适合般使用者学习、研究和开发自1992第1版问世以来已有成 千上万开发者把它成功地应用于各种系统安全性和稳定性已经得到认证现已经通过美国FAA认证 1 μC/OS-II几大组成部分   μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信CPU移植等5个部分   核心部分(OSCore.c) 是操作系统处理核心包括操作系统化、操作系统运行、中断进出前导、时钟节拍、任 务调度、事件处理等多部分能够维持系统基本工作部分都在这里   任务处理部分(OSTask.c) 任务处理部分中内容都是与任务操作密切相关包括任务建立、删除、挂起、恢复 等等μC/OS-II是以任务为基本单位调度所以这部分内容也相当重要   时钟部分(OSTime.c) μC/OS-II中最小时钟单位是timetick(时钟节拍)任务延时等操作是在这里完成   任务同步和通信部分 为事件处理部分包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间互 相联系和对临界资源访问   与CPU接口部分 是指μC/OS-II针对所使用CPU移植部分由于μC/OS-II是个通用性操作系统所以对于关键 问题上实现还是需要根据具体CPU具体内容和要求作相应移植这部分内容由于牵涉到SP等系统指针所以通常用 汇编语言编写主要包括中断级任务切换底层实现、任务级任务切换底层实现、时钟节拍产生和处理、中断相关 处理部分等内容 2 对于MSP430中断处理 2.1 和中断操作   MSP430最常使用C编译器应该就是IAR Embedd-ed WorkBench对于这编译器来说通过分析和研究发现 它有以下规律 (1)   如果是级编译器会在时先把当前PC压栈然后PC值改变 如果被带有参数那么编译器按照以下规则进行   最左边两个参数如果不是struct(结构体)或者union(联合体)将被赋值到寄存器否则将被压栈剩下参 数都将被压栈根据最左边那两个参数类型分别赋值给R12(对于32位类型赋值给R12:R13)和R14(对于32位类 型赋值给R14:R15) (2)中断   如果是在中断中中断服务子话编译器将把当前执行语句PC压栈同时再把SR压栈接着根据中断服务子复杂 程度选择把R12~R15中寄存器压栈然后执行中断服务子中断处理结束后再把Rx寄存器出栈SR出栈PC出栈把系 统恢复到中断前状态使接着被中断部分继续运行 2.2 任务级和中断级任务切换步骤和原理 (1)任务级任务切换原理    μC/OS-II是个多任务操作系统在没有用户自己定义中断情况下任务间切换步骤是这样:任务间切换般会 OSSched结构如下: void OSSched(void){ 关中断 如果(不是中断嵌套并且系统可以被调度){ 确定优先级最高任务 如果(最高级任务不是当前任务){ OSCtxSw; } }

文档评论(0)

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

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

1亿VIP精品文档

相关文档