AIM-Linux/BSP/Qualcomm/RISC QCS Yocto LE1.1 AOM2721

From ESS-WIKI
Jump to: navigation, search

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 requirements

OS

Ubuntu 20.04 or Ubuntu 22.04

CPU

Intel Core-i7 Processor (>= 8 cores)

RAM

16+ GB RAM 

Disk

350 GB free disk space (more is recommended and SSD is suggested for better performance)

Docker Install and BSP Download

Install Docker Engine on your platform

Please refer to Docker Installation Guide for details 

Pull docker images

$ sudo docker pull advrisc/u20.04-qcslbv2:latest

Run docker example

$ mkdir -p /home/bsp/myLinux
$ sudo docker run --privileged -it --name qclinux -v /home/bsp/myLinux:/home/adv/BSP:rw advrisc/u20.04-qcslbv2 /bin/bash
adv@7cc0fa834366:~$ sudo chown adv:adv -R BSP

Download BSP

You need to get the ADV_GIT_TOKEN by contacting the PM or AE of AOM-2721.

$ cd /home/adv/BSP
$ git config --global credential.helper 'store --file ~/.my-credentials'
$ echo "https://AIM-Linux:${ADV_GIT_TOKEN}@dev.azure.com" > ~/.my-credentials

Refer to Release image URL: OS Support List(LE1.1 based on Yocto4.0.18) , Official version "aom2721a1_yl01101_k0606028_q6490_08g.xml" is taken as an example :

$ repo init -u https://dev.azure.com/AIM-Linux/risc_qcs_linux_le_1.1/_git/manifest -b main -m aom2721a1_yl01101_k0606028_q6490_08g.xml
$ repo sync -c -j${YOUR_CPU_CORE_NUM}

If you want to get latest bsp

$ repo init -u https://dev.azure.com/AIM-Linux/risc_qcs_linux_le_1.1/_git/manifest -b main -m adv-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1.xml
$ repo sync -c -j${YOUR_CPU_CORE_NUM}

You can check the download BSP as the following.

LE1.1 BSP Folder.jpg

 

Get and Unzip the Downloads Files (Must to do)

Yocto downloads file:[ downloads.qcs6490.le.1.1.r00041.0.tar.gz ]

The size of downloads.qcs6490.le.1.1.r00041.0.tar.gz is 32064460216byte (31,312,950 KB)

The md5sum of downloads.qcs6490.le.1.1.r00041.0.tar.gz is 02a2d44d728cd8cabf4a9c25752f0606

 

You need to get the PASSWORD by contacting the PM or AE of AOM-2721.

$ cd /home/adv/BSP
$ openssl des3 -d -k ${PASSWORD} -salt -pbkdf2 -in downloads.qcs6490.le.1.1.r00041.0.tar.gz -out downloads.qcs6490.le.1.1.r00041.0.decrypt.tar.gz
$ tar -zxvf downloads.qcs6490.le.1.1.r00041.0.decrypt.tar.gz 

 

Build Instructions

Source env

For the "Build All images", "Build All Images individually" and "Build yocto images", you need to do the "Source env".

$ source scripts/env.sh

Build All Images

$ scripts/build_release.sh -all
  • Output ufs images: build-qcom-robotics-ros2-humble/tmp-glibc/deploy/images/qcm6490/qcom-robotics-full-image
  • Output emmc images: build-qcom-robotics-ros2-humble/tmp-glibc/deploy/images/qcm6490/qcom-robotics-full-image-emmc

 

Build All Images individually

1. Build ADSP Image

After building the ADSP, you need to build the "6. Generate Firmware Prebuilds" to package new firmware prebuild files.

$ scripts/build_release.sh -adsp

2. Build AOP Image

After building the AOP, you need to build the "6. Generate Firmware Prebuilds" to package new firmware prebuild files.

$ scripts/build_release.sh -aop

3. Build CDSP Image

After building the CDSP, you need to build the "6. Generate Firmware Prebuilds" to package new firmware prebuild files.

$ scripts/build_release.sh -cdsp

4. Build BOOT(XBL) Image

After building the BOOT(XBL), you need to build the "6. Generate Firmware Prebuilds" to package new firmware prebuild files.

$ scripts/build_release.sh -boot

5. Build TZ Image

After building the TZ, you need to build the "6. Generate Firmware Prebuilds" to package new firmware prebuild files.

$ scripts/build_release.sh -tz

6. Generate Firmware Prebuilds

$ scripts/build_release.sh -common

Output firmware prebuild files:

amss/QCM6490.LE.1.0/common/build/ufs/bin/QCM6490_bootbinaries.zip

amss/QCM6490.LE.1.0/common/build/ufs/bin/QCM6490_dspso.zip

