当前位置: 首页 > news >正文

从 machine 到 rp2:MicroPython 相关模块一文速览

我们可以把 MicroPython 的系统结构比作​智能手机的运行体系​:手机硬件对应微控制器硬件,手机的操作系统(如 Android/iOS)对应 MicroPython 固件,而我们安装的 APP 对应用户编写的 MicroPython 程序。固件是整个系统的核心,负责衔接硬件和用户程序,就像手机系统衔接硬件和 APP 一样。在了解系统结构前,先搞懂几个关键的基础知识点:

  • 固件​:是烧录到微控制器闪存中的预编译程序包,包含 MicroPython 解释器、核心库和硬件驱动,相当于嵌入式设备的 “操作系统内核 + 运行环境”。
  • REPL(交互式解释器)​:全称是 “读取 - 求值 - 打印 - 循环”,简单说就是 MicroPython 的 “实时命令行”—— 输入一行代码,立刻执行并返回结果,方便调试和快速测试代码。
  • 引导加载程序(Bootloader):微控制器通电后第一个运行的小程序,负责把闪存中的固件加载到内存(RAM)中运行,相当于硬件的 “开机启动器”。
  • 垃圾回收​器(GC):MicroPython 自带的内存管理工具,会自动清理不再使用的变量、对象等内存占用,避免嵌入式设备因内存不足卡死,是针对微控制器小内存的优化设计。

1.MicroPython 的系统结构

一个 MicroPython 系统的典型结构如下:


图 2.5 MicroPython 系统典型结构图

它包括用户程序、MicroPython 固件和微控制器硬件构成,固件和硬件是最基础、固定的部分,我们只能对用户程序进行编写和修改。MicroPython 固件就类似于一个嵌入式操作系统,主要用于运行用户程序并提供 REPL 命令解释器。

  • 专用的 MicroPython 开发板,如 pyboard、树莓派 pico 等可以直接烧录官方提供的固件运行源代码;
  • MicroPython 支持的其他类型开发板,需要自己编译源代码,产生固件;
  • 如果是兼容 MicroPython 的开发板,需要自己移植 MicroPython 系统。

在使用 MicroPython 进行 MCU 的编程之前,我们需要首先烧录特定 MCU 芯片对应的 MicroPython 固件,烧录完成后,我们将编写好的 MicroPython 程序上传到单片机中,然后重启 MCU:

  1. 设备通电后,引导加载程序负责将 MicroPython 的固件从闪存中加载到 RAM 中,固件包含解释器和基本的运行时环境;
  2. 在 MicroPython 开始执行 Python 代码之前,它会初始化必要的硬件和外设,包括设置时钟、初始化 GPIO、配置外设等;
  3. MicroPython 会查找并执行预定义的启动脚本(如 main.py),这个脚本可以包含用户自定义的初始化代码或程序逻辑,MicroPython 的解释器首先将 Python 代码编译成字节码,这一过程在设备上动态完成,避免了需要预编译的复杂过程;
  4. 编译后的字节码由 MicroPython 解释器执行。解释器将字节码转换成具体的操作,并在硬件上运行这些操作;
  5. MicroPython 在微控制器中管理堆栈和内存,其自带的垃圾回收器(GC)也会定期清理不再使用的对象,以释放内存空间;
  6. 一旦启动脚本执行完毕,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 特定库功能架构图

http://www.jsqmd.com/news/1302349/

相关文章:

  • 实战教程:用UNICOM训练自定义图像检索模型的完整流程
  • 3步掌握数据主权:用开源工具永久保存你的微信聊天记录
  • 一个MOVED错误引发的血案,我把Redis Cluster路由请求的原理翻了个底朝天 - k8s
  • 白番茄光感透肌面膜哪家靠谱:【蜜妙诗】安全温和 - 17728181569
  • 7.30java学习记录和生活随笔
  • SwitchEmuModDownloader:一站式Switch模拟器Mod下载神器,跨平台一键获取游戏模组
  • 系统门窗厂家怎么选?2026年五大硬核指标+品牌实测对比 - 精彩城市
  • OpenWork扩展权限管理:理解和配置插件访问控制的完整指南
  • OpenWork扩展性能优化:让你的插件运行如飞的6个秘诀
  • 指挥中心控制台 / 操作台:决定 7×24h 稳定运行的关键技术是什么?
  • Jest Fetch Mock与TypeScript完美结合:类型定义与类型安全测试指南
  • 构建专属执行环境:awx-on-k3s自定义Ansible EE完整教程
  • 3个步骤掌握幻兽帕鲁存档编辑:解锁游戏数据自定义的终极指南
  • 5分钟搞定Figma中文界面:设计师的母语工作流终极指南
  • 爆料!12月PMP新考纲首考或是“最容易过”的一次?AI和ESG首次入题怎么考?
  • 七月三十一
  • TVBoxOSC电视盒子完整部署指南:3步打造免费家庭媒体中心
  • Agentic AI从Demo到团队:我花三个月才搞懂的权限和日志
  • 下一代边缘推理框架技术方向展望:统一 IR、图编译与硬件自动调优的融合趋势
  • 一文看懂江门企业类型变更公司口碑好排行:江门机构实力排行与适配解析 - GrowUME
  • 如何用AI多智能体构建你的专业股票分析系统:3种方案快速上手
  • 深度探索VQEngine的线程同步机制:渲染与更新的完美协作
  • DamaiHelper终极指南:告别手速限制,用自动化技术轻松抢到心仪演出票
  • 2026免费微信投票小程序实测对比|多场景工具选型避坑指南
  • 北京产业园哪家适合小微企业注册:【博亚信诚】适配小微 - 17728181569
  • 30KG重载机器人测评:从柔性力控 恒力打磨出发,越疆智能拉开优势
  • 7 月总结:LLM 工作流自动化的探索与反思——从兴奋到冷静的工程沉淀
  • 图片去水印别再花钱找人了:5种方法全攻略,第3种小白也能30秒搞定
  • 上海黄金回收实体门店白名单参考|市场整治持续推进,出手黄金优先选备案商家 - 日常比对手册
  • 嵌入式 Linux 未来形态探讨:容器化、原子更新与不可变基础设施在边缘的实践展望