SuperAPI AI 工具集

wendy-lite

通用与其它

查看项目

更新于 10-16 01:28

技能介绍

用途:Wendy Lite 是面向 ESP32-C6 的 WebAssembly 运行时固件,开发者可用 C、Rust、Swift 6.0+、Zig、TypeScript 或原始 WAT 编写应用,编译为 WASM 后在设备运行并直接访问硬件。

主要能力:底层使用 WAMR(WebAssembly Micro Runtime)执行 WASM 二进制;WASM 应用通过导入 “wendy” 模块的宿主函数访问硬件,涵盖 GPIO(输入/输出/PWM/ADC/中断)、I2C、NeoPixel(WS2812,经 RMT)、Timer、UART、SPI、NVS 键值存储、系统控制(重启、运行时间、设备 ID)、OpenTelemetry(日志、指标、追踪)、可选 BLE、WiFi、TCP/UDP 套接字与 TLS。异步事件(GPIO 中断、定时器、BLE)通过导出的 wendy_handle_callback 分发,最多 32 个处理器。WASM 二进制存于 flash 分区 wasm_a(2MB),开机自动加载。

使用方式:应用需导出 _start 作为入口,从 “wendy” 模块导入宿主函数;异步回调需导出 wendy_handle_callback,并调用 sys_yield() 以便分发。C 示例可执行 cd wasm_apps 后 make blink,或手动用 clang --target=wasm32。固件构建需 ESP-IDF v5.x 支持 ESP32-C6,执行 idf.py set-target esp32c6、idf.py build、idf.py flash monitor。上传方式包括 WiFi(HTTP 下载)、USB CDC 线协议(PING、UPLOAD、RUN、STOP、RESET)和 Flash 写入(4 字节长度头,重启后保留)。BLE 配网时设备以 “Wendy-XXXX” 广播,客户端经 GATT 发送 WiFi SSID/密码。Swift 应用使用 https://github.com/wendylabsinc/wendy-lite 的 WendyLite Swift 包,以 @_cdecl("_start") 为入口,需 Swift 6.0+ 的 Embedded Swift 支持,无堆分配,仅用静态字符串。

适用场景:ESP32-C6 上的嵌入式应用开发,尤其是希望用多种语言编写 WASM 并访问硬件的场景,可配合 Wokwi 模拟器在无实体板时仿真。

限制:WAMR 池 229KB,WASM 栈 8KB、堆 8KB;Flash 共 4MB(固件 1.875MB、WASM 2MB、应用存储 64KB)。BLE、net 等组件可选且默认禁用。Swift 需 6.0+ 且无堆分配;Rust 需 rustup(非 Homebrew Rust);Zig 需 0.13+;WAT 需 WABT。其余细节暂未提供。