查看: 133|回复: 1

[分享] MCUXpressoIDE: ITM 与串口调试输出的对比与实现

[复制链接]

该用户从未签到

738

主题

6397

帖子

0

超级版主

Rank: 8Rank: 8

积分
26273
最后登录
2025-11-13
发表于 2025-11-6 14:50:48 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2025-11-6 15:02 编辑

MCUXpressoIDE: ITM 与串口调试输出的对比与实现
1. 引言
在嵌入式系统开发中,调试与日志输出是确保代码正确性和优化性能的关键环节。通过实时监控系统状态、捕获异常行为并记录关键数据,开发者能够快速定位问题并验证功能实现。在资源受限的嵌入式环境中,选择合适的调试工具和方法对开发效率影响显著。

MCXN947 作为 NXP 推出的一款高性能微控制器,提供了多种调试与日志输出方案,其中ITM (Instrumentation Trace Macrocell) 和 串口打印 是最常用的两种方式。ITM 基于 Cortex-M 内核的调试功能,通过调试接口高速传输数据,适合实时性要求高的场景;而串口打印则通过 UART 外设输出日志,通用性强且适用于生产环境。

本文将介绍如何在 MCUXpresso IDE 中使用这两种输出方式,以提升开发效率和系统可靠性。

2. ITM和串口打印原理和特点

2.1 ITM 的原理与特点
工作原理
ITM(Instrumentation Trace Macrocell)是 Cortex-M 内核提供的一种调试功能,通过调试接口(如 SWD/JTAG)SWO实时传输数据。开发者可以使用 ITM_SendChar() 函数将调试信息发送到 ITM 端口,数据通过调试器捕获并显示在 IDE 的调试窗口中。
优点
  • 高速传输:ITM 利用调试接口的带宽,数据传输速度远高于串口(通常可达 10 Mbps 以上)。
  • 低 CPU 占用:ITM 由硬件直接处理,几乎不占用 CPU 资源。
  • 无需额外外设:不依赖 UART 或其他外设,节省硬件资源。
缺点
  • 依赖调试器:必须连接调试器(如MCU-link, J-Link)才能使用, 无法在生产环境中直接应用。
  • 配置复杂:需要正确配置 ITM 端口和调试器设置,初学者可能感到困难。

2.2 串口打印的原理与特点
工作原理
串口打印通过 UART外设将调试信息发送到串口终端。开发者通常重定向 printf 函数到 UART,从而使用标准库函数输出日志。数据通过 TX/RX 引脚传输,可在 PC 端使用串口调试工具(如 PuTTY、Tera Term)查看.MCUXpresso IDE也集成了串口调试助手Terminal.
优点
  • 通用性强:几乎所有嵌入式开发板都支持 UART,适用性广泛。
  • 生产环境可用:无需调试器,可直接在生产环境中输出日志。
  • 易于实现:配置简单,适合初学者和快速原型开发。
缺点
  • 速度较慢:受限于 UART 波特率,传输效率低。
  • 占用外设资源:需要占用 UART 外设及引脚资源,可能影响其他功能。
  • 实时性较差:由于中断延迟和波特率限制,不适合高实时性场景。

2.3 对比总结
以下表格总结了 ITM 与串口打印的主要特性:
   
特性
   
ITM
串口打印
传输速度
高速(可达 10 Mbps 以上)
低速(通常 115200 bps)
CPU 占用
较高
外设依赖
无需额外外设
需要 UART 外设及引脚
调试器依赖
必须连接调试器
无需调试器
生产环境适用性
不适用
适用
配置复杂度
较复杂
简单
实时性
较低

适用场景总结
  • ITM:适合开发阶段的高效调试,尤其是实时性要求高的场景(如电机控制、信号处理)。
  • 串口打印:适合生产环境日志输出、初学者快速上手及通用调试需求。

3. 两种打印方式在MCUXpresso IDE中实现步骤
3.1 使用 ITM 打印
硬件要求:
确保芯片 SWO 引脚连接到调试器的 SWO 接口。
图片1.png                               
软件配置:
1) 新建工程时,选择“Redirect printf/scanf to ITM”,将 printf/scanf 定向到 ITM。
图片2.png

2)配置 Trace 时钟:
图片3.png
生成代码:
    CLOCK_AttachClk(kTRACE_DIV_to_TRACE);                 /*!< Switch TRACE toTRACE_DIV */
    CLOCK_SetClkDiv(kCLOCK_DivTraceClk,3U);           /*!< Set TRACECLKDIVdivider to value 3 */

3) MCUXpresso IDE中配置 ITM console view:
打开SWO ITMConsole:
图片4.png
图片5.png


配置和代码中配置相应的CoreClock 和 Trace Clock:
图片6.png 图片7.png 图片8.png

4)查看输出结果。
图片9.png

3.2使用串口UART输出打印
1)新建工程时,选择SDK DebugConsole to UART,设置DebugConsole 使用UART。
图片10.png

2)利用MCUXpressoIDE 中外设工具配置DebugConsole- UART.

图片11.png 图片12.png
3)使用Pins 工具配置UART 的TX/RX引脚:

图片13.png
4)连接串口硬件,查看打印结果。
图片14.png
4. 总结
ITM 和串口打印各有优势,开发者可根据项目需求选择合适的方式。ITM 更适合开发阶段的高实时性调试,而串口打印则适合生产环境和通用调试。

回复

使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 626 天

    连续签到: 20 天

    [LV.9]以坛为家II

    25

    主题

    999

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2757
    最后登录
    2025-11-15
    发表于 2025-11-7 10:02:15 | 显示全部楼层
    确实非常好的文章,感谢分享!
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-11-15 22:25 , Processed in 0.088227 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表