flying1104 发表于 2021-10-14 10:47:33

RTX5使用RTT输出按键信息后死机

本帖最后由 flying1104 于 2021-10-14 14:02 编辑

系统:RTX5MCU:STM32H743
工具:JLINK
硬件:V9.70
dll:V6.96

背景:
以前使用串口调试,现在开始想转用RTT调试


移植版本:
RTX5:V7-RTX5 Template
RTT:专题5下面的H7版本,RTT version: 7.00

配置:
RTT采用默认专题5的配置

#define rttTerminal      SEGGER_RTT_SetTerminal
#define rttPrintf                SEGGER_RTT_printf


1.在AppTaskStart任务下,配置了RTT上行和下行
/* 配置通道 0,上行配置*/
SEGGER_RTT_ConfigUpBuffer(0, "RTTUP", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
      
/* 配置通道 0,下行配置*/
SEGGER_RTT_ConfigDownBuffer(0, "RTTDOWN", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);


实现:
能够在AppTaskStart 打印出版本号


rttTerminal(0);
rttPrintf(0, "V1.0.0\r\n");


问题:
按下按键1,打印
rttPrintf(0, "KEY_DOWN_K1\r\n");
按下按键2,打印
rttPrintf(0, "KEY_DOWN_K2\r\n");

现象:
按下按键1或者按键2后,RTT能够输出打印信息
但MCU死机,LED不闪烁。
更换使用串口输出,MCU程序运作正常

在STM32F407上面一样的操作,没有问题,RTT version: 6.70a

不知道怎么追踪代码,因此请问这个是哪里造成的呢?
感谢




flying1104 发表于 2021-10-14 11:29:05

本帖最后由 flying1104 于 2021-10-14 15:05 编辑

初步定位因为这个函数跳入硬件错误
if (BufferDesc.Cnt != 0u) {
      SEGGER_RTT_Write(BufferIndex, acBuffer, BufferDesc.Cnt);
    }

flying1104 发表于 2021-10-14 15:37:43

已经解决,RTT版本问题

eric2013 发表于 2021-10-15 09:14:21

不好意思,回复晚了。

解决了就好。

flying1104 发表于 2021-10-18 15:07:29

eric2013 发表于 2021-10-15 09:14
不好意思,回复晚了。

解决了就好。

感谢回复,主要开始没找到头绪,没调试过系统和使用RTT调试,不熟悉调试工具,想要指引一下。
后来怀疑是不是JLINK和RTT版本不对造成的冲突
用了JLINK的软件版本RTT就没有问题了
页: [1]
查看完整版本: RTX5使用RTT输出按键信息后死机