我们可以把 MicroPython 的系统结构比作​智能手机的运行体系​手机硬件对应微控制器硬件手机的操作系统如 Android/iOS对应 MicroPython 固件而我们安装的 APP 对应用户编写的 MicroPython 程序。固件是整个系统的核心负责衔接硬件和用户程序就像手机系统衔接硬件和 APP 一样。在了解系统结构前先搞懂几个关键的基础知识点​固件​是烧录到微控制器闪存中的预编译程序包包含 MicroPython 解释器、核心库和硬件驱动相当于嵌入式设备的 “操作系统内核 运行环境”。​REPL交互式解释器​全称是 “读取 - 求值 - 打印 - 循环”简单说就是 MicroPython 的 “实时命令行”—— 输入一行代码立刻执行并返回结果方便调试和快速测试代码。​引导加载程序Bootloader微控制器通电后第一个运行的小程序负责把闪存中的固件加载到内存RAM中运行相当于硬件的 “开机启动器”。垃圾回收​器GCMicroPython 自带的内存管理工具会自动清理不再使用的变量、对象等内存占用避免嵌入式设备因内存不足卡死是针对微控制器小内存的优化设计。1.MicroPython 的系统结构一个 MicroPython 系统的典型结构如下图 2.5 MicroPython 系统典型结构图它包括用户程序、MicroPython 固件和微控制器硬件构成固件和硬件是最基础、固定的部分我们只能对用户程序进行编写和修改。MicroPython 固件就类似于一个​嵌入式​的​操作系统​主要用于运行用户程序并提供 REPL 命令​解释器。专用的 MicroPython 开发板如 pyboard、树莓派 pico 等可以直接烧录官方提供的固件运行源代码MicroPython 支持的其他类型开发板需要自己编译源代码产生固件如果是兼容 MicroPython 的开发板需要自己移植 MicroPython 系统。在使用 MicroPython 进行 MCU 的编程之前我们需要首先烧录特定 MCU 芯片对应的 MicroPython 固件烧录完成后我们将编写好的 MicroPython 程序上传到单片机中然后重启 MCU设备通电后引导加载程序负责将 MicroPython 的固件从闪存中加载到 RAM 中固件包含解释器和基本的运行时环境在 MicroPython 开始执行 Python 代码之前它会初始化必要的硬件和外设包括设置时钟、初始化 GPIO、配置外设等MicroPython 会查找并执行预定义的启动脚本如 main.py这个脚本可以包含用户自定义的初始化代码或程序逻辑MicroPython 的解释器首先将 Python 代码编译成字节码这一过程在设备上动态完成避免了需要预编译的复杂过程编译后的字节码由 MicroPython 解释器执行。解释器将字节码转换成具体的操作并在硬件上运行这些操作MicroPython 在微控制器中管理堆栈和内存其自带的垃圾回收器GC也会定期清理不再使用的对象以释放内存空间一旦启动脚本执行完毕MicroPython 进入 REPL 模式等待用户输入命令或代码。2.machine 模块 —与硬件相关的功能machine 模块包含与特定板上硬件相关的特定功能。该模块中的大多数功能允许实现对系统硬件块如 CPU、定时器、总线等的直接和不受限制的访问和控制。使用不当这可能会导致电路板故障、锁定、崩溃在极端情况下还会导致硬件损坏。图 2.6 machine 模块功能架构图3.rp2 模块——特定于 RP2040 的功能该 rp2 模块包含特定于 RP2040 的函数和类如在 Raspberry Pi Pico 中使用的。图 2.7 rp2 模块功能架构图4.MicroPython 标准微库以下标准 Python 库已被“微化”以符合 MicroPython 的理念。它们提供该模块的核心功能旨在替代标准 Python 库。图 2.8 MicroPython machine 模块功能架构图5.MicroPython 特定库图 2.9 MicroPython 特定库功能架构图