Firefly-RK3399 Buy Specs

Equipped with a six-core 64-bit "server class" processor Rockchip RK3399, and with 2GB/4GB DDR3 and 16G/32GB eMMC, as well as increases PCIe 2.1 M.2, DP 1.2, Type-C, USB3.0 and other high-performance data transmission and display interface.

Build Kernel

Update time:2018-06-02 Views:11082

1 Before You Start

1.1 Initialize compiling environment

  • Ubuntu 14.04 packages install

$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip tar curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 cmake tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 lzop
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/ /usr/lib/i386-linux-gnu/

  • Install ARM cross compiling toolchain and related package to compile Linux kernel

$ sudo apt-get install gcc-arm-linux-gnueabihf \
gcc-aarch64-linux-gnu device-tree-compiler lzop libncurses5-dev \
libssl1.0.0 libssl-dev

1.2 Get the source code

git clone -b firefly

2 Compile Kernel

  • Before compiling, execute the following command

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
  • Compile firefly-rk3399

make firefly_linux_defconfig
make rk3399-firefly-linux.img -j4
  • Compile aio-3399j

make rk3399-firefly-aio-linux.img -j4

After the compilation is complete , the kernel.img and resource.img should be generated in the kernel folder.

If you need to compile a xxx.dts in the arch/arm64/boot/dts/rockchip/ directory, then

make xxx.img -j4

Flash partition images

3.1 View parameter file

 CMDLINE:console=ttyFIQ0 root=/dev/mmcblk1p6 rw rootwait \

be careful

root=/dev/mmcblk1p6                             ---> rootfs partition
If the size of the root file partition is abnormal,
 resize2fs /dev/mmcblk1p6
 0x0000A000@0x0000E000(kernel)        ---> kernel partition
 kernel                                                        --->  partition name
 0x0000E000                                             --->  partition start address
 0x0000A000                                            --->  partition size, generally do not need to pay attention

3.2 Linux upgrade_tool flash partition images( xx.img )

Note whether the corresponding name of the parameter partition corresponds to

sudo upgrade_tool di kernel kernel.img
sudo upgrade_tool di boot    rootfs.img
kernel                                                         --->  on the parameter partition name
kernel.img                                                 --->  Compiled production kernel.img partition image

3.3 Windows AndroidTool tool upgrade partition images

Note whether the starting address of the parameter partition corresponds to


3.4 Other partition images

Please reference Customize Firmware, unpack the official release firmware.

Modify Parameter File

The root file system can reside on different partitions in different storage devices (eMMC, TF card or USB disk, etc). It must be specified in the kernel's command line. There is a CMDLINE in the paramter file:

CMDLINE:console=ttyFIQ0 ... mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),...,-@0x00394000(user)

Add one of below according to your need: (# and contents after are comments, no need to enter):

root=/dev/block/mtd/by-name/linuxroot        # flash partition named "linuxroot"
root=/dev/mmcblk0p1          # First partition of TF card
root=/dev/sda1               # First partition of USB disk
root=LABEL=linuxroot         # Partition whose label is "linuxroot"

Flash to Device

Please reference Flash image, choose the newly created boot.img and modified parameter files, flash to "boot" and "parameter" partitions respectively. Then the kernel update is done.

If the root filesystem image is not flashed yet, you can download the prebuilt image, or customize your own one, and flash it to the partition specified in parameter file.