Dear 大神:
今天在测试官方提供的DEMO \NUC472\NUC472_NUC442_BSP_CMSIS_V3.02.001\SampleCode\StdDriver\EMAC_TxRx 工程,打印信息如图片3
然后在分析代码时,在开启 TCP 时 断电在该函数:
int process_rx_packet(uint8_t *pu8Packet, uint32_t u32Len)
{
ARP_PACKET *arp = (ARP_PACKET *)pu8Packet;
IP_PACKET *ip = (IP_PACKET *)pu8Packet;
UDP_PACKET *udp = (UDP_PACKET *)pu8Packet;
if (pu8Packet[0] == 0xFF) { /* this is a broadcast packet */ //ÕâÊǸö¹ã²¥°ü
/*
* We manage the ARP reply process here. //¹ÜÀíARPÏìÓ¦´¦Àí
* In the following code, if we have received a ARP request,
* we send ARP reply immediately.
*/
if ((!COMPARE_IP(arp->au8TargetIP, g_au8IpAddr)) &&
(arp->u16Type == SWAP16(PROTOCOL_ARP)) &&
(arp->u16Operation == SWAP16(ARP_REQUEST))) {
//·¢ËͶËIP Ä¿±ê¶ËÓ²¼þµØÖ·
arp_reply(arp->su8SenderIP, arp->au8SenderHA);
}
return 0;
}
然后在查看Watch时,发现 arp 的目标mac 和 源 Mac地址的获取跟本身带进去的参数 auPkt (pu8Packet) 数据既然不一样????这是为什么??
明明auPkt获取的Mac地址是对的,到了arp就不一样了??如图片
|