So far only support for the RK3036, RK3288 and RK3399 is provided.
You will need:

  • 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)
  • rkflashtool [3]
  • openssl (sudo apt-get install openssl)
  • Serial UART connection [4]
  • Suitable ARM cross compiler, e.g.:
  • sudo apt-get install gcc-4.7-arm-linux-gnueabi

Building

At present seven RK3288 boards are supported:

  1. EVB RK3288 - use evb-rk3288 configuration
  2. Fennec RK3288 - use fennec-rk3288 configuration
  3. Firefly RK3288 - use firefly-rk3288 configuration
  4. Hisense Chromebook - use chromebook_jerry configuration
  5. Miniarm RK3288 - use miniarm-rk3288 configuration
  6. PopMetal RK3288 - use popmetal-rk3288 configuration
  7. Radxa Rock 2 - use rock2 configuration

Two RK3036 board are supported:

  1. EVB RK3036 - use evb-rk3036 configuration
  2. Kylin - use kylin_rk3036 configuration

For example:

   CROSS_COMPILE=arm-linux-gnueabi- make O=firefly evb-rk3288_defconfig all

(or you can use another cross compiler if you prefer)

Booting from an SD card

To write an image that boots from an SD card (assumed to be /dev/sdc):

   ./evb-rk3288/tools/mkimage -n rk3288 -T rksd -d \
    evb-rk3288/spl/u-boot-spl-dtb.bin out && \
   sudo dd if=out of=/dev/sdc seek=64 && \
   sudo dd if=evb-rk3288/u-boot-dtb.img of=/dev/sdc seek=256

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
corresponds with this setting in U-Boot:

   #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR    256

Put this SD (or micro-SD) card into your board and reset it. You should see
something like:

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: elosnocdiv.000049ff|pov#elosnocdiv.000049ff|pov
Err: serial
Net: Net Initialization Skipped
No ethernet found.
Hit any key to stop autoboot: 0
=>

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:

    #define CONFIG_ROCKCHIP_SPL_BACK_TO_BROM

You can create the image via the following operations:

   ./evb-rk3288/tools/mkimage -n rk3288 -T rksd -d \
    evb-rk3288/spl/u-boot-spl-dtb.bin out && \
   cat evb-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

Writing to the board with USB

For USB to work you must get your board into ROM boot mode, either by erasing
your MMC or (perhaps) holding the maskrom button when you boot the board.
To erase your MMC, you can boot into Linux and type (as root)

dd if=/dev/zero of=/dev/mmcblk0 bs=1M

Connect your board's OTG port to your computer.

To create a suitable image and write it to the board:

   ./evb-rk3288/tools/mkimage -n rk3288 -T rksd -d \
    ./evb-rk3288/spl/u-boot-spl-dtb.bin out && \
   cat out | openssl rc4 -K 7c4e0304550509072d2c7b38170d1711 | rkflashtool l

If all goes well you should something like:

U-Boot SPL 2015.07-rc1-00383-ge345740-dirty (Jun 03 2015 - 10:06:49)
Card did not respond to voltage select!
spl: mmc init failed with error: -17
### ERROR ### Please RESET the board ###

You will need to reset the board before each time you try. Yes, that's all
it does so far. If support for the Rockchip USB protocol or DFU were added
in SPL then we could in principle load U-Boot and boot to a prompt from USB
as several other platforms do. However it does not seem to be possible to
use the existing boot ROM code from SPL.