ucos
zhuyong006
这个作者很懒,什么都没留下…
展开
-
uCOS-II中的任务切换机制
【函数周期与死循环】 一般函数的生命周期很简单,从开始调用函数起,直到函数返回,即结束。这样一来就完成了这个函数的使命,它也就不再需要了。对于一般的函数就是这样,但是回过头想想,对于一个系统、OS、或者工业控制中的一个控制器重的系统个,函数返回是很轻易很随便的就能返回吗?返回就意味着函数结束,死亡,若是想系统这样一个很大的函数,它的返回就意味着系统结束。因此,对于系统的函数...转载 2018-06-15 14:18:43 · 5437 阅读 · 0 评论 -
uCOS-II中的任务切换-图解多种任务调度时机与问题
【@.1 任务调度时机】之前的一篇文章分析了具体的uCOS-II中的任务切换机制,是从函数调用的角度上分析的。这次我具体从整个程序运行的时间上来看,分析多种任务调度发生的时机。以下所有图片均可点击放大观察。所有图中红色箭头表示中断级的任务切换,蓝色箭头表示任务级的中断切换。1.仅有一个任务,这种情况最简单。假设时钟节拍是1000次每秒,由定时中断产生,当节拍的时钟服务程序结束时会...转载 2018-06-15 14:23:16 · 2104 阅读 · 1 评论 -
UCOS II怎么查找当前就绪表中,优先级最高的任务
uCOS-II为了保证CPU总是执行优先级最高的任务,每当任务状态发生变化时,就需要判断当前任务是否为最高优先级,不是的话就需要进行上下文切换。如何在需要进行任务优先级比较时,快速的将就绪态任务中优先级最高的读出。一种最简单的数据结构就是定义一个unsigned int类型的变量。变量长度为4字节共32位,如果用1代表任务就绪,用0代表任务未就绪,用相应的位来代表任务优先级,那么这样总共能定义32...转载 2018-06-19 10:38:44 · 6475 阅读 · 2 评论 -
君正X1500基于Minios的crash分析
之前在开发过程中,总是会出现各种各样的内存跑飞,然而君正的OS是基于uc/os改进的,不同于Linux有很多的调试手段,一旦内存跑飞总是感到很棘手。因此,后面项目闲下来后,经过仔细的研究总算找到解决办法了。 我首先是通过代码构造了个crash的场景如下:static void beep_task(void *arg){ unsigned char err; unsign...原创 2018-07-05 20:25:27 · 2357 阅读 · 1 评论