mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 03:58:17 +00:00 
			
		
		
		
	Add missing documentation for Xilinx ZynqMP configuration with steps how to configure it and run it. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
		
			
				
	
	
		
			116 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. SPDX-License-Identifier: GPL-2.0
 | |
| ..  (C) Copyright 2020 Xilinx, Inc.
 | |
| 
 | |
| ZYNQMP
 | |
| ======
 | |
| 
 | |
| About this
 | |
| ----------
 | |
| 
 | |
| This document describes the information about Xilinx Zynq UltraScale+ MPSOC
 | |
| U-Boot support. Core support is available in arch/arm/mach-zynqmp folder.
 | |
| 
 | |
| ZynqMP boards
 | |
| -------------
 | |
| 
 | |
| * zcu100 (ultra96 v1), zcu102, zcu104, zcu106 - Evaluation boards
 | |
| * zc1232 - Characterization boards
 | |
| * zcu111, zcu208, zcu216 - RFSOC evaluation boards
 | |
| * zcu1254, zcu1275, zcu1285 - RFSOC characterization boards
 | |
| * a2197 - System Controller on Versal boards
 | |
| * mini - Mini U-Boot running out of OCM
 | |
| * zc1751 - Characterization Processor boards
 | |
|      - zc1751-xm015-dc1
 | |
|      - zc1751-xm016-dc2
 | |
|      - zc1751-xm017-dc3
 | |
|      - zc1751-xm018-dc4
 | |
|      - zc1751-xm019-dc5
 | |
| 
 | |
| Building
 | |
| --------
 | |
| 
 | |
| Configure and build for zcu102 board::
 | |
| 
 | |
|    $ source arm64 toolchain
 | |
|    $ export DEVICE_TREE=zynqmp-zcu102-revA
 | |
|    $ make xilinx_zynqmp_virt_defconfig
 | |
|    $ make
 | |
| 
 | |
| U-Boot SPL flow
 | |
| ---------------
 | |
| 
 | |
| For getting U-Boot SPL flow up and running it is necessary to do some additional
 | |
| steps because booting device requires external images which are not the part of
 | |
| U-Boot repository.
 | |
| 
 | |
| PMU firmware
 | |
| ^^^^^^^^^^^^
 | |
| The Platform Management Unit (PMU) RAM can be loaded with a firmware (PMU
 | |
| Firmware) at run-time and can be used to extend or customize the functionality
 | |
| of PMU. The PMU firmware is the part of boot image (boot.bin) and it is
 | |
| automatically loaded by BootROM. boot.bin can be directly generated by mkimage
 | |
| tool as the part of make. If you want to create boot.bin with PMU Firmware
 | |
| include please point CONFIG_PMUFW_INIT_FILE to PMU firmware binary. For example:::
 | |
| 
 | |
|   CONFIG_PMUFW_INIT_FILE="<path>/pmu.bin"
 | |
| 
 | |
| If you see below message you need to load PMU Firmware::
 | |
| 
 | |
|   PMUFW is not found - Please load it!
 | |
| 
 | |
| The second external blob is PMU Configuration object which is object which is
 | |
| passed from U-Boot SPL to PMU Firmware for initial system configuration. PMU
 | |
| configuration object is the part of U-Boot SPL image. For pointing to this
 | |
| object please use CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE symbol. For example:::
 | |
| 
 | |
|   CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE="<path>/pmu_obj.bin"
 | |
| 
 | |
| 
 | |
| PMU configuration object
 | |
| ^^^^^^^^^^^^^^^^^^^^^^^^
 | |
| 
 | |
| Object can be obtain in several ways. The easiest way is to take pm_cfg_obj.c
 | |
| from SDK/Vitis design and build it:::
 | |
| 
 | |
|   $ git clone https://github.com/Xilinx/embeddedsw.git
 | |
|   $ export EMBEDDED_SW=$PWD/embeddedsw
 | |
|   $ gcc -c pm_cfg_obj.c -I ${EMBEDDED_SW}/lib/bsp/standalone/src/common/ -I ${EMBEDDED_SW}/lib/sw_services/xilpm/src/zynqmp/client/common/
 | |
|   $ objcopy -O binary pm_cfg_obj.o pmu_obj.bin
 | |
| 
 | |
| The second way is to use tools/zynqmp_pm_cfg_obj_convert.py. For more
 | |
| information about this tool please run it with -h parameter.
 | |
| 
 | |
| The third way is to extract it from Xilinx FSBL elf file. Object is starting at
 | |
| XPm_ConfigObject symbol.
 | |
| 
 | |
| 
 | |
| Arm Trusted Firmware (ATF)
 | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
 | |
| 
 | |
| U-Boot itself can run from EL3 to EL1. Without ATF U-Boot runs in EL3. Boot flow
 | |
| is U-Boot SPL->U-Boot in EL3. When ATF is used U-Boot normally runs in EL2. Boot
 | |
| flow is U-Boot SPL->ATF->U-Boot in EL2. As the part of build process u-boot.itb
 | |
| is generated. When BL31 shell variable is present u-boot.itb is generated with
 | |
| ATF included. You can point to it by:::
 | |
| 
 | |
|   $ export BL31=<path>/bl31.bin
 | |
| 
 | |
| Flashing
 | |
| --------
 | |
| 
 | |
| SD Card
 | |
| ^^^^^^^
 | |
| 
 | |
| To write an image that boots from a SD card first create a FAT32 partition
 | |
| and a FAT32 filesystem on the SD card::
 | |
| 
 | |
|         sudo fdisk /dev/sdx
 | |
|         sudo mkfs.vfat -F 32 /dev/sdx1
 | |
| 
 | |
| Mount the SD card and copy the SPL and U-Boot to the root directory of the
 | |
| SD card::
 | |
| 
 | |
|         sudo mount -t vfat /dev/sdx1 /mnt
 | |
|         sudo cp spl/boot.bin /mnt
 | |
|         sudo cp u-boot.itb /mnt
 |