若没有内存管理,则需要预先定义很大的空间(数组),为了避免该情况,需要动态分配空间。
分块式内存管理
组成:内存池,内存管理表。
内存管理表:数值为0则为被占用,否则即代表连续占用的内存块数...
很粗糙,几乎没有实用性。
作为一个RTOS操作系统,内存管理是必备的功能,因此UCOSIII也就内存管理能力。通常应用程序可以调用ANSI C编译器的malloc()和free()函数来动态的分配和释放内存,但是在嵌入式事实操...
UCOSIII可以等待单个贝博betball网页对象,包括:信号量、互斥信号量、消息队列和事件标志组。
在UCOSIII中允许任务同时等待多个信号量和多个消息队列,也就是说,
UCOSIII不支持同时等待多个事件标志组或互斥信号量。...
有时候一个任务需要与多个事件同步,这个时候就需要使用事件标志组。事件标志组与任务之间有两种同步机制:“或”同步和“与”同步。 “或”同步:等待多个事件时,任何一个事件发生 ,任务都被同步,这个就称为“或”同...
一个任务或者中断服务程序有时候需要与另一个任务交流信息,这个过程就叫任务间通信。两种途径:全局变量,发布消息。
使用全局变量都必须保证对全局变量的独占访问。消息也可以通过消息队列作为中介发布给任...
在UCOSIII中每个任务都有自己的内嵌的信号量,这种功能不仅能够简化代码,而且比使用独立的信号量更有效。任务信号量是直接内嵌在UCOSIII中的,任务信号量相关代码在os_task.c中。
函数名
作用
OSTa...
在实时系统中是不允许出现这种现象的,这样会破坏任务的预期顺序,导致严重后果。
优先级反转是因为需要的信号量请求不到导致的。本来优先级高,但是信号量被优先级低的任务占用。
解决办法是将需要占用信...
信号量:像是一种上锁机制,代码必须获得对应的钥匙才能继续执行,一旦获得了钥匙,也就意味着该任务具有进入被锁部分代码的权限。只有等对应被锁部分的代码的钥匙被释放才能继续执行。
信号量本身用于控制对...
通过宏OS_CFG_TME_EN来使能
定时器本质是递减计数器,当计数器减到零时可以出发某种动作的执行,这个动作通过回调函数来实现。
应用程序可以有任意数量的定时器。
定时器的时间分辨率由宏OS_CFG_TMR_TAS...
UCOSIII的中断服务函数即为在普通的中断服务函数中,具体执行代码的前后添加OSIntEnter();和OSIntExit();
OSIntEnter();函数其实就是记录中断嵌套的个数,UCOSIII最多支持250级中断嵌套。
OSIntExit();中断...