u-boot-brain/arch
Stephen Warren d22a765755 ARM: add Raspberry Pi 3 64-bit config
On all Pis so far, the VC FW provides a short stub to set up the ARM CPU
before entering the kernel (a/k/a U-Boot for us). This feature is not
currently supported by the VC FW when booting in 64-bit mode. However,
this feature will likely appear in the near future, and this U-Boot port
assumes that such a feature is in place. Without that feature, or a
temporary workaround described below, U-Boot will not boot.

Once the VC FW does provide the ARM stub, u-boot.bin built for rpi_3 can
be used drectly as kernel7.img, in the same way as any other RPi port. The
following config.txt is required:

    # Fix mini UART input frequency, and setup/enable up the UART.
    # Without this option, U-Boot will not boot, even if you don't care
    # about the serial console. This option will always be required for
    # all RPi3 use-cases, unless the PL011 UART is used, which is not
    # yet supported by rpi_3* builds of U-Boot.
    enable_uart=1
    # Boot in AArch64 (64-bit) mode.
    # It is possible that a future VC FW will remove the need for this
    # option, instead auto-setting 32-/64-bit mode based on the "kernel"
    # filename present on the SD card.
    arm_control=0x200

Prior to the VC FW providing the ARM boot stub, you can use the following
steps to build an equivalent stub into the U-Boot binary:

git clone https://github.com/swarren/rpi-3-aarch64-demo.git \
    ../rpi-3-aarch64-demo
(cd ../rpi-3-aarch64-demo && ./build.sh)
Build U-Boot for rpi_3 in the usual way
cat ../rpi-3-aarch64-demo/armstub64.bin u-boot.bin > u-boot.bin.stubbed
Use u-boot.bin.stubbed as kernel7.img on the Pi SD card.

In this case, the following additional entries are required in config.txt:

    # Tell the FW to load the kernel image at address 0, the reset vector.
    kernel_old=1

Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
2016-04-11 12:44:38 -04:00
..
arc arc: cache - utilize IO coherency (AKA IOC) engine 2016-02-20 11:20:05 +03:00
arm ARM: add Raspberry Pi 3 64-bit config 2016-04-11 12:44:38 -04:00
avr32 avr32: Use the generic bitops headers 2015-11-05 10:52:31 -05:00
blackfin Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
m68k m68k: M54418TWR: drop board/freescale/m54418twr/config.mk 2016-01-20 10:19:34 -05:00
microblaze microblaze: Remove !OF_CONTROL code for timer and interrupt 2016-04-04 20:28:38 +02:00
mips board: pic32mzda: enable USB-host, USB-storage support. 2016-04-10 17:18:42 +02:00
nds32 Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
nios2 dm: Use uclass_first_device_err() where it is useful 2016-03-14 15:34:50 -06:00
openrisc openrisc: Fix build errors 2016-01-25 10:40:01 -05:00
powerpc powerpc: mpc85xx: Enable pre-relocation malloc for MPC85xx 2016-04-08 15:42:10 -07:00
sandbox spmi: Add sandbox test driver 2016-04-01 17:18:12 -04:00
sh Add more SPDX-License-Identifier tags 2016-01-19 08:31:21 -05:00
sparc Fix spelling of "transferred". 2016-03-22 12:16:16 -04:00
x86 arm: x86: Drop command-line code when CONFIG_CMDLINE is disabled 2016-03-22 12:16:09 -04:00
.gitignore .gitignore: drop include/asm/proc from ignore pattern 2014-06-19 11:18:54 -04:00
Kconfig MIPS: add initial infrastructure for device-tree files 2016-01-16 21:06:45 +01:00