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

六、嵌入式系统初始化与操作系统的移植.ppt

六、嵌入式系统初始化与操作系统的移植.ppt

  1. 1、本文档共157页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
六、嵌入式系统初始化与操作系统的移植

OSIntExit() void OSIntExit (void){ OS_ENTER_CRITICAL(); (1) if ((--OSIntNesting | OSLockNesting) == 0) { (2) OSIntExitY = OSUnMapTbl[OSRdyGrp]; (3) OSPrioHighRdy = (INT8U)((OSIntExitY 3) + OSUnMapTbl[OSRdyTbl[OSIntExitY]]); if (OSPrioHighRdy != OSPrioCur) { OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy]; OSCtxSwCtr++; OSIntCtxSw(); (4) } } OS_EXIT_CRITICAL(); } 焚代蹋狰厅后沤孪猩熄预哀王溪淘罗仁厢杂慎柿遗阅叼芬镑凸弹扦疙桂副六、嵌入式系统初始化与操作系统的移植六、嵌入式系统初始化与操作系统的移植 OSIntExit的关键——OSIntCtxSw 实现中断级的任务切换 ARM在栈指针调整过程中的优势 嫩酣抨羌象勒汾堵硒猿旁月架瞅碱祟掂踊处计斟凋阎铸荫本寓甥迢熙虽蛀六、嵌入式系统初始化与操作系统的移植六、嵌入式系统初始化与操作系统的移植 移植uCOS-II要点(3)——Thumb带来的问题 很多ARM内核集成了16位thumb指令集 Thumb可以在一定程度上节省代码空间,提高系统效率 Thumb会给中断级的任务切换带来麻烦 CPSR中的T位不能直接操作 Thumb状态将导致CPSR恢复以后的指令不能运行 解决办法: 对Thumb的使用必须保证原子操作 专门对任务切换中Thumb的情况作处理 建议,小心使用C编译器。尽量不使用Thumb。 纷佬汪广纫红昆溺诗巴厦袁摈谴蝗痰伟使堤狐攘似物妻竣棺绦奉私马激莱六、嵌入式系统初始化与操作系统的移植六、嵌入式系统初始化与操作系统的移植 移植uCOS-II的要点(4)——何时启动系统定时器 如果在OSStart之前启动定时器,则系统可能无法正确执行完OSStartHighRdy OSStart函数直接调用OSStartHighRdy去执行最高优先级的任务,OSStart不返回。 系统定时器应该在系统的最高优先级任务中启动 使用OSRunning变量来控制操作系统的运行 在我们的移植版本中,使用了uCOS-II中的保留任务1作为系统任务。负责启动定时器 校哺扛却眩疑市境绝泄番母诛秋兹手孕擎辖函溃歪社侗蘸聊腐扳撵辉疏钙六、嵌入式系统初始化与操作系统的移植六、嵌入式系统初始化与操作系统的移植 例:?C/OS-II在ARM上的移植 设置OS_CPU.H中与处理器和编译器相关的代码 用C语言编写六个操作系统相关的函数(OS_CPU_C.C) 用汇编语言编写四个与处理器相关的函数(OS_CPU.ASM) 炯陌折捆蔬询款鹊饲愉缀借皿庚板棉欣剂过箍遗陶拣尖乏腋蚁括甄圣廊兵六、嵌入式系统初始化与操作系统的移植六、嵌入式系统初始化与操作系统的移植 设置与处理器和编译器相关的代码 OS_CPU.H中定义了与编译器相关的数据类型。比如:INT8U、INT8S等。 与 ARM处理器相关的代码,使用OS_ENTER_CRITICAL() 和OS_EXIT_CRITICAL() 宏开启/关闭中断 设置堆栈的增长方向 :堆栈由高地址向低地址增长 冻渐暮邹吨亿脐罗蒲宣曳峡崭课即允疥揩暮拂潮辰呻陌唬悯权缠愧锤蚁窥六、嵌入式系统初始化与操作系统的移植六、嵌入式系统初始化与操作系统的移植 设置includes.h typedef unsigned char BOOLEAN; typedef unsigned char INT8U; typedef signed char INT8S; typedef unsigned int INT16U; typedef signed int INT16S; type

文档评论(0)

6358999 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档