Skip to main content
Visitor II
March 21, 2026
Question

SEGGER RTT VIEWER向STM32MP257D_M33发数据有5秒以上的响应延迟

  • March 21, 2026
  • 1 reply
  • 174 views

经我这三两天的多次调试,我终于找到了问题所在

先说segger rtt viewer的工作方式

首先,我将segger rtt的源码编译烧录到stm32mp257d_m33那里去。这时m33核的暂存会持有一个_segger_rtt结构体。然后我将这个结构体地址提供给segger rtt viewer,这时就会成功建立起通讯

现在我通过segger rtt viewer向stm32mp257d_m33发送数据,这时jlink这个硬件工具就会通过swd直接操作暂存将数据写入到_segger_rtt结构体的下行缓冲区,按理会同时更新_segger_rtt结构体下行缓冲区的写位置WrOff

而我在stm32mp257d_m33的用户代码逻辑是,将从swd收到的数据即刻原封不动的发还回去

下面是我实际使用segger rtt viewer时的输入输出窗口的内容

00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
< 556
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
< 56456
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
< 5465465
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
< 465465
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
< 546546
00> WrOff=557, RdOff=557, HasData=0
< 54646
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
< 54646
00> WrOff=557, RdOff=557, HasData=0
< 564564
00> WrOff=557, RdOff=557, HasData=0
00> WrOff=557, RdOff=557, HasData=0
< 554646
00> WrOff=615, RdOff=615, HasData=0
< 64654
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
< 1321231846
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
< 54654132154465
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
< 56454846465
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
< 231321464653
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
< 4654123123146
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
< 6546523132184645
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
< 6413123899
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
< 3214632131
00> WrOff=615, RdOff=615, HasData=0
< 3132156465
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
< 313215654643
00> WrOff=615, RdOff=615, HasData=0
< 13156565464
00> WrOff=615, RdOff=615, HasData=0
00> WrOff=615, RdOff=615, HasData=0
< 13164445
00> WrOff=615, RdOff=615, HasData=0
< 5645464564
00> WrOff=770, RdOff=770, HasData=0
00> WrOff=770, RdOff=770, HasData=0
< 5664848946
00> WrOff=770, RdOff=770, HasData=0
00> WrOff=770, RdOff=770, HasData=0
00> WrOff=770, RdOff=770, HasData=0
00> WrOff=770, RdOff=770, HasData=0
00> WrOff=770, RdOff=770, HasData=0
00> WrOff=770, RdOff=770, HasData=0
00> WrOff=770, RdOff=770, HasData=0
00> 5645464564
00> 5664848946
00> WrOff=792, RdOff=792, HasData=0
00> WrOff=792, RdOff=792, HasData=0
00> WrOff=792, RdOff=792, HasData=0
00> WrOff=792, RdOff=792, HasData=0
00> WrOff=792, RdOff=792, HasData=0
00> WrOff=792, RdOff=792, HasData=0
00> WrOff=792, RdOff=792, HasData=0

WrOff,RdOff,HasData这三个值在stm32mp257d_m33的用户代码逻辑是每隔1秒访问一次具体数值,并将之发送到segger rtt viewer那里去

从输入输出窗口的内容可以看到,最开始我多次向stm32mp257d_m33发送数据下去(并且segger rtt viewer的后台也全部都显示发送已完成),却没有马上有同样的数据回复上来,甚至都没有数据回复.并且WrOff,RdOff,HasData这三个值也迟迟没有更新

直到最后发送5645464564和5664848946,才间隔几秒将这两段数据一次性发还回来

从上述调试内容可以看到具体的问题

数据发送下去了,却没有立即回复或者直接没有回复,并且jlink这个硬件工具也没有立即更新WrOff的数值.只是较低概率地偶尔间隔几秒发回之前累积的若干数据

所以要么是jlink这个硬件工具有问题,要么是stm32mp257d_m33从swd接口接收数据的这个过程有问题

1 reply

Olivier GALLIEN
Technical Moderator
March 26, 2026

Hi @csvir ,

Can you please post your question in english ? 

Thanks 

Olivier