引言:NPU 来了,调试接口却没了?STM32N6 是 ST 首款集成 Neural Processing Unit(NPU) 的 MCU,主核升级为 Cortex-M55 ,算力飙升,但许多开发者发现——
ST 在《LAT1489》中给出了解法:SWV/ITM 一键重定向 ,不占用任何 GPIO ,速率 50 Mbps ,IDE 内嵌 Data Console 实时查看 。 本文把这份 7 页应用笔记拆成“原理 → 配置 → 踩坑 → 性能”四段,带你 10 分钟搭好 “零引脚”日志系统 。 1. 技术原理:为什么 ITM 是 M55 的“隐形 UART”?表格复制
2. 三步完成重定向:代码、时钟、IDE 一个都不能少2.1 代码层:重写
|
| 方案 | 引脚 | 速率 | CPU 占用 | 缓冲 | 实测丢包 |
|---|---|---|---|---|---|
| UART 115200 | TX/RX | 11 kB/s | 8% | 16 B | 0% |
| RTT 0 Up-buffer | 0 | 125 kB/s | 1% | 1 kB | 0% |
| ITM Port0 | SWO | 500 kB/s | 0.3% | 16 W×32 bit | 0% |
| ITM Port0 | SWO | 1 MB/s | 0.6% | 同上 | 2% (FIFO 溢出) |
结论: ≤ 500 kB/s 零丢包 ,足以替代 UART 做裸机日志 ;1 MB/s 以上需开 ITM 空写等待
表格复制
| 现象 | 根因 | 快速修复 |
|---|---|---|
| CubeIDE 无数据 | SWO 时钟 ≠ 实际 | 手填 50000 kHz ,禁止 Auto-detect |
| 中文乱码 | ITM 只支持 7-bit ASCII | printf("%02X", byte); 转十六进制 |
| 输出断续 | FIFO 溢出 | 降低打印速率 或 增加空写等待 |
| 调试卡死 | DBGMCU 时钟未开 | main 第一句 加 DBGMCU->CR | = 0x00300000; |
| NPU 任务掉帧 | ITM 抢占双精度浮点 | 临界段包裹 __disable_irq(); ITM_SendChar(ch); __enable_irq(); |
案例: 某家电厂用 SWO 做 NPU 推理时间戳 ,每 1 ms 打印 16 B ,24 h 不断 → 文件 1.3 GB ,回放大屏卡顿点 ,定位到 Cache Miss
一句话总结: “学会 ITM/SWO,就把 printf 搬进了调试器的内存总线。”
线下培训(深圳) | 基于STM32N6的边缘人工智能应用开发实训
《STM32N6视频课程》学习笔记+STM32N6 系统资源隔离: RIF对外设的配置和管理
《STM32N6视频课程》学习笔记+STM32N6系统资源隔离— RIF访问规则与非法访问控制
《STM32N6视频课程》学习笔记+STM32N6 系统资源隔离 Cortex M55 TrustZone
《STM32N6视频课程》学习笔记+STM32N6 资源隔离RIF简介(一)
《STM32N6视频课程》学习笔记+STM32N6 密码学硬件以及安全存储
《STM32N6视频课程》学习笔记+STM32N6 安全启动与安全升级动手实验
《STM32N6视频课程》学习笔记+STM32N6 安全启动与安全升级
《STM32N6视频课程》学习笔记+STM32N6 BSEC 调试访问控制
《STM32N6视频课程》学习笔记+STM32N6 BSEC时域隔离
微信公众号
手机版