# CH585M_TFLite_sin **Repository Path**: createskyblue/CH585M_TFLite_sin ## Basic Information - **Project Name**: CH585M_TFLite_sin - **Description**: CH585M TFLite Micro sin Demo - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-06 - **Last Updated**: 2026-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CH585M TFLite Micro sin Demo 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 的可能性。 ## 相关文章 - [边缘AI 在 WCH CH585M 上移植 TFLite Micro](https://createskyblue.github.io/posts/ch585m-tflite-micro-sin-demo) — 详细移植过程、文件清单、IDE 配置 - [ESP32-S3 上使用 ESP-NN 加速 TFLite Micro sin 推理](https://createskyblue.github.io/posts/esp32s3-esp-nn-sin-demo) — sin 模型的训练过程 ## 硬件 | 项目 | 说明 | |------|------| | 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% | 8KB bss 中主要包含 `tensor_arena` 静态内存池。 ## 构建 ### MRS IDE(推荐) 1. 打开 MRS2 → 刷新工程 2. 点击 Build 3. 烧录到 CH585M ### 命令行 ```powershell $env:Path='C:\MounRiver\MounRiver_Studio2\resources\app\resources\win32\components\WCH\Toolchain\RISC-V Embedded GCC12\bin;C:\mingw64\bin;' + $env:Path mingw32-make -j8 all ``` ## 移植要点 TFLite Micro 移植只需实现 3 个平台抽象函数 + 配置编译选项: | 函数 | 文件 | 说明 | |------|------|------| | `DebugLog()` | `tflite_port/debug_log.cc` | printf 已重定向到 UART | | `InitializeTarget()` | `tflite_port/system_setup.cc` | 空实现,时钟在 main 初始化 | | `GetCurrentTimeTicks()` | `tflite_port/micro_time.cc` | 桩,profiling 使用 | 编译选项要点: ```makefile -std=gnu++17 -fno-exceptions -fno-rtti -fno-threadsafe-statics -DTF_LITE_STATIC_MEMORY # 禁用动态内存 -DTF_LITE_USE_GLOBAL_CMATH_FUNCTIONS # 嵌入式 C++ math -DDEBUG=0 # printf → UART0 ``` ## 输出 ![串口输出截图](img/PixPin_2026-07-05_07-43-20.jpg)