This guide provides information that help you get started with rockchip opensource linux. If you have any questions, please report to us in github.
We are providing 3 way to build rootfs including prebuilt Debian, Yocto, Buildroot. You can choose your prefer one by yourself.

Config Per Board

Every Board has its device tree file and config file required by the kernel and uboot. Therefore, you will need to choose the correct dts and config to build the source.Below list various Boards and the matching file.

board kernel uboot dts
rk3288-evb rockchip_linux_defconfig evb-rk3288_defconfig rk3288-evb-act8846.dtb or rk3288-evb-rk808.dts
rk3288-fennec rockchip_linux_defconfig fennec-rk3288_defconfig rk3288-fennec.dts
rk3288-miniarm rockchip_linux_defconfig tinker-rk3288_defconfig rk3288-miniarm.dts
rk3288-firefly rockchip_linux_defconfig firefly-rk3288_defconfig rk3288-firefly.dts
rk3328-evb rockchip_linux_defconfig evb-rk3328_defconfig rk3328-evb.dts
rk3399-excavator rockchip_linux_defconfig evb-rk3399_defconfig rk3399-sapphire-excavator-linux.dts
rk3036-kylin rockchip_linux_defconfig kylin-rk3036_defconfig rk3036-kylin.dts

Config Per Chip

chip Kernel eMMC index Kernel SD index Uboot eMMC index Uboot SD index Baud speed
rk3399 1 0 0 1 1500000
rk3288 2 0 0 1 115200
rk3036 2 0 0 - 115200

Getting the Boards

If you need the development board,you can through the following contact information.

Telephone: 4007700590     Email: service@rock-chips.com

Getting the Sources

The rockchip linux SDK source tree is located in multi Git repository hosted by Github. The SDK uses repo to sync down source code.
Create an empty directory to hold your working files.

mkdir rk-linux
cd rk-linux

To initialize Linux SDK source tree

repo init -u https://github.com/rockchip-linux/manifests
repo sync


repo init -u https://github.com/rockchip-linux/manifests -b yocto
repo sync


repo init -u https://github.com/rockchip-linux/manifests -b buildroot
repo sync

Building the Sources

The steps below aren't suitable to all board, don't forget to choose correct option for your board!

Build environment

Please use GCC 5

$ sudo apt-get install git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu     mtools parted pv

Building kernel

Installing the build tools and download source

Please follow linux user guide to install the build tools and download source.

Compile the kernel:

For ARM v7

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- rockchip_linux_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

For ARM V8

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- rockchip_linux_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4

Building uboot

Installing the build tools and download source

Please follow linux user guide to install the build tools and download source.

Compile the Uboot

You should choose your board defconfig from here. ie. we are using evb-rk3288.

CROSS_COMPILE=arm-linux-gnueabihf- make evb-rk3288_defconfig all


Now you can get u-boot SPL and u-boot image, but please notices that in some platform or station(like secure-os), we will not use the u-boot SPL.

There are two feasible way to boot to u-boot.
1. RK SPL bin(DDR.bin, miniloader)
2. official u-boot SPL

The following wiki is writed for using u-boot SPL. If you are using a miniloader, you might need modify the steps.

Building rootfs


Yu can download the prebuit image directly.

Baidu PanGoogle Drive

or you could use the rootfs-build-script from Rockchip to build rootfs yourselves.


If you want to use Yocto to build your rootfs see yocto-user-guide for detail.


If you want to use Buildroot to build your rootfs see buildroot-user-guide for detail.

Booting the Board

Get Tool and Firmware


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 holding the maskrom button when you boot the board.

Please refer to the following link:

Using build sciprt

The above steps are really inconvenient, so we have provided some build scripts which essentially wraps those commands.

Please note that those scripts are assumed your directory structure is same with the one created by manifest.

compile kernel

build/mk-kernel.sh rk3288-firefly

compile uboot

build/mk-uboot.sh rk3288-firefly

pack kernel and extlinux as boot.img

`extlinux.conf` template is under `build/extlinux`.

build/mk-image.sh -c rk3288 -t boot

pack one image

`s` is size in Mbyte, `r` is your rootfs image location.

build/mk-image.sh -c rk3288 -t system -s 3000 -r rk-debian-build/linaro-rootfs.img

flash image

Please note that you must flash system image before burning the other single image. (To write gpt partitions)
`p` is the target partiton which is defined in partition.sh, `i` is your image location.

You must get your board into ROM boot mode.
If your board can't easily enter maskrom(e.g. firefly), you'd better use sd-card.
If your board is packed, i recommend to use ums or fastboot(issuing "reboot ums" when in linux).

build/flash_tool.sh  -c rk3288 -p system  -i  out/system.img

SD Card:
`d` is your target device

build/flash_tool.sh -c rk3288 -p loader  -i  out/u-boot.out -d /dev/sdb

Some cases

first using

build/mk-kernel.sh rk3288-firefly
build/mk-uboot.sh rk3288-firefly
build/mk-image.sh -c rk3288 -t boot
build/mk-image.sh -c rk3288 -t system -s 3000 -r rk-debian-build/linaro-rootfs.img
build/flash_tool.sh -p system -i out/system.img

update kernel

build/mk-kernel.sh rk3288-firefly
build/mk-image.sh -c rk3288 -t boot
build/flash_tool.sh -p boot -i out/boot.img

update uboot

build/mk-uboot.sh rk3288-firefly

build/flash_tool.sh -p loader -i out/u-boot.out

Developer Guide

Kernel Drivers Guide

Userspace Application Guide