当前位置:首页>python>MicroPython 门槛太高?这个国产项目,4KB RAM 就能跑 Python

MicroPython 门槛太高?这个国产项目,4KB RAM 就能跑 Python

  • 2026-10-11 08:24:35
MicroPython 门槛太高?这个国产项目,4KB RAM 就能跑 Python

领导说:"咱们产品下一版加个脚本功能,用 Python 写现场逻辑,方便调参。"

你一拍胸脯:"没问题!"

然后打开 MicroPython 文档,看到一行要求:256KB Flash,16KB RAM 起步。

再看看手里的主控……STM32F103C8T6,64KB Flash,20KB RAM。

沉默三秒。

其实这个问题有解,只是很多人没留意过。有一个国产开源项目专门为这种场景而生,最低 4KB RAM、32KB Flash 就能跑 Python——它叫 PikaPython。


PikaPython 是什么

PikaPython(前身叫 PikaScript,也叫 PikaPy)是一个超轻量级的嵌入式 Python 解释器,由国内团队皮卡派科技开源,MIT 许可证,目前在 GitHub 上有约 1.7k Star(据 GitHub 仓库数据)。

一句话定义:它是一个专门为资源受限 MCU 设计的 Python 3 子集解释器,零依赖,无需 OS 和文件系统,开箱即用。

官方提供了一组完整 Demo(GPIO、串口、ADC、PWM、LCD 显示、贪吃蛇游戏)在 STM32F103C8T6 上的实测数据:RAM 最大占用 3.56KB(含 1KB 栈共 4.56KB),Flash 占用 30.4KB。对应到这块 MCU 的 20KB RAM 和 64KB Flash,占用比分别不到 25% 和 50%(数据来源:PikaPython 官方 README)。

作为对比,MicroPython 官网标明的最低要求是 256KB 代码空间 + 16KB RAM(据 MicroPython 官方网站)。两者相比,Flash 差了 8 倍,RAM 差了 4 倍。


核心原理:凭什么能做到这么小

光说数字不够,得解释一下这个差距从哪里来。

MicroPython 是一个完整的 Python 编译器 + 运行时,词法分析、语法树、字节码生成、垃圾回收等模块全部驻留在 MCU 上,这是内存占用大的主要原因。

PikaPython 的思路是把一部分编译工作移到 PC 端完成,引入了一个核心工具——Pika 预编译器(Pre-compiler)。

工作原理如下:


  1. C 模块绑定由预编译器在 PC 端自动生成:开发者只需写 .pyi 类型标注文件声明 Python 接口,预编译器自动生成 C 绑定的胶水代码,不用手动处理 PyObject 类型转换。

  2. MCU 上只保留字节码 VM:不需要完整的 Python 编译器驻留在芯片上,运行时只做字节码解释,体积因此大幅缩减。

这个设计有点类似把"链接时的工作提前到编译时做"——把胖乎乎的运行时瘦身掉,再把胖的那部分挪到不受内存限制的 PC 端。


核心功能拆解

亮点1:C 扩展模块,写起来真的不烦

传统给 Python 写 C 扩展,要处理一堆 PyObject 类型转换、参数解包。MicroPython 里写 C 模块也逃不开这套,新手劝退。

PikaPython 用预编译器把这个流程简化了。开发者只需写一个 .pyi 文件声明接口:

# GPIO.pyiclass GPIO:def setMode(self, pin: str, mode: str): ...def high(self, pin: str): ...def low(self, pin: str): ...

预编译器自动生成 C 绑定的方法表,开发者只需要去填 GPIO.c 里的实际实现。整个流程:.pyi 声明 → 预编译器生成胶水代码 → 填 C 实现 → 完成。

C 模块开发者不需要了解解释器内部机制,只关注硬件操作逻辑。


亮点2:包管理器和预置模块生态

PikaPython 有一个包管理器,在项目根目录创建 requestment.txt,声明需要的模块,工具自动下载配置。

目前可用的包覆盖了常见嵌入式场景:

  • 硬件外设:GPIO、UART、I2C、SPI、ADC、PWM、Timer(STM32 全系列、ESP8266)
  • 通信协议:Modbus RTU/ASCII/TCP/UDP(v1.13.x 新增的 modbus_rt 包,支持主从模式,据 GitHub Releases)、MQTT、socket
  • 存储:FlashDB、FatFS 文件系统
  • 图形:pika_lvgl(LVGL 的 Python 绑定)
  • 标准库子集:struct、time、os、math

亮点3:支持平台和工具链覆盖面

