嵌入式学习小组
直播中

胡红枚

7年用户 331经验值
私信 关注

嵌入式实时操作系统μCOS-II如何移植?

这是我学习μCOS-II的笔记,选择任哲的课本是因为在网上找的PDF较邵贝贝的清晰,学习下来,感觉部分内容讲的还是挺好的,书中有大量使用教程
目前状态:
1、对CPU的控制权如何在低优先级的任务不主动放弃使用权的情况下转换到高优先级的任务,对这一过程的具体实现,不是太明白
2、对如何移植,也不懂,没有亲手实践过,直接用的*火的
新建文本文档.rar (296 Bytes )

回帖(3)

陈光琦

2020-4-13 09:30:19
终于搞懂:在低优先级任务不主动放弃CPU的使用权的情况下,高优先级的任务如何得到执行的问题在uC/OS里,有两个函数可以实现任务的切换:

  • 任务级切换函数OSCtSw()
  • 中断级任务切换函数OSIntCtSw()

在系统时钟的中断服务函数调用的退出中断服务函数OSIntExit()里面,可以看到OSIntCtxSw(),所以只要是高优先级任务的延时到了,系统就会“暴力打断”正在运行的低优先级任务,转而去执行高优先级任务
举报

李蕊

2020-4-13 09:50:07
现在又碰到了一个问题:当main函数return之后,程序是怎样运行的?
举报

苏宇樵

2020-4-13 10:06:24
我知道了,是应为在调用过OSStart()函数之后,CPU就转去运行μCOS-II操作系统了
OSStart()的官方英文注释是(前半部分):OSStart()具体内容是:
[C] 纯文本查看 复制代码
void  OSStart (void){    if (OSRunning == OS_FALSE) {        OS_SchedNew();                               /* Find highest priority's task priority number   */        OSPrioCur     = OSPrioHighRdy;        OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy]; /* Point to highest priority task ready to run    */        OSTCBCur      = OSTCBHighRdy;        OSStartHighRdy();                            /* Execute target specific code to start task     */    }}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分