FreeRTOS 与 MQX RTOS 的快速概述
MQX实时操作系统是专为单处理器、多处理器和分布式处理器嵌入式实时系统设计的。飞思卡尔半导体公司在其微处理器中采用了该软件平台。这包括 Kinetis、Coldfire、PowerPC、ARC、ARM、StrongARM、xscale CPU。MQX RTOS 的主要特点是可扩展的大小、面向组件的架构和易于使用。
FreeRTOS 是一种流行的嵌入式设备实时操作系统内核,已移植到 35 种架构。它在 GPL 下分发,但有一个可选例外。FreeRTOS 占用空间非常小,开销很低,执行速度非常快。内核本身仅由三或四个 C 文件组成。最少 4-8k 字节闪存。
类似功能:[待完成]
任务、事件、信号量、互斥量、消息队列、空闲省电
Freertos 的独特功能:
1 任务通知:每个 RTOS 任务都有一个 32 位通知值,该值在创建 RTOS 任务时初始化为零。RTOS 任务通知是直接发送给任务的事件,可以解除对接收任务的阻塞,并可选择更新接收任务的通知值。
2 递归互斥锁:递归使用的互斥锁可以被所有者反复“获取”。直到所有者为每次成功的 xSemaphoreTakeRecursive() 请求调用 xSemaphoreGiveRecursive() 之后,互斥锁才会再次可用。例如,如果某个任务成功“获取”同一个互斥锁 5 次,则该互斥锁将无法供任何其他任务使用,直到该任务也将互斥锁“归还”5 次为止。
3 堆栈溢出钩子/通知:每个任务维护自己的堆栈。任务堆栈使用的内存在任务创建时自动分配,并由传递给 xTaskCreate() API 函数的参数确定大小。堆栈溢出是导致应用程序不稳定的一个常见原因。因此,FreeRTOS 提供了两种可选机制,可用于协助检测和纠正此类事件
4 延迟中断处理:从应用程序中断服务程序中使用,将功能的执行延迟到 RTOS 守护进程任务。提供了一种机制,允许中断直接返回到随后将执行挂起功能的任务。这使得回调函数能够与中断连续执行 - 就像回调在中断本身中执行一样
5 多个对象上的阻塞:队列集是 FreeRTOS 的一项功能,它使 RTOS 任务能够在同时从多个队列和/或信号量接收时阻塞(挂起)。队列和信号量被分组为集合,然后,任务不再阻塞在单个队列或信号量上,而是阻塞在集合上。
MQX 的独特功能:
1 基于所有权的资源破坏:[待完成]
2 名称服务:任务可以将一个 32 位数字与一个字符串或符号名称关联起来。MQX RTOS 将这种关联存储在名称数据库中,该数据库中的所有任务
处理器可以使用。数据库避免使用全局变量。
3 处理器间通信:应用程序可以在多个处理器上同时运行,每个处理器上都有一个 MQX RTOS 的可执行映像。图像使用由内存或通过处理器间通信的通信链路传输的消息进行通信和协作。每个图像中的应用任务不必相同,而且实际上通常是不同的。
4 看门狗:看门狗是可选组件,可让用户检测任务级别的任务饥饿和死锁情况。
5 任务队列调度:您可以使用任务队列来显式调度任务,或创建更复杂的同步机制。由于任务队列提供的功能很少,因此速度很快。应用程序可以在创建任务队列时指定先进先出 (FIFO) 或循环 (Round Robin) 调度策略。