![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ucosiii内核源码
我是标同学
我非常喜欢编程
展开
-
ucosiii临界区实现方式与中断打断方式
task1() OS_CRITICAL_ENTER(); //实现方式是任务调度器锁OSSchedLockNestingCtr变量+1罢了,相当于阻止任务切换,但是还是可以响应外部中断的,如下图所示: xx()......... OS_CRITICAL_EXIT(); //OSSchedLockNestingCtr--正在执行任务1的xx语句,此时时间片中断来...原创 2019-12-19 13:23:39 · 1709 阅读 · 0 评论 -
ucosiii中正点原子的内存管理函数外部内存申请使用率导致的时间片中断钩子任务的运行使得其它正常任务无法运行的情况
原因:时间片中断钩子任务里不能做太耗时的事情,因为时间片中断函数1ms触发一次,然后发消息给时间片钩子任务(优先级为2,即中断程序任务化),使得时间片钩子任务能够马上运行,但是若这个时间片钩子任务运行的时间超过了1ms(时间片长度),那么时间片中断函数就会再次到来,发消息给这个时间片钩子任务,使其可以再次运行。这样的话,可以发现,系统中的其他任务都得不到运行了(因为优先级都低于这个时间片钩子任务)...原创 2019-12-14 18:12:26 · 950 阅读 · 0 评论 -
ucosiii中断服务函数里不允许优先级改变函数OSTaskChangePrio调用
ucosiii中断服务函数里不允许优先级改变函数OSTaskChangePrio调用,所以想要改变任务优先级,那就中断程序任务化,中断里告诉一个最高优先级的任务,让这个任务执行中断里想执行的内容,这样就可以调用改变指定任务优先级等系统函数了...原创 2019-12-13 22:37:31 · 626 阅读 · 0 评论 -
关于实时操作系统中最大中断关闭时间、中断响应时间、中断恢复时间、任务等待时间详解
关中断时间:指的是程序中有一些临界段代码(关于这个详细了解可以看我这篇文章,临界区,临界资源),需要关闭中断才能安全访问那么访问这段代码前关总中断,访问完后打开总中断,在这个时间内,系统是无法响应外部任何中断的。最大关中断时间:指的是这么多个临界段代码的关中断时间中最大的那个,即这个时间就代表了最差最坏情况下中断的关闭时间了,因为实时操作系统中很多时间问题都是基于最差情况下考虑的。中断响应...原创 2019-10-18 10:31:15 · 5677 阅读 · 1 评论 -
ucosiii定时器任务与定时器的剖析
ucosiii中每个任务是由一个任务控制块TCB确定的。同理,每个定时器是由一个定时器结构体变量唯一确定和存在的,可以说这个结构体变量就是一个定时器。系统时钟节拍中断函数OSTmrUpdateCnt次节拍(系统节拍每次都是设为1ms)到来其中OSTmrUpdateCnt = OSCfg_TickRate_Hz / OSCfg_TmrTaskRate_Hz;都会给系统定时器任务void ...原创 2019-10-03 20:50:00 · 1267 阅读 · 0 评论 -
ucosiii操作系统里消息的直接发布和延迟发布两种方式分析
ucosiii对从中断发布消息或信号有两种模式:直接发布和延迟发布。直接发布指的是直接在中断函数里发布消息OSTaskSemPost()等函数,举例,节拍中断函数里调用时钟节拍函数 ,里面会给系统的时钟节拍任务OS_TickTask()发布消息,叫它进行时钟节拍列表的更新(关于这里具体知识,可以看我这篇文章,ucosiii实时嵌入式操作系统时间片实现原理深入解析),这样就还是在中断函数...原创 2019-10-03 19:39:48 · 1444 阅读 · 1 评论 -
ucosiii实时嵌入式操作系统时间片实现原理深入解析
ucosiii等系统需要一个系统节拍,这个由CPU的比如stm32单片机的SysTick系统滴答定时器提供,一般而言操作系统的时钟节拍的周期tick=1ms(如果太小,即产生的节拍频率越高,系统任务切换发生的约频繁,那么系统由于任务切换调度等系统操作对耗费的系统CPU时间就越多,增加了系统内核的负担,但是增强了系统实时性。如果太大就降低了系统实时性。),所以设置系统滴答定时器频率为1000hz即可...原创 2019-10-03 12:08:09 · 3139 阅读 · 1 评论 -
ucosii/iii实时嵌入式操作系统任务切换与中断管理深入解析
学习嵌入式实时操作系统ucos的比较好的三本书:嵌入式实时操作系统ucosii原理及应用(任哲)、嵌入式实时操作系统ucosiii(宫辉等译)、ucosiii内核实现与应用开发实战指南(刘火良)。第一本书先看,结合ucosii源码,可以完整理解整个ucosii系统(约三万两千行代码),然后用后面两本书交叉学习ucosiii系统即可(估计五六万行吧,反正比ucosii代码量多了很多,所以推荐先学uc...原创 2019-10-02 20:07:52 · 2340 阅读 · 0 评论 -
ucosii操作系统内核源码学习第一篇
待会就开始学习原创 2018-06-09 19:36:57 · 1657 阅读 · 0 评论 -
ucosii操作系统中最高优先级就绪任务查找方法详解
内核源码中代码如下:1. 登记 指的是当某个任务处于就绪状态时,系统将该任务登记在任务就绪表中,即在就绪表中将该任务对应的位设置为1我们知道,ucosii系统最大支持64个任务数,且每个任务的优先级不能相同,所以优先级就是每个任务的ID,在程序中,用下面代码把优先级为prio的任务设置为就绪状态:OSRdyGrp |= OSMapTbl[ prio >>3 ]; ...原创 2018-06-14 17:00:58 · 2785 阅读 · 0 评论