![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RTOS-ucosii
文章平均质量分 50
记录ucosii & ucosiii 工作中的知识点
呆呆狗meng
一只专注于学习进步的呆呆狗
展开
-
UCOSII源码分析九——相关知识点
内核对象uCOSII中包含的内核对象有信号量、互斥信号量、消息队列、消息邮箱、时间标志组。他们的原理相似,公用同一个数据结构,在系统开始的时候在OSInit (void)进行进行调用初始化函数OSInitEventList(),在变量数组OSEventTbl[OS_MAX_EVENTS]中定义了整个数据控制块存储空间。内核源码与定义任务控制块TCB类似。在函数OSInitEventList()中将事件链表连接在一起,并将事件的类型赋值为OS_EVENT_TYPE_UNUSED。宏OS_MAX_EVENTS原创 2021-11-22 19:27:21 · 298 阅读 · 0 评论 -
UCOSII源码分析八——空闲任务和统计任务
空闲任务和统计任务1.空闲任务系统初始是在函数OSInit (void)中进行建立空闲函数OS_InitTaskIdle(); 函数内部创建了空闲任务,并将空闲任务的优先级设置为最低:#define OS_TASK_IDLE_PRIO (OS_LOWEST_PRIO)这样在没有任务就绪的时候,会执行空闲函数,空闲任务OS_TaskIdle (void *p_arg)的内容很简单,只是在里面做简单的变量加一OSIdleCtr++;该变量记录了空闲任务调用的次数,同时该变量的增加快慢也体现了cpu原创 2021-11-22 19:26:15 · 1000 阅读 · 0 评论 -
UCOSII源码分析七——调度器上锁解锁
调度器上锁解锁调度器上锁解锁函数OSSchedLock (void),OSSchedUnlock (void)用于禁止任务调度,让cpu执行当前任务保持cpu 的控制权,解锁后可以进行调度。实现原理很简单,对全局变量锁定嵌套计数器OSLockNesting进行操作,OSLockNesting记录了上锁函数OSSchedLock (void)的调用次数,OSSchedLock (void)中对变量进行加一操作,OSSchedUnlock (void)对变量进行减一操作,在引起任务调度的函数中进行判断,若变原创 2021-11-22 19:25:05 · 970 阅读 · 0 评论 -
UCOSII源码分析六——定时器(Tmr.c)
定时器(Tmr.c)1. 软件定时器定时器的实现是需要硬件的支持,硬件进行计数递减,当递减到0时触发中断,即时钟节拍。系统开始运行时,OS_TMR_EN 为1 的话,使用定时器功能,在OSInit()中调用OSTmr_Init()函数,对该函数对时间轮进行初始化,并将定时器连接成链表,并在函数内部创建信号量,该信号量即用来进行定时器触发,在系统的时钟节拍到来时执行函数OSTimeTick (void),在函数内部执行全局变量OSTime++; 同时调用OSTimeTickHook();在该函数中实现信原创 2021-11-22 19:23:53 · 1427 阅读 · 0 评论 -
UCOSII源码分析五——任务优先级与任务调度
一、任务优先级与任务调度任务切换,先保存正在运行任务的当前状态(context),即CPU寄存器中的全部内容,这些内容保存在任务的当前状态保存区(task’s context storage area)也就是任务自己的栈区之中。入栈工作完成后,就要把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行做任务切换所需要的时间取决于CPU有多少寄存器要入栈内核负责管理各个任务,或者说为每个任务分配CPU时间,并负责任务之间的通信,内核提供的基本服务就是任务切换。任原创 2021-11-22 19:20:57 · 2964 阅读 · 0 评论 -
UCOSII源码分析四——Task.c
Task.cOSTaskDel()和OSTaskDelReq()使用:因为任务可能会占用一些资源和动态内存,如果直接调用OSTaskDel()进行删除是不能释放这些资源的,所以最好是先用OSTaskDelReq()通知要被删除的任务,你马上就要被删了,然后在那个任务中,提前做好一个函数,当检测到自己要被删了,看先释放资源然后在调用OSTaskDel()来删除自身。任务函数OSTaskSuspend()和OSTaskResume()...原创 2021-11-22 19:18:17 · 522 阅读 · 0 评论 -
UCOSII源码分析三——Sem.c
Sem.c原创 2021-11-22 19:16:49 · 150 阅读 · 0 评论 -
UCOSII源码分析二—— 邮箱OS_mbox.c
OS_mbox.c原创 2021-11-22 19:15:17 · 212 阅读 · 0 评论 -
UCOSII源码分析一——相关知识点
知识点休眠:任务驻留在内存中,但并不被多任务内核所调用就绪:任务已经准备好,可以运行,但由于该任务的优先级比正在运行的任务的优先级低,不能运行运行:正在运行挂起:等待某一件事情发生被中断:前后台系统:应用程序是一个while(1)的大循环跑,是后台,前台就是中断程序。非占先式:当前任务不结束,那么高优先级任务就绪了也无法插入,中断可以插入任务。响应中断快,允许使用不可重入函数,不需要信号量来保护共享数据。占先式:最高优先级任务一旦就绪,就能得到CPU的控制权,中断回调函数可以是高优先级任务就原创 2021-11-22 19:11:13 · 344 阅读 · 0 评论