| .. |
| # Copyright (c) 2023, Linaro Ltd. |
| # |
| # SPDX-License-Identifier: MIT |
| |
| RB3 |
| === |
| |
| RB3 is one of the supported dev-boards listed on |
| `source.android.com <https://source.android.com/docs/setup/create/devices>`_. |
| |
| The vendor-packages required to build RB3 images with AOSP are |
| listed `here <http://releases.devboardsforandroid.linaro.org/vendor-packages>`_. |
| |
| |
| Getting started with RB3 (also known as DB845c) |
| ----------------------------------------------- |
| |
| Learn about your RB3 board as well as how to prepare and set up for basic |
| use from the |
| `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 #97 and above) are `hosted here |
| <http://snapshots.linaro.org/96boards/dragonboard845c/linaro/rescue/>`_. |
| |
| For flashing instructions checkout |
| `96boards DB845c 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 |
| a part of the vendor package of the RB3 AOSP build target. Boot in fastboot mode |
| and run following command from your HOST machine: |
| |
| .. code:: |
| |
| git clone https://gerrit.devboardsforandroid.linaro.org/linaro-vendor-package |
| cd src/db845c/dragonboard-845c-bootloader-ufs-aosp/ |
| ./flashall |
| |
| |
| Install pre-built AOSP images on RB3 |
| ------------------------------------ |
| |
| Linaro create daily AOSP builds 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, please download and flash boot.img, vendor_boot.img, |
| super.img and userdata.img from |
| `the snapshot here <http://snapshots.linaro.org/96boards/dragonboard845c/linaro/aosp-master>`_. |
| |
| Flash downloaded AOSP images by running following commands, while booted |
| in fastboot mode:: |
| |
| fastboot flash userdata userdata.img |
| fastboot flash super super.img |
| fastboot flash vendor_boot vendor_boot.img |
| fastboot flash boot boot.img |
| |
| |
| Compile AOSP from sources for RB3 |
| --------------------------------- |
| |
| #. Download the AOSP source tree and build db845c-trunk_staging-userdebug build target: |
| |
| :: |
| |
| repo init -u https://android.googlesource.com/platform/manifest -b master |
| repo sync -j`nproc` |
| ./device/linaro/dragonboard/fetch-vendor-package.sh |
| source ./build/envsetup.sh |
| lunch db845c-trunk_staging-userdebug |
| make -j`nproc` |
| |
| |
| #. Install: `Boot DB845c into fastboot mode <https://www.96boards.org/documentation/consumer/dragonboard/dragonboard845c/installation/board-recovery.md.html#booting-into-fastboot>`_ and run following command: |
| |
| :: |
| |
| ./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#connecting-the-board-in-usb-flashing-mode-aka-edl-mode>`_: |
| |
| :: |
| |
| ./device/linaro/dragonboard/installer/db845c/recovery.sh |
| |
| |
| Building the kernel for RB3 |
| --------------------------- |
| |
| The **Preferred** option is to build DB845c Android GKI kernel artifacts using |
| official Bazel build. Run the following commands to clone the kernel source, |
| prebuilt Android toolchains and build scripts. |
| |
| :: |
| |
| mkdir repo-db845c |
| cd repo-db845c |
| repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline |
| repo sync -j`nproc` |
| tools/bazel clean |
| tools/bazel run //common:db845c_dist |
| |
| Now delete all the objects in |
| $(AOSP_TOPDIR)device/linaro/dragonboard-kernel/android-mainline/, then copy |
| build artifacts from out/db845c/dist/ to |
| $(AOSP_TOPDIR)/device/linaro/dragonboard-kernel/android-mainline/ |
| |
| If you want to properly test the GKI kernel, you should |
| |
| * grab the latest kernel_aarch64 build from |
| https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid? |
| |
| * under artifacts, download the Image.gz and copy it to |
| $(AOSP_TOPDIR)/device/linaro/dragonboard-kernel/android-mainline/ |
| |
| Then rebuild AOSP using: |
| |
| :: |
| |
| make TARGET_KERNEL_USE=mainline -j`nproc`' |
| |
| |
| Booting AOSP from MMC Sdcard |
| ---------------------------- |
| |
| Booting AOSP on DB845c from a mmc sdcard is an experimental build configuration |
| and is only intended to be used in the LKFT lab. Regular users should not enable |
| this build flag and should flash and boot from the UFS instead. |
| |
| Booting from external sdcards will help prevent the internal emmc/ufs wear off |
| in the long run and extend the lab-life of most of our devboards. To avoid |
| flashing anything on internal UFS and boot solely from a sdcard, we are |
| switching to chainloading U-Boot from ABL bootloader. For now we are using a WIP |
| `upstream u-boot fork <https://source.devboardsforandroid.linaro.org/platform/external/u-boot/>`_. |
| |
| .. note:: |
| In the long run we plan to switch to AOSP/external/u-boot project to catch up |
| with the Android bootloader features. |
| |
| Set ``TARGET_SDCARD_BOOT=true`` at build time to build and boot AOSP from a mmc |
| sdcard. This device configuration need atleast 8GB sdcard to boot from. Here are |
| the instructions to prepare and flash AOSP images on a MMC sdcard: |
| |
| .. note:: |
| Following commands that are listed with **=>** prompt means those commands need |
| to be run from the u-boot prompt on the device and commands with **$** means |
| they need to be run from the HOST machine. |
| |
| * Boot DB845c in the fastboot mode as mentioned above and erase the boot |
| partition to make sure that every reboot/reset lands at the ABL fastboot mode |
| prompt. |
| |
| :: |
| |
| $ fastboot erase boot |
| |
| * Build U-Boot for DB845c and boot with it: |
| |
| :: |
| |
| $ git clone https://source.devboardsforandroid.linaro.org/platform/external/u-boot |
| $ cd u-boot |
| $ source envsetup.sh |
| $ mu qcom_defconfig |
| $ budt dragonboard845c |
| $ fastboot boot /tmp/u-boot.img # this will boot U-Boot on DB845c |
| |
| * Prepare AOSP partition layout on the sdcard from the U-Boot prompt. Make sure |
| that a 8GB+ MMC sdcard is plugged into the board: |
| |
| :: |
| |
| => run gpt_mmc_aosp |
| => reset # this will reboot in ABL fastboot mode |
| $ fastboot boot /tmp/u-boot.img |
| => run fastboot # starting U-Boot's fastboot command |
| $ fastboot erase boot erase init_boot erase vendor_boot erase modemst1 erase modemst2 erase fsg erase fsc erase misc erase metadata erase super erase userdata |
| $ fastboot reboot # rebooting in ABL fastboot mode |
| $ fastboot boot /tmp/u-boot.img |
| => run fastboot |
| |
| * Build AOSP target db845c-userdebug with MMC sdcard support and flash images on |
| the MMC sdcard. Make sure we run U-Boot's fastboot command on the device |
| before running the flash commands: |
| |
| :: |
| |
| $ make TARGET_SDCARD_BOOT=true -j`nproc` |
| $ cd out/target/product/db845c |
| $ fastboot flash super ./super.img flash userdata ./userdata.img format:ext4 metadata reboot |
| $ fastboot boot ./boot.img |
| |
| .. note:: |
| We do not flash **boot.img** on the sdcard; instead, we load the boot image from |
| device RAM by running ``fastboot boot boot.img``. |
| |
| |
| Device Maintainer(s) |
| ******************** |
| - Amit Pundir <pundir at #aosp-developers on OFTC IRC> |