[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC] GRUB port for ARMv7-A U-Boot
From: |
Leif Lindholm |
Subject: |
[RFC] GRUB port for ARMv7-A U-Boot |
Date: |
Mon, 22 Oct 2012 19:51:09 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120827 Thunderbird/15.0 |
Attached is a stripped-down version of what I have today uploaded to
launchpad. The full set can be accessed through
bzr branch lp:~leif-lindholm/linaro-grub/arm-uboot
Missing from this patch is libfdt and the crc32-functions I mentioned
in my previous email, although they have not been stripped from the build
configuration files.
This is a port of GRUB to the ARM architecture, running on top of the
U-Boot firmware. The "U-Boot API", created by Rafal Jaworowsky
<address@hidden>, for the FreeBSD Loader provides the hardware interface
layer. Console supported on serial port using the termios subsystem.
Block device support verified with SDcard and SATA.
Usage information:
- grub-mkimage generates a kernel with a U-Boot header masquerading it as a
Linux kernel.
- U-Boot Environment variable grub_bootdev can be used to specify the root
device.
- Block devices must be initialized by U-Boot before calling GRUB if they are
to be accessible. (By calling "mmc rescan", "ide reset" or similar.)
- New "devicetree" command for loading a .dtb from a filesystem.
This has been verified on the following platforms:
- ARM Versatile Express (4xCortex-A9)
- Marvell Armada XP DB-78460-BP.
- Trim Slice
Imported code:
- The "U-Boot API".
- aeabi_* libgcc helper functions from linux/arch/arm/lib.
Limitations:
- Dynamic linker implemented only for ARMv7-A Thumb instruction set.
- Currently runs uncached, with MMU off.
- No support for ATAG parsing or rewriting, only supports device tree
as a means of passing information to the Linux kernel. (If an ATAG
list is passed from U-Boot, it can be passed on unmodified, but the
"linux" command will not pass on command line parameters.)
- Currently a statically linked kernel, requires RAM at 0x08000000.
TODO:
- linux.init.arm, linux-initramfs.arm, bootcheck-linux-arm, grub-mkrescue
Potential future developments:
- Implement networking support.
- Make grub kernel a fully relocateable ELF.
- Implement chainloader.
- Enable caches/MMU.
Comments welcome.
armv7-uboot-stripped.patch
Description: Text Data
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [RFC] GRUB port for ARMv7-A U-Boot,
Leif Lindholm <=