ST意法半导体
直播中

梅利号

9年用户 1500经验值
擅长:可编程逻辑
私信 关注
[问答]

stm32h745iit6如何更改buf的内容以使其正常工作?

我正在尝试在 STM32h745iit6 上设置以太网。
我从 H7 示例中裸露以太网项目并使用来自 ethernetif.cpp 的 (low_level_output) func。
我发送缓冲区,位于 0x24000008,dma 可以访问的地方。以太网总是只发送缓冲区的初始字符串。当我尝试从代码更改 buf 的内容时,它的更改(如我在调试中看到的那样)位于 0x24000008 位置。但在 wireshark 中,我仍然收到值的初始化内容(字符串,不再存在)。
当我在同一位置从调试更改缓冲区的内容时,一切正常,并收到包含所有更改的正确字符串,这是在调试中进行的。
还要注意描述符字段 DESC0,那里是 0x24000008,我的 buf 所在的位置。
对这个奇怪的时刻有什么解释吗?我应该如何更改 buf 的内容以使其正常工作?也许数据现金有些在 DMA 或 MTL 中?








回帖(1)

张文琳

2022-12-8 14:36:43
将缓冲区与缓存边界对齐。

在写入数据之后但在 DMA 上发送数据之前,在适当的缓存对齐缓冲区上调用 SCB_CleanDCache_by_Addr。

当您接收数据时,您需要在数据存入内存之后但在读取之前调用 SCB_InvalidateDCache_by_Addr。
举报

更多回帖

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