uCOS II
EmbeddedOsprey
主攻方向:STM32软件开发,主要开发平台KEIL
展开
-
uCOS II 之查找最高优先级任务
我们知道在u/COS II中,一个任务只有一个优先级,并且这个优先级在整个系统是唯一的,也就是一个任务也是对应一个优先级。优先级即任务,任务即优先级。我们只需通过优先级就可以找到所有和该任务相关的资源。现在问题是就绪表中有那么多任务处于就绪态,如何从中找到其中最高优先级。方法有很多,其中一个就是for循环找优先级,遍历所有就绪表,从中找到最高优先级,但这里有一个问题,如果就绪表中处于就绪的这个优先...原创 2018-11-28 20:47:27 · 2425 阅读 · 0 评论 -
uCOS II 之任务控制块TCB
任务控制块TCB:OS_EXT OS_TCB *OSTCBCur;OS_EXT OS_TCB *OSTCBFreeList;OS_EXT OS_TCB *OSTCBHighRdy;OS_EXT OS_TCB *OSTCBList;OS_EXT OS_TCB *OSTCBPrioTbl[OS_LOWEST_PRIO + 1u];OS_EXT OS_TCB OST...原创 2018-11-28 20:48:41 · 2039 阅读 · 0 评论 -
信号量保护
让我们举个例子。记DeviceALocked是一个位于内存中的R/W变量,用于指示设备A是否已经在使用中。任何一个任务,若欲使用设备A,都必须先检查这个变量的值。如果它的值为零,则表示设备可以使用。在任务获取到设备A后,它要把DeviceALocked的值改为1,表示设备A已经被占用。在设备A使用完毕后,该任务通过重新清零DeviceALocked来释放设备A,从而使其它任务可以使用此设备。看起...原创 2018-11-28 20:55:26 · 607 阅读 · 0 评论 -
uCOS 在 KEIL 中的任务切换展示图(OS Support)
以上图片为 KEIL 中自带的系统支持显示,可以展示操作系统的任务切换时的运行过程。AppTaskStart 任务运行时间:最小运行时间:36us最大运行时间:75us平均运行时间:44us任务切换周期:200ms系统大部分时间用于空闲任务,没有充分利用系统性能。关于这个更详细的内容,可以关注公众号:emOsprey回复相应的关键字可以获取相应的支持库。...原创 2019-04-23 14:01:39 · 1868 阅读 · 0 评论 -
操作系统中的中断控制
本文为随笔,更多细节可关注微信公众号:emOspreyMAX_SYSCALL_INTERRUPT_PRIORITY EQU 3 ; 屏蔽低于优先级 2 的中断,即抢占优先级设置为 0~2 将被屏蔽,3不屏蔽 OS_CPU_SR_Save MRS R0, BASEPRI ; 读取 PRIMASK 到R0,R0为返回值 MOV R1, #(MAX_...原创 2019-04-28 09:44:45 · 1053 阅读 · 0 评论 -
对嵌入式操作系统时间分片的一点理解
以 uCOS II 为例:OS_TICKS_PER_SEC如果 OS_TICKS_PER_SEC 为 100,表示 1 秒中断 100 次,也就意味着,任务切换时间为 10 ms。这个很容易理解,但是怎么使用呢。我们知道嵌入式常用的时间单位是 s、ms、us,OS_TICKS_PER_SEC 怎么和这些单位联系起来呢,又怎么去更好的理解它?系统延时函数OSTimeDly (x);如...原创 2019-04-29 11:10:20 · 1642 阅读 · 0 评论