Build AOSP for ROCK960

Build environment setup

Recommend build host is Ubuntu 16.04 64bit, for other hosts, refer official Android documents Establishing a Build Environment.

$ mkdir -p ~/bin
$ wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P ~/bin
$ chmod +x ~/bin/repo

Android’s source code primarily consists of Java, C++, and XML files. To compile the source code, you’ll need to install OpenJDK 8, GNU C and C++ compilers, XML parsing libraries, ImageMagick, and several other related packages.

$ sudo apt-get update
$ sudo apt-get install 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 lzop

Configure the JAVA environment

$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
$ export PATH=$JAVA_HOME/bin:$PATH
$ export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

Download source code

$ mkdir rock960-android9
$ cd rock960-android9

Then run:

$ ~/bin/repo init -u https://github.com/96rocks/manifests.git -b rock960-box-9.0 -m rock960_release.xml
$ repo sync -j$(nproc) -c

It might take quite a bit of time to fetch the entire AOSP source code(around 86G)!

Build u-boot

$ cd u-boot
$ ./make.sh rk3399
$ cd ..

The generated images are rk3399_loader_v_xxx.bin and uboot.img

Building kernel

$ cd kernel
$ make rockchip_defconfig
# rock960 mode ab
$ make rk3399-rock960-model-ab.img -j$(nproc)
# rock960 mode c
$ make rk3399-rock960-model-c.img -j$(nproc)
$ cd ..

The generated images are kernel.img and resource.img:

  • kernel.img, kernel with rkcrc checksum
  • resource.img, contains dtb and boot logo, Rockchip format resource package

Building AOSP

$ source build/envsetup.sh
# Tv Box
$ lunch rk3399_box-userdebug
# Tablet
$ lunch rk3399-userdebug
$ make -j$(nproc)

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

Package images

$ ln -s RKTools/linux/Linux_Pack_Firmware/rockdev/ rockdev
$ ./mkimage.sh

Generate rkupdate images

Pack all partitions into one image.

$ cd rockdev
# for rk3399_box
$ ln -s Image-rk3399_box Image
# for rk3399
$ ln -s Image-rk339 Image
$ ./mkupdate.sh
Start to make update.img...
Android Firmware Package Tool v1.62
------ PACKAGE ------
Add file: ./package-file
Add file: ./Image/MiniLoaderAll.bin
Add file: ./Image/parameter.txt
Add file: ./Image/trust.img
Add file: ./Image/uboot.img
Add file: ./Image/misc.img
Add file: ./Image/resource.img
Add file: ./Image/kernel.img
Add file: ./Image/boot.img
Add file: ./Image/recovery.img
Add file: ./Image/system.img
Add CRC...
Make firmware OK!
------ OK ------
********RKImageMaker ver 1.63********
Generating new image, please wait...
Writing head info...
Writing boot file...
Writing firmware...
Generating MD5 data...
MD5 data generated successfully!
New image generated successfully!
Making update.img OK.

update.img is the packed image with all partitions.

Generate gpt images

Pack all partitions into one gpt image.

$ cd rockdev
$ ./android-gpt.sh
IMAGE_LENGTH:9018403
simg2img system.img
simg2img vendor.img
simg2img oem.img
idbloader       64              16383           8.000000       MB
Warning: The resulting partition is not properly aligned for best performance.
uboot           16384           24575           4.000000       MB
trust           24576           32767           4.000000       MB
misc            32768           40959           4.000000       MB
resource        40960           73727           16.000000      MB
kernel          73728           139263          32.000000      MB
dtb             139264          147455          4.000000       MB
dtbo            147456          155647          4.000000       MB
vbmeta          155648          157695          1.000000       MB
boot            157696          223231          32.000000      MB
recovery        223232          354303          64.000000      MB
backup          354304          583679          112.000000     MB
security        583680          591871          4.000000       MB
cache           591872          1640447         512.000000     MB
system          1640448         6883327         2560.000000    MB
metadata        6883328         6916095         16.000000      MB
vendor          6916096         7964671         512.000000     MB
oem             7964672         9013247         512.000000     MB
frp             9013248         9014271         0.500000       MB
userdata        9014272         9014271         0.000000       MB
Warning: The resulting partition is not properly aligned for best performance.

Will be generated Image/gpt.img

Proceed to Installation Instructions