|
|
@ -2,23 +2,31 @@ U-Boot for arm64 |
|
|
|
|
|
|
|
|
|
|
|
Summary |
|
|
|
Summary |
|
|
|
======= |
|
|
|
======= |
|
|
|
No hardware platform of arm64 is available now. The U-Boot is |
|
|
|
The initial arm64 U-Boot port was developed before hardware was available, |
|
|
|
simulated on Foundation Model and Fast Model for ARMv8. |
|
|
|
so the first supported platforms were the Foundation and Fast Model for ARMv8. |
|
|
|
|
|
|
|
These days U-Boot runs on a variety of 64-bit capable ARM hardware, from |
|
|
|
|
|
|
|
embedded development boards to servers. |
|
|
|
|
|
|
|
|
|
|
|
Notes |
|
|
|
Notes |
|
|
|
===== |
|
|
|
===== |
|
|
|
|
|
|
|
|
|
|
|
1. Currenly, U-Boot run at the highest exception level processor |
|
|
|
1. U-Boot can run at any exception level it is entered in, it is |
|
|
|
supported and jump to EL2 or optionally EL1 before enter OS. |
|
|
|
recommened to enter it in EL3 if U-Boot takes some responsibilities of a |
|
|
|
|
|
|
|
classical firmware (like initial hardware setup, CPU errata workarounds |
|
|
|
|
|
|
|
or SMP bringup). U-Boot can be entered in EL2 when its main purpose is |
|
|
|
|
|
|
|
that of a boot loader. It can drop to lower exception levels before |
|
|
|
|
|
|
|
entering the OS. |
|
|
|
|
|
|
|
|
|
|
|
2. U-Boot for arm64 is compiled with AArch64-gcc. AArch64-gcc |
|
|
|
2. U-Boot for arm64 is compiled with AArch64-gcc. AArch64-gcc |
|
|
|
use rela relocation format, a tool(tools/relocate-rela) by Scott Wood |
|
|
|
use rela relocation format, a tool(tools/relocate-rela) by Scott Wood |
|
|
|
is used to encode the initial addend of rela to u-boot.bin. After running, |
|
|
|
is used to encode the initial addend of rela to u-boot.bin. After running, |
|
|
|
the U-Boot will be relocated to destination again. |
|
|
|
the U-Boot will be relocated to destination again. |
|
|
|
|
|
|
|
|
|
|
|
3. Fdt should be placed at a 2-megabyte boundary and within the first 512 |
|
|
|
3. Earlier Linux kernel versions required the FDT to be placed at a |
|
|
|
megabytes from the start of the kernel image. So, fdt_high should be |
|
|
|
2 MB boundary and within the same 512 MB section as the kernel image, |
|
|
|
defined specially. |
|
|
|
resulting in fdt_high to be defined specially. |
|
|
|
|
|
|
|
Since kernel version 4.2 Linux is more relaxed about the DT location, so it |
|
|
|
|
|
|
|
can be placed anywhere in memory. |
|
|
|
Please reference linux/Documentation/arm64/booting.txt for detail. |
|
|
|
Please reference linux/Documentation/arm64/booting.txt for detail. |
|
|
|
|
|
|
|
|
|
|
|
4. Spin-table is used to wake up secondary processors. One location |
|
|
|
4. Spin-table is used to wake up secondary processors. One location |
|
|
@ -37,9 +45,8 @@ Notes |
|
|
|
aarch32 specific codes. |
|
|
|
aarch32 specific codes. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Contributors |
|
|
|
Contributor |
|
|
|
============ |
|
|
|
=========== |
|
|
|
|
|
|
|
Tom Rini <trini@ti.com> |
|
|
|
Tom Rini <trini@ti.com> |
|
|
|
Scott Wood <scottwood@freescale.com> |
|
|
|
Scott Wood <scottwood@freescale.com> |
|
|
|
York Sun <yorksun@freescale.com> |
|
|
|
York Sun <yorksun@freescale.com> |
|
|
|