From 3907b1ac66422c0b9182f090f41e6544dc859825 Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Mon, 3 Oct 2016 20:09:56 -0500 Subject: [PATCH] zynq: document how to use custom ps7_init files Since U-Boot supported SPL for Zynq boards at v2014.04 release, it became much easier to build a system. At that time, however, users still needed to manually copy ps7_init.c/h to the U-Boot source tree to generate a working SPL image because ps7_init.c/h output from Xilinx tools are not compatible with GPL. Later, the license problem was solved when Xilinx tools became able to output the GPL-compatible variants (ps7_init_gpl.c/h) as well. U-Boot v2015.07 or later includes ps7_init_gpl.c/h for major Zynq boards so that users can build a boot image straight away. Now Buildroot supports 3 boards (Zedboard, MicroZed, ZC706) without any manual intervention. This is a good thing itself, but commit b9cd72cdbfe3 ("zynq_zc706: bump U-Boot to xilinx-v2016.2") entirely dropped the information about custom ps7_init files. This commit provides up-to-date guidance for how to customize the ps7_init files. Signed-off-by: Masahiro Yamada Signed-off-by: Matt Weber Acked-by: Alistair Francis [Thomas: rewording and formatting tweaks.] Signed-off-by: Thomas Petazzoni --- board/zynq/readme.txt | 48 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/board/zynq/readme.txt b/board/zynq/readme.txt index 51e28b6b34..c5506fe966 100644 --- a/board/zynq/readme.txt +++ b/board/zynq/readme.txt @@ -6,13 +6,6 @@ Currently, three boards are natively supported by Buildroot: - Avnet ZedBoard (zynq_zed_defconfig) - Avnet MicroZed (zynq_microzed_defconfig) -The following build procedure focuses on them, but you can adjust it to your -board even if it is not listed above. Major Zynq-based boards are supported by -U-Boot, and their Device Trees are merged in Linux Kernel. If your board is the -case, booting the kernel is a piece of cake. All you need to do is to change: - - Kernel Device Tree file name (BR2_LINUX_KERNEL_INTREE_DTS_NAME) - - U-Boot board defconfig (BR2_TARGET_UBOOT_BOARD_KCONFIG) - Steps to create a working system for a Zynq board: 1) Configuration (do one of the following) @@ -50,3 +43,44 @@ References: - Zedboard/Microzed information including schematics, reference designs, and manuals are available from http://www.zedboard.org . + +Support for other boards: + +If you want to build a system for other boards based on the same SoC +(for ex. Digilent Zybo board), and the board is already supported by +the upstream kernel and U-Boot, you simply need to change the +following Buildroot options: + + - Kernel Device Tree file name (BR2_LINUX_KERNEL_INTREE_DTS_NAME) + - U-Boot board defconfig (BR2_TARGET_UBOOT_BOARD_DEFCONFIG) + +Custom ps7_init_gpl.c/h support: + +To generate a working boot.bin image, ps7_init_gpl.c/h are required in +the U-Boot source tree. Without those files, boot.bin will be built +successfully but it will not be functional at all. Those files are +output from the Xilinx tools, but for convenience, U-Boot includes the +default ps7_init_gpl.c/h of popular boards. Those files may need to be +updated for any programmable logic customizations which impact +ps7_init (clock/pin setup & mapping/AXI bridge setup/etc). See +board/xilinx/zynq/ directory of U-Boot for natively supported ps7_init +files. If the ps7_init files for your board are not found in U-Boot, +you need to add them by yourself. + +1) Start with a defconfig supported by Buildroot (e.g. Zedboard) + make zynq_zed_defconfig + +2) make uboot-menuconfig + Visit the following menu and enable CONFIG_ZYNQ_CUSTOM_INIT. + + ARM architecture ---> + [*] Use custom ps7_init provided by Xilinx tool + +3) Copy ps7_init_gpl.c/h generated by the Xilinx tools into + output/build/uboot-xilinx-/board/xilinx/zynq/custom_hw_platform/ + +4) make + +Note: The files in step 3 will need to be re-copied after cleaning the +output directory and at this time, there is no way to save them as +part of the buildroot configuration, except as a U-Boot patch.