amss/QCM6490.LE.1.0/common/build/ufs/bin/QCM6490_fw.zip

7. Build YOCTO Image

$ scripts/build_release.sh -yocto

Build yocto images

$ cd /home/adv/BSP
$ source scripts/env.sh
$ MACHINE=qcm6490 DISTRO=qcom-robotics-ros2-humble source setup-robotics-environment
$ ../qirp-build qcom-robotics-full-image

For the qcsLBV11026 version:

$ cd /home/adv/BSP
$ source scripts/env.sh
$ MACHINE=qcm6490 DISTRO=qcom-wayland source setup-environment
$ devtool modify qps615
$ bitbake qcom-multimedia-image

Recovery & Rescue

Using windows PCAT or Qualcomm Download (QDL) tool to flash software images to the device.

 

Get the official images and unzip

Release image URL: OS Support List(LE1.1 based on Yocto4.0.18)

Unzip command example:

$ sudo tar -zxvf aom2721a1_yl01101_k0606028_q6490_08g_ufs4_2025-02-10.tgz

Enter EDL 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 windows PCAT to flash images

1. Download the Qualcomm Software Center 

      Qualcomm® Software Center 

2. Open the Qualcomm Software Center 

3. Search "PCAT" in the search bar 

RTENOTITLE

4. Click Qualcomm® Product Configuration Assistant Tool 

5. Select Qualcomm® Product Configuration Assistant Tool version 

    Version: 2.33.2.119

RTENOTITLE

6. Install Qualcomm® Product Configuration Assistant Tool 2.33.2.119 

7. Search "QUTS" in the search bar  

RTENOTITLE

8. Click the  Qualcomm® Unified Tools Services 

9. Select Qualcomm® Unified Tools Services version 

     Version : 1.75.2.9

10. Install Qualcomm® Unified Tools Services  1.75.2.9 

RTENOTITLE

11. You will find the new application after installing the PCAT and  QUTS in your Windows system . 

RTENOTITLE

12. Unzip the UFS File and eMMC File 

For example : 

         aom2721a1_yl01101_k0606028_q6490_08g_ufs4_2025-02-10.tgz

         aom2721a1_yl01101_k0606028_q6490_08g_emmc_2025-02-10.tgz 

13. Connect your device via Micro USB.

USF Provision  

1. Select  provision button   RTENOTITLE  

RTENOTITLE

2. Add the prog_firehose_ddr.elf and provision_ufs31.xml in UFS  folder. 

RTENOTITLE

3. Then press "OK" , it will start to do USF Provision. 

RTENOTITLE

4. When the Provision finished , you can see the result in message window. 

RTENOTITLE

 

Flash UFS

 1. Change the SW1 and SW2 

 Flash UFS:  the SW1 switch to 1-on, 2-on

Forced Recovery :  The SW2 switch to 1-on  ,2 - on . 

 2. Turn on the power 

 3. Open " PCATApp" Tool 

 4. Click " Connect A Device" 

RTENOTITLE

5. Select  "Qualcomm HS-USB QDLoader 9008 (COM6) 

RTENOTITLE

6. Click " Connect "  device 

RTENOTITLE

7. When you connected successfully , it will show  "green word" - Qualcomm HS-USB QDLoader 9008 (COM 6) 

RTENOTITLE

8. Select UFS Folder in PCAT Tool , the Tool will help load Files automatically and Select "MEMORY_TYPE_UFS" 

RTENOTITLE

9. Click " Download" 

RTENOTITLE

10. UFS Download Status 

RTENOTITLE11. UFS Donwload compeleted 

RTENOTITLE

 

12. When the UFS installation finished . Close the PCAT tool ,

13. pleaes remove the mirco usb cable, turn off the power 

14. UFS boot up : 

The SW1 switch to 1-on, 2-on

The SW2 switch to 1-off, 2-on

15. Connect debug cable and open the terminal ,  turn on the power . 

16.  When the systme boot up , you need to type  " qcm6490 login: root "  , " Password: oelinux123"

17.  After type the long in and password , and you also can chek the image information about date , kernel version etc.. 

Flash eMMC

1.  Turn off the Power 

2. Change the SW1 and SW2 

 Flash eMMC:  The SW1 switch to 1-off, 2-on

Forced Recovery :  The SW2 switch to 1-on, 2-on

3. Turn on the power 

4. Make sure the device connection status. 

5. If the device disconnect with PCAT Tool , please connect it again. 

RTENOTITLE

6. Select eMMC Folder.

RTENOTITLE7. Make sure the setting ,then press " Download " button.

RTENOTITLE

 8. eMMC downlaoad status 

RTENOTITLE

