Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search


< Rock5‎ | guide
Revision as of 06:35, 10 January 2024 by Yanw (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This page is a step-by-step tutorial how to build Rock 5 serail board Android12 image.


   radxa$ wget '' -P /tmp/
   radxa$ sudo cp /tmp/repo /usr/local/bin/repo
   radxa$ sudo chmod +x /usr/local/bin/repo

In China Download Repo:

   radxa$ echo "export REPO_URL=''" >> ~/.bashrc
   radxa$ source ~/.bashrc
   radxa$ curl -o /tmp/repo
   radxa$ sudo cp /tmp/repo /usr/local/bin/repo
   radxa$ sudo chmod +x /usr/local/bin/repo


   FROM ubuntu:xenial

   RUN apt-get update -y && apt-get install -y openjdk-8-jdk python git-core gnupg flex bison gperf build-essential \
       zip curl liblz4-tool zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
       lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
       libgl1-mesa-dev libxml2-utils xsltproc unzip mtools u-boot-tools \
       htop iotop sysstat iftop pigz bc device-tree-compiler lunzip \
       dosfstools vim-common parted udev libssl-dev python3 python-pip lzop swig

   #### For China
   RUN curl > /usr/local/bin/repo && \
       chmod +x /usr/local/bin/repo && \
       which repo
   #### For China End

   RUN pip install pycrypto
   ENV USER=android12-docker
   RUN groupadd -g ${GROUP_ID} jenkins-docker && useradd -m -g jenkins-docker -u ${USER_ID} android12-docker

   USER android12-docker

Build DockerFile

   radxa$ docker build -t android-builder:12.x --build-arg USER_ID=`id -u` --build-arg GROUP_ID=`id -g` $(which-dir-dockerfile-in)

Download source code

   $ mkdir rock-android12
   $ cd rock-android12

Then run:

  radxa:rock-android12 $ repo init -u -b Android12_RK3588_Radxa_rk14 -m rockchip-s-release.xml
  radxa:rock-android12 $ repo sync -d  -j4


Use all-in-one build script

  radxa:rock-android12 $ source build/
  radxa:rock-android12 $ lunch RadxaRock5B-userdebug
  radxa:rock-android12 $ ./ -UACKup
  # get images from IMAGE directory

Step by step Build

If you dont' want to use "Use all-in-one build script", you can follow this way to build image step by step.

Setup board environment

  # for Rock 5B
  radxa:rock-android12 $ export PRODUCT_NAME="RadxaRock5B"
  radxa:rock-android12 $ export PRODUCT_UBOOT_CONFIG="rk3588"
  radxa:rock-android12 $ export PRODUCT_KERNEL_CONFIG="rockchip_defconfig"
  radxa:rock-android12 $ export PRODUCT_KERNEL_DTS="rk3588-rock-5b"

Build u-boot

  radxa:rock-android12 $ cd u-boot
  radxa:rock-android12/u-boot $ make clean
  radxa:rock-android12/u-boot $ make mrproper
  radxa:rock-android12/u-boot $ make distclean
  radxa:rock-android12/u-boot $ ./ ${PRODUCT_UBOOT_CONFIG}
  radxa:rock-android12 $ cd -

The generated images are idbloader.img , and uboot.img

Building kernel

Android 12.0 cannot directly burn kernel.img and resource.img, kernel.img and resource.img are included in boot.img

  radxa:rock-android12 $ cd kernel-5.10
  radxa:rock-android12/kernel-5.10 $ export PATH=../prebuilts/clang/host/linux-x86/clang-r416183b/bin:$PATH
  radxa:rock-android12/kernel-5.10 $ alias msk='make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1'
  radxa:rock-android12/kernel-5.10 $ msk ARCH=arm64 rockchip_defconfig android-11.config rock5b.config
  radxa:rock-android12/kernel-5.10 $ msk ARCH=arm64 BOOT_IMG=../rockdev/Image-RadxaRock5B/boot.img rk3588-rock-5b.img
  radxa:rock-android12 $ cd -

After compiling, you can directly burn the boot.img in the kernel-5.10 directory to the boot location of the machine. Please load the partition table first when burning (parameter.txt), so as not to burn the wrong location.

Building AOSP

  radxa:rock-android12 $ source build/
  radxa:rock-android12 $ lunch ${PRODUCT_NAME}-userdebug
  radxa:rock-android12 $ make -j$(nproc)

It takes a long time, take a break and wait...

Make images

  radxa:rock-android12 $ rm -rf rockdev
  radxa:rock-android12 $ ln -s RKTools/linux/Linux_Pack_Firmware/rockdev .
  radxa:rock-android12 $ ./

Pack Image

  radxa:rock-android12 $ cd rockdev
  radxa:rock-android12/rockdev $ rm -rf Image
  radxa:rock-android12/rockdev $ ln -s Image-${PRODUCT_NAME} Image

1. RkUpdate Image

  radxa:rock-android12/rockdev $ ./ rk3588 Image

The images under rockdev/ are `update.img`

2. gpt Image

  radxa:rock-android12/rockdev $ ./