grub-devel
[Top][All Lists]
Advanced

[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.

Attachment: armv7-uboot-stripped.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]