AOSP on DragonBoard 845c


Getting started with db845c


Learn about your DragonBoard 845c board as well as how to prepare and set up for basic use from 96boards db845c getting started page https://www.96boards.org/documentation/consumer/dragonboard/dragonboard845c/getting-started/rb3-kit/.

Make sure you are running AOSP (ptable compatible) bootloader on db845c. Latest bootloader binaries (build #26 and above) are hosted at http://snapshots.linaro.org/96boards/dragonboard845c/linaro/rescue/.

For flashing instructions checkout 96boards db845c board recovery page https://www.96boards.org/documentation/consumer/dragonboard/dragonboard845c/installation/board-recovery.md.html.

NOTE:

You can also update bootloader binaries by running flashall script, which is part of installer package of db845c AOSP build target. Boot in fastboot mode and run following command from your HOST machine:

   1 git clone https://android.googlesource.com/device/linaro/dragonboard
   2 cd dragonboard/installer/db845c/dragonboard-845c-bootloader-ufs-aosp/
   3 ./flashall

Install pre-built AOSP images on db845c


Linaro create daily userspace only AOSP build for db845c that user can download, flash and boot from. If you are interested in prebuilt AOSP images for db845c and want to avoid compiling your own, feel free to download ramdisk.img, super.img and userdata.img from http://snapshots.linaro.org/96boards/dragonboard845c/linaro/aosp-master/.

Flash downloaded AOSP images by running following commands, while booted in fastboot mode:

   1 fastboot flash userdata userdata.img
   2 fastboot flash super super.img

Building kernel and boot.img for db845c outside of AOSP


We no longer provide Pre-built db845c kernel images. Please build the kernel image (Image.gz-dtb) and corresponding boot.img from dragonboard-android-mainline-tracking tree hosted at https://git.linaro.org/people/amit.pundir/linux.git/log/?h=dragonboard-android-mainline-tracking.

1(a). Preferred method to build Dragonboard db845c Android kernel (Image.gz-dtb) is through repo build. Run the following commands to clone the kernel source, prebuilt Android toolchains and build scripts.

   1 repo init -u https://android.googlesource.com/kernel/manifest -b common-android-5.4
   2 git clone https://android-git.linaro.org/git/kernel/manifest.git .repo/local_manifests -b linaro
   3 repo sync -j`nproc` -c
   4 ./build/build.sh
   5 cat out/dragonboard-android-mainline-tracking/dist/Image.gz out/dragonboard-android-mainline-tracking/dist/sdm845-db845c.dtb > Image.gz-dtb-db845c

If you want to build db845c kernel using standard build instructions then follow the following instructions.

1(b). To build with Android clang toolchain:

Prerequisite is that you have alreadey downloaded AOSP and lunched db845c-userdebug build target

   1 git clone https://git.linaro.org/people/amit.pundir/linux.git -b dragonboard-android-mainline-tracking
   2 cd linux
   3 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-androidkernel- CLANG_TRIPLE=aarch64-linux-gnu- CC=clang -j`nproc` db845c_defconfig
   4 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-androidkernel- CLANG_TRIPLE=aarch64-linux-gnu- CC=clang -j`nproc` Image.gz qcom/sdm845-db845c.dtb
   5 cat arch/arm64/boot/Image.gz arch/arm64/boot/dts/qcom/sdm845-db845c.dtb > arch/arm64/boot/Image.gz-dtb

1(c). To build with stock aarch64-linux-gnu GCC toolchain:

   1 git clone https://git.linaro.org/people/amit.pundir/linux.git -b dragonboard-android-mainline-tracking
   2 cd linux
   3 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- db845c_defconfig
   4 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image.gz qcom/sdm845-db845c.dtb -j`nproc`
   5 cat arch/arm64/boot/Image.gz arch/arm64/boot/dts/qcom/sdm845-db845c.dtb > Image.gz-dtb

2. Create bootimage using AOSP ramdisk.img and Image.gz-dtb built above:

* Run following mkbootimg command to create boot.img:

   1 mkbootimg --kernel Image.gz-dtb --ramdisk ramdisk.img \
   2 --base 0x80000000 --pagesize 2048 \
   3 --cmdline "firmware_class.path=/vendor/firmware \
   4 androidboot.hardware=db845c init=/init \
   5 androidboot.boot_devices=soc/1d84000.ufshc
   6 printk.devkmsg=on buildvariant=userdebug" \
   7 --output boot.img

where, ramdisk.img can be downloaded from daily builds if you are using one of the daily build images. Otherwise use the ramdisk.img created as part of AOSP build for db845c. Then boot test your new kernel image by running following command:

   1 fastboot boot boot.img

* Alternatively if you have already build AOSP images locally then you can also flash all AOSP images including boot.img (created on the fly) by running installer/db845c/flash-all-aosp.sh script and passing your kernel prebuilt image path as parameter. For example:

   1 ./installer/db845c/flash-all-aosp.sh ${LOCAL_PATH}/Image.gz-dtb-db845c

Compile AOSP from sources for db845c


1. Download the AOSP source tree and build db845c-userdebug build target:

   1 repo init -u https://android.googlesource.com/platform/manifest -b master
   2 repo sync -j`nproc`
   3 source ./build/envsetup.sh
   4 lunch db845c-userdebug
   5 make -j`nproc`

3. Install:

Boot db845c into fastboot mode by following https://www.96boards.org/documentation/consumer/dragonboard/dragonboard845c/installation/board-recovery.md.html and run following command:

   1 ./device/linaro/dragonboard/installer/db845c/flash-all-aosp.sh

You can also perform QDL board recovery by running following script after booting db845c in USB flashing mode https://www.96boards.org/documentation/consumer/dragonboard/dragonboard845c/installation/board-recovery.md.html.

   1 ./device/linaro/dragonboard/installer/db845c/recovery.sh

ToDo / Known Issues


  • Wifi, BT, Audio do not yet work

Need some help?


In addition to this wiki, we use various mailing lists, IRC, collaborate.linaro.org and projects.linaro.org/LCG to communicate.

You can use the web or your favourite IRC client.

AOSP/db845c (last modified 2019-11-30 09:16:44)