He hecho el controlador para enc28j60 para LPC1788 y estoy tratando de enviar un mensaje UDP a LPC a través de un dispositivo habilitado para wifi (iOS, windows a través de wifi). Pero la transmisión falla. El dispositivo wifi envía la solicitud ARP. LPC envía la respuesta, pero no llega. He comprobado el caché ARP en Windows Machine y se quedó vacío. Cuando hago lo mismo con la máquina conectada por cable, llega correctamente, se llena la caché ARP. Eso concluye que la respuesta ARP se envía y se construye correctamente.
También intenté hacer ping y lo mismo, todos los dispositivos que vienen a través del enrutador no obtuvieron respuesta ARP, pero los dispositivos que están conectados por cable reciben la respuesta ARP.
Pero, la misma placa enc28 está funcionando bien con Arduino. La implementación de Arduino del controlador y Ethernet no fue realizada por mí.
Eso significa que de alguna manera está relacionado con el controlador. Me he olvidado de cambiar alguna opción del chip enc28 o ...
He visto el controlador Arduino pero no pude encontrar ningún error obvio en mi implementación.
¿Alguna idea de lo que podría estar mal?
ACTUALIZACIÓN:
Ahora tengo un enrutador Wifi con tcpdump instalado. Lo ejecuté y olfateé los paquetes de Wifi a Arduino (todo está bien allí. La solicitud ARP, la respuesta ARP y el eco / respuesta Ping se pueden ver en el rastreo). Cuando inicio Wifi a LPC solo veo solicitudes de ARP. Aunque dice que el filtro recibe pocos paquetes, pero no puedo ver esos paquetes en el archivo de volcado. ¿Hay alguna opción en tcpdump para ver datos en bruto?
Lo que puedo ver cuando uso tcpdump con la opción "-i any", es mi respuesta arp perdida. Pero me parece bien.
ARDUINO
ARP Request
0004 0001 0006 d89e 3f87 3ad5 0000 0806
0001 0800 0604 0001 d89e 3f87 3ad5 c0a8
0564 7069 692d 3031 c0a8 0508
ARP Response
0003 0001 0006 7069 692d 3031 0000 0806
0001 0800 0604 0002 7069 692d 3031 c0a8
0508 d89e 3f87 3ad5 c0a8 0564 0000 0000
0000 0000 0000 0000 0000 0000 0000
LPC
ARP Request
0001 0001 0006 d89e 3f87 3ad5 0000 0806
0001 0800 0604 0001 d89e 3f87 3ad5 c0a8
0564 0000 0000 0000 c0a8 0507
ARP Response
0003 0001 0006 891d dc9f da6e 0000 0806
0001 0800 0604 0002 891d dc9f da6e c0a8
0507 d89e 3f87 3ad5 c0a8 0564 0000 0000
0000 0000 0000 0000 0000 0000 0000
No veo ninguna diferencia en la respuesta de LPC (que no funciona) y de Arduino (que funciona).
¿Podría ser algún tipo de problema de tiempo?
LPC
11:39:05.194814 arp who-has 192.168.5.7 tell 192.168.5.113
11:39:05.194889 arp who-has 192.168.5.7 tell 192.168.5.113
11:39:05.195001 arp who-has 192.168.5.7 tell 192.168.5.113
11:39:05.194814 arp who-has 192.168.5.7 tell 192.168.5.113
11:39:05.195537 arp reply 192.168.5.7 is-at 89:1d:dc:9f:da:6e (oui Unknown)
11:39:06.194815 arp who-has 192.168.5.7 tell 192.168.5.113
...
Arduino
11:42:27.712993 arp who-has 192.168.5.8 tell 192.168.5.113
11:42:27.713068 arp who-has 192.168.5.8 tell 192.168.5.113
11:42:27.713180 arp who-has 192.168.5.8 tell 192.168.5.113
11:42:27.712993 arp who-has 192.168.5.8 tell 192.168.5.113
11:42:27.714049 arp reply 192.168.5.8 is-at 70:69:69:2d:30:31 (oui Unknown)
11:42:27.714141 arp reply 192.168.5.8 is-at 70:69:69:2d:30:31 (oui Unknown)
11:42:27.767303 IP 192.168.5.113 > 192.168.5.8: ICMP echo request, id 56841, seq 0, length 64
...