FreeRTOS
zsdfbb
zsdfbb@126.com
展开
-
FreeRTOS资源管理
FreeRTOS资源管理概览在多任务环境中,资源访问可能不是原子操作,可能会导致资源的不一致常见情况:1.访问外设比如,不同优先级的任务同时进行LCD的打印,可能会出现乱码。2.读-写-改操作读内存到寄存器,写寄存器,写回内存。这种操作是非原子的,可能会被中断。类似数据库的脏数据。3.变量的非原子操作更新重要的结构体或者大于体系结构自然长度的变量。变量很大,可能会被中断,导...原创 2018-11-21 19:30:03 · 545 阅读 · 0 评论 -
FreeRTOS的Queue
FreeRTOS的Queue队列功能FreeRTOS的所有的通信和同步机制都通过队列来实现。队列可以保存有限长度的数据单元,通常情况下,作为FIFO使用。队列阻塞队列可以多任务访问。1.读取阻塞队列为空的阻塞,等到队列内有数据或者超过了阻塞时间,任务会切换到ready状态。2.写入阻塞队列为满的阻塞,3.哪个任务优先解除阻塞的任务?优先级最高,或者同优先级的等待时间最长的任务...原创 2018-11-19 14:49:37 · 1495 阅读 · 0 评论 -
FreeRTOS的Task
FreeRTOS的Task1. 任务任务状态:状态描述执行不解释就绪等待被调度阻塞对于调度器不可见,等待某事件完成,否则不能就绪挂起对于调度器不可见,只能使用程序主动恢复阻塞:可以用来实现阻塞延迟,而不是死循环占据调度资源(高优先级的死循环会导致低优先级的任务饿死)空闲任务:任务不能都处于阻塞状态。该状态下所有的任务都不可运行,也不...原创 2018-11-18 14:54:14 · 993 阅读 · 0 评论 -
FreeRTOS内存管理
内存管理预览当任务或是信号量被创建时,内核需要进行动态的内存分配。FreeRTOS带有pvPortMalloc(),vPortFree()实现范例。小型嵌入式系统,通常是在启动调度之前的创建任务、队列和信号量。内存分配方案heap_1.c:确定性的内存管理,实现了基本的pvPortMalloc(),且没有实现vPortFree()使用configTOTAL_HEAP_SIZE定义大...原创 2018-11-23 15:27:31 · 225 阅读 · 0 评论