cancel
Showing results for 
Search instead for 
Did you mean: 

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

csvir
Associate

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

先说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 1
Olivier GALLIEN
ST Employee

Hi @csvir ,

Can you please post your question in english ? 

Thanks 

Olivier 

Olivier GALLIEN
In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.