AIM-Linux/BSP/Qualcomm/RISC QCS Yocto LE1.1 ROM2860
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
Docker Install and BSP Download
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 ROM-2860.
$ 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 $ 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 -j12
Get and Unzip the Download Files
LIV11 yocto downloads file:[ downloads.qcs6490.le.1.1.r00041.0.tar ]
$ cd /home/adv/BSP $ tar -zxvf downloads.qcs6490.le.1.1.r00041.0.tar
Install QSC CLI and Create ~/.netrc
adv@7cc0fa834366:~$ curl -L https://softwarecenter.qualcomm.com/api/download/software/qsc/linux/latest.deb -o qsc_installer.deb adv@7cc0fa834366:~$ sudo dpkg -i qsc_installer.deb adv@7cc0fa834366:~$ qsc-cli login -u <username> password: ************ Logged in successfully. adv@7cc0fa834366:~$ qsc-cli pat --get [Info]: Starting qsc-cli version 0.0.0.9 <your PAT token> adv@7cc0fa834366:~$ vim ~/.netrc machine chipmaster2.qti.qualcomm.com login <your Qualcomm login id> password <your PAT token> machine qpm-git.qualcomm.com login <your Qualcomm login id> password <your PAT token>
Build Instructions
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
$ scripts/build_release.sh -adsp
2. Build AOP Image
$ scripts/build_release.sh -aop
3. Build CDSP Image
$ scripts/build_release.sh -cdsp
4. Build BOOT(XBL) Image
$ scripts/build_release.sh -boot
5. Build TZ Image
$ scripts/build_release.sh -tz
6. Generate Firmware Prebuilds
$ scripts/build_release.sh -common
7. Build YOCTO Image
$ scripts/build_release.sh -yocto
Build yocto images
$ cd /home/adv/BSP $ MACHINE=qcm6490 DISTRO=qcom-robotics-ros2-humble source setup-robotics-environment $ devtool modify qps615 $ ../qirp-build qcom-robotics-full-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)
Unzip command example:
$ sudo tar -zxvf 2860A1AIM38LIV11030_emmc_2024-11-18.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 windows PCAT to flash images
1. Download the Qualcomm Software Center
2. Open the Qualcomm Software Center
3. Search "PCAT" in the search bar
4. Click Qualcomm® Product Configuration Assistant Tool
5. Select Qualcomm® Product Configuration Assistant Tool version
Version: 2.33.2.119
6. Install Qualcomm® Product Configuration Assistant Tool 2.33.2.119
7. Search "QUTS" in the search bar
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
11. You will find the new application in your Windows system .
12. Unzip the UFS File and eMMC File
For example :
2860A1AIM37UIV10084_2024-08-08_ufs_debug.tgz
2860A1AIM37UIV10084_2024-08-08_emmc_debug.tgz
13 Connect your device via Micro USB.
USF Provision
2. Add the prog_firehose_ddr.elf and provision_ufs31.xml in UFS folder.
3. Then press "OK" , it will start to do USF Provision.
4. When the Provision finished , you can see the result in message window.
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"
5. Select "Qualcomm HS-USB QDLoader 9008 (COM6)
6. Click " Connect " device
7. When you connected successfully , it will show "green word" - Qualcomm HS-USB QDLoader 9008 (COM 6)
8. Select UFS Folder in PCAT Tool , the Tool will help load Files automatically and Select "MEMORY_TYPE_UFS"
9. Click " Download"
10. UFS Download Status
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.
6. Select eMMC Folder.
7. Make sure the setting ,then press " Download " button.
8. eMMC downlaoad status
' 9. eMMC D'onwload compeleted
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