转载请注明出处:http://blog.youkuaiyun.com/lbl1234
在详解1中主要讲了移植需要用到的CM3内核知识,本文讲一讲ucosii的原理和代码组成。ucosii最经典的学习资料莫过于邵贝贝老师的<<嵌入式实时操作系统uc/os-ii(第2版)>>,我想这本书对学ucosii已经足够了,因为他把ucosii V2.55代码都讲了一遍。移植前应该好好看看此书。
下面说说我对ucosii的理解。应该说ucosii这个内核还是比较简单的,基本可以分为任务调度,任务同步和内存管理三个部分。
任务调度
ucosii为保证实时性,给每个任务分配一个不同的优先级。当发生任务切换时,总是切换到就绪的最高优先级任务。有2种情况会发生任务切换。
1.任务等待资源就绪或自我延时;
2.退出中断;
情况1可以理解为任务主动放弃cpu的使用权。
情况2可以理解为中断后,某种资源可能就绪了,需要任务切换。
需要注意的是SysTick中断,这个中断是os的“心跳”,必须得有。这样就使得cpu会发生周期性地做任务切换。由于ucosii不支持时间片轮转调度,因此在该中断中必须做的工作仅有os的时间