goc32:TinyOS 用户程序的 C 编译器
goc32 是 TinyOS 的用户态 C 编译器,也是 goc 前端在 32 位嵌入式方向上的延续。
它刻意不走 libLLVM 路线:
没有 cgo,也没有 libLLVM.dll。clang 和 ld.lld 只出现在最后两步,和“用 clang 做代码生成”是两件事。
本小节文章
| 文章 | 内容 |
|---|---|
| 串口上传 | 用 goc32 编译 .tos,通过 tosput + rx 直接写进 littlefs 的 /bin,再从 shell 运行 |
| API 参考 | user/lib.h 里的系统调用、文件、时间、内存、GPIO/ADC、屏幕等用户态 API |
它适合做什么
- 给 TinyOS 写 用户态程序:
hello、ls、cat、sh、GPIO 小工具、文本界面程序。 - 目标板:ESP32-C3、QEMU RV32、Cortex-M3、RP2040(Cortex-M0+)、RP2350(Cortex-M33)。
- 关心“没有 LLVM 依赖”和“体积可控”的场景。
它不做什么
- 不编译内核;内核仍然由 clang 构建。
- 不支持浮点、
long double、atomics、TLS、内联汇编。 - 不追求运行速度优先;后端仍以正确性和体积为先。
源码与最新数据在 yafengabc/goc32。