Arduino中使用FreeRTOS多任务处理

RTOS工作原理
内核是操作系统的核心组件。 Linux 等操作系统使用内核,允许用户同时访问计算机。 每个正在执行的程序都是操作系统控制下的任务(或线程)。 如果一个操作系统能够以这种方式执行多个任务,则可以说是多任务处理。

多任务

传统处理器一次只能执行一个任务,但多任务操作系统可以通过任务之间的快速切换,使每个任务看起来是同时执行的。 下图展示了三个任务的执行方式与时间的关系。

调度

调度器是内核的一部分,负责决定在任何特定时间执行哪个任务。内核可以在任务的生命周期内多次暂停和恢复任务。

调度策略是调度程序用来决定在任何时间点执行哪个任务的算法。一个(非实时)多用户系统策略很可能给每个任务一个“公平”的处理器时间比例。

任务除了被内核非自愿挂起外,还可以选择挂起自己。 如果它想延迟(休眠)一段时间,或者等待(阻塞)某个资源(如串口)或一个事件(如按键)可用,它就会这样做。

FreeRTOS介绍
FreeRTOS 是一类 RTOS,设计得足够小,可以在微控制器上运行——尽管它的使用不限于微控制器应用。 FreeRTOS 包括一个内核和一组不断增长的软件库,适用于跨行业部门和应用程序。 在 FreeRTOS 的帮助下,您可以在基于微控制器的硬件上进行多任务处理!

为了与 Arduino 兼容,我们已将 FreeRTOS 移植到 Arduino 框架中,以便您可以轻松地将 FreeRTOS 与您喜爱的 Arduino 板一起使用。

Arduino中使用FreeRTOS
安装库
支持板
示例
通过提供微控制器实时调度功能、任务间通信、定时和同步原语,FreeRTOS 可以非常强大。

为了让您轻松开始使用 FreeRTOS,这里提供了一些示例以供参考。以下示例是在 Wio 终端上构建和运行的。

Hello World示例
此示例只是创建两个线程,以不同的速率将不同的字符串打印到串行监视器。

闪烁示例
这个例子还创建了两个线程和输出信号来点亮 LED。一种是简单地使 LED 闪烁,另一种是呼吸 LED。

LCD示例
此示例是 FreeRTOS 与其他 Arduino 库(例如 Wio 终端中的 LCD Sprites)的演示。 此示例在两个线程中创建两个精灵以相反的方式计算数字。 taskMonitor 是一个函数,用于监视线程并打印有关每个线程的堆栈信息。

Arduino使用FreeRTOS的C++
对于更多,我们还提供 Seeed_Arduino_ooFreeRTOS,它是封装 FreeRTOS 功能的 C++ 包装器的集合,它在 Arduino 的框架下工作。

详情参阅 - 亚图跨际

你可能感兴趣的:(Arduino,嵌入式,arduino,FreeRTOS)