17168da16SMasahiro YamadaU-Boot for UniPhier SoC family 27168da16SMasahiro Yamada============================== 37168da16SMasahiro Yamada 47168da16SMasahiro Yamada 512a5ce72SMasahiro YamadaRecommended toolchains 612a5ce72SMasahiro Yamada---------------------- 77168da16SMasahiro Yamada 8673ac334SMasahiro YamadaThe UniPhier platform is well tested with Linaro toolchains. 97168da16SMasahiro YamadaYou can download pre-built toolchains from: 107168da16SMasahiro Yamada 117168da16SMasahiro Yamada http://www.linaro.org/downloads/ 127168da16SMasahiro Yamada 137168da16SMasahiro Yamada 147168da16SMasahiro YamadaCompile the source 157168da16SMasahiro Yamada------------------ 167168da16SMasahiro Yamada 17673ac334SMasahiro YamadaThe source can be configured and built with the following commands: 187168da16SMasahiro Yamada 19673ac334SMasahiro Yamada $ make <defconfig> 20673ac334SMasahiro Yamada $ make CROSS_COMPILE=<toolchain-prefix> DEVICE_TREE=<device-tree> 217168da16SMasahiro Yamada 22673ac334SMasahiro YamadaThe recommended <toolchain-prefix> is `arm-linux-gnueabihf-` for 32bit SoCs, 23673ac334SMasahiro Yamada`aarch64-linux-gnu-` for 64bit SoCs, but you may wish to change it to use your 24673ac334SMasahiro Yamadafavorite compiler. 255fd3f434SMasahiro Yamada 26673ac334SMasahiro YamadaThe following tables show <defconfig> and <device-tree> for each board. 273365b4ebSMasahiro Yamada 28673ac334SMasahiro Yamada32bit SoC boards: 29c6c7eed7SMasahiro Yamada 30673ac334SMasahiro Yamada Board | <defconfig> | <device-tree> 3181b9bb5fSMasahiro Yamada---------------|-----------------------------|------------------------------ 32673ac334SMasahiro YamadaLD4 reference | uniphier_ld4_sld8_defconfig | uniphier-ld4-ref (default) 33673ac334SMasahiro Yamadasld8 reference | uniphier_ld4_sld8_defconfig | uniphier-sld8-def 3481b9bb5fSMasahiro YamadaPro4 reference | uniphier_v7_defconfig | uniphier-pro4-ref 3581b9bb5fSMasahiro YamadaPro4 Ace | uniphier_v7_defconfig | uniphier-pro4-ace 3681b9bb5fSMasahiro YamadaPro4 Sanji | uniphier_v7_defconfig | uniphier-pro4-sanji 3781b9bb5fSMasahiro YamadaPro5 4KBOX | uniphier_v7_defconfig | uniphier-pro5-4kbox 3881b9bb5fSMasahiro YamadaPXs2 Gentil | uniphier_v7_defconfig | uniphier-pxs2-gentil 3981b9bb5fSMasahiro YamadaPXs2 Vodka | uniphier_v7_defconfig | uniphier-pxs2-vodka (default) 4081b9bb5fSMasahiro YamadaLD6b reference | uniphier_v7_defconfig | uniphier-ld6b-ref 41c6c7eed7SMasahiro Yamada 42673ac334SMasahiro Yamada64bit SoC boards: 43673ac334SMasahiro Yamada 44673ac334SMasahiro Yamada Board | <defconfig> | <device-tree> 45673ac334SMasahiro Yamada---------------|-----------------------|---------------------------- 46673ac334SMasahiro YamadaLD11 reference | uniphier_v8_defconfig | uniphier-ld11-ref 47673ac334SMasahiro YamadaLD11 Global | uniphier_v8_defconfig | uniphier-ld11-global 48673ac334SMasahiro YamadaLD20 reference | uniphier_v8_defconfig | uniphier-ld20-ref (default) 49673ac334SMasahiro YamadaLD20 Global | uniphier_v8_defconfig | uniphier-ld20-global 5081b9bb5fSMasahiro YamadaPXs3 reference | uniphier_v8_defconfig | uniphier-pxs3-ref 51673ac334SMasahiro Yamada 52673ac334SMasahiro YamadaFor example, to compile the source for PXs2 Vodka board, run the following: 53673ac334SMasahiro Yamada 5481b9bb5fSMasahiro Yamada $ make uniphier_v7_defconfig 55673ac334SMasahiro Yamada $ make CROSS_COMPILE=arm-linux-gnueabihf- DEVICE_TREE=uniphier-pxs2-vodka 5628f40d4aSMasahiro Yamada 57673ac334SMasahiro YamadaThe device tree marked as (default) can be omitted. `uniphier-pxs2-vodka` is 5881b9bb5fSMasahiro Yamadathe default device tree for the configuration `uniphier_v7_defconfig`, so the 5981b9bb5fSMasahiro Yamadafollowing gives the same result. 601a264534SMasahiro Yamada 6181b9bb5fSMasahiro Yamada $ make uniphier_v7_defconfig 6212a5ce72SMasahiro Yamada $ make CROSS_COMPILE=arm-linux-gnueabihf- 63019df879SMasahiro Yamada 64019df879SMasahiro Yamada 65673ac334SMasahiro YamadaBooting 32bit SoC boards 66673ac334SMasahiro Yamada------------------------ 6712a5ce72SMasahiro Yamada 68673ac334SMasahiro YamadaThe build command will generate the following: 69673ac334SMasahiro Yamada- u-boot.bin 70673ac334SMasahiro Yamada- spl/u-boot.bin 7112a5ce72SMasahiro Yamada 72673ac334SMasahiro YamadaU-Boot can boot UniPhier 32bit SoC boards by itself. Flash the generated images 73673ac334SMasahiro Yamadato the storage device (NAND or eMMC) on your board. 74d085ecd6SMasahiro Yamada 753cb9abc9SMasahiro Yamada - spl/u-boot-spl.bin at the offset address 0x00000000 76cf3175bcSMasahiro Yamada - u-boot.bin at the offset address 0x00020000 77d085ecd6SMasahiro Yamada 78673ac334SMasahiro YamadaThe `u-boot-with-spl.bin` is the concatenation of the two (with appropriate 79673ac334SMasahiro Yamadapadding), so you can also do: 80d085ecd6SMasahiro Yamada 81d085ecd6SMasahiro Yamada - u-boot-with-spl.bin at the offset address 0x00000000 827168da16SMasahiro Yamada 837168da16SMasahiro YamadaIf a TFTP server is available, the images can be easily updated. 84d085ecd6SMasahiro YamadaJust copy the u-boot-spl.bin and u-boot.bin to the TFTP public directory, 85673ac334SMasahiro Yamadaand run the following command at the U-Boot command line: 86673ac334SMasahiro Yamada 87673ac334SMasahiro YamadaTo update the images in NAND: 887168da16SMasahiro Yamada 897168da16SMasahiro Yamada => run nandupdate 907168da16SMasahiro Yamada 91673ac334SMasahiro YamadaTo update the images in eMMC: 92c231c436SMasahiro Yamada 93c231c436SMasahiro Yamada => run emmcupdate 94c231c436SMasahiro Yamada 95c231c436SMasahiro Yamada 96673ac334SMasahiro YamadaBooting 64bit SoC boards 97673ac334SMasahiro Yamada------------------------ 98673ac334SMasahiro Yamada 99673ac334SMasahiro YamadaThe build command will generate the following: 100673ac334SMasahiro Yamada- u-boot.bin 101673ac334SMasahiro Yamada 102673ac334SMasahiro YamadaHowever, U-Boot is not the first stage loader for UniPhier 64bit SoC boards. 103673ac334SMasahiro YamadaU-Boot serves as a non-secure boot loader loaded by [ARM Trusted Firmware], 104673ac334SMasahiro Yamadaso you need to provide the `u-boot.bin` to the build command of ARM Trusted 105673ac334SMasahiro YamadaFirmware. 106673ac334SMasahiro Yamada 107673ac334SMasahiro Yamada[ARM Trusted Firmware]: https://github.com/ARM-software/arm-trusted-firmware 108673ac334SMasahiro Yamada 109673ac334SMasahiro Yamada 110*9e19031cSMasahiro YamadaVerified Boot 111*9e19031cSMasahiro Yamada------------- 112*9e19031cSMasahiro Yamada 113*9e19031cSMasahiro YamadaU-Boot supports an image verification method called "Verified Boot". 114*9e19031cSMasahiro YamadaThis is a brief tutorial to utilize this feature for the UniPhier platform. 115*9e19031cSMasahiro YamadaYou will find details documents in the doc/uImage.FIT directory. 116*9e19031cSMasahiro Yamada 117*9e19031cSMasahiro YamadaHere, we take LD20 reference board for example, but it should work for any 118*9e19031cSMasahiro Yamadaother boards including 32 bit SoCs. 119*9e19031cSMasahiro Yamada 120*9e19031cSMasahiro Yamada1. Generate key to sign with 121*9e19031cSMasahiro Yamada 122*9e19031cSMasahiro Yamada $ mkdir keys 123*9e19031cSMasahiro Yamada $ openssl genpkey -algorithm RSA -out keys/dev.key \ 124*9e19031cSMasahiro Yamada -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537 125*9e19031cSMasahiro Yamada $ openssl req -batch -new -x509 -key keys/dev.key -out keys/dev.crt 126*9e19031cSMasahiro Yamada 127*9e19031cSMasahiro YamadaTwo files "dev.key" and "dev.crt" will be created. The base name is arbitrary, 128*9e19031cSMasahiro Yamadabut need to match to the "key-name-hint" property described below. 129*9e19031cSMasahiro Yamada 130*9e19031cSMasahiro Yamada2. Describe FIT source 131*9e19031cSMasahiro Yamada 132*9e19031cSMasahiro YamadaYou need to write an FIT (Flattened Image Tree) source file to describe the 133*9e19031cSMasahiro Yamadastructure of the image container. 134*9e19031cSMasahiro Yamada 135*9e19031cSMasahiro YamadaThe following is an example for a simple usecase: 136*9e19031cSMasahiro Yamada 137*9e19031cSMasahiro Yamada---------------------------------------->8---------------------------------------- 138*9e19031cSMasahiro Yamada/dts-v1/; 139*9e19031cSMasahiro Yamada 140*9e19031cSMasahiro Yamada/ { 141*9e19031cSMasahiro Yamada description = "Kernel, DTB and Ramdisk for UniPhier LD20 Reference Board"; 142*9e19031cSMasahiro Yamada #address-cells = <1>; 143*9e19031cSMasahiro Yamada 144*9e19031cSMasahiro Yamada images { 145*9e19031cSMasahiro Yamada kernel@0 { 146*9e19031cSMasahiro Yamada description = "linux"; 147*9e19031cSMasahiro Yamada data = /incbin/("PATH/TO/YOUR/LINUX/DIR/arch/arm64/boot/Image.gz"); 148*9e19031cSMasahiro Yamada type = "kernel"; 149*9e19031cSMasahiro Yamada arch = "arm64"; 150*9e19031cSMasahiro Yamada os = "linux"; 151*9e19031cSMasahiro Yamada compression = "gzip"; 152*9e19031cSMasahiro Yamada load = <0x82080000>; 153*9e19031cSMasahiro Yamada entry = <0x82080000>; 154*9e19031cSMasahiro Yamada hash@0 { 155*9e19031cSMasahiro Yamada algo = "sha256"; 156*9e19031cSMasahiro Yamada }; 157*9e19031cSMasahiro Yamada }; 158*9e19031cSMasahiro Yamada 159*9e19031cSMasahiro Yamada fdt@0 { 160*9e19031cSMasahiro Yamada description = "fdt"; 161*9e19031cSMasahiro Yamada data = /incbin/("PATH/TO/YOUR/LINUX/DIR/arch/arm64/boot/dts/socionext/uniphier-ld20-ref.dtb"); 162*9e19031cSMasahiro Yamada type = "flat_dt"; 163*9e19031cSMasahiro Yamada arch = "arm64"; 164*9e19031cSMasahiro Yamada compression = "none"; 165*9e19031cSMasahiro Yamada hash@0 { 166*9e19031cSMasahiro Yamada algo = "sha256"; 167*9e19031cSMasahiro Yamada }; 168*9e19031cSMasahiro Yamada }; 169*9e19031cSMasahiro Yamada 170*9e19031cSMasahiro Yamada ramdisk@0 { 171*9e19031cSMasahiro Yamada description = "ramdisk"; 172*9e19031cSMasahiro Yamada data = /incbin/("PATH/TO/YOUR/ROOTFS/DIR/rootfs.cpio"); 173*9e19031cSMasahiro Yamada type = "ramdisk"; 174*9e19031cSMasahiro Yamada arch = "arm64"; 175*9e19031cSMasahiro Yamada os = "linux"; 176*9e19031cSMasahiro Yamada compression = "none"; 177*9e19031cSMasahiro Yamada hash@0 { 178*9e19031cSMasahiro Yamada algo = "sha256"; 179*9e19031cSMasahiro Yamada }; 180*9e19031cSMasahiro Yamada }; 181*9e19031cSMasahiro Yamada }; 182*9e19031cSMasahiro Yamada 183*9e19031cSMasahiro Yamada configurations { 184*9e19031cSMasahiro Yamada default = "config@0"; 185*9e19031cSMasahiro Yamada 186*9e19031cSMasahiro Yamada config@0 { 187*9e19031cSMasahiro Yamada description = "Configuration0"; 188*9e19031cSMasahiro Yamada kernel = "kernel@0"; 189*9e19031cSMasahiro Yamada fdt = "fdt@0"; 190*9e19031cSMasahiro Yamada ramdisk = "ramdisk@0"; 191*9e19031cSMasahiro Yamada signature@0 { 192*9e19031cSMasahiro Yamada algo = "sha256,rsa2048"; 193*9e19031cSMasahiro Yamada key-name-hint = "dev"; 194*9e19031cSMasahiro Yamada sign-images = "kernel", "fdt", "ramdisk"; 195*9e19031cSMasahiro Yamada }; 196*9e19031cSMasahiro Yamada }; 197*9e19031cSMasahiro Yamada }; 198*9e19031cSMasahiro Yamada}; 199*9e19031cSMasahiro Yamada---------------------------------------->8---------------------------------------- 200*9e19031cSMasahiro Yamada 201*9e19031cSMasahiro YamadaYou need to change the three '/incbin/' lines, depending on the location of 202*9e19031cSMasahiro Yamadayour kernel image, device tree blob, and init ramdisk. The "load" and "entry" 203*9e19031cSMasahiro Yamadaproperties also need to be adjusted if you want to change the physical placement 204*9e19031cSMasahiro Yamadaof the kernel. 205*9e19031cSMasahiro Yamada 206*9e19031cSMasahiro YamadaThe "key-name-hint" must specify the key name you have created in the step 1. 207*9e19031cSMasahiro Yamada 208*9e19031cSMasahiro YamadaThe FIT file name is arbitrary. Let's say you saved it into "fit.its". 209*9e19031cSMasahiro Yamada 210*9e19031cSMasahiro Yamada3. Compile U-Boot with FIT and signature enabled 211*9e19031cSMasahiro Yamada 212*9e19031cSMasahiro YamadaTo use the Verified Boot, you need to enable the following two options: 213*9e19031cSMasahiro Yamada CONFIG_FIT 214*9e19031cSMasahiro Yamada CONFIG_FIT_SIGNATURE 215*9e19031cSMasahiro Yamada 216*9e19031cSMasahiro YamadaThey are disabled by default for UniPhier defconfig files. So, you need to 217*9e19031cSMasahiro Yamadatweak the configuration from "make menuconfig" or friends. 218*9e19031cSMasahiro Yamada 219*9e19031cSMasahiro Yamada $ make uniphier_v8_defconfig 220*9e19031cSMasahiro Yamada $ make menuconfig 221*9e19031cSMasahiro Yamada [ enable CONFIG_FIT and CONFIG_FIT_SIGNATURE ] 222*9e19031cSMasahiro Yamada $ make CROSS_COMPILE=aarch64-linux-gnu- 223*9e19031cSMasahiro Yamada 224*9e19031cSMasahiro Yamada4. Build the image tree blob 225*9e19031cSMasahiro Yamada 226*9e19031cSMasahiro YamadaAfter building U-Boot, you will see tools/mkimage. With this tool, you can 227*9e19031cSMasahiro Yamadacreate an image tree blob as follows: 228*9e19031cSMasahiro Yamada 229*9e19031cSMasahiro Yamada $ tools/mkimage -f fit.its -k keys -K dts/dt.dtb -r -F fitImage 230*9e19031cSMasahiro Yamada 231*9e19031cSMasahiro YamadaThe -k option must specify the key directory you have created in step 1. 232*9e19031cSMasahiro Yamada 233*9e19031cSMasahiro YamadaA file "fitImage" will be created. This includes kernel, DTB, Init-ramdisk, 234*9e19031cSMasahiro Yamadahash data for each of the three, and signature data. 235*9e19031cSMasahiro Yamada 236*9e19031cSMasahiro YamadaThe public key needed for the run-time verification is stored in "dts/dt.dtb". 237*9e19031cSMasahiro Yamada 238*9e19031cSMasahiro Yamada5. Compile U-Boot again 239*9e19031cSMasahiro Yamada 240*9e19031cSMasahiro YamadaSince the "dt.dtb" has been updated in step 4, you need to re-compile the 241*9e19031cSMasahiro YamadaU-Boot. 242*9e19031cSMasahiro Yamada 243*9e19031cSMasahiro Yamada $ make CROSS_COMPILE=aarch64-linux-gnu- 244*9e19031cSMasahiro Yamada 245*9e19031cSMasahiro YamadaThe re-compiled "u-boot.bin" is appended with DTB that contains the public key. 246*9e19031cSMasahiro Yamada 247*9e19031cSMasahiro Yamada6. Flash the image 248*9e19031cSMasahiro Yamada 249*9e19031cSMasahiro YamadaFlash the "fitImage" to a storage device (NAND, eMMC, or whatever) on your 250*9e19031cSMasahiro Yamadaboard. 251*9e19031cSMasahiro Yamada 252*9e19031cSMasahiro YamadaPlease note the "u-boot.bin" must be signed, and verified by someone when it is 253*9e19031cSMasahiro Yamadaloaded. For ARMv8 SoCs, the "someone" is generally ARM Trusted Firmware BL2. 254*9e19031cSMasahiro YamadaARM Trusted Firmware supports an image authentication mechanism called Trusted 255*9e19031cSMasahiro YamadaBoard Boot (TBB). The verification process must be chained from the moment of 256*9e19031cSMasahiro Yamadathe system reset. If the Chain of Trust has a breakage somewhere, the verified 257*9e19031cSMasahiro Yamadaboot process is entirely pointless. 258*9e19031cSMasahiro Yamada 259*9e19031cSMasahiro Yamada7. Boot verified kernel 260*9e19031cSMasahiro Yamada 261*9e19031cSMasahiro YamadaLoad the fitImage to memory and run the following from the U-Boot command line. 262*9e19031cSMasahiro Yamada 263*9e19031cSMasahiro Yamada > bootm <addr> 264*9e19031cSMasahiro Yamada 265*9e19031cSMasahiro YamadaHere, <addr> is the base address of the fitImage. 266*9e19031cSMasahiro Yamada 267*9e19031cSMasahiro YamadaIf it is successful, you will see messages like follows: 268*9e19031cSMasahiro Yamada 269*9e19031cSMasahiro Yamada---------------------------------------->8---------------------------------------- 270*9e19031cSMasahiro Yamada## Loading kernel from FIT Image at 84100000 ... 271*9e19031cSMasahiro Yamada Using 'config@0' configuration 272*9e19031cSMasahiro Yamada Verifying Hash Integrity ... sha256,rsa2048:dev+ OK 273*9e19031cSMasahiro Yamada Trying 'kernel@0' kernel subimage 274*9e19031cSMasahiro Yamada Description: linux 275*9e19031cSMasahiro Yamada Created: 2017-10-20 14:32:29 UTC 276*9e19031cSMasahiro Yamada Type: Kernel Image 277*9e19031cSMasahiro Yamada Compression: gzip compressed 278*9e19031cSMasahiro Yamada Data Start: 0x841000c8 279*9e19031cSMasahiro Yamada Data Size: 6957818 Bytes = 6.6 MiB 280*9e19031cSMasahiro Yamada Architecture: AArch64 281*9e19031cSMasahiro Yamada OS: Linux 282*9e19031cSMasahiro Yamada Load Address: 0x82080000 283*9e19031cSMasahiro Yamada Entry Point: 0x82080000 284*9e19031cSMasahiro Yamada Hash algo: sha256 285*9e19031cSMasahiro Yamada Hash value: 82a37b7f11ae55f4e07aa25bf77e4067cb9dc1014d52d6cd4d588f92eee3aaad 286*9e19031cSMasahiro Yamada Verifying Hash Integrity ... sha256+ OK 287*9e19031cSMasahiro Yamada## Loading ramdisk from FIT Image at 84100000 ... 288*9e19031cSMasahiro Yamada Using 'config@0' configuration 289*9e19031cSMasahiro Yamada Trying 'ramdisk@0' ramdisk subimage 290*9e19031cSMasahiro Yamada Description: ramdisk 291*9e19031cSMasahiro Yamada Created: 2017-10-20 14:32:29 UTC 292*9e19031cSMasahiro Yamada Type: RAMDisk Image 293*9e19031cSMasahiro Yamada Compression: uncompressed 294*9e19031cSMasahiro Yamada Data Start: 0x847a5cc0 295*9e19031cSMasahiro Yamada Data Size: 5264365 Bytes = 5 MiB 296*9e19031cSMasahiro Yamada Architecture: AArch64 297*9e19031cSMasahiro Yamada OS: Linux 298*9e19031cSMasahiro Yamada Load Address: unavailable 299*9e19031cSMasahiro Yamada Entry Point: unavailable 300*9e19031cSMasahiro Yamada Hash algo: sha256 301*9e19031cSMasahiro Yamada Hash value: 44980a2874154a2e31ed59222c9f8ea968867637f35c81e4107a984de7014deb 302*9e19031cSMasahiro Yamada Verifying Hash Integrity ... sha256+ OK 303*9e19031cSMasahiro Yamada## Loading fdt from FIT Image at 84100000 ... 304*9e19031cSMasahiro Yamada Using 'config@0' configuration 305*9e19031cSMasahiro Yamada Trying 'fdt@0' fdt subimage 306*9e19031cSMasahiro Yamada Description: fdt 307*9e19031cSMasahiro Yamada Created: 2017-10-20 14:32:29 UTC 308*9e19031cSMasahiro Yamada Type: Flat Device Tree 309*9e19031cSMasahiro Yamada Compression: uncompressed 310*9e19031cSMasahiro Yamada Data Start: 0x847a2cb0 311*9e19031cSMasahiro Yamada Data Size: 12111 Bytes = 11.8 KiB 312*9e19031cSMasahiro Yamada Architecture: AArch64 313*9e19031cSMasahiro Yamada Hash algo: sha256 314*9e19031cSMasahiro Yamada Hash value: c517099db537f6d325e6be46b25c871a41331ad5af0283883fd29d40bfc14e1d 315*9e19031cSMasahiro Yamada Verifying Hash Integrity ... sha256+ OK 316*9e19031cSMasahiro Yamada Booting using the fdt blob at 0x847a2cb0 317*9e19031cSMasahiro Yamada Uncompressing Kernel Image ... OK 318*9e19031cSMasahiro Yamada reserving fdt memory region: addr=80000000 size=2000000 319*9e19031cSMasahiro Yamada Loading Device Tree to 000000009fffa000, end 000000009fffff4e ... OK 320*9e19031cSMasahiro Yamada 321*9e19031cSMasahiro YamadaStarting kernel ... 322*9e19031cSMasahiro Yamada---------------------------------------->8---------------------------------------- 323*9e19031cSMasahiro Yamada 324*9e19031cSMasahiro YamadaPlease pay attention to the lines that start with "Verifying Hash Integrity". 325*9e19031cSMasahiro Yamada 326*9e19031cSMasahiro Yamada"Verifying Hash Integrity ... sha256,rsa2048:dev+ OK" means the signature check 327*9e19031cSMasahiro Yamadapassed. 328*9e19031cSMasahiro Yamada 329*9e19031cSMasahiro Yamada"Verifying Hash Integrity ... sha256+ OK" (3 times) means the hash check passed 330*9e19031cSMasahiro Yamadafor kernel, DTB, and Init ramdisk. 331*9e19031cSMasahiro Yamada 332*9e19031cSMasahiro YamadaIf they are not displayed, the Verified Boot is not working. 333*9e19031cSMasahiro Yamada 334*9e19031cSMasahiro Yamada 3357168da16SMasahiro YamadaUniPhier specific commands 3367168da16SMasahiro Yamada-------------------------- 3377168da16SMasahiro Yamada 3387168da16SMasahiro Yamada - pinmon (enabled by CONFIG_CMD_PINMON) 3397168da16SMasahiro Yamada shows the boot mode pins that has been latched at the power-on reset 3407168da16SMasahiro Yamada 3417168da16SMasahiro Yamada - ddrphy (enabled by CONFIG_CMD_DDRPHY_DUMP) 3427168da16SMasahiro Yamada shows the DDR PHY parameters set by the PHY training 3437168da16SMasahiro Yamada 34412a5ce72SMasahiro Yamada - ddrmphy (enabled by CONFIG_CMD_DDRMPHY_DUMP) 34512a5ce72SMasahiro Yamada shows the DDR Multi PHY parameters set by the PHY training 34612a5ce72SMasahiro Yamada 3477168da16SMasahiro Yamada 3487168da16SMasahiro YamadaSupported devices 3497168da16SMasahiro Yamada----------------- 3507168da16SMasahiro Yamada 3517168da16SMasahiro Yamada - UART (on-chip) 3527168da16SMasahiro Yamada - NAND 353a111bfbfSMasahiro Yamada - SD/eMMC 3541e7df7c4SMasahiro Yamada - USB 2.0 (EHCI) 3551e7df7c4SMasahiro Yamada - USB 3.0 (xHCI) 356b9a66b63SMasahiro Yamada - GPIO 3577168da16SMasahiro Yamada - LAN (on-board SMSC9118) 3587168da16SMasahiro Yamada - I2C 3597168da16SMasahiro Yamada - EEPROM (connected to the on-board I2C bus) 3607168da16SMasahiro Yamada - Support card (SRAM, NOR flash, some peripherals) 3617168da16SMasahiro Yamada 3627168da16SMasahiro Yamada 36362102beeSMasahiro YamadaMicro Support Card 36462102beeSMasahiro Yamada------------------ 36562102beeSMasahiro Yamada 36662102beeSMasahiro YamadaThe recommended bit switch settings are as follows: 36762102beeSMasahiro Yamada 36862102beeSMasahiro Yamada SW2 OFF(1)/ON(0) Description 36962102beeSMasahiro Yamada ------------------------------------------ 37062102beeSMasahiro Yamada bit 1 <---- BKSZ[0] 37162102beeSMasahiro Yamada bit 2 ----> BKSZ[1] 37262102beeSMasahiro Yamada bit 3 <---- SoC Bus Width 16/32 37362102beeSMasahiro Yamada bit 4 <---- SERIAL_SEL[0] 37462102beeSMasahiro Yamada bit 5 ----> SERIAL_SEL[1] 37562102beeSMasahiro Yamada bit 6 ----> BOOTSWAP_EN 37662102beeSMasahiro Yamada bit 7 <---- CS1/CS5 37762102beeSMasahiro Yamada bit 8 <---- SOC_SERIAL_DISABLE 37862102beeSMasahiro Yamada 37962102beeSMasahiro Yamada SW8 OFF(1)/ON(0) Description 38062102beeSMasahiro Yamada ------------------------------------------ 381e69514ccSMasahiro Yamada bit 1 <---- CS1_SPLIT 38262102beeSMasahiro Yamada bit 2 <---- CASE9_ON 38362102beeSMasahiro Yamada bit 3 <---- CASE10_ON 38462102beeSMasahiro Yamada bit 4 Don't Care Reserve 38562102beeSMasahiro Yamada bit 5 Don't Care Reserve 38662102beeSMasahiro Yamada bit 6 Don't Care Reserve 38762102beeSMasahiro Yamada bit 7 ----> BURST_EN 38862102beeSMasahiro Yamada bit 8 ----> FLASHBUS32_16 38962102beeSMasahiro Yamada 39062102beeSMasahiro YamadaThe BKSZ[1:0] specifies the address range of memory slot and peripherals 39162102beeSMasahiro Yamadaas follows: 39262102beeSMasahiro Yamada 39362102beeSMasahiro Yamada BKSZ Description RAM slot Peripherals 39462102beeSMasahiro Yamada -------------------------------------------------------------------- 395c57a9a63SMasahiro Yamada 0b00 15MB RAM / 1MB Peri 00000000-00efffff 00f00000-00ffffff 396c57a9a63SMasahiro Yamada 0b01 31MB RAM / 1MB Peri 00000000-01efffff 01f00000-01ffffff 397c57a9a63SMasahiro Yamada 0b10 64MB RAM / 1MB Peri 00000000-03efffff 03f00000-03ffffff 398c57a9a63SMasahiro Yamada 0b11 127MB RAM / 1MB Peri 00000000-07efffff 07f00000-07ffffff 39962102beeSMasahiro Yamada 40062102beeSMasahiro YamadaSet BSKZ[1:0] to 0b01 for U-Boot. 40162102beeSMasahiro YamadaThis mode is the most handy because EA[24] is always supported by the save pin 40262102beeSMasahiro Yamadamode of the system bus. On the other hand, EA[25] is not supported for some 40362102beeSMasahiro Yamadanewer SoCs. Even if it is, EA[25] is not connected on most of the boards. 40462102beeSMasahiro Yamada 4057168da16SMasahiro Yamada-- 40662102beeSMasahiro YamadaMasahiro Yamada <yamada.masahiro@socionext.com> 407*9e19031cSMasahiro YamadaOct. 2017 408