写过固件的人都踩过这个坑——每次远程更新都要整 OTA,今天 Wasm 把这件事彻底变了

写过固件的人大概都踩过这个坑——每次要远程更新设备程序,都要走一整套 OTA 流程,刷坏了就只能派人去现场。今天 WebAssembly 把这件事彻底变了:固件不用动,应用逻辑可以独立更新。

这不是在说 WASM 要替代 C——FOSDEM 2026 的一场演讲把这个现状说清楚了。

FOSDEM 2026 实测:Wasm 真的跑进了 Nordic 和 ESP32

Fedor Smirnov 在 FOSDEM 2026 分享了他们在 Myrmic 项目里的完整经验。Myrmic 是一个开源的 Rust 中间件,专注于分布式系统的微控制器固件。整个技术栈从 Embassy 固件、embedded HAL 到 Wasm 工具链和运行时,全部用 Rust 写成。

他们的目标硬件是 Nordic nRF5340 和 ESP32-C5 这类资源受限设备——256KB SRAM、1MB Flash,跑一个 RTOS 就差不多了。在这种硬件上跑 WebAssembly,听起来像天方夜谭。

但他们真的跑起来了,还跑了四个运行时做横向对比:Wasmi(解释器)、Tinywasm(预编译)、Wasmtime(Pulley VM)、WAMR(AOT 编译)。每个运行时都跑了同一个 benchmark 模块,然后测了内存占用和执行时间。

结果很有意思:

运行时 内存占用 执行方式 适用场景
Wasmi ~50KB SRAM 解释执行 开发调试,零预热
Tinywasm ~25KB SRAM 预编译 .tw 极度受限设备
Wasmtime Pulley ~80KB SRAM 模拟器 VM 中等资源设备
WAMR AOT ~120KB SRAM AOT 编译 .aot 有额外存储用于编译

这是实际跑在 nRF5340 开发板和 Seeed Studio XIAO nRF54L15 上的数据,不是跑在笔记本上的模拟结果。

为什么固件要用 Wasm?OTA 更新不需要动底层代码

FOSDEM 这场演讲的核心论点不是「Wasm 比 C 快」,而是「Wasm 让固件有了插件系统」。

传统 MCU OTA 流程:固件包 + 签名 + 差分算法 + 双 BANK 切换。出问题了要么回滚,要么现场维修。

Wasm OTA 流程:Wasm 模块是纯数据,可以走和固件完全不同的通道更新。出了错,Wasm 沙箱会拦截住,不会把主系统弄挂。运行时可以独立热更新,不需要动底层固件。

这对工业 IoT 场景特别重要——工厂里的网关设备通常在难以物理接触的地方,OTA 失败的风险很高。Wasm 的沙箱隔离把单次更新失败的影响范围锁死在那个模块里。

Rust 嵌入式生态在 2026 年的现状:比你想的成熟

这场演讲之所以值得关注,是因为它代表了 Rust 嵌入式生态的一个完整闭环:

Embassy 提供了 async 运行时和 HAL,Wasm 提供了可移植的执行单元,WASI 0.3 提供了标准接口。三个层叠在一起,终于让「一门语言写固件、一门语言写应用逻辑」变成了现实。

2026 年的 Rust 嵌入式开发生态有几个关键数字:

  • Embassy 已成为 Cortex-M 上最主流的 async 框架,2025 年新上线的项目里用它多于 RTIC
  • FAA 和 NHTSA 开始接受 Rust 代码用于航空和汽车,认证流程比 C 更简单(内存安全是天然证据)
  • WASI 0.3 已在 Wasmtime 37+ 稳定支持,微控制器上的轻量级网络栈需求在 WASI 0.3 的异步原语下可以得到满足

下一步:如果你想试

第一步:看 benchmark 数据。他们的 GitHub 仓库(syzer/memory-benchmark-wasm-runtimes)里包含了四个运行时在两块开发板上的完整集成代码,可以直接拿来跑。

第二步:按硬件选运行时。Flash 超过 512KB、RAM 超过 128KB 的设备可以跑 WAMR AOT;极度受限的设备用 Tinywasm;开发阶段用 Wasmi 避免编译等待时间。

第三步:考虑 Ariel OS。这个全 Rust 写的 RTOS 内置了 Wasm 支持,对新手更友好——Kaspar Schleiser 在 FOSDEM 2026 也有一场专门讲它的演讲。

Wasm 跑在微控制器上这件事,2026 年已经不是一个实验性话题了。它在工业 IoT、分布式系统和固件热更新这几个场景里,正在变成一个真实的工程选项。

评论区

0 条评论

登录后可评论。

铁锈·Rust工具链 13 阅读