Paul Beesley | f3653a6 | 2019-05-22 11:22:44 +0100 | [diff] [blame] | 1 | Allwinner ARMv8 SoCs |
| 2 | ==================== |
Samuel Holland | 7438320 | 2017-08-12 04:07:39 -0500 | [diff] [blame] | 3 | |
| 4 | Trusted Firmware-A (TF-A) implements the EL3 firmware layer for Allwinner |
| 5 | SoCs with ARMv8 cores. Only BL31 is used to provide proper EL3 setup and |
| 6 | PSCI runtime services. |
Andre Przywara | 4416ba8 | 2018-06-22 00:33:28 +0100 | [diff] [blame] | 7 | |
Samuel Holland | 7438320 | 2017-08-12 04:07:39 -0500 | [diff] [blame] | 8 | U-Boot's SPL acts as a loader, loading both BL31 and BL33 (typically U-Boot). |
| 9 | Loading is done from SD card, eMMC or SPI flash, also via an USB debug |
| 10 | interface (FEL). |
Andre Przywara | 4416ba8 | 2018-06-22 00:33:28 +0100 | [diff] [blame] | 11 | |
Samuel Holland | 7438320 | 2017-08-12 04:07:39 -0500 | [diff] [blame] | 12 | BL31 lives in SRAM A2, which is documented to be accessible from secure |
| 13 | world only. |
| 14 | |
| 15 | Current limitations: |
| 16 | |
| 17 | - Missing PMIC support |
| 18 | |
| 19 | After building bl31.bin, the binary must be fed to the U-Boot build system |
| 20 | to include it in the FIT image that the SPL loader will process. |
| 21 | bl31.bin can be either copied (or sym-linked) into U-Boot's root directory, |
| 22 | or the environment variable BL31 must contain the binary's path. |
| 23 | See the respective `U-Boot documentation`_ for more details. |
| 24 | |
Andre Przywara | aa26f53 | 2017-12-08 01:27:02 +0000 | [diff] [blame] | 25 | To build for machines with an A64 or H5 SoC: |
Samuel Holland | 7438320 | 2017-08-12 04:07:39 -0500 | [diff] [blame] | 26 | |
Paul Beesley | 493e349 | 2019-03-13 15:11:04 +0000 | [diff] [blame] | 27 | .. code:: shell |
Samuel Holland | 7438320 | 2017-08-12 04:07:39 -0500 | [diff] [blame] | 28 | |
| 29 | make CROSS_COMPILE=aarch64-linux-gnu- PLAT=sun50i_a64 DEBUG=1 bl31 |
| 30 | |
Andre Przywara | aa26f53 | 2017-12-08 01:27:02 +0000 | [diff] [blame] | 31 | To build for machines with an H6 SoC: |
| 32 | |
Paul Beesley | 493e349 | 2019-03-13 15:11:04 +0000 | [diff] [blame] | 33 | .. code:: shell |
Andre Przywara | aa26f53 | 2017-12-08 01:27:02 +0000 | [diff] [blame] | 34 | |
| 35 | make CROSS_COMPILE=aarch64-linux-gnu- PLAT=sun50i_h6 DEBUG=1 bl31 |
| 36 | |
Samuel Holland | 7438320 | 2017-08-12 04:07:39 -0500 | [diff] [blame] | 37 | .. _U-Boot documentation: http://git.denx.de/?p=u-boot.git;f=board/sunxi/README.sunxi64;hb=HEAD |
Amit Singh Tomar | 2f37224 | 2018-06-20 00:44:50 +0530 | [diff] [blame] | 38 | |
| 39 | Trusted OS dispatcher |
Paul Beesley | f3653a6 | 2019-05-22 11:22:44 +0100 | [diff] [blame] | 40 | --------------------- |
Amit Singh Tomar | 2f37224 | 2018-06-20 00:44:50 +0530 | [diff] [blame] | 41 | |
| 42 | One can boot Trusted OS(OP-TEE OS, bl32 image) along side bl31 image on Allwinner A64. |
| 43 | |
| 44 | In order to include the 'opteed' dispatcher in the image, pass 'SPD=opteed' on the command line |
| 45 | while compiling the bl31 image and make sure the loader (SPL) loads the Trusted OS binary to |
| 46 | the beginning of DRAM (0x40000000). |