- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* uC/OS的改进 固定的基于优先级的调度,不支持时间片,使用起来不方便。一个任务的基础上增加一个基于时间片的微型调度核 在对临界资源的访问上使用关闭中断实现,没有使用CPU提供的硬件指令,例如测试并置位。 系统时钟中断,没有提供用户使用定时器,可以借鉴linux的定时器加以修改 可以加上文件系统和TCP/IP协议栈 ?C/OS-II的移植 * 学习uC/OS的步骤 学习与研究uC/OS的起点:在PC上执行uC/OS ,环境:TC编译环境,新建一个工程 应用程序设计:消费者与生产者经典问题。 源代码阅读 移植:DSP,单片机,SoC系统 * 谢 谢!! 相关资料下载: /Garfield/introduction.htm * * l??????? μC/OS-Ⅱ是怎样处理临界段代码的; l??????? 什么是任务,怎样把用户的任务交给μC/OS-Ⅱ; l??????? 任务是怎样调度的; l??????? 应用程序CPU的利用率是多少,μC/OS-Ⅱ是怎样知道的; l??????? 怎样写中断服务子程序; l??????? 什么是时钟节拍,μC/OS-Ⅱ是怎样处理时钟节拍的; l??????? μC/OS-Ⅱ是怎样初始化的,以及 怎样启动多任务; * 使任务进入就绪态 如果prio是任务是优先级,也是任务的识别号,则将任务放入就绪表,即使任务进入就绪态的方法是: OSRdyGrp |=OSMapTbl[prio3]; OSRdyTbl[prio3] |=OSMapTbl[prio 0x07]; 假设优先级为12——1100b OSRdyGrp |=0x02; OSRdyTbl[1] |=0x10; ?C/OS-II的任务管理 * 使任务脱离就绪态 将任务就绪表OSRdyTbl[prio3]相应元素的相应位清零,而且当OSRdyTbl[prio3]中的所有位都为零时,即全组任务中没有一个进入就绪态时,OSRdyGrp的相应位才为零。 if((OSRdyTbl[prio3]= ? OSMapTbl[prio 0x07])==0); OSRdyGrp=OSMapTbl[prio3]; ?C/OS-II的任务管理 * 任务调度器 void OSSched (void) { INT8U y; ? OS_ENTER_CRITICAL(); if ((OSLockNesting | OSIntNesting) == 0) { y = OSUnMapTbl[OSRdyGrp]; OSPrioHighRdy = (INT8U)((y 3) + OSUnMapTbl[OSRdyTbl[y]]); if (OSPrioHighRdy != OSPrioCur) { OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy]; OSCtxSwCtr++; OS_TASK_SW(); } } OS_EXIT_CRITICAL(); } ?C/OS-II的任务管理 * 任务切换 将被挂起的任务寄存器入栈 将较高优先级任务的寄存器出栈 ?C/OS-II的任务管理 * 任务级的任务切换OS_TASK_SW() 通过系统调用指令完成 保护当前任务的现场 恢复新任务的现场 执行中断返回指令 开始执行新的任务 ?C/OS-II的任务管理 * 调用OS_TASK_SW()前的数据结构 低优先级任务 OS_TCB OSTCBCur (1) 存贮器低地址 存贮器高地址 堆栈方向 SP R1 R2 R3 R4 PC PSW 存贮器低地址 存贮器高地址 高优先级任务 OS_TCB OSTCBHighRdy (3) (2) CPU (4) (5) ?C/OS-II的任务管理 * 保存当前CPU寄存器的值 低优先级任务 OS_TCB OSTCBCur PSW PC R1 R2 R3 R4 存贮器低地址 存贮器高地址 堆栈方向 SP R1 R2 R3 R4 PC PSW 存贮器低地址 存贮器高地址 高优先级任务 OS_TCB OSTCBHighRdy (3) (2) CPU (4) (5) (1) (3) ?C/OS-II的任务管理 * 重新装入要运行的任务 低优先级任务 OS_TCB OSTCBCur PSW PC R1 R2 R3 R4 存贮器低地
文档评论(0)