mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-06-09 23:36:03 +09:00
![Stephen Warren](/assets/img/avatar_default.png)
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>
99 lines
2.7 KiB
Plaintext
99 lines
2.7 KiB
Plaintext
config BCM2835
|
|
bool "Broadcom BCM2835 SoC support"
|
|
depends on ARCH_BCM283X
|
|
|
|
config BCM2836
|
|
bool "Broadcom BCM2836 SoC support"
|
|
depends on ARCH_BCM283X
|
|
|
|
config BCM2837
|
|
bool "Broadcom BCM2837 SoC support"
|
|
depends on ARCH_BCM283X
|
|
|
|
menu "Broadcom BCM283X family"
|
|
depends on ARCH_BCM283X
|
|
|
|
choice
|
|
prompt "Broadcom BCM283X board select"
|
|
optional
|
|
|
|
config TARGET_RPI
|
|
bool "Raspberry Pi (all BCM2835 variants)"
|
|
help
|
|
Support for all ARM1176-/BCM2835-based Raspberry Pi variants, such as
|
|
the A, A+, B, B+, Compute Module, and Zero. This option cannot
|
|
support BCM2836/BCM2837-based Raspberry Pis such as the RPi 2 and
|
|
RPi 3 due to different peripheral address maps.
|
|
|
|
This option creates a build targetting the ARM1176 ISA.
|
|
select BCM2835
|
|
select CPU_ARM1176
|
|
|
|
config TARGET_RPI_2
|
|
bool "Raspberry Pi 2"
|
|
help
|
|
Support for all BCM2836-based Raspberry Pi variants, such as
|
|
the RPi 2 model B.
|
|
|
|
This option also supports BCM2837-based variants such as the RPi 3
|
|
Model B, when run in 32-bit mode, provided you have configured the
|
|
VideoCore firmware to select the PL011 UART for the console by:
|
|
a) config.txt should contain dtoverlay=pi3-miniuart-bt.
|
|
b) You should run the following to tell the VC FW to process DT when
|
|
booting, and copy u-boot.bin.img (rather than u-boot.bin) to the SD
|
|
card as the kernel image:
|
|
|
|
path/to/kernel/scripts/mkknlimg --dtok u-boot.bin u-boot.bin.img
|
|
|
|
This works as of firmware.git commit 046effa13ebc "firmware:
|
|
arm_loader: emmc clock depends on core clock See:
|
|
https://github.com/raspberrypi/firmware/issues/572".
|
|
|
|
This option creates a build targetting the ARMv7/AArch32 ISA.
|
|
select ARMV7_LPAE
|
|
select BCM2836
|
|
select CPU_V7
|
|
|
|
config TARGET_RPI_3_32B
|
|
bool "Raspberry Pi 3 32-bit build"
|
|
help
|
|
Support for all BCM2837-based Raspberry Pi variants, such as
|
|
the RPi 3 model B, in AArch32 (32-bit) mode.
|
|
|
|
This option assumes the VideoCore firmware is configured to use the
|
|
mini UART (rather than PL011) for the serial console. This is the
|
|
default on the RPi 3. To enable the UART console, the following non-
|
|
default option must be present in config.txt: enable_uart=1.
|
|
|
|
This option creates a build targetting the ARMv7/AArch32 ISA.
|
|
select ARMV7_LPAE
|
|
select BCM2837
|
|
select CPU_V7
|
|
|
|
config TARGET_RPI_3
|
|
bool "Raspberry Pi 3 64-bit build"
|
|
select ARM64
|
|
select BCM2837
|
|
|
|
endchoice
|
|
|
|
config SYS_BOARD
|
|
default "rpi" if TARGET_RPI
|
|
default "rpi_2" if TARGET_RPI_2
|
|
default "rpi_3_32b" if TARGET_RPI_3_32B
|
|
default "rpi_3" if TARGET_RPI_3
|
|
|
|
config SYS_VENDOR
|
|
default "raspberrypi"
|
|
|
|
config SYS_SOC
|
|
default "bcm283x"
|
|
|
|
config SYS_CONFIG_NAME
|
|
default "rpi" if TARGET_RPI
|
|
default "rpi_2" if TARGET_RPI_2
|
|
default "rpi_3_32b" if TARGET_RPI_3_32B
|
|
default "rpi_3" if TARGET_RPI_3
|
|
|
|
endmenu
|