NXP MCU 技术论坛
直播中

李林

8年用户 1291经验值
私信 关注
[问答]

如何使用MCUXpresso IDE中内置的SWO Trace功能?

如何使用MCUXpresso IDE中内置的SWO Trace功能?

回帖(1)

二霸

2025-3-24 18:15:09

在MCUXpresso IDE中使用内置的SWO Trace功能,需按照以下步骤操作:


1. 硬件准备



  • 确认目标板支持SWO:确保目标板的调试接口包含SWO引脚(通常标记为SWO或TRACESWO)。

  • 连接调试器:使用支持SWO的调试器(如J-Link、LPC-Link等),并正确连接SWO引脚到目标板。


2. IDE配置



  • 启用SWO跟踪

    1. 打开项目,进入 Debug Configurations(右键项目 → Debug As → Debug Configurations)。

    2. 选择对应的调试配置,进入 Debugger 选项卡。

    3. Probe Settings 中勾选 Enable SWO Trace

    4. 设置 SWO Clock Frequency(需与目标板CPU时钟匹配)和 Core Clock(目标CPU频率),例如:若CPU为120MHz,分频系数设为120,则SWO速率为1MHz。

    5. 保存配置。



3. 代码配置




  • 初始化ITM模块


    #include  // 包含设备头文件

    void ITM_Init(void) {
    ITM->LAR = 0xC5ACCE55;   // 解锁ITM寄存器
    ITM->TCR = (1 << 0) |    // 启用ITM
               (1 << 3);     // 启用同步数据包
    ITM->TPR = 0x0000000F;   // 解锁所有stimulus端口
    ITM->TER = (1 << 0);     // 启用stimulus port 0
    }

    main()函数中调用ITM_Init()




  • 发送数据到SWO


    #include 

    // 重定向printf到ITM
    int _write(int fd, char *buf, int size) {
    for (int i = 0; i < size; i++) {
      ITM_SendChar(buf[i]); // 使用CMSIS函数发送字符
    }
    return size;
    }

    // 示例代码
    int main() {
    ITM_Init();
    printf("Hello SWO Trace!n");
    while(1) { /* ... */ }
    }



4. 查看SWO输出



  • 打开SWO终端

    1. 启动调试会话(点击 Debug 按钮)。

    2. 进入 Window → Show View → SWO Console

    3. 在SWO Console中,右键选择 Configure SWO...

    4. 设置 Core ClockSWO Speed(与调试配置一致)。

    5. 勾选需要监听的 Stimulus Port(如Port 0),格式选择 ASCII

    6. 点击 OK,运行程序,即可在SWO Console看到输出。



5. 故障排查



  • 无输出:检查SWO引脚连接、时钟配置、代码初始化是否正确。

  • 乱码:确认SWO Clock与分频设置是否匹配目标板频率。

  • 调试器支持:更新调试器固件,确保支持SWO功能。


参考资源



  • MCUXpresso用户手册:查看 TraceITM 相关章节。

  • 目标板参考手册:确认ITM/TPIU寄存器配置。


通过以上步骤,即可在MCUXpresso IDE中高效利用SWO Trace进行实时调试和输出跟踪。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分