这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Let'sDo2025第3期任务-拾色播放器-过程帖-CircuitPython

共1条 1/1 1 跳转至

Let'sDo2025第3期任务-拾色播放器-过程帖-CircuitPython10优化ESP32-S3闪存布局

助工
2025-12-11 13:44:51     打赏

CircuitPython 10 将合并 Adafruit Feather ESP32-S3(4MB 闪存版)上原本用于 OTA(空中升级)的两个分区,从而为 CircuitPython 固件本身腾出更多空间,允许集成更多功能和模块。

背景与问题

旧布局(CircuitPython 10 之前):

该板的 4MB 闪存被划分为两个大小相等的 “OTA 分区”(每个约 2MB)。

分区1: 存放当前运行的 CircuitPython 固件。

分区2: 设计为“空”,专门用于接收新的固件更新文件,完成更新后系统会切换到这个新分区启动。意图: 实现安全、可靠的无损固件升级,避免因升级失败导致设备“变砖”。

带来的问题:

OTA 升级功能并未完全开发完成,导致第二个分区一直处于闲置状态,无法被使用。

由于固件只能安装在其中一个 2MB 的分区里,实际可用的固件大小被限制在了约 2MB。

这严限制了 CircuitPython 固件所能包含的内置库和功能数量,因为更大的功能集需要更大的存储空间。

CircuitPython 10 的解决方案

合并分区: 移除了未使用的第二个 OTA 分区,将两个小分区合并成一个更大的、连续的空间。

结果:

CircuitPython 固件现在可以使用几乎全部的 4MB 闪存空间(减去一小部分系统管理开销)。固件体积限制大幅提升,开发者可以将更多常用的库(如网络、图形、传感器驱动等)直接编译进固件中,减少对文件系统的依赖,提高性能和可靠性。

简化了闪存布局。

重要注意事项

针对性: 此更改目前仅针对 Adafruit Feather ESP32-S3 4MB Flash/2MB PSRAM 这款特定板型。其他 ESP32 或 ESP8266 板子的布局可能不同。

版本状态: 文中提到的 10.0.0-alpha.5 是一个早期测试版本。此变更已包含在后续的正式发行版中。

OTA 功能的权衡: 这项更改的实质是牺牲了未完成的、标准的双分区 OTA 升级机制,换取了更大的固件空间。未来的固件更新可能需要通过其他方式(如串口刷写)进行。不过,CircuitPython 本身具有从文件系统直接运行代码的能力,大部分用户级代码更新不受影响。

简单总结

以前: 4MB 空间被一分为二,一半闲置,导致 CircuitPython 功能受限。

现在(CircuitPython 10): 合并空间,4MB 几乎全用于 CircuitPython,功能可以更强大。这项变更是为了解决实际开发中遇到的限制,旨在为这款流行的硬件提供功能更丰富的 CircuitPython 体验。


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]