> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Model Onboarding on MCU

# 在 MCU 上部署模型

本指南介绍将 TensorFlow Lite Micro（TFLM）模型集成到 Q2390 / IQ2390 MCU 固件中以进行推理延迟基准测试的完整工作流程。

***

## 目标平台

| 项目 | 详情 |
| - | - |
| 开发板 | Q2390 / IQ2390 |
| MCU CPU | RISC-V SiFive E6 |
| 操作系统 | Zephyr RTOS 4.3.0 |
| 工具链 | SDLLVM Clang 21.1.4 |
| RAM | 共 3 MB（所有代码和数据均加载到 RAM 中，不使用 XIP flash） |
| 调试接口 | 通过 RISC-V JTAG 连接的 Lauterbach T32 |

***

## 应用开发工作流程

```
 ┌──────────────────────┐         ┌───────────────────────┐         ┌───────────────────────┐
 │                      │         │                       │         │                       │
 │  1. Model            │         │  2. TFLM Runtime      │         │  3. Flashing &        │
 │     Preparation      │────────►│     Integration       │────────►│     Validation        │
 │                      │         │                       │         │                       │
 ├──────────────────────┤         ├───────────────────────┤         ├───────────────────────┤
 │ • Build Keras CNN    │         │ • Clone tflite-micro  │         │ • adb push .mbn       │
 │ • Export int8 TFLite │         │ • Wire LLVM libc++    │         │ • Verify remoteproc   │
 │ • Quantize inputs    │         │ • Create infer module │         │   state = running     │
 │ • Flatten with xxd   │         │ • Wire main.c + CMake │         │ • T32: read latency   │
 │                      │         │ • Build firmware      │         │   (g_tfli_avg_us µs)  │
 └──────────────────────┘         └───────────────────────┘         └───────────────────────┘
         HOST                              HOST                           ON-DEVICE
```

`xxd` 步骤会将第 1 阶段生成的模型和输入二进制文件转换为 C 数组（`model_data.cpp`、`input_data.cpp`），这些数组在第 2 阶段中直接编译进固件。

***

## 先决条件

### 主机

| 要求 | 用途 |
| - | - |
| Linux 主机（Ubuntu 22.04） | 主要主机环境，所有构建和模型准备步骤均在 Linux 上运行 |
| Python 3.x | 为示例应用导出模型并生成输入 |
| MCU 固件工作区（已克隆、配置并编译） | 编译 Zephyr 固件 |
| `xxd`（标准 Unix 工具） | 将模型和输入二进制文件展平为 C 数组 |
| `adb`（Android Debug Bridge） | 将固件二进制文件刷写到目标硬件 |
| Lauterbach T32 软件 | 通过 JTAG 读取推理结果和 RAM 控制台输出 |

### 目标硬件

| 要求 | 用途 |
| - | - |
| Q2390 / IQ2390 开发板 | 运行 TFLM 固件的目标 MCU。确保 MCU 已启动并正常运行 |
| Lauterbach T32 JTAG 探针 | 已连接到开发板 |
| 与主机的 USB 连接 | `adb` 刷写固件时需要 |

***

## 本指南包含的阶段

| 阶段 | 描述 |
| - | - |
| [1. 模型准备](1_Model_Preparation.mdx) | 构建参考 1D-CNN 模型，导出为 int8 TFLite，并生成可用于 MCU 的 C 字节数组 |
| [2. TFLM 运行时集成](2_tflm_runtime_integration.mdx) | 克隆 TFLM，接入 C++ 工具链，创建推理模块，并将其注册到固件中 |
| [3. 刷写与验证](3_flashing_and_validation.mdx) | 将固件刷写到目标设备，验证 LPAI 子系统正在运行，并通过 T32 读取推理延迟 |
