AIM-Linux/BSP/Qualcomm/RISC QCS Yocto LE1.1 ROM2860
Contents
Introduction
This document describes how to work with the RISC and Qualcomm LE GA1.1 Board Support Package (BSP) release.
Yocto Version
Yocto 4.0.18
Kernel Version
Kernel 6.6.28
Meta Build ID
QCM6490.LE.1.0-00218-STD.PROD-1
Host Machine
- Linux Distro: Ubuntu 22.04 LTS
If yor host machine is Ubuntu 20.04 LTS, you need to install the qemu-user-static_6.2+dfsg-2ubuntu6_amd64.deb.
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/q/qemu/qemu-user-static_6.2+dfsg-2ubuntu6_amd64.deb $ sudo dpkg -i qemu-user-static_6.2+dfsg-2ubuntu6_amd64.deb
Otherwise, you may get the following yocto build fail:
ERROR: ubuntu-base-20.04-r0 do_ubuntu_basic_configure: Execution of '/home/adv/adv-release-bsp/build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/aarch64-oe-linux/ubuntu-base/20.04-r0/temp/run.do_ubuntu_basic_configure.1061187' failed with exit code 126 ERROR: Logfile of failure stored in: /home/adv/adv-release-bsp/build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/aarch64-oe-linux/ubuntu-base/20.04-r0/temp/log.do_ubuntu_basic_configure.1061187 Log data follows: | DEBUG: Executing shell function do_ubuntu_basic_configure | NOTE: copy fakeroot and fakechroot lib to ubuntu-base | /usr/sbin/chroot: failed to run command ‘/bin/bash’: Exec format error | WARNING: /home/adv/adv-release-bsp/build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/aarch64-oe-linux/ubuntu-base/20.04-r0/temp/run.do_ubuntu_basic_configure.1061187:1 exit 126 from 'fakechroot fakeroot chroot /home/adv/adv-release-bsp/build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/aarch64-oe-linux/ubuntu-base/20.04-r0/ubuntu_base_tmp /bin/bash -c "cd /var; rm run; ln -s ../run run"' | ERROR: Execution of '/home/adv/adv-release-bsp/build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/aarch64-oe-linux/ubuntu-base/20.04-r0/temp/run.do_ubuntu_basic_configure.1061187' failed with exit code 126 ERROR: Task (/home/adv/adv-release-bsp/poky/meta-qti-ubuntu/recipes-core/ubuntu-base/ubuntu-base_20.04.bb:do_ubuntu_basic_configure) failed with exit code '1' NOTE: Tasks Summary: Attempted 4987 tasks of which 4583 didn't need to be rerun and 1 failed. NOTE: Writing buildhistory NOTE: Writing buildhistory took: 6 seconds Summary: 1 task failed: /home/adv/adv-release-bsp/poky/meta-qti-ubuntu/recipes-core/ubuntu-base/ubuntu-base_20.04.bb:do_ubuntu_basic_configure Summary: There were 235 WARNING messages shown. Summary: There was 1 ERROR message shown, returning a non-zero exit code.
or
ERROR: ubuntu-base-20.04-r0 do_ubuntu_basic_configure: Execution of '/home/adv/adv-release-bsp/build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/aarch64-oe-linux/ubuntu-base/20.04-r0/temp/run.do_ubuntu_basic_configure.880287' failed with exit code 1 ERROR: Logfile of failure stored in: /home/adv/adv-release-bsp/build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/aarch64-oe-linux/ubuntu-base/20.04-r0/temp/log.do_ubuntu_basic_configure.880287 Log data follows: | DEBUG: Executing shell function do_ubuntu_basic_configure | NOTE: copy fakeroot and fakechroot lib to ubuntu-base | semop(1): encountered an error: Function not implemented | WARNING: /home/adv/adv-release-bsp/build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/aarch64-oe-linux/ubuntu-base/20.04-r0/temp/run.do_ubuntu_basic_configure.880287:1 exit 1 from 'fakechroot fakeroot chroot /home/adv/adv-release-bsp/build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/aarch64-oe-linux/ubuntu-base/20.04-r0/ubuntu_base_tmp /bin/bash -c "cd /var; rm run; ln -s ../run run"' | ERROR: Execution of '/home/adv/adv-release-bsp/build-qti-distro-ubuntu-fullstack-debug/tmp-glibc/work/aarch64-oe-linux/ubuntu-base/20.04-r0/temp/run.do_ubuntu_basic_configure.880287' failed with exit code 1 ERROR: Task (/home/adv/adv-release-bsp/poky/meta-qti-ubuntu/recipes-core/ubuntu-base/ubuntu-base_20.04.bb:do_ubuntu_basic_configure) failed with exit code '1' NOTE: Tasks Summary: Attempted 3452 tasks of which 3253 didn't need to be rerun and 1 failed. NOTE: Writing buildhistory NOTE: Writing buildhistory took: 12 seconds Summary: 1 task failed: /home/adv/adv-release-bsp/poky/meta-qti-ubuntu/recipes-core/ubuntu-base/ubuntu-base_20.04.bb:do_ubuntu_basic_configure Summary: There were 234 WARNING messages shown. Summary: There was 1 ERROR message shown, returning a non-zero exit code.
Docker Install and BSP Download
Pull docker images
$ sudo docker pull advrisc/u20.04-qcslbv1:latest
Run docker example
$ mkdir -p ~/qualcomm-bsp $ sudo docker run -it --name adv-qcs6490-ubun-1-0 -v ~/qualcomm-bsp:/home/adv/adv-release-bsp:rw --privileged advrisc/u20.04-qcslbv1:latest /bin/bash
Download BSP
You need to get the ADV_GIT_TOKEN by contacting the PM or AE of ROM-2860.
$ cd adv-release-bsp $ git config --global credential.helper 'store --file ~/.my-credentials' $ echo "https://AIM-Linux:${ADV_GIT_TOKEN}@dev.azure.com" > ~/.my-credentials $ repo init -u https://dev.azure.com/AIM-Linux/risc_qcs_linux_00011.1/_git/manifests -b main -m adv_3.5.1.r1-06500-QCS6490.0.xml --repo-url=https://git.codelinaro.org/clo/tools/repo.git --repo-branch=qc-stable $ repo sync -c -j12
Get and Unzip the Download Files
UIV1 yocto downloads file:[ downloads.qcs6490.ubun.1.0.r00011.1.tar.gz ]
$ cd adv-release-bsp $ tar -zxvf downloads.qcs6490.ubun.1.0.r00011.1.tar.gz
Copy HLOS of Chipcode
$ cp -r amss/apps_proc/* .
Build Instructions
Source env
$ source scripts/env.sh
Build All Images
$ scripts/build_release.sh -all
Output images: out/emmc and out/ufs
Build All Images individually
1. Build ADSP Image
$ scripts/build_release.sh -adsp
2. Build CDSP Image
$ scripts/build_release.sh -cdsp
3. Build BOOT(XBL) Image
$ scripts/build_release.sh -boot
4. Build CDT Image
$ scripts/build_release.sh -cdt
5. Build TZ Image
$ scripts/build_release.sh -tz
6. Build YOCTO Image
$ scripts/build_release.sh -yocto
7. Build META Image
$ scripts/build_release.sh -meta
8. Build OTA Image
$ scripts/build_release.sh -ota
Build yocto images
$ cd poky $ export MACHINE=qcs6490-odk DISTRO=qti-distro-ubuntu-fullstack-debug $ export PREBUILT_SRC_DIR="/home/adv/adv-release-bsp/prebuilt_HY11" $ source qti-conf/set_bb_env.sh $ bitbake qti-ubuntu-robotics-image
Build boot and dtb images
$ cd poky $ export MACHINE=qcs6490-odk DISTRO=qti-distro-ubuntu-fullstack-debug $ export PREBUILT_SRC_DIR="/home/adv/adv-release-bsp/prebuilt_HY11" $ source qti-conf/set_bb_env.sh $ bitbake -fc cleanall linux-msm && bitbake linux-msm && bitbake qti-ubuntu-robotics-image -fc do_make_bootimg && bitbake qti-ubuntu-robotics-image -fc do_makedtbo
Recovery & Rescue
QFIL
Install the QPST_QFIL and Qualcomm_USB_Driver
Download and install the following files on the Windows OS (Windows 10 Test OK):
- QPST_QFIL: qpst.win.2.7_installer_00496.2.zip
- Qualcomm_USB_Driver: QUD.WIN.1.1 Installer_10065.1.zip
Note: If you can't get these files, please contact PM or AE to get these files.
Get the official images and unzip
Release image URL: OS Support List (based on Ubuntu 20.04 - LU 1.0)
Unzip command example:
$ sudo tar -zxvf 2860A1AIM37UIV10059_emmc_2024-03-14.tgz
Enter 9008 download mode
- Connect the Micro USB (EDL) to your host computer.
- Forced Recovery: The SW2 switch to 1-on.
- Flash EMMC: the SW1 switch to 1-off, 2-on
- Flash UFS: the SW1 switch to 1-on, 2-on
- Connect the adapter and power on the device
Use the QFIL to flash image
EMMC
- Open QFIL tool and click the "Select Port"
- Select the "Qualcomm HS-USB QDloader 9008"
- 1.Click the "Configuration"
- 2.Click the "FireHose Configuration"
- 1.Select the "Device Type" to "emmc"
- 2.Select the "Reset After Download"
- 3.Select the "Erase All Before Download"
- 1.Select the "Availible Meta Build Storage Types" to "emmc"
- 2.Select the "Select Build Type" to "Meta Build"
- 3.Click the "Load Content" and Select the contents.xml file of emmc
- 4.Click the "Download Content"
- Finish Download
- You can power off the device and power on it again
UFS
Need to do the Provision when using it for the first time
- Open QFIL tool and click the "Select Port"
- Select the "Qualcomm HS-USB QDloader 9008"
- 1.Click the "Configuration"
- 2.Click the "FireHose Configuration"
- 1.Select the "Device Type" to "ufs"
- 2.Select the "Provision"
- 1.Select the "provision_ufs31.xml" file
- 2.Select the "prog_firehose_ddr.elf" programmer file
- 3.Click the "Provision"
- Finish Provision
- You can power off the device and power on it again
- 1.Click the "Configuration"
- 2.Click the "FireHose Configuration"
- 1.Deselected the "Provision"
- 2.Select the "Reset After Download"
- 3.Select the "Erase All Before Download"
- 1.Select the "Availible Meta Build Storage Types" to "ufs"
- 2.Select the "Select Build Type" to "Meta Build"
- 3.Click the "Load Content" and Select the contents.xml file of ufs
- 4.Click the "Download Content"
- Finish Download
- You can power off the device and power on it again
Fastboot
- Micro USB: ROM-ED92 USB0
Connect the ROM-ED92 USB0 to host computer and set the Micro USB to peripheral mode.
# echo "peripheral" > /sys/devices/platform/soc/a600000.ssusb/mode
Enter the fastboot mode
adv@adv-desktop:~$ adb devices List of devices attached 2e8c656e device adv@adv-desktop:~$ adb root restarting adbd as root adv@adv-desktop:~$ adb reboot bootloader adv@adv-desktop:~$ fastboot devices 2e8c656e fastboot
Use the fastboot to flash the kernel boot image
adv@adv-desktop:~$ fastboot flash boot_a qti-ubuntu-robotics-image-qcs6490-odk-boot.img target reported max download size of 805306368 bytes sending 'boot_a' (24420 KB)... OKAY [ 0.790s] writing 'boot_a'... OKAY [ 0.144s] finished. total time: 0.935s adv@adv-desktop:~$ fastboot flash boot_b qti-ubuntu-robotics-image-qcs6490-odk-boot.img target reported max download size of 805306368 bytes sending 'boot_b' (24420 KB)... OKAY [ 0.827s] writing 'boot_b'... OKAY [ 0.133s] finished. total time: 0.960s
Use the fastboot to flash the kernel dtbo image
adv@adv-desktop4:~$ fastboot flash dtbo_a dtbo.img target reported max download size of 805306368 bytes sending 'dtbo_a' (12330 KB)... OKAY [ 0.427s] writing 'dtbo_a'... OKAY [ 0.070s] finished. total time: 0.497s adv@adv-desktop4:~$ fastboot flash dtbo_b dtbo.img target reported max download size of 805306368 bytes sending 'dtbo_b' (12330 KB)... OKAY [ 0.422s] writing 'dtbo_b'... OKAY [ 0.061s] finished. total time: 0.483s