OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3909|回复: 4

lwip 中ARP 请求包 中目的IP地址为发送方地址,

[复制链接]

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-4-16
在线时间
5 小时
发表于 2017-1-16 11:13:06 | 显示全部楼层 |阅读模式
在做LWIP移植过程中,板子与PC机不能建立通信,仿真发现:接收来自pc机的ARP request packet 中的目的IP地址是PC机的IP地址,串口输出结果:etharp_arp_input: incoming ARP request
etharp_arp_input: ARP request was not for us.
这是什么原因啊?


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-4-16
在线时间
5 小时
 楼主| 发表于 2017-1-18 09:40:04 | 显示全部楼层
本帖最后由 youk110 于 2017-1-18 09:47 编辑

虽说现在能够TCP通信和ping相通了,但还是想弄明白ARP协议工作流程,在仿真调试的时候还是出现“如题的现象”?先把仿真结果和串口输出信息附上,有哪位大侠解释下啊?

jlink仿真接收的数据包

jlink仿真接收的数据包

接收的arp数据包相关信息

串口输出ARP相关调试信息

串口输出ARP相关调试信息

串口输出ARP相关调试信息
电脑信息:IP 192.168.0.54  MAC 00-30-48-7D-F0-2E
板子信息: IP 192.168.0.10   MAC  00-80-48-12-34-56



回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-4-16
在线时间
5 小时
 楼主| 发表于 2017-1-16 14:19:05 | 显示全部楼层
这是不是类似于lwip中etharp_gratuitous()函数的功能啊,是不是PC网卡发送的无回报(gratuitous)ARP请求啊??
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-4-16
在线时间
5 小时
 楼主| 发表于 2017-1-16 15:49:35 | 显示全部楼层
开启lwip的调试信息后输出如下:
[mw_shl_code=c,true]PHY works in 100Mbps full-duplex mode!
netif: added interface en IP addr 192.168.0.10 netmask 255.255.255.0 gw 192.168.0.1
netif: setting default interface en
etharp_request: sending ARP request.
pbuf_alloc(length=42)
pbuf_alloc(length=42) == 20000350
etharp_raw: sending raw ARP packet.
TSRI transfer successfully!
pbuf_free(20000350)
pbuf_free: deallocating 20000350
there are some packets coming!
pbuf_alloc(length=64)
pbuf_alloc: allocated pbuf 200062a4
pbuf_alloc(length=64) == 200062a4
ethernet_input: dest:ff:ff:ff:ff:ff:ff, src:00:30:48:7d:f0:2e, type:806
etharp_update_arp_entry: 192.168.0.54 - 00:30:48:7d:f0:2e
etharp_find_entry: found empty entry 0
etharp_find_entry: no empty entry found and not allowed to recycle
etharp_arp_input: incoming ARP request
etharp_arp_input: ARP request was not for us.
pbuf_free(200062a4)
pbuf_free: deallocating 200062a4
[/mw_shl_code]
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-4-16
在线时间
5 小时
 楼主| 发表于 2017-1-17 08:26:58 | 显示全部楼层
终于ping通了,自己移植ST官方lwipopts.h的时候直接copy过来的,把以下代码删除就可以ping通了
[mw_shl_code=c,true]   ---------- Checksum options ----------
   --------------------------------------
*/

/*
The STM32F4x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums by hardware:
- To use this feature let the following define uncommented.
- To disable it and process by CPU comment the  the checksum.
*/
#define CHECKSUM_BY_HARDWARE


#ifdef CHECKSUM_BY_HARDWARE
  /* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/
  #define CHECKSUM_GEN_IP                 0
  /* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/
  #define CHECKSUM_GEN_UDP                0
  /* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/
  #define CHECKSUM_GEN_TCP                0
  /* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/
  #define CHECKSUM_CHECK_IP               0
  /* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/
  #define CHECKSUM_CHECK_UDP              0
  /* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/
  #define CHECKSUM_CHECK_TCP              0
  /* CHECKSUM_CHECK_ICMP==0: Check checksums by hardware for incoming ICMP packets.*/
  #define CHECKSUM_GEN_ICMP               0
#else
  /* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
  #define CHECKSUM_GEN_IP                 1
  /* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
  #define CHECKSUM_GEN_UDP                1
  /* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
  #define CHECKSUM_GEN_TCP                1
  /* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
  #define CHECKSUM_CHECK_IP               1
  /* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
  #define CHECKSUM_CHECK_UDP              1
  /* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
  #define CHECKSUM_CHECK_TCP              1
  /* CHECKSUM_CHECK_ICMP==1: Check checksums by hardware for incoming ICMP packets.*/
  #define CHECKSUM_GEN_ICMP               1
#endif
[/mw_shl_code]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-9 01:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表