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.
+So far only support for the RK3288 and RK3036 is provided.
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)
Building
========
-At present three RK3288 boards are supported:
+At present seven 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
+ - Tinker RK3288 - use tinker-rk3288 configuration
+ - PopMetal RK3288 - use popmetal-rk3288 configuration
+ - Radxa Rock 2 - use rock2 configuration
+
+Two RK3036 board are supported:
+
+ - EVB RK3036 - use evb-rk3036 configuration
+ - Kylin - use kylin_rk3036 configuration
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
=============================
To create a suitable image and write it to the board:
- ./firefly-rk3288/tools/mkimage -T rkimage -d \
+ ./firefly-rk3288/tools/mkimage -n rk3288 -T rkimage -d \
./firefly-rk3288/spl/u-boot-spl-dtb.bin out && \
cat out | openssl rc4 -K 7c4e0304550509072d2c7b38170d1711 | rkflashtool l
To write an image that boots from an SD card (assumed to be /dev/sdc):
- ./firefly-rk3288/tools/mkimage -T rksd -d \
+ ./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
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-level bootloader(ie. U-BOOT) as soon as it returns to bootrom.
+Therefore RK3288 has another loading sequence like RK3036. The option of
+U-Boot is controlled with this setting in U-Boot:
- DRAM: 2 GiB
- MMC:
- Using default environment
+ #define CONFIG_ROCKCHIP_SPL_BACK_TO_BROM
- 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 && \
+ cat evb-rk3036/u-boot-dtb.bin >> out && \
+ sudo dd if=out of=/dev/sdc seek=64
+
+Note: rk3036 SDMMC and debug uart use the same iomux, so if you boot from SD, the
+ debug uart must be disabled
+
+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):
- ./chromebook_jerry/tools/mkimage -T rkspi -d chromebook_jerry/spl/u-boot-spl-dtb.bin out
- dd if=spl.bin of=out.bin bs=128K conv=sync
- cat chromebook_jerry/u-boot-dtb.img out.bin
+ ./chromebook_jerry/tools/mkimage -n rk3288 -T rkspi \
+ -d chromebook_jerry/spl/u-boot-spl-dtb.bin spl.bin && \
+ dd if=spl.bin of=spl-out.bin bs=128K conv=sync && \
+ cat spl-out.bin chromebook_jerry/u-boot-dtb.img >out.bin && \
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
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)
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
----------------------------
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 <sjg@chromium.org>