
Hello Wojciech,
On Mon, 16 Nov 2015 10:42:50 +0100, Wojciech Zabolotny wzab01@gmail.com wrote:
Hi,
I need to use U-Boot (or barebox) as a bootloader in a Raspberry Pi based system to extend booting flexibility. The problem however is that certain kernel boot arguments are prepared by the previous stage bootloader (start.elf) basing on the properties of the individual board. For example in one of the boards I use, the kernel command line when a standard kernel is booted, looks as follows (MAC address and serial number are partially masked for privacy):
dma.dmachans=0x7f35 bcm2708_fb.fbwidth=720 bcm2708_fb.fbheight=480 bcm2708.boardrev=0xd bcm2708.serial=0x6f15XXXX smsc95xx.macaddr=B8:27:EB:XX:XX:XX bcm2708_fb.fbswap=1 sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000 console=ttyAMA0 root=/dev/mmcblk0p2 rootwait
Only the "console=ttyAMA0 root=/dev/mmcblk0p2 rootwait" is provided by the user (in the cmdline.txt file). The rest is generated by the start.elf.
Of course when I boot the u-boot.bin instead of zImage, the same parameters are passed to it, but the U-Boot is not able to read them and to pass them to the finally booted kernel. As U-Boot shares a lot of code with the Linux kernel it should be possible to add necessary functions. It could be useful in all applications where U-Boot is used as an additional stage in the boot chain e.g., to add new booting functionalities (booting from the network, booting from the flash disk etc.).
I have found a nice description, how the paremeters are passed in ARM architecture: http://www.simtec.co.uk/products/SWLINUX/files/booting%5Farticle.html but of course the solution should be probably portable (or implemented for each platform independently with unified API).
Not sure what kind of answer you're asking for here. Do you want to know if what you're suggesting is feasible? Are you looking for someone to implement it? Are you going to implement it yourself but asking for feedback?
--
(aside: if the above should be a signature delimiter, then it lacks a space after the dashes)
Amicalement,