==============================
-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_pro5_defconfig
- $ make CROSS_COMPILE=arm-linux-gnueabi-
+ $ 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-dtb.bin at the offset address 0x00000000
- - u-boot-dtb.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:
+
+To update the images in NAND:
- => run nandupdate
+ => run nandupdate
+
+To update the images in eMMC:
+
+ => 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
-----------------
- UART (on-chip)
- NAND
+ - SD/eMMC
- USB 2.0 (EHCI)
- USB 3.0 (xHCI)
+ - GPIO
- LAN (on-board SMSC9118)
- I2C
- EEPROM (connected to the on-board I2C bus)
--
Masahiro Yamada <yamada.masahiro@socionext.com>
-Aug. 2015
+Sep. 2017