RK3036 Linux user guide

From Rockchip open source Document
Jump to: navigation, search


This guide provides information which will help you get started with rockchip opensource linux. If you have any questions, please report to us on github project issue page.

We are providing 3 ways to build rootfs including prebuilt Debian, Yocto, Buildroot. You can choose the way you prefer. (Please check the Software Status because different chips have a different support)

You will need below firmware/image for a full Linux OS and flash them to different locations:

  • U-Boot SPL/Rockchip miniloader
  • U-Boot
  • boot(including kernel, dtb and config file)
  • rootfs(Debian, Ycoto, Buildroot etc.)

Before starting to develop, please refer to board config and how-to to choose a most matching config as the foundation.



Note that our development environment is Ubuntu, you can use 16.04 or later version(with downgraded arm gcc).

Debian-9  and Docker-Rockchip are also available.

Ubuntu 14.04 is deprecated, we don't guarantee that Linux SDK can work on it. (Recommneded >= 16.04)

Here are some necessary packages for building the project.

$ 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 libudev-dev libusb-1.0-0-dev libssl-dev pv e2fsprogs build-essential fakeroot devscripts

If you insist on developing on your own environment, please make sure the version of gcc-arm-linux-gnueabihf and gcc-aarch64-linux-gnu is less than 6.

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, you need to get repo first

sudo apt-get install repo

Basic Linux SDK(standalone kernel/u-boot/rootfs, the default  rootfs is Debian)

repo init --repo-url=https://github.com/rockchip-linux/repo -u https://github.com/rockchip-linux/manifests -b master -m rk3036.xml
repo sync

 Yocto  (If you want to use the Yocto as rootfs)

repo init --repo-url=https://github.com/rockchip-linux/repo -u https://github.com/rockchip-linux/manifests -b yocto -m pyro.xml
repo sync

Buildroot (If you want to use the  Buildroot as rootfs)

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

Below guides are based on basic Linux SDK, guides for yocto/buildroot could be found in the separate page.


Quick start

ref : partition, rockusb, boot

We have provide build scripts which essentially wraps the commands, so you can quickly start your development by them.

Please note that those scripts are assumed your directory structure is same with the one created by manifest. We use rk3036-kylin as example. You can change rk3036-kylin to any other board supported.

compile kernel:

build/mk-kernel.sh rk3036-kylin

compile uboot:

build/mk-uboot.sh rk3036-kylin

compile rootfs:

follow readme.md in rk-rootfs-build

cd rootfs
sudo apt-get install binfmt-support qemu-user-static
sudo dpkg -i ubuntu-build-service/packages/*
sudo apt-get install -f

1) Build the base:
   RELEASE=stretch TARGET=desktop ARCH=armhf ./mk-base-debian.sh

2) Building the rk-debian rootfs:
   RELEASE=stretch ARCH=armhf ./mk-rootfs.sh
   or Building the rk-debain rootfs with debug:
   VERSION=debug ARCH=armhf ./mk-rootfs-stretch.sh 

3) Creating the ext4 image(linaro-rootfs.img):
   Generate the linaro-rootfs.img for rootfs


Pack all parts to a complete image (Option)

`c` is chip,  `t` is the generate image, `r` is your rootfs image (prebuilt debian image) location. Here we use rk3036 as example. You can change it to any other supported chips(ie. rk3288, rk3328, rk3399).

cd ../rootfs
build/mk-image.sh -c rk3036 -t system -r rootfs/linaro-rootfs.img

Lastly, generate the system.img for out/


flash image:

eMMC (Ensure the board is in maskrom mode. maskrom, Not rockusb! ):

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


update kernel:

(Ensure the board is in maskrom mode. maskrom, Not rockusb! ):

build/mk-kernel.sh rk3036-kylin
build/flash_tool.sh -c rk3036 -p boot -i out/boot.img


update uboot:

(Ensure the board is in maskrom mode. maskrom, Not rockusb! ):

build/mk-uboot.sh rk3036-kylin
build/flash_tool.sh -c rk3036 -p loader1 -i out/u-boot/idbloader.img

Before asking questions, please, read references and follow the setp by setp guide to boot your device.

It's better if you can study those build scripts.

Please refer to AndroidFlashTool(TODO: wiki) for flashing image on Windows. (For the first time, it's recommended to use a linux host, to save the time.)


See also

U-Boot guide

Rockchip kernel guide

Yocto guide

Buildroot guide