TensorFlow Lite Micro 移植到 WCH CH585M 跑 sin 函数拟合 demo。
想象一下:一个几块钱的 MCU,不需要网络、不需要 Linux、不需要 MPU,就能本地运行神经网络——关键词唤醒、手势识别、振动异常检测、传感器数据拟合。设备端推理意味着**零延迟、离线可用、数据不出设备、功耗低到可以用电池跑几年**。
这就是 TensorFlow Lite Micro(TFLM)要做的事。它是 TensorFlow Lite 的微控制器分支,目标是在只有几十 KB RAM、几百 KB Flash 的芯片上跑 AI 推理。它把底层依赖压缩到了极致:无操作系统、无动态内存、无文件系统,纯静态 arena 分配。
WCH CH585M 是一颗只要几块钱的 RISC-V 芯片——448KB Flash、128KB RAM,带 BLE。如果能在它上面跑 TFLM,就意味着一大批低成本 RISC-V 设备都有了边缘 AI 的可能性。
硬件
| 项目 | 说明 |
|------|------|
| MCU | WCH CH585M(RISC-V RV32IMC,448KB Flash,128KB RAM) |
| 串口 | UART0 — PA14 (TX) / PA15 (RX) @ 115200 |
| 工具链 | MRS2 IDE + RISC-V GCC 12.2.0 |
串口接线
- USB-TTL CH585M
- ------- ------
- RX ← PA14 (TX)
- TX → PA15 (RX)
- GND — GND
复制代码
工程结构- CH585M_TFLite_sin/
- ├── src/main.cc # demo 主程序
- ├── model_data.h # sin 模型 (2.3KB, 嵌入为 C 数组)
- ├── tflite_port/ # 平台抽象层(3 个文件)
- │ ├── debug_log.cc # DebugLog 输出
- │ ├── system_setup.cc # 初始化(空,在 main 完成)
- │ └── micro_time.cc # 计时器桩
- ├── tensorflow/ # TFLite Micro 核心(精简,仅保留所需)
- ├── third_party/ # 第三方头文件(flatbuffers, gemmlowp, ruy)
- ├── Startup/ # 启动代码
- ├── StdPeriphDriver/ # CH58x HAL 驱动
- ├── RVMSIS/ # RISC-V CMSIS 头文件
- ├── Ld/Link.ld # 链接脚本
- └── Makefile # 命令行构建(可选)
复制代码
模型信息
| 属性 | 值 |
|------|-----|
| 输入 | 1× float32 (`x`) |
| 输出 | 1× float32 (`sin(x)`) |
| 算子 | FullyConnected → Tanh → Reshape |
| 大小 | 2,380 bytes |
内存占用
- text data bss dec
- 97,204 2,864 8,280 108,348 (~106KB
复制代码 | 区域 | 大小 | 使用率 |
|------|------|--------|
| Flash (448KB) | ~98KB | 22% |
| RAM (128KB) | ~11KB | 8.5% |
输出
项目下载
CH585M_TFLite_sin-master.zip
(1.15 MB, 下载次数: 0)
github.com/createskyblue/CH585M_TFLite_sin |