Arduino 操作系统28 Apr 2025 | 4 分钟阅读 Arduino 本身不附带传统的“操作系统”(OS),如 Windows、macOS 或 Linux。相反,它采用实时系统方法,专注于直接控制硬件,而不是在硬件和软件之间建立抽象层。以下是对 Arduino 如何处理系统操作、使其能够运行的软件以及将 OS 类似功能引入 Arduino 环境的新兴项目的深入探讨。 什么是 Arduino?最后,Arduino 是一个开源电子平台,基于易于使用的硬件和软件。它面向对设计交互式电子项目感兴趣的业余爱好者、创客和开发人员。在最基本的层面上,Arduino 板是一种微控制器,简而言之,它是一个小型的微型计算机,具有有限的处理能力,用于特定任务和实时操作。由于其简单性,Arduino 不需要标准操作系统。 Arduino 如何在没有操作系统的情况下运行由于 Arduino 板没有操作系统,软件通常使用 Arduino 集成开发环境 (IDE) 用 C/C++ 编写。其工作原理如下: - 直接编程和执行:草图只是在 IDE 中编写的 Arduino 程序。这使得硬件可以直接通过这些草图进行控制,消除了此设计中的任何中间层,并且可以提供实时控制。
- 引导加载程序:尽管 Arduino 有一个迷你引导加载程序,仅用于通过 USB 从 IDE 上传代码到 Arduino 板。引导加载程序与操作系统类似,但没有传统意义上的多任务处理或文件管理。
- 实时行为:Arduino 不需要操作系统的开销,因为它专为嵌入式低功耗应用而设计。大多数草图运行一个单循环,该循环连续重复,实时驱动外设(如 LED、电机和传感器),而不会阻塞代码执行。
- 库:Arduino 库为各种功能提供可重用代码,这些功能可以在与传感器、电机和其他组件交互时重复使用,而无需像完整功能的操作系统那样的东西。
将类似 OS 功能引入 Arduino 的主要项目和框架虽然 Arduino 不使用传统操作系统,但已开发了几个项目和框架来为该平台添加类似 OS 的功能 - Arduino 调度器库:由于调度器库,Arduino Due 和其他一些板可以执行基本的多任务处理。强制增量(即小函数)执行工作可以实现一些有限的类似 MMO 的任务调度,类似于原始 OS 静态调度器。
- Arduino 上的 FreeRTOS:FreeRTOS(免费实时操作系统)是一个开源实时操作系统 (RTOS) 内核。特别是,它已被移植到 Arduino 上运行(尤其是那些具有更多 RAM 的,如 ESP32 或 STM32 板)。因此,FreeRTOS 不仅为 Arduino 添加了任务管理,还实现了内存分配和进程间通信,从而实现了硬件多任务处理的自由。
- ChibiOS:ChibiOS 是一个实时操作系统内核,移植到 Arduino,其中包括线程、内存管理和同步原语。与 FreeRTOS 一样,ChibiOS 可用于在支持的 Arduino 板上调度并发任务。
- RIOT OS:一个物联网原生实时操作系统。它与 Arduino 板配合良好,尤其是基于 ARM 的板。RIOT 具有多线程、网络堆栈和节能内核等功能。
Arduino 兼容板的操作系统替代方案一些板提供 Arduino 兼容性,同时运行真正的操作系统。示例包括: - ESP32 和 Micropython:ESP32 板可以执行 MicroPython,一个非常小的 Python 解释器,旨在与微控制器配合使用。MicroPython 本身不是操作系统,但它允许您以高级方式编写脚本,这有点像操作系统。
- 树莓派 Pico:尽管 Pico 本身没有操作系统框架,但 CircuitPython 等可以安装在其上,并为您的代码提供一些编译或解释的类操作系统结构。
- 基于 Linux 的 Arduino 兼容板:其他与 Arduino 兼容的板,如 Intel Galileo 或 Arduino Yun,可以在 Arduino 代码之上运行小型 Linux 操作系统。它允许您在完整的操作系统环境中运行,能够支持复杂的网络、存储和用户管理任务,因此您只需要与 Arduino 的硬件功能进行交互。
为什么 Arduino 不需要完整操作系统Arduino 专为机器人、传感器或自动化等实时应用而设计。在这些场景中,拥有操作系统价值不大,只会引入不必要的复杂性和资源开销。与计算机相比,Arduino 板通常内存和处理能力非常低,因此它们永远不需要操作系统来处理所有这些。 结论Arduino 允许您直接控制硬件,几乎没有操作系统的低级限制,因此它非常适合嵌入式系统、物联网应用和实时项目。幸运的是,新的框架(例如 FreeRTOS 或 ChibiOS)使多任务处理和其他类似 OS 的功能可用,为复杂的应用提供了更多自由。随着微控制器功能的不断进步和 Arduino 兼容硬件的可用性扩展,一些类似 OS 的功能开始在 Arduino 生态系统中得到采用,从而实现更复杂的项目。
|