ST意法半导体
直播中

杨杰

7年用户 1086经验值
私信 关注
[问答]

使用STM32H7发送和接收UDP数据包时会出现破损现象怎么解决?

大家好,

我正在使用 STM32H7 和新的完全重新设计的以太网驱动程序以及 LWIP 和 FreeRTOS 来发送和接收 UDP 数据包。
问题是前两个数据包在发送时被损坏。我不发送负载中带有零的 UDP 数据包,但第一个发送的数据包充满了零。
我试过延迟以防以太网未正确初始化,但这并没有解决任何问题。
我怀疑内存已损坏,但无法证明任何事情。

有人知道这里的潜在问题是什么吗?


回帖(1)

李刚

2022-12-27 14:14:23
我在发送之前为通过 UDP 发送的数据包缓冲区添加了干净的数据缓存
这似乎已经解决了这个问题(至少现在是这样)。
现在,发送的初始数据包和所有其他数据包都很好。

我认为问题在于数据已更新并放置在缓存中,而相同的缓冲区未在 DMA 访问的 SRAM 中更新,DMA 采用旧值并发送它们,而不是更新的新值被写入到 SRAM 中。

随后将进行彻底的测试。


  • SCB_CleanDCache_by_Addr((uint32_t*)(((uint32_t)packetBuffer) & ~(uint32_t)0x1F), packetSize+32);
  • sendPacket(packetBuffer, packetSize);

举报

更多回帖

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