Date: Wed, 23 Dec 2015 22:18:44 -0800 From: Tim Kientzle <tim@kientzle.com> To: Sylvain Garrigues <sylgar@gmail.com> Cc: freebsd-arm <freebsd-arm@freebsd.org> Subject: Re: Booting the ELF kernel without ubldr on Raspberry Pi Message-ID: <32849B9F-C7B8-4A86-B8F1-043F62D2E64C@kientzle.com> In-Reply-To: <C6819C94-DF61-447F-AC61-FD3E061A6F76@gmail.com> References: <C6819C94-DF61-447F-AC61-FD3E061A6F76@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Actually, it would be more interesting to go a step further and boot the = FreeBSD kernel directly from the firmware, bypassing both U-Boot and = ubldr. Warner did some work long ago to allow the FreeBSD kernel to boot from a = Linux boot loader, which should make this possible. You might try = looking at that code and seeing if you can get it to work. Cheers, Tim > On Dec 21, 2015, at 7:48 PM, Sylvain Garrigues <sylgar@gmail.com> = wrote: >=20 > Hello, >=20 > I=E2=80=99d like to boot FreeBSD directly with u-boot, without ubldr, = using an image provided by the u-boot mkimage tool. The reason is = simple: mkimage can deal with compressed kernels and will therefore = speed my boot time. And I want to try it anyway, as it seems possible = reading = http://bsdcan.org/2008/schedule/attachments/49_2008_uboot_freebsd.pdf = <http://bsdcan.org/2008/schedule/attachments/49_2008_uboot_freebsd.pdf> = and various other=20 >=20 > Before going there and using an mkimage, I=E2=80=99d like to boot the = kernel image just with the same bootelf version provided by the = sysutils/u-boot-rpi2 port. It doesn=E2=80=99t display anything and = crashes (I think I can see =C2=AB illegal instruction =C2=BB just before = the board reboots). I don=E2=80=99t understand why, and this is my first = question. >=20 > Then I looked at the mkimage utility, although we can specify and = freebsd kernel type through the -O flag, the bootm command only = understands linux and NetBSD. I guess I should use linux there? >=20 > Thanks for your help, > Sylvain >=20 >=20 > PS: FYI, below is: >=20 > 1/ info about my kernel (I can see the entry point is at 0xc0100100), = copied into the fat partition >=20 > # readelf -h = /root/crochet/work/obj/arm.armv6/root/crochet/src/sys/RPI2/kernel = =20 > ELF Header: > Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00=20 > Class: ELF32 > Data: 2's complement, little endian > Version: 1 (current) > OS/ABI: UNIX - System V > ABI Version: 0 > Type: EXEC (Executable file) > Machine: ARM > Version: 0x1 > Entry point address: 0xc0100100 > Start of program headers: 52 (bytes into file) > Start of section headers: 6235080 (bytes into file) > Flags: 0x5000202, has entry point, = Version5 EABI, <unknown> > Size of this header: 52 (bytes) > Size of program headers: 32 (bytes) > Number of program headers: 6 > Size of section headers: 40 (bytes) > Number of section headers: 38 > Section header string table index: 35 > [root@clad /usr/ports/sysutils/u-boot-rpi2]# =20 >=20 > 2/ the interesting part of my include/configs/rpi-common.h from = u-boot: >=20 > #define CONFIG_EXTRA_ENV_SETTINGS \ > ENV_DEVICE_SETTINGS \ > "loadaddr=3D0x02000000\0" \ > "Fatboot=3D" \ > "env exists loaderdev || env set loaderdev ${fatdev}; " \ > "echo Booting from: ${fatdev} ${bootfile}; " \ > "fatload ${fatdev} ${loadaddr} ${bootfile} && bootelf = ${loadaddr}; " \ > "\0" \ > "preboot=3D" \ > "fdt addr 0x100; " \ > "env set bootfile kernel; " \ =20 > "env set fatdev 'mmc 0'; " \ > "\0" > #undef CONFIG_BOOTCOMMAND > #define CONFIG_BOOTCOMMAND "run Fatboot" > #undef CONFIG_PREBOOT > #define CONFIG_PREBOOT "run preboot" > _______________________________________________ > freebsd-arm@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-arm > To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?32849B9F-C7B8-4A86-B8F1-043F62D2E64C>