Hi people,
I am trying to make the boot of beaglebone black over ethernet. My approach is provide to the RBL (ROM Boot Loader) the u-boot-spl.bin and u-boot.img, which will execute the U-Boot. So, U-Boot running I will load by tftp the kernel and rootfs to flash the eMMC. My product will not have the SD card. This is the procedure that I will use on my production line.
On my tests the first step works: over the BOOTP protocol my dhcp server offered the IP 192.168.1.90 and told the file to be loaded by TFTP (in this case u-boot-spl.bin). You can see this on the first two lines of picture below.
The RBL then initiates the TFTP by a Read Request of u-boot-spl.bin. My tftp server (atftpd running on my Linux machine) sends the first block. But the RBL replies with a TFTP error acknowledgement: ETHERNET FRAME CHECK SEQUENCE INCORRECT. This happens with all 129 blocks sent.
This error is reported by the RBL. It is a Incorrect frame check sequence as showed on the highlight red lines of the picture above.
At the serial console I see this message:
U-Boot SPL 2016.03-dirty (May 13 2016 - 16:10:36)
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###
I have the same results when I setup the beaglebone for booting over USB0. The procedure is the same because the ROM code implements the RNDIS class driver. From a user's perspective, USB boot is indistinguishable from ethernet boot.
I had the same result with the BBB rev. C (Sitara AM3358AZCZ100), the BBB rev. A6A (Sitara AM3359AZCZ100) and the Beaglebone White rev. A3 (Sitara AM3359ZCZ).
To check if my ethernet structure is OK I loaded the U-Boot by the UART0 and the dhcp command was executed:
=> dhcp
link up on port 0, speed 100, full duplex
BOOTP broadcast 1
DHCP client bound to address 192.168.1.90 (10 ms)
Using cpsw device
TFTP from server 192.168.1.200; our IP address is 192.168.1.90
Filename 'uImage-am335x'.
Load address: 0x82000000
Loading: ############################
356.4 KiB/s
done Bytes transferred = 410588 (643dc hex)
=>
As you can see the TFTP works very well when executed by the U-Boot previously loaded.
But when the TFTP is executed by ROM bootloader I have the problem of ethernet frame check sequence incorrect.
About bootloader:
* I follow the Robert Nelson page to get the source code and apply the patches ;
* To compile the U-Boot for booting from the network I applied the targetam335x_evm_usbspl_defconfig