
Felipe Gil CastiƱeira wrote:
Hi everyone!
I am porting U-Boot to "Men mikro elektronik" PP01 module (MPC5200). The FEC is integrated on the MPC5200 and the PHY is a LXT971ALE transceiver.
U-Boot boots and recognizes the Ethernet device (I can read the PHY transceiver registers, change the LED status, etc.), but when I try to ping a target the system freezes (and the Watchdog resets the board). The behavior is just the same with tftp or bootp.
I am sure it is not a hardware problem, as I can transfer files (for example u-boot.bin) from a computer to the same module using the original monitor (MENMON).
From the debugging information *it seems the code fails in the function
"mpc5xxx_fec_recv"*. Furthermore, analyzing the network with Ethereal I can observe an ARP request generated by the PING and the corresponding answer (at this moment the watchdog resets the board). If I ping a non existent address the timer expires and I receive a "ping failed; host 192.168.1.25 is not alive" (Ethereal detects the ARP request, but of course, there is not an ARP answer).
Any idea? Thanks in advance.
Best regards, Felipe.
I don't know anything about your hardware, but from your description of the results I would guess that you have your ethernet receive buffer pointer(s) pointing into non-existant memory (very likely) or else pointing in the middle of important code (e.g. u-boot or your variables).
Scenario A: When you receive a packet, you get a bus fault which crashes your machine.
Scenario B: When you receive a packet, it scribbles on your code and crashes your machine.
I suggest you check your memory configuration and Rx buffer initialization.
gvb
P.S. If you send a broadcast (ping your target will cause an arp broadcast) or a packet directed to your target's MAC address (use the command line arp command to add your MAC address on your host machine and then send a ping), I bet your target will crash.