After spending a *lot* of time figuring out why I could not transfer a standalone binary to u-boot running on my BeagleBone Black, I finally discovered it was a firewall issue. This post is to save anyone in the future from suffering the same nightmare as I just went through on openSUSE 13.1.
I needed to put a .bin on my BBB which has U-Boot. The available options are:
Transferring the S-Record
SREC is the hex encoding of binary data generated on compilation. To load this, U-Boot provides the `loads` command at its console. You just need to pass the ASCII-Hex data from the .srec to the serial console (see this). The problem is, the speed of sending this data must be okay with the U-Boot console. Gave me a `data abort` message and my board reset.
Better option: tftp. Have static IP setup for the host and the board (set env vars ipaddr and serverip on u-boot) and call tftp. It gave me this:
U-Boot# tftp link up on port 0, speed 100, full duplex Using cpsw device TFTP from server 192.168.10.1; our IP address is 192.168.10.2 Filename 'hello_world.bin'. Load address: 0x80200000 Loading: T T T T T T T T T T T T T T T Abort
(**T = Timeout.**)
TFTP uses UDP port 69 for transfers. I needed to explicitly check “Open port in firewall” from the TFTP server config from YaST and add port 69 to Firewall->Allowed Services->UDP Ports.