==============================
-Tested toolchains
------------------
+Recommended toolchains
+----------------------
- (a) Ubuntu packages (CROSS_COMPILE=arm-linux-gnueabi-)
+The UniPhier platform is well tested with Linaro toolchains.
+You can download pre-built toolchains from:
- If you are building U-Boot on Ubuntu, its standard package is recommended.
- You can install it as follows:
+ http://www.linaro.org/downloads/
- $ sudo apt-get install gcc-arm-linux-gnueabi-
- (b) Linaro compilers (CROSS_COMPILE=arm-linux-gnueabihf-)
+Compile the source
+------------------
- You can download pre-built toolchains from:
+The source can be configured and built with the following commands:
- http://www.linaro.org/downloads/
+ $ make <defconfig>
+ $ make CROSS_COMPILE=<toolchain-prefix> DEVICE_TREE=<device-tree>
- (c) kernel.org compilers (CROSS_COMPILE=arm-unknown-linux-gnueabi-)
+The recommended <toolchain-prefix> is `arm-linux-gnueabihf-` for 32bit SoCs,
+`aarch64-linux-gnu-` for 64bit SoCs, but you may wish to change it to use your
+favorite compiler.
- You can download pre-built toolchains from:
+The following tables show <defconfig> and <device-tree> for each board.
- ftp://www.kernel.org/pub/tools/crosstool/files/bin/
+32bit SoC boards:
+ Board | <defconfig> | <device-tree>
+---------------|-----------------------------|------------------------------
+LD4 reference | uniphier_ld4_sld8_defconfig | uniphier-ld4-ref (default)
+sld8 reference | uniphier_ld4_sld8_defconfig | uniphier-sld8-def
+Pro4 reference | uniphier_v7_defconfig | uniphier-pro4-ref
+Pro4 Ace | uniphier_v7_defconfig | uniphier-pro4-ace
+Pro4 Sanji | uniphier_v7_defconfig | uniphier-pro4-sanji
+Pro5 4KBOX | uniphier_v7_defconfig | uniphier-pro5-4kbox
+PXs2 Gentil | uniphier_v7_defconfig | uniphier-pxs2-gentil
+PXs2 Vodka | uniphier_v7_defconfig | uniphier-pxs2-vodka (default)
+LD6b reference | uniphier_v7_defconfig | uniphier-ld6b-ref
-Compile the source
-------------------
+64bit SoC boards:
-PH1-sLD3 reference board:
- $ make uniphier_sld3_defconfig
- $ make CROSS_COMPILE=arm-linux-gnueabi-
+ Board | <defconfig> | <device-tree>
+---------------|-----------------------|----------------------------
+LD11 reference | uniphier_v8_defconfig | uniphier-ld11-ref
+LD11 Global | uniphier_v8_defconfig | uniphier-ld11-global
+LD20 reference | uniphier_v8_defconfig | uniphier-ld20-ref (default)
+LD20 Global | uniphier_v8_defconfig | uniphier-ld20-global
+PXs3 reference | uniphier_v8_defconfig | uniphier-pxs3-ref
-PH1-LD4 reference board:
- $ make uniphier_ld4_sld8_defconfig
- $ make CROSS_COMPILE=arm-linux-gnueabi-
+For example, to compile the source for PXs2 Vodka board, run the following:
-PH1-sLD8 reference board:
- $ make uniphier_ld4_sld8_defconfig
- $ make CROSS_COMPILE=arm-linux-gnueabi- DEVICE_TREE=uniphier-ph1-sld8-ref
+ $ make uniphier_v7_defconfig
+ $ make CROSS_COMPILE=arm-linux-gnueabihf- DEVICE_TREE=uniphier-pxs2-vodka
-PH1-Pro4 reference board:
- $ make uniphier_pro4_defconfig
- $ make CROSS_COMPILE=arm-linux-gnueabi-
+The device tree marked as (default) can be omitted. `uniphier-pxs2-vodka` is
+the default device tree for the configuration `uniphier_v7_defconfig`, so the
+following gives the same result.
-PH1-Pro5 4KBOX Board:
- $ make uniphier_pxs2_ld6b_defconfig
- $ make CROSS_COMPILE=arm-linux-gnueabi- DEVICE_TREE=uniphier-ph1-pro5-4kbox
+ $ make uniphier_v7_defconfig
+ $ make CROSS_COMPILE=arm-linux-gnueabihf-
-ProXstream2 Gentil board:
- $ make uniphier_pxs2_ld6b_defconfig
- $ make CROSS_COMPILE=arm-linux-gnueabi- DEVICE_TREE=uniphier-proxstream2-gentil
-ProXstream2 Vodka board:
- $ make uniphier_pxs2_ld6b_defconfig
- $ make CROSS_COMPILE=arm-linux-gnueabi-
+Booting 32bit SoC boards
+------------------------
-PH1-LD6b reference board:
- $ make uniphier_pxs2_ld6b_defconfig
- $ make CROSS_COMPILE=arm-linux-gnueabi- DEVICE_TREE=uniphier-ph1-ld6b-ref
+The build command will generate the following:
+- u-boot.bin
+- spl/u-boot.bin
-You may wish to change the "CROSS_COMPILE=arm-linux-gnueabi-"
-to use your favorite compiler.
+U-Boot can boot UniPhier 32bit SoC boards by itself. Flash the generated images
+to the storage device (NAND or eMMC) on your board.
+ - spl/u-boot-spl.bin at the offset address 0x00000000
+ - u-boot.bin at the offset address 0x00020000
-Burn U-Boot images to NAND
---------------------------
+The `u-boot-with-spl.bin` is the concatenation of the two (with appropriate
+padding), so you can also do:
-Write two files to the NAND device as follows:
- - spl/u-boot-spl.bin at the offset address 0x00000000
- - u-boot.img at the offset address 0x00010000
+ - u-boot-with-spl.bin at the offset address 0x00000000
If a TFTP server is available, the images can be easily updated.
-Just copy the u-boot-spl-dtb.bin and u-boot-dtb.img to the TFTP public
-directory, and then run the following command at the U-Boot command line:
+Just copy the u-boot-spl.bin and u-boot.bin to the TFTP public directory,
+and run the following command at the U-Boot command line:
- => run nandupdate
+To update the images in NAND:
+ => run nandupdate
-Burn U-Boot images to eMMC
---------------------------
+To update the images in eMMC:
-Write two files to the Boot partition 1 of the eMMC device as follows:
- - spl/u-boot-spl.bin at the offset address 0x00000000
- - u-boot.img at the offset address 0x00010000
+ => run emmcupdate
-If a TFTP server is available, the images can be easily updated.
-Just copy the u-boot-spl-dtb.bin and u-boot-dtb.img to the TFTP public
-directory, and then run the following command at the U-Boot command line:
- => run emmcupdate
+Booting 64bit SoC boards
+------------------------
+
+The build command will generate the following:
+- u-boot.bin
+
+However, U-Boot is not the first stage loader for UniPhier 64bit SoC boards.
+U-Boot serves as a non-secure boot loader loaded by [ARM Trusted Firmware],
+so you need to provide the `u-boot.bin` to the build command of ARM Trusted
+Firmware.
+
+[ARM Trusted Firmware]: https://github.com/ARM-software/arm-trusted-firmware
UniPhier specific commands
- ddrphy (enabled by CONFIG_CMD_DDRPHY_DUMP)
shows the DDR PHY parameters set by the PHY training
+ - ddrmphy (enabled by CONFIG_CMD_DDRMPHY_DUMP)
+ shows the DDR Multi PHY parameters set by the PHY training
+
Supported devices
-----------------
--
Masahiro Yamada <yamada.masahiro@socionext.com>
-Feb. 2016
+Sep. 2017