I have built a u-boot.bin file built using the instructions for the beaglebone black on the linuxonarm eewiki page. I’m trying to load and run it using tftp from u-boot on an existing beaglebone black with the commands:
tftp 0x80800000 u-boot.bin
go 0x80800000
The tftp is successful, but running the new u-boot hangs after printing:
## Starting application at 0x80800000
Building u-boot without the 0002-U-Boot-BeagleBone-Cape-Manager.patch works, so I don’t think the issue is in the build environment. Any ideas on why this doesn’t work or how to fix it?
Longer story:
I’m working on a product that has a beaglebone embedded within it, but the micro-SD card is inaccessible (accessing it requires physically dismantling the entire product). We are hoping to update the operating system (including u-boot, the kernel, and the root file system) on the emmc using tftp over the ethernet port. At a high level, this would require:
-
writing an application that can run in the existing operating system to overwrite the current u-boot image in emmc so that the next time the device boots it will retrieve the new operating system components using tftp
-
when the device reboots, u-boot retrieves the new kernel, device tree blob (?) and root filesystem using tftp (my understanding is that it would have to load these images into ram, then copy the contents of ram into the emmc, is that correct?)
-
boot the new operating system, preferably turning off the u-boot feature to download a new os while maintaining the ability to turn that back on from userspace in the future
I guess the first question is does that seem reasonable?
I have built u-boot using the instructions on eewiki. Another blog (beyondlogic, BeagleBoneBlack_Upgrading_uBoot) describes a method for loading u-boot into ram using tftp boot and executing it:
tftp 0x80800000 u-boot.bin
go 0x80800000
When I try this with the u-boot image created from eewiki, the tftp is successful, but when I try to execute it the process hangs at this line:
## Starting application at 0x80800000
If I try this with the u-boot image created from the instructions on the beyondlogic page, it works. The process is basically identical, but their instructions only apply this patch:
0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
while eewiki’s instructions also apply this patch:
0002-U-Boot-BeagleBone-Cape-Manager.patch
The Cape Manager support is the primary reason for transitioning from the current operating system (ArchLinux) to Debian (Arch does not appear to support the latest cape management and device tree overlay functionality.)
I have looked for ways to turn on additional debugging statements in u-boot, but so far haven’t found anything useful.
So, then:
-
Any ideas on why loading and execute the eewiki u-boot image over tftp fails, and how to fix it?
-
I’m also trying to figure out how to write images from ram into emmc, but haven’t found any examples yet.