程序运行一会会PING不通
1. PING 工具发一个包 编号 ATK#1
2. 抓包工具抓取,
3. 这里看到确实发出去了
4. 程序中设置断点,
5. 调试窗口观察
解释: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下面查看这四个地址的数据。
查看内存显示 。ATK#1 收到了。但是奇怪的是HAL_ETH_GetRxDataBuffer 得到的0x30040200这里面放的是 ATK#4 而我刚发的数据 ATK#1放在 了0x30040E00, 这才是真正最新的数据 。前后差了两个。 我用 HAL_ETH_GetRxDataBuffer得到的不是最新的,但是数据CPU是已经收到了。请问这是为什么?
或者换台电脑试下
务必将防火墙和杀毒软件关掉
一周热门 更多>