Reputation: 103
I am playing around with a Raspberry 3 and try to boot a Linux Kernel by using U-Boot.
I've built a Linux Kernel (from github.com/raspberrypi), and Busbox-Userland. This Kernel boots and works just fine, when booting 'directly' (that means without U-Boot).
Now I've built U-Boot (Mainline, denx.de/u-boot.git), which also seems to work.
It boots and is accessible (both by HDMI/USB and [after adding pi3-disable-bt-Overlay]).
But now I am stuck; the Kernel won't start from within U-Boot.
I tried the following commands:
setenv fdtfile bcm2710-rpi-3-b.dtb
mmc dev 0
fatload mmc 0:1 ${kernel_addr_r} kernel7.img
fatload mmc 0:1 ${fdt_addr_r} ${fdtfile}
setenv bootargs earlyprintk console=tty0 console=ttyAMA0 root=/dev/mmcblk0p2 rootfstype=ext2 rootwait noinitrd
bootz ${kernel_addr_r} - ${fdt_addr_r}
U-Boot's output is then:
[...]
reading kernel7.img
[...]
Kernel image @ 0x1000000 [ 0x000000 - 0x40e630 ]
## Flattened Device Tree blob at 0x000100
Booting using fdt blob at 0x000100
Using Device Tree in place at 0000100, end 00006b1a
Starting kernel...
And then the Monitor turns black and shows "no signal", also the serial console doesn't show any more information.
I've played around with the bootargs that are provided to the Kernel, but I didn't find a working scenario.
Does anybody have an idea?
As I said, both the U-Boot and the Kernel seem to work, but U-Boot can't boot the Kernel...
Thanks, VanDahlen
Upvotes: 3
Views: 2466
Reputation: 840
I know this is a very old question but for me it helped to not manually load the device tree file and use ${fdt_addr} instead of ${fdt_addr_r} in bootz. So...
mmc dev 0
fatload mmc 0:1 ${kernel_addr_r} kernel7.img
setenv bootargs earlyprintk console=tty0 console=ttyAMA0 root=/dev/mmcblk0p2 rootfstype=ext2 rootwait noinitrd
bootz ${kernel_addr_r} - ${fdt_addr}
...should work.
Upvotes: 1
Reputation: 1292
Have you tried loading the kernel at a different address? i.e. at $loadaddr instead of $kernel_addr_r. Make sure kernel is getting loaded at the right address.
Upvotes: 0