Date: Thu, 24 Mar 2016 16:29:26 +0100 From: Sylvain Garrigues <sylgar@gmail.com> To: freebsd-arm <freebsd-arm@freebsd.org> Subject: Booting kernel.bin directly on Raspberry Pi / external DTB support Message-ID: <1CCA59DC-5539-4CFB-81BA-0112E2120B3B@gmail.com>
index | next in thread | raw e-mail
Hello, I have written a small (ugly) patch to be able to boot a kernel directly without the ubldr loader while still using an external DTB (Linux-style booting may pass the DTB location pointer in the r2 register). The patch is here: https://reviews.freebsd.org/differential/diff/14577/ I tested my patch successfully with the QEMU emulator with the -dtb option available in recent versions, using a VERSATILEPB kernel without FDT_STATIC. # qemu-system-arm -M versatilepb -m 128M -kernel versatile.flash -cpu arm1176 -dtb versatilepb.dtb FYI, once the kernel is built, here is the script to build the versatile.flash (adapted from gonzo, no longer need to clear the r0-r3 registers): https://reviews.freebsd.org/P92 <https://reviews.freebsd.org/P92> I also tested successfully my patch on my Raspberry Pi 2 using U-BOOT and the RPI2 kernel with my patch applied (and the LINUX_BOOT_ABI option): u-boot> fatload mmc 0 0x200000 kernel.bin u-boot> go 0x200000 That works. So now I thought I could even bypass u-boot and launch kernel.bin directly from the Pi firmware… But it doesn’t work, I don’t understand why, and that is why I am writing here. Here is the config.txt which I thought would work: kernel=kernel.bin (instead of u-boot.bin) kernel_address=0x200000 (line added because a FreeBSD kernel needs to be loaded on a 1MB or 2MB boundary) device_tree=rpi2.dtb device_tree_address=0x100 disable_commandline_tags=1 What am I missing? Is it even possible to boot kernel.bin directly on the Pi (with my patch)? I found this static minimalist loader from Andrew here: https://github.com/freebsd/freebsd/commit/074d37d46c3f9b282cd2d849d997b1b39acd710c <https://github.com/freebsd/freebsd/commit/074d37d46c3f9b282cd2d849d997b1b39acd710c> - does it mean such a loader is necessary before the kernel? Thanks, Sylvain PS: I know the « official and supported » way of booting FreeBSD on the Pi is the u-boot + ubldr combination. I just would like to finish this experiment and understand why kernel.bin cannot be booted directly.home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1CCA59DC-5539-4CFB-81BA-0112E2120B3B>
