WebAssembly 是一个面向 Web 平台的通用二进制格式,C/C++/Rust 等诸多语言都可编译到 WebAssembly。由于 WebAssembly 设计的通用性,目前在服务器端甚至嵌入式平台都有引入 WebAssembly 的尝试,如 wasm3 就可以在嵌入式平台上运行 WebAssembly 程序。

然而 WebAssembly 在嵌入式平台的应用存在诸多挑战:

  • WebAssembly 规定的内存页面大小为 64K,不适用于一些内存受限的环境
  • 线性内存模型不适合对嵌入式系统内存 (ROM/RAM/MMIO etc.) 的建模
  • 没有统一的硬件接口,面向桌面/服务器端的 WASI 接口规范不适用于嵌入式平台

所以我们选择以更接近硬件的 RISC-V 指令集为基础构建一个面向嵌入式应用的通用二进制平台。