芯片支持:STM32 全系列、ESP8266、ESP32-C3、         CH582(RISC-V)、W806(C-Sky)、RP2040IDE:Keil(社区版免费,需 v5.36+)、IAR、     RT-Thread Studio、SEGGER Embedded Studio构建工具:CMake、Makefile、Scons运行环境:裸机、RT-Thread(有官方软件包)、Linux

此外官方提供了 PikaPython Studio,集成串口终端、Python 脚本下载和包管理功能,Windows 下开箱可用。


快速上手

最快路径:在线生成工程 + 直接编译

访问 pikapython.com,选择目标 BSP(芯片平台)和需要的包,生成压缩包下载,解压后用 Keil 或 IAR 直接打开编译——不需要手动配置任何东西。

手头有 STM32F103 开发板的话,这样跑第一个 Demo:

# 串口连接到 MCU,用 PikaPython Studio 或任意串口工具# 发送以下脚本,MCU 直接执行import GPIOGPIO.setMode('PA0', 'OUT')GPIO.high('PA0')    # PA0 拉高GPIO.low('PA0')     # PA0 拉低

脚本可以通过串口实时发送执行,也可以下载到 Flash 上电自动运行,两种模式都支持。

想先在 PC 上体验不想买板子:官方提供了 Windows 模拟工程,VS2022 或 MinGW 均可编译,本机跑起来解释器先熟悉语法。

官方还有一块现成开发板 Pika-Pi-Zero,基于 STM32G030C8T6(64KB Flash + 8KB RAM),淘宝有售(据官网),外设齐全:GPIO、定时器、I2C、RGB LED、LCD 都有,适合快速验证。


选型建议:PikaPython、MicroPython、Lua 怎么选


维度
PikaPython
MicroPython
eLua
最低 RAM
4KB
~16KB
~8KB
最低 Flash
32KB
~256KB
~64KB
语法
Python 3 子集
Python 3 子集
Lua
C 扩展难度
低(预编译器)
中(需了解 MP API)
低
生态完整度
一般
成熟
较小
社区活跃度
活跃(仍迭代)
非常活跃
有限维护

按场景推荐:

  • RAM 不足 16KB,但想加 Python 脚本 → PikaPython 几乎是唯一选项
  • 需要完整 Wi-Fi 驱动、成熟第三方库 → MicroPython 更合适(配合 ESP32)
  • 项目已在用 RT-Thread → PikaPython 有官方软件包,集成最顺手
  • 团队有历史 Lua 积累 → eLua 迁移成本低

局限性:也别把它神化了

几个客观问题得说清楚:

语法覆盖是子集,不是全集。 复杂装饰器、生成器表达式、异步语法等进阶特性目前不支持,具体支持列表要查文档。用习惯了完整 CPython 的开发者可能会踩坑。

生态成熟度和 MicroPython 差距明显。 PikaPython 约 1.7k GitHub Star,MicroPython 是 27k+(据各自 GitHub 主页)。遇到问题能找到的中文资料不多,大概率得自己看源码,或者到 QQ 技术群(577623681)问。

非 STM32 平台支持参差不齐。 ESP32、RP2040 等平台有移植,但功能覆盖不如 STM32 完整,用之前建议先确认目标平台的具体支持状态。

性能不是优势。 Python 在 MCU 上是解释执行,速度远不及 C。这个定位是写配置逻辑、测试脚本、交互控制层,不是用来写中断服务程序或时序敏感控制的。


获取

GitHub:https://github.com/pikasTech/PikaPython

官网(含在线工程生成器 + 文档):https://pikapython.com/

国内访问 GitHub 有时不稳定,源码包已备好,公众号回复 PikaPython 或 0070 获取下载链接。


你手里有 RAM 不足、一直没敢加脚本引擎的老项目吗?或者你用过 MicroPython 但觉得资源占用太重?评论区聊聊你的实际场景,或者有更适合的方案也欢迎分享——「单片机那点事」,聊的都是这些实在的工程问题。


往期推荐

Zephyr 已经默默在用了,这个 C 库让 errno 只占 4 字节

FreeRTOS 之后呢?这个国产 RTOS 已经悄悄做了 20 年

FreeRTOS的内核其实只有3个C文件——它凭什么活了22年还被亚马逊亲自收编

单片机跑 GUI 卡到怀疑人生?ARM 官方亲自下场写了五年的开源库

一个国产USB协议栈,被RT-Thread、ESP-IDF、YOC生态同时收录

最新文章

随机文章