' 9. eMMC D'onwload compeleted 

RTENOTITLE

10. When the eMMC installation finished . Close the PCAT tool ,

11. pleaes remove the mirco usb cable, turn off the power 

12. eMMC boot up : 

The SW1 switch to 1-off, 2-on

The SW2 switch to 1-off, 2-on 

13. Connect debug cable and open the terminal ,  turn on the power . 

14.  When the systme boot up , you need to type  " qcm6490 login: root "  , " Password: oelinux123"

15.  After type the long in and password , and you also can chek the image information about date , kernel version etc.. 

Qualcomm Download (QDL) Tool

One-time Prerequisite

To set the udev USB rule with the Qualcomm manufacturing vendor ID 05c6:

$ cd /etc/udev/rules.d
$ sudo vi 51-qcom-usb.rules
# add the following
SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0666", GROUP="plugdev"
$ sudo systemctl restart udev

Use the QDL to flash images (UFS only now)

1. Ensure the QDL mode

$ lsusb
Bus 001 Device 028: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)

2. Ensure ModemManager is not running It is identified as a Qualcomm modem for some Linux distributions when the device is connected in USB mode. Check the status of ModemManager:

$ sudo systemctl status ModemManager

If the ModemManager is enabling, please help to stop it by:

$ sudo systemctl stop ModemManager

3. Go to the location of images in the workspace to flash the images:

$ cd build-qcom-robotics-ros2-humble/tmp-glibc/deploy/images/qcm6490/qcom-robotics-full-image
$ ./qdl prog_firehose_ddr.elf rawprogram*.xml patch*.xml
HELLO version: 0x2 compatible: 0x1 max_len: 1024 mode: 0
READ64 image: 13 offset: 0x0 length: 0x40
READ64 image: 13 offset: 0x40 length: 0x3f0
READ64 image: 13 offset: 0x1000 length: 0x1000
READ64 image: 13 offset: 0x2000 length: 0x260
READ64 image: 13 offset: 0x3000 length: 0x1000
READ64 image: 13 offset: 0x4000 length: 0x1000
.
.
.
Update Primary Header with CRC of Primary Header.
LOG: INFO: Calling handler for patch
Zero Out Header CRC in Backup Header.
LOG: INFO: Calling handler for patch
Update Backup Header with CRC of Backup Header.
LOG: INFO: Calling handler for patch
LOG: INFO: Calling handler for setbootablestoragedrive
LOG: INFO: Using scheme of value= 1
partition 1 is now bootable
LOG: INFO: Calling handler for power
LOG: INFO: Will issue reset/power off 100 useconds, if this hangs check if watchdog is enabled
LOG: INFO: bsp_target_reset() 1

If you see the "partition 1 is now bootable" in your terminal window, the flash is successful.

Note: If you get the following issue, please help to download the qdl file (https://www.dropbox.com/scl/fi/nv65h778rwkhtul1gnwrr/qdl?rlkey=gzy83yt1x2qhhnqzra9kukhai&st=p4n42eax&dl=0) or to build the standalone QDL.

$ ./qdl prog_firehose_ddr.elf rawprogram*.xml patch*.xml
-bash: ./qdl: No such file or directory

How to build the standalone QDL?

$ sudo apt-get install libxml2-dev libudev-dev
$ git clone https://git.codelinaro.org/linaro/qcomlt/qdl.git
$ cd qdl
$ make

Customization

Setting up SDK

You can download the sdk from [ sdk.qcs6490.le.1.1.r00041.0.tar.gz ] or perform the following command in terminal console

The size of sdk.qcs6490.le.1.1.r00041.0.tar.gz is 4160567372 byte (4,063,055 KB)

The md5sum of sdk.qcs6490.le.1.1.r00041.0.tar.gz is f4184521f8d2c71a8a2953ac1b143242

 

$ cd build-qcom-robotics-ros2-humble/tmp-glibc/deploy/sdk
$ sudo ./qcom-robotics-ros2-humble-x86_64-qcom-robotics-full-image-armv8-2a-qcm6490-toolchain-1.0.sh

Enter new installed directory or just press Enter to use default directory. While Proceed[Y/n]? shows up, please enter the correct one.

2025-02-18 123508.jpg

Waiting for the SDK installed (while the following messages show up completely)

2025-02-18 124037.jpg

Setting up cross compiling environment

SDK has been set up (ref.Setting up SDK) Perform the following command in terminal console

$ source ${TOOLCHAIN}/environment-setup-armv8-2a-qcom-linux

Set the AI execution environment of QIRP images on AOM-2721 device board

Set the AI execution environment of QIRP images on your board:

$ source /opt/qcom/qirp-sdk/qirp-setup.sh