电力电子技术
直播中

张涛

7年用户 1301经验值
私信 关注
[问答]

μC/OS-III学习笔记分享

μC/OS-III 学习笔记

回帖(7)

彭小海

2020-12-21 14:33:07
嵌入式实时操作系统内核主要工作就是对任务进行管理和调度,为我们提供丰富的、高度封装的多任务管理函数对任务进行管理。
比如任务的创建,挂起,删除和调度等。因此弄清μC/OS-III操作系统中,什么是任务,任务结构,任务管理方法,就显得尤为重要。      
根据嵌入式系统任务的执行特点,任务通常是一个无限循环结构。因为应用中有很多需要重复的工作(例如,读取输入值、更新显示、控制操作等)。




此外,μC/OS-III系统最为重要的特性是一个多任务系统。但什么是多任务系统呢?

简单说就是由一个处理器并发(注意不是同时)地运行多个程序的计算机管理系统。
那,什么又是并发呢?并发的意思是说,由同一个处理器轮换地运行多个程序。或者说是由多个程序轮班地占用处理器这个资源。且在占用这个资源期间,并不一定能够把程序运行完毕。




虽然uC/OS-III支持多任务且对任务数量没有限制, 但任务数仅取决于处理器内存的大小(RAM)。多任务调度是任务间占用CPU的过程 。
举报

张佳婧

2020-12-21 14:33:18
μC/OS-III 的启动和初始化      
①系统初始化,其实就是和使用外设一样,在启动μC/OS-III前,我们必须现在main函数里将μC/OS-III进行初始化。调用API函数CPU_Init()初始化μC/OS-III。




②创建任务,随后我们都在main函数中创建一个开始任务用于创建其他的任务函数、事件或者信号等。创建任务是调用API函数OSTaskCreate(),将任务的信息填入其中即可。并将这一段创建任务的函数置于临界区中避免打断。





③启动系统,我们自己创建完第一个任务后,便可以调用API函数OSStart();开启μC/OS-III。





在 uC/OS-III 中,可以创建无数多个任务,让这些任务并发运行,就好像有多个主函数在运行一样。 在 uC/OS-III 初始化的时候,至少会创建空闲任务 OS_IdleTask()和时基任务OS_TickTask() 这 两 个 任 务 , 另 外 还 有 三 个 可 选 择 的 内 部 任 务 , 软 件 定 时 器 任 务OS_TmrTaks() 、中断延迟提交任务 OS_IntQTask()和统计任务 OS_StatTask()。         
举报

杨秀英

2020-12-21 14:33:26
任务状态
uC/OS-III支持的是单核的CPU,不支持多核,这样在某一时刻只有一个任务会获得CPU的使用权进入运行态。其他任务就会进入其他状态,uC/OS-III中的任务有多个状态,




任务状态之间的具体切换情况如下图所示。


举报

蒋进如

2020-12-21 14:33:33
任务控制块

任务控制块,本质上其实就是由一个struct结构体,用来保存任务的信息(知道这一点就可以了)。在使用API函数OSTaskCreate()时,就会给创建的任务分配一个任务控制块。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分