H743ZI 网络问题 救助

2019-07-20 04:07发布


程序运行一会会PING不通
1.     PING 工具发一个包 编号 ATK#1                               A.png 2.     抓包工具抓取, B.png 3.     这里看到确实发出去了 C.png 4.     程序中设置断点, D.png 5.     调试窗口观察 E.png 解释:HAL_ETH_GetRxDataBuffer(&EthHandle,&RxBuff) 这句话获取最新收到的网络数据包。返回的是uint32_t FirstAppDesc;                /*<! First descriptor oflast received packet. */最后收到的数据包的第一个描述符 看 RxBuff.buffer 显示地址是0x30040200 RX_Buff 是 这里定义的 缓冲网络数据包#pragma location=0x30040200uint8_tRx_Buff[ETH_RX_DESC_CNT][ETH_RX_BUFFER_SIZE]; /* Ethernet Receive Buffers */他们的地址从 0x30040200 一共四个 放在 SDRAM3区域 ,从官方例程拿来的没动。 在设置断点之前我确保Rx_Buff 里面没有 ATK#1 为了对比有没有收到数据。 网络收到的数据包都在Rx_Buff这里面存放着。最新的数据会从  HAL_ETH_GetRxDataBuffer 函数 给 RxBuff 在我设置断点的时候显示的最新数据是 0x30040200下面查看这四个地址的数据。 F.png G.png H.png I.png 查看内存显示 。ATK#1 收到了。但是奇怪的是HAL_ETH_GetRxDataBuffer  得到的0x30040200这里面放的是 ATK#4 而我刚发的数据 ATK#1放在 了0x30040E00, 这才是真正最新的数据 。前后差了两个。 我用 HAL_ETH_GetRxDataBuffer得到的不是最新的,但是数据CPU是已经收到了。请问这是为什么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。