在嵌入式系统开发中,调试和日志输出对于确保代码正确性和优化性能至关重要。通过实时监控系统状态、捕获异常行为并记录关键数据,开发人员能够快速发现问题并验证功能。在资源受限的嵌入式环境中,选择合适的调试工具和方法显著影响开发效率。
MCXN947 是恩智浦上市的高性能微控制器,提供多种调试和记录解决方案,其中最常用的是ITM(仪器跟踪宏单元)和UART打印。ITM 利用 Cortex-M 内核的调试功能,通过调试接口高速传输数据,使其适用于具有严格实时要求的场景。UART 打印则通过 UART 外设输出日志,具有很强的通用性,适合生产环境。
本文解释了如何在MCUXpresso IDE 中使用这两种输出方法,以提高开发效率和系统可靠性。
工作原理:
ITM(Instrumentation Trace Macrocell)是 Cortex-M 内核提供的一项调试功能。它通过调试接口(例如 SWD/JTAG)使用 SWO 实时传输数据。开发人员可以使用ITM_SendChar()函数将调试信息发送到 ITM端口,然后由调试器捕获并显示在 IDE 的调试控制台中。
优势:
劣势:
工作原理:
UART 打印通过 UART 外设将调试信息发送到串行终端。开发人员通常将printf函数重定向到UART,从而使标准库函数用于日志输出。数据通过 TX/RX 引脚传输,可以使用串行工具(例如 PuTTY、Tera Term)在 PC 上查看。MCUXpresso IDE 还内置了一个用于 UART 调试的终端。
优势:
劣势:
下表总结了 ITM 与 UART 打印的主要特点:
| 特性 | ITM | UART 打印 |
|---|---|---|
| 传输速度 | 高(10 Mbps 或更高) | 低(通常为 115200 bps) |
| CPU 开销 | 低 | 更高 |
| 外围依赖 | 无 | 需要 UART 外设和引脚 |
| 调试器依赖 | 需要 | 不需要 |
| 生产适用性 | 不合适 | 合适 |
| 配置复杂性 | 复杂 | Simple |
| 实时性能 | 高 | 低 |
使用场景:
硬件需求: 确保芯片的 SWO 引脚连接到调试器的 SWO 接口。
Alice_Yang_0-1764645814612.png
软件配置:
1)创建新项目时,选择“Redirect printf/scanf to ITM”以将 printf/scanf 重定向到 ITM。
Alice_Yang_2-1764645837570.png
2) 配置跟踪时钟:
/*!< Switch TRACE to TRACE_DIV */
CLOCK_AttachClk(kTRACE_DIV_to_TRACE);
/*!< Set up dividers */
/*!< Set TRACECLKDIV divider to value 3 */
CLOCK_SetClkDiv(kCLOCK_DivTraceClk, 3U);
Alice_Yang_6-1764646048650.png
Alice_Yang_7-1764646056186.png
Alice_Yang_8-1764646066673.png
Alice_Yang_9-1764646097086.png
Alice_Yang_10-1764646101638.png
4)在 ITM 控制台中查看输出结果。
Alice_Yang_11-1764646126756.png
1)创建新项目时,选择 SDK 调试控制台为 UART,设置 DebugConsole 使用 UART。
2)使用 MCUXpresso IDE 的外设工具配置 DebugConsole-UART。Alice_Yang_13-1764646149103.png
Alice_Yang_14-1764646156564.png
3)使用引脚工具配置 UART TX/RX 引脚。Alice_Yang_15-1764646165004.png
4)连接串行硬件,并在终端中查看输出结果。Alice_Yang_16-1764646174816.png
ITM 和 UART 打印各有其优势。开发人员应根据项目需求选择合适的方法。ITM 更适合在开发过程中进行高实时调试,而 UART 打印则更适合生产环境和一般调试。