X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=doc%2FREADME.rockchip;h=ec10ebbc26078c606aba11a9c9b77cd53541e648;hb=1f4ae66eaab29bfb5d1eb44996f7826c9cd01ed1;hp=9a2ebca95df668cc11af1858d8877b1bc00df6a3;hpb=774da4b9aadeea4d6973a16debc02a6801ff9344;p=oweals%2Fu-boot.git diff --git a/doc/README.rockchip b/doc/README.rockchip index 9a2ebca95d..ec10ebbc26 100644 --- a/doc/README.rockchip +++ b/doc/README.rockchip @@ -1,20 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0+ # # Copyright (C) 2015 Google. Inc # Written by Simon Glass -# -# SPDX-License-Identifier: GPL-2.0+ -# U-Boot on Rockchip ================== -There are several repositories available with versions of U-Boot that support -many Rockchip devices [1] [2]. - -The current mainline support is experimental only and is not useful for -anything. It should provide a base on which to build. - -So far only support for the RK3288 is provided. +A wide range of Rockchip SoCs are supported in mainline U-Boot Prerequisites @@ -22,7 +14,7 @@ Prerequisites You will need: - - Firefly RK3288 baord + - Firefly RK3288 board or something else with a supported RockChip SoC - Power connection to 5V using the supplied micro-USB power cable - Separate USB serial cable attached to your computer and the Firefly (connect to the micro-USB connector below the logo) @@ -36,15 +28,63 @@ You will need: Building ======== -At present three RK3288 boards are supported: +At present 12 RK3288 boards are supported: + - EVB RK3288 - use evb-rk3288 configuration + - Fennec RK3288 - use fennec-rk3288 configuration - Firefly RK3288 - use firefly-rk3288 configuration - - Radxa Rock 2 - also uses firefly-rk3288 configuration - - Haier Chromebook - use chromebook_jerry configuration + - Hisense Chromebook - use chromebook_jerry configuration + - Asus C100P Chromebook - use chromebook_minnie configuration + - Asus Chromebit - use chromebook_mickey configuration + - MiQi RK3288 - use miqi-rk3288 configuration + - phyCORE-RK3288 RDK - use phycore-rk3288 configuration + - PopMetal RK3288 - use popmetal-rk3288 configuration + - Radxa Rock 2 - use rock2 configuration + - Tinker RK3288 - use tinker-rk3288 configuration + - Vyasa RK3288 - use vyasa-rk3288 configuration + +Two RK3036 boards are supported: + + - EVB RK3036 - use evb-rk3036 configuration + - Kylin - use kylin_rk3036 configuration + +One RK3328 board is supported: + + - EVB RK3328 + +Size RK3399 boards are supported (aarch64): + + - EBV RK3399 - use evb_rk3399 configuration + - Firefly RK3399 - use the firefly_rk3399 configuration + - Puma - use puma_rk3399 configuration + - Ficus - use ficus-rk3399 configuration + - Rock960 (Vamrs) - use rock960-rk3399 configuration + - Bob - use chromebook_bob configuration + +Four RK3368 boards are supported: + + - Sheep - use sheep-rk3368 configuration + - Lion - use lion-rk3368 configuration + - Geekbox - use geekbox configuration + - EVB PX5 - use evb-px5 configuration + +One RK3128 board is supported: + + - EVB RK3128 - use evb-rk3128 configuration + +One RK3229 board is supported: + + - EVB RK3229 - use evb-rk3229 configuration -one RK3036 board is support: +Two RV1108 boards are supported: + + - EVB RV1108 - use evb-rv1108 configuration + - Elgin R1 - use elgin-rv1108 configuration + +One RV3188 baord is supported: + + - Raxda Rock - use rock configuration - - EVB RK3036 - use evb-rk3036_defconfig configuration For example: @@ -52,11 +92,6 @@ For example: (or you can use another cross compiler if you prefer) -Note that the Radxa Rock 2 uses the Firefly configuration for now as -device tree files are not yet available for the Rock 2. Clearly the two -have hardware differences, so this approach will break down as more drivers -are added. - Writing to the board with USB ============================= @@ -97,30 +132,47 @@ To write an image that boots from an SD card (assumed to be /dev/sdc): ./firefly-rk3288/tools/mkimage -n rk3288 -T rksd -d \ firefly-rk3288/spl/u-boot-spl-dtb.bin out && \ sudo dd if=out of=/dev/sdc seek=64 && \ - sudo dd if=firefly-rk3288/u-boot-dtb.img of=/dev/sdc seek=256 + sudo dd if=firefly-rk3288/u-boot-dtb.img of=/dev/sdc seek=16384 This puts the Rockchip header and SPL image first and then places the U-Boot -image at block 256 (i.e. 128KB from the start of the SD card). This +image at block 16384 (i.e. 8MB from the start of the SD card). This corresponds with this setting in U-Boot: - #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 256 + #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x4000 Put this SD (or micro-SD) card into your board and reset it. You should see something like: - U-Boot SPL 2015.07-rc1-00383-ge345740-dirty (Jun 03 2015 - 11:04:40) + U-Boot 2016.01-rc2-00309-ge5bad3b-dirty (Jan 02 2016 - 23:41:59 -0700) + Model: Radxa Rock 2 Square + DRAM: 2 GiB + MMC: dwmmc@ff0f0000: 0, dwmmc@ff0c0000: 1 + *** Warning - bad CRC, using default environment + + In: serial + Out: vop@ff940000.vidconsole + Err: serial + Net: Net Initialization Skipped + No ethernet found. + Hit any key to stop autoboot: 0 + => - U-Boot 2015.07-rc1-00383-ge345740-dirty (Jun 03 2015 - 11:04:40) +The rockchip bootrom can load and boot an initial spl, then continue to +load a second-stage bootloader (ie. U-Boot) as soon as the control is returned +to the bootrom. Both the RK3288 and the RK3036 use this special boot sequence. +The configuration option enabling this is: - DRAM: 2 GiB - MMC: - Using default environment + CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y - In: serial@ff690000 - Out: serial@ff690000 - Err: serial@ff690000 - => +You can create the image via the following operations: + + ./firefly-rk3288/tools/mkimage -n rk3288 -T rksd -d \ + firefly-rk3288/spl/u-boot-spl-dtb.bin out && \ + cat firefly-rk3288/u-boot-dtb.bin >> out && \ + sudo dd if=out of=/dev/sdc seek=64 + +If you have an HDMI cable attached you should see a video console. For evb_rk3036 board: ./evb-rk3036/tools/mkimage -n rk3036 -T rksd -d evb-rk3036/spl/u-boot-spl.bin out && \ @@ -130,10 +182,80 @@ For evb_rk3036 board: Note: rk3036 SDMMC and debug uart use the same iomux, so if you boot from SD, the debug uart must be disabled + +Booting from an SD card on RK3288 with TPL +========================================== + +Since the size of SPL can't be exceeded 0x8000 bytes in RK3288, it is not possible add +new SPL features like Falcon mode or etc. + +So introduce TPL so-that adding new features to SPL is possible because now TPL should +run minimal with code like DDR, clock etc and rest of new features in SPL. + +As of now TPL is added on Vyasa-RK3288 board. + +To write an image that boots from an SD card (assumed to be /dev/mmcblk0): + + ./tools/mkimage -n rk3288 -T rksd -d ./tpl/u-boot-tpl.bin out && + cat ./spl/u-boot-spl-dtb.bin >> out && + sudo dd if=out of=/dev/mmcblk0 seek=64 && + sudo dd if=u-boot-dtb.img of=/dev/mmcblk0 seek=16384 + +Booting from an SD card on RK3188 +================================= + +For rk3188 boards the general storage onto the card stays the same as +described above, but the image creation needs a bit more care. + +The bootrom of rk3188 expects to find a small 1kb loader which returns +control to the bootrom, after which it will load the real loader, which +can then be up to 29kb in size and does the regular ddr init. This is +handled by a single image (built as the SPL stage) that tests whether +it is handled for the first or second time via code executed from the +boot0-hook. + +Additionally the rk3188 requires everything the bootrom loads to be +rc4-encrypted. Except for the very first stage the bootrom always reads +and decodes 2kb pages, so files should be sized accordingly. + +# copy tpl, pad to 1020 bytes and append spl +tools/mkimage -n rk3188 -T rksd -d spl/u-boot-spl.bin out + +# truncate, encode and append u-boot.bin +truncate -s %2048 u-boot.bin +cat u-boot.bin | split -b 512 --filter='openssl rc4 -K 7C4E0304550509072D2C7B38170D1711' >> out + + +Using fastboot on rk3288 +======================== +- Write GPT partition layout to mmc device which fastboot want to use it to +store the image + + => gpt write mmc 1 $partitions + +- Invoke fastboot command to prepare + + => fastboot 1 + +- Start fastboot request on PC + + fastboot -i 0x2207 flash loader evb-rk3288/spl/u-boot-spl-dtb.bin + +You should see something like: + + => fastboot 1 + WARNING: unknown variable: partition-type:loader + Starting download of 357796 bytes + .. + downloading of 357796 bytes finished + Flashing Raw Image + ........ wrote 357888 bytes to 'loader' + Booting from SPI ================ -To write an image that boots from SPI flash (e.g. for the Haier Chromebook): +To write an image that boots from SPI flash (e.g. for the Haier Chromebook or +Bob): ./chromebook_jerry/tools/mkimage -n rk3288 -T rkspi \ -d chromebook_jerry/spl/u-boot-spl-dtb.bin spl.bin && \ @@ -142,7 +264,7 @@ To write an image that boots from SPI flash (e.g. for the Haier Chromebook): dd if=out.bin of=out.bin.pad bs=4M conv=sync This converts the SPL image to the required SPI format by adding the Rockchip -header and skipping every 2KB block. Then the U-Boot image is written at +header and skipping every second 2KB block. Then the U-Boot image is written at offset 128KB and the whole image is padded to 4MB which is the SPI flash size. The position of U-Boot is controlled with this setting in U-Boot: @@ -169,22 +291,15 @@ When booting you should see something like: Err: serial@ff690000 => - Future work =========== Immediate priorities are: -- GPIO (driver exists but is lightly tested) -- I2C (driver exists but is non-functional) - USB host - USB device -- PMIC and regulators (only ACT8846 is supported at present) -- LCD and HDMI -- Run CPU at full speed -- Ethernet +- Run CPU at full speed (code exists but we only see ~60 DMIPS maximum) - NAND flash -- Support for other Rockchip parts - Boot U-Boot proper over USB OTG (at present only SPL works) @@ -243,6 +358,12 @@ SPI flash. See above for instructions on how to write a SPI image. +rkmux.py +-------- + +You can use this script to create #defines for SoC register access. See the +script for usage. + Device tree and driver model ---------------------------- @@ -253,6 +374,15 @@ overhead and in SPL with a 32KB size limit some shortcuts have been taken. In general all Rockchip drivers should use these features, with SPL-specific modifications where required. +GPT partition layout +---------------------------- + +Rockchip use a unified GPT partition layout in open source support. +With this GPT partition layout, uboot can be compatilbe with other components, +like miniloader, trusted-os, arm-trust-firmware. + +There are some documents about partitions in the links below. +http://rockchip.wikidot.com/partitions -- Simon Glass