☰
ESP32-S31 上做可在线安装的 WASM 应用平台:0.4.9 Beta 发布
2026/10/7 15:33:03 网站建设 项目流程

摘要:ESP Mini App Platform 0.4.9 Beta 已经把系统界面、WebAssembly 运行环境、应用包、权限与私有数据、在线目录和系统更新连成一条使用路径。本文介绍这次发布交付了什么、系统与应用如何分层、首次安装与 OTA 的区别,以及目前仅直接支持 ESP-Mosaico/ESP32-S31 的硬件边界。本文是版本发布说明,不是烧录命令教程。

从“固件里加页面”到“系统里装应用”

做 ESP32 项目时,最直接的办法是把所有功能写进一份固件:首页、游戏、天气和设置,构建完成后一起烧录。功能少时很高效;功能变多之后,任何一个小应用的更新都可能牵动整份系统固件。应用的数据、权限和版本也容易混在一起。

我做 ESP Mini App Platform,就是想把这两个变化速度不同的部分拆开:底层固件提供屏幕、触摸、网络、存储和受限系统接口;上层功能作为独立的 WebAssembly 应用,按需安装和更新。前面的系列文章分别讨论了运行时、SDK、应用包和发布链路。到了 0.4.9 Beta,它们第一次组成可以交给其他人使用的版本。

这里的“应用平台”不是在固件中画六个可点击页面,而是让每个应用有自己的身份、版本、权限和生命周期。系统仍然需要烧录,系统更新仍然存在;变化是后续增加一个小功能,不必默认重新编译和烧录整份系统。

0.4.9 Beta 交付了什么

从设备端看,当前版本有首页、应用库、在线应用目录与设置页。界面可切换中文和 English;联网后,在线目录会展示应用名称、版本、权限和可执行动作。根据本地状态,用户可以安装、更新、重新安装或卸载应用。系统本身另有 OTA 更新入口。

从应用开发端看,平台提供 C、C++、Rust 和 WAT 的开发路径。开发者编译出符合平台约束的 WASM,声明应用名称、版本、权限和硬件要求,生成签名.app安装包,再把包和目录元数据发布出去。设备端读取目录并安装应用,而不是把目录中的文件当作任意可执行二进制直接运行。

这条链路可以概括为:

应用源码(C / C++ / Rust / WAT) ↓ 平台 SDK 与 WASM ↓ Manifest + 签名 .app 安装包 ↓ HTTPS 静态目录 / 应用包托管 ↓ 设备下载、校验、安装 ↓ 应用库管理与运行时系统 API

应用包和系统固件是两种不同的发布物。系统固件负责平台本身;.app是装在平台上的小应用。把这两者分清,是使用 0.4.9 时最重要的一步。

在线目录为什么只需要静态托管

0.4.9 固件已经内置正式的在线应用目录地址。设备连接 Wi-Fi 后,进入“在线应用”并点击“刷新”,就会通过 HTTPS 读取目录。目录描述应用的名称、版本、权限和对应安装包;用户选择应用时,设备再获取.app文件。

目前目录和安装包由腾讯云 COS 托管。这个场景不需要先搭建一个常驻的应用商店服务器:对于设备而言,版本化的目录文件加上对应的静态包,就能形成可发现、可下载的发布入口。当然,静态托管不等于没有发布纪律。先准备应用包、核对元数据,再更新目录,才能避免设备读到指向尚未上传文件的条目。

在线目录解决的是发现与分发,平台的应用管理解决的是身份、权限与生命周期。一个目录列表本身不能替代安装包校验和设备端管理。

六个应用,分别说明什么

当前实机首页安装了六个应用:Hello WASM、Touch Paint、Snake、Pocket Garden、Bounce(C++)和 Bounce(Rust)。这个截图展示的是应用已安装后的状态;首次完整烧录后通常只有内置的 Hello WASM,其余应用需要从在线目录安装。

Hello WASM 让应用最小结构可见;Touch Paint 展示触控交互;Snake 使用动画与本地记录;两个 Bounce 示例表明 C++、Rust 应用也能通过同一条运行路径进入设备。Pocket Garden 则承担“复杂一些的应用是否仍能成立”的角色:它把时间、天气、植物、动物、浇水、喂食、音乐和触摸交互放在同一个应用里。

Pocket Garden 的详情页显示名称、应用 ID、版本、权限以及打开、卸载入口。它声明显示、触控、环境、输入和音频等能力,屏幕和触摸是必需外设,扬声器、人体感应和按键等是可选外设。缺少可选外设时,应用可以继续运行,只关闭相应交互。

第一次安装和后续更新,不是一回事

面向 Windows 10/11 x64 的 0.4.9 发布包包含完整镜像、一键安装入口、文件校验、新手说明和硬件支持说明。首次安装的基本顺序是:

  1. 确认开发板为 ESP-Mosaico,主控为 ESP32-S31,使用 USB 数据线连接电脑。
  2. 让开发板进入 ROM 下载模式,完整解压修正版Windows 烧录包,运行一键安装.bat。
  3. 工具校验镜像、识别串口,并在用户确认后写入完整镜像。
  4. 如外置 NAND 尚未就绪,且其中没有需要保留的数据,再按提示主动初始化。
  5. 设备启动后连接 2.4 GHz Wi-Fi,进入“在线应用”刷新并安装需要的应用。

完整镜像包含引导程序、分区表、初始 OTA 数据与平台固件。与之不同,版本化的 OTA.bin是给已经安装平台的设备更新系统使用的,不能当成首次安装的唯一文件。

修正版安装工具不会调用 ESP32-S31 ROM 不支持的整片erase_flash。它写入完整镜像覆盖的内部 Flash 扇区,其中包括 NVS;镜像范围外的内部区域并非全部擦空。外置 NAND 不会随烧录自动格式化,只有用户明确确认初始化时才会清除其中的应用和数据。这些边界需要在分发时说清,而不是笼统地写“无损升级”或“清空全部 Flash”。

硬件边界:ESP32-S3 不能直接刷这个包

本次发布镜像的直接支持对象是 ESP-Mosaico/ESP32-S31:16 MB 内部 Flash、当前板卡的屏幕与触摸配置、PSRAM 和板载 SPI NAND 都已纳入固件与分区设计。即便另一块板也使用 ESP32-S31,只要显示控制器、触摸、存储、引脚或分区不同,仍需要 BSP 与驱动适配并重新构建。

ESP32-S3 与 ESP32-S31 更不是同一固件目标。给 S3 接上相同外设,不能直接运行这份 S31 二进制。可以讨论从源码移植:更换 ESP-IDF target、适配 BSP 与驱动、调整构建配置和分区,再重建宿主固件;WASM 应用层有复用空间,但这不等于“加外设即可使用”。

0.4.9 仍是 Beta,适合开发学习、创客装置和产品原型。在线功能需要 Wi-Fi 与可访问的 HTTPS 服务;应用只能调用平台已开放的能力,也不适合把它当成通用手机系统或大型图形运行环境。

发布之后的方向

这次版本发布让一条路径闭合:系统留在设备里,应用可以从目录里被发现、安装和替换。接下来我会继续整理公开开发文档、改善应用图标与分类、简化第三方应用发布流程,并推进面向正式设备的安全启动和固件保护。

对我来说,这个版本的意义不在于首页摆了多少个按钮,而在于设备上能运行的不再只有我事先写死在固件里的功能。下一篇更适合拆一个具体问题:第三方应用怎样从源码走到设备的在线目录。


ESP32-S31、ESP32、WebAssembly、WASM、嵌入式系统、ESP-IDF、应用平台、OTA、腾讯云 COS

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询