zynq: document how to use custom ps7_init files
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Tue, 4 Oct 2016 01:09:56 +0000 (20:09 -0500)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 9 Oct 2016 20:45:58 +0000 (22:45 +0200)
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 <yamada.masahiro@socionext.com>
Signed-off-by: Matt Weber <matthew.weber@rockwellcollins.com>
Acked-by: Alistair Francis <alistair.francis@xilinx.com>
[Thomas: rewording and formatting tweaks.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
board/zynq/readme.txt

index 51e28b6b340802ef89b341f57f511baaeaf92e62..c5506fe9668cd81cb234bf3f38d69cc60974a87e 100644 (file)
@@ -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-<pkg version>/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.