Difference between revisions of "AIM-Linux/BSP/Qualcomm/LE1.1 BSP User Guide"
Darren.huang (talk | contribs) (Created page with " == Project == *ROM-2860 + ROM-ED92 **risc_qcs_yocto_le1.1_rom2860") |
|||
| (16 intermediate revisions by one other user not shown) | |||
| Line 1: | Line 1: | ||
| − | = | + | = Introduction = |
| − | * | + | This document describes how to work with the RISC and Qualcomm LE GA1.1 Board Support Package (BSP) release. |
| − | **[[AIM-Linux/BSP/Qualcomm/ | + | |
| + | == 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 [https://docs.docker.com/engine/installation/ Docker Installation Guide] for details | ||
| + | |||
| + | == Pull docker images == | ||
| + | <pre>$ sudo docker pull advrisc/u20.04-qcslbv2:latest</pre> | ||
| + | |||
| + | == Run docker example == | ||
| + | <pre>$ 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 | ||
| + | </pre> | ||
| + | |||
| + | == Download BSP == | ||
| + | |||
| + | <span data-darkreader-inline-color="" style="color: rgb(204, 0, 0); --darkreader-inline-color: var(--darkreader-text-cc0000, #ff3d3d);">'''You need to get the ADV_GIT_TOKEN by contacting the PM or AE of project.'''</span> | ||
| + | <pre>$ 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</pre> | ||
| + | |||
| + | Refer to Release image URL: [[AIM-Linux/BSP/Qualcomm/Linux_Yocto_OS_Release_note/LE1.1/Internal|OS Support List(LE1.1 based on Yocto4.0.18)]] | ||
| + | |||
| + | *'''AOM-2721''': A example of <span data-darkreader-inline-color="" style="color: rgb(155, 89, 182); --darkreader-inline-color: var(--darkreader-text-9b59b6, #a467bc);">'''${OFFICIAL_MANIFEST}'''</span> is '''aom2721a1_yl01101_k0606028_q6490_08g.xml''' | ||
| + | *'''MIO-5355''': A example of '''<span data-darkreader-inline-color="" style="color: rgb(155, 89, 182); --darkreader-inline-color: var(--darkreader-text-9b59b6, #a467bc);">${OFFICIAL_MANIFEST}</span>''' is '''mio5355a1_yl01101_k0606028_q6490_08g.xml''' | ||
| + | *'''DS-011''': A example of '''<span data-darkreader-inline-color="" style="color: rgb(155, 89, 182); --darkreader-inline-color: var(--darkreader-text-9b59b6, #a467bc);">${OFFICIAL_MANIFEST}</span>''' is '''ds011a1_yocto4.0.18-le1.1_v2.0.0_kernel-6.6.28_qcs6490.xml''' | ||
| + | *'''AOM-5721''': A example of '''<span data-darkreader-inline-color="" style="color: rgb(155, 89, 182); --darkreader-inline-color: var(--darkreader-text-9b59b6, #a467bc);">${OFFICIAL_MANIFEST}</span>''' is '''aom5721a1_yocto4.0.18-le1.1_v0.0.2_kernel-6.6.28_qcs6490.xml''' | ||
| + | <pre>$ repo init -u https://dev.azure.com/AIM-Linux/risc_qcs_linux_le_1.1/_git/manifest -b main -m ${OFFICIAL_MANIFEST} | ||
| + | $ repo sync -c -j${YOUR_CPU_CORE_NUM} | ||
| + | $ cp layers/meta-advantech/conf/machine/qcm6490.conf layers/meta-qcom-hwe/conf/machine/qcm6490.conf | ||
| + | $ cp layers/meta-advantech/recipes-sdk/files/content_config.json layers/meta-qcom-robotics-sdk/recipes-sdk/files/content_config.json | ||
| + | $ cp layers/meta-advantech/recipes-core/base-files/base-files/fstab layers/poky/meta/recipes-core/base-files/base-files/fstab</pre> | ||
| + | |||
| + | If you want to get latest bsp | ||
| + | |||
| + | *'''AOM-2721''': '''<span data-darkreader-inline-color="" style="color: rgb(155, 89, 182); --darkreader-inline-color: var(--darkreader-text-9b59b6, #a467bc);">${LATEST_MANIFEST}</span>''' is '''adv-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1.xml''' | ||
| + | *'''MIO-5355''': <span data-darkreader-inline-color="" style="color: rgb(155, 89, 182); --darkreader-inline-color: var(--darkreader-text-9b59b6, #a467bc);">'''${LATEST_MANIFEST}'''</span> is '''adv-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1_mio5355.xml''' | ||
| + | *'''DS-011''': <span data-darkreader-inline-color="" style="color: rgb(155, 89, 182); --darkreader-inline-color: var(--darkreader-text-9b59b6, #a467bc);">'''${LATEST_MANIFEST}'''</span> is '''adv-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1_ds011.xml''' | ||
| + | *'''AOM-5721''': '''<span data-darkreader-inline-color="" style="color: rgb(155, 89, 182); --darkreader-inline-color: var(--darkreader-text-9b59b6, #a467bc);">${LATEST_MANIFEST}</span>''' is '''adv-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1_aom5721.xml''' | ||
| + | <pre>$ repo init -u https://dev.azure.com/AIM-Linux/risc_qcs_linux_le_1.1/_git/manifest -b main -m ${LATEST_MANIFEST} | ||
| + | $ repo sync -c -j${YOUR_CPU_CORE_NUM} | ||
| + | $ cp layers/meta-advantech/conf/machine/qcm6490.conf layers/meta-qcom-hwe/conf/machine/qcm6490.conf | ||
| + | $ cp layers/meta-advantech/recipes-sdk/files/content_config.json layers/meta-qcom-robotics-sdk/recipes-sdk/files/content_config.json | ||
| + | $ cp layers/meta-advantech/recipes-core/base-files/base-files/fstab layers/poky/meta/recipes-core/base-files/base-files/fstab</pre> | ||
| + | |||
| + | <span data-darkreader-inline-color="" style="color: rgb(0, 0, 255); --darkreader-inline-color: var(--darkreader-text-0000ff, #337dff);">'''You can check the download BSP as the following.'''</span> | ||
| + | |||
| + | [[File:LE1.1 BSP Folder.jpg|400px|LE1.1 BSP Folder.jpg]] | ||
| + | |||
| + | == Get and Unzip the Downloads Files == | ||
| + | |||
| + | 1. Private Yocto downloads file '''<span data-darkreader-inline-color="" style="color: rgb(204, 0, 0); --darkreader-inline-color: var(--darkreader-text-cc0000, #ff3d3d);">(Must to do)</span> ''': [https://www.dropbox.com/scl/fi/uagtd3c57cxirgl2imdwb/downloads_qcs6490_le1.1_private.tar.gz?rlkey=yriz1qlhzem5pp3jhytpmncov&st=46t6y0u3&dl=0 [ downloads_qcs6490_le1.1_private.tar.gz ]] | ||
| + | |||
| + | The size of downloads_qcs6490_le1.1_private.tar.gz is <span data-darkreader-inline-color="" style="color: rgb(192, 57, 43); --darkreader-inline-color: var(--darkreader-text-c0392b, #d85c4f);">277854168</span> byte (<span data-darkreader-inline-color="" style="color: rgb(192, 57, 43); --darkreader-inline-color: var(--darkreader-text-c0392b, #d85c4f);">271,342 KB</span>) | ||
| + | |||
| + | The md5sum of downloads_qcs6490_le1.1_private.tar.gz is <span data-darkreader-inline-color="" style="color: rgb(192, 57, 43); --darkreader-inline-color: var(--darkreader-text-c0392b, #d85c4f);">57692f7262a68b21a5885e8d72299d78</span> | ||
| + | |||
| + | <span data-darkreader-inline-color="" style="color: rgb(204, 0, 0); --darkreader-inline-color: var(--darkreader-text-cc0000, #ff3d3d);">'''You need to get the PASSWORD by contacting the PM or AE of project.'''</span> | ||
| + | <pre>$ cd /home/adv/BSP | ||
| + | $ openssl des3 -d -k ${PASSWORD} -salt -pbkdf2 -in downloads_qcs6490_le1.1_private.tar.gz -out downloads_qcs6490_le1.1_private_decrypt.tar.gz | ||
| + | $ tar -zxvf downloads_qcs6490_le1.1_private_decrypt.tar.gz | ||
| + | </pre> | ||
| + | |||
| + | 2. Public Yocto downloads file: [https://www.dropbox.com/scl/fi/vsagx8s9t1i5qs43b8glk/downloads_qcs6490_le1.1_public.tar.gz?rlkey=6mnp67jal0kv722elc3s6e25k&st=ehvpxftu&dl=0 [ downloads_qcs6490_le1.1_public.tar.gz ]] | ||
| + | |||
| + | The size of downloads_qcs6490_le1.1_public.tar.gz is <span data-darkreader-inline-color="" style="color: rgb(192, 57, 43); --darkreader-inline-color: var(--darkreader-text-c0392b, #d85c4f);">31810989229</span> byte (<span data-darkreader-inline-color="" style="color: rgb(192, 57, 43); --darkreader-inline-color: var(--darkreader-text-c0392b, #d85c4f);">31,065,420 KB</span>) | ||
| + | |||
| + | The md5sum of downloads_qcs6490_le1.1_public.tar.gz is <span data-darkreader-inline-color="" style="color: rgb(192, 57, 43); --darkreader-inline-color: var(--darkreader-text-c0392b, #d85c4f);">870323bca740ca9af5322c6553a749ac</span> | ||
| + | <pre>$ cd /home/adv/BSP | ||
| + | $ tar -zxvf downloads_qcs6490_le1.1_public.tar.gz | ||
| + | </pre> | ||
| + | |||
| + | | ||
| + | |||
| + | = Build Instructions = | ||
| + | |||
| + | == Source env == | ||
| + | |||
| + | '''<span data-darkreader-inline-color="" style="color: rgb(255, 0, 0); --darkreader-inline-color: var(--darkreader-text-ff0000, #ff1a1a);">For the "Build All images", "Build All Images individually" and "Build yocto images", you need to do the "Source env".</span>''' | ||
| + | <pre>$ source scripts/env.sh</pre> | ||
| + | |||
| + | == Build All Images == | ||
| + | <pre>$ scripts/build_release.sh -all -qcm6490 -user</pre> | ||
| + | |||
| + | *'''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. | ||
| + | <pre>$ scripts/build_release.sh -adsp</pre> | ||
| + | |||
| + | ==== 2. Build AOP Image ==== | ||
| + | |||
| + | After building the AOP, you need to build the "6. Generate Firmware Prebuilds" to package new firmware prebuild files. | ||
| + | <pre>$ scripts/build_release.sh -aop</pre> | ||
| + | |||
| + | ==== 3. Build CDSP Image ==== | ||
| + | |||
| + | After building the CDSP, you need to build the "6. Generate Firmware Prebuilds" to package new firmware prebuild files. | ||
| + | <pre>$ scripts/build_release.sh -cdsp</pre> | ||
| + | |||
| + | ==== 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. | ||
| + | <pre>$ scripts/build_release.sh -boot</pre> | ||
| + | |||
| + | ==== 5. Build TZ Image ==== | ||
| + | |||
| + | After building the TZ, you need to build the "6. Generate Firmware Prebuilds" to package new firmware prebuild files. | ||
| + | <pre>$ scripts/build_release.sh -tz</pre> | ||
| + | |||
| + | ==== 6. Generate Firmware Prebuilds ==== | ||
| + | <pre>$ scripts/build_release.sh -common</pre> | ||
| + | |||
| + | '''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 ==== | ||
| + | <pre>$ scripts/build_release.sh -yocto -qcm6490 -user</pre> | ||
| + | |||
| + | == Build yocto images == | ||
| + | <pre>$ cd /home/adv/BSP | ||
| + | $ source scripts/env.sh | ||
| + | $ unset DEBUG_BUILD | ||
| + | $ MACHINE=qcm6490 DISTRO=qcom-robotics-ros2-humble source setup-robotics-environment | ||
| + | $ ../qirp-build qcom-robotics-full-image</pre> | ||
| + | |||
| + | For the qcsLBV11026 version: | ||
| + | <pre>$ cd /home/adv/BSP | ||
| + | $ source scripts/env.sh | ||
| + | $ MACHINE=qcm6490 DISTRO=qcom-wayland source setup-environment | ||
| + | $ devtool modify qps615 | ||
| + | $ bitbake qcom-multimedia-image</pre> | ||
| + | |||
| + | | ||
| + | |||
| + | = 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: [[AIM-Linux/BSP/Qualcomm/Linux_Yocto_OS_Release_note/LE1.1/Internal|OS Support List(LE1.1 based on Yocto4.0.18)]] | ||
| + | |||
| + | Unzip command example: | ||
| + | <pre>$ sudo tar -zxvf aom2721a1_yl01101_k0606028_q6490_08g_ufs4_2025-02-10.tgz</pre> | ||
| + | |||
| + | == 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 == | ||
| + | |||
| + | === '''Install''' === | ||
| + | |||
| + | You can choose one of the following methods to install the flash tool. | ||
| + | |||
| + | ==== '''Install via CLI''' ==== | ||
| + | |||
| + | '''1. Download and install the Qualcomm Software Center ''' | ||
| + | |||
| + | ''' [https://softwarecenter.qualcomm.com/#/ <span lang="EN-US" style="font-family:Aptos">Qualcomm® Software Center</span>] ''' | ||
| + | |||
| + | '''2. Open CMD or PowerShell''' | ||
| + | |||
| + | '''3. Login your Qualcomm ID ''' | ||
| + | <pre>qsc-cli login -u <USER> -p <PASSWORD> | ||
| + | </pre> | ||
| + | |||
| + | '''4. Install''' | ||
| + | |||
| + | Use -rv to specify the version you want to install.<br/> The tool has only been tested with the version mentioned below.<br/> Using other versions may result in unexpected behavior or inconsistent outcomes. | ||
| + | <pre>qsc-cli tool install --name pcat --activate-default-license -rv 2.40.2.83 | ||
| + | qsc-cli tool install --name quts --activate-default-license -rv 1.82.2.7 | ||
| + | qsc-cli tool install --name qud --activate-default-license -rv 1.00.90.9 | ||
| + | </pre> | ||
| + | |||
| + | If you see the message "Accept and continue with installation [y/n] :", type y and press Enter to proceed. | ||
| + | |||
| + | ==== '''Install via GUI''' ==== | ||
| + | |||
| + | '''1. Download and install the Qualcomm Software Center ''' | ||
| + | |||
| + | ''' [https://softwarecenter.qualcomm.com/#/ <span lang="EN-US" style="font-family:Aptos">Qualcomm® Software Center</span>] ''' | ||
| + | |||
| + | This wiki page was created based on version 1.16.0. GUIs in other versions may differ. | ||
| + | |||
| + | '''2. Open the Qualcomm Software Center ''' | ||
| + | |||
| + | Login in your Qualcomm ID and Click "Catalog -> Tools -> Search Tools" | ||
| + | |||
| + | [[File:Qsc1.jpg|1000px|qsc-search]] | ||
| + | |||
| + | '''3. Search "PCAT" in the search bar ''' | ||
| + | |||
| + | '''[[File:ROM-2860 search bar.PNG|1000px|RTENOTITLE]]''' | ||
| + | |||
| + | '''4. Click Qualcomm® Product Configuration Assistant Tool ''' | ||
| + | |||
| + | '''5. Select Qualcomm® Product Configuration Assistant Tool version ''' | ||
| + | |||
| + | ''' Version: 2.33.2.119 or 2.40.2.83''' | ||
| + | |||
| + | '''[[File:ROM-2860 PCAT Tool version.PNG|1000px|RTENOTITLE]]''' | ||
| + | |||
| + | '''6. Install Qualcomm® Product Configuration Assistant Tool ''' | ||
| + | |||
| + | '''7. Search "QUTS" in the search bar ''' | ||
| + | |||
| + | '''[[File:ROM-2860 QUTS Tool.PNG|1000px|RTENOTITLE]]''' | ||
| + | |||
| + | '''8. Click the Qualcomm® Unified Tools Services ''' | ||
| + | |||
| + | '''9. Select Qualcomm® Unified Tools Services version ''' | ||
| + | |||
| + | ''' Version : 1.75.2.9 or 1.82.2.7''' | ||
| + | |||
| + | '''10. Install Qualcomm® Unified Tools Services ''' | ||
| + | |||
| + | '''[[File:ROM-2860 QUTS Tool version.PNG|1000px|RTENOTITLE]]''' | ||
| + | |||
| + | '''11. Search "QUD" in the search bar ''' | ||
| + | |||
| + | '''12. Click the Qualcomm® USB Drivers and click the Qualcomm® USB Driver''' | ||
| + | |||
| + | '''13. Select Qualcomm® USB Driver version ''' | ||
| + | |||
| + | ''' Version: 1.00.90.9''' | ||
| + | |||
| + | '''14. Install the Qualcomm® USB Driver''' | ||
| + | |||
| + | === '''Flash''' === | ||
| + | |||
| + | '''1. 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 ''' | ||
| + | |||
| + | '''2. After completing the installation of PCAT and QUTS, you will find the new applications in your Windows system. To begin, open PCAT.''' | ||
| + | |||
| + | '''[[File:ROM-2860 new tools in windows.PNG|RTENOTITLE]]''' | ||
| + | |||
| + | '''3. Connect your device via Micro USB.''' | ||
| + | |||
| + | ==== '''UFS''' ==== | ||
| + | |||
| + | '''USF Provision''' | ||
| + | |||
| + | '''1. Select provision button [[File:ROM-2860 provision file button.PNG|RTENOTITLE]] ''' | ||
| + | |||
| + | [[File:ROM-2860 provision file icon.PNG|RTENOTITLE]] | ||
| + | |||
| + | '''2. Add the prog_firehose_ddr.elf and provision_ufs31.xml in UFS folder. ''' | ||
| + | |||
| + | [[File:ROM-2860 provision file.PNG|RTENOTITLE]] | ||
| + | |||
| + | '''3. Then press "OK" , it will start to do USF Provision. ''' | ||
| + | |||
| + | [[File:ROM-2860 provision file running.PNG|RTENOTITLE]] | ||
| + | |||
| + | '''4. When the Provision finished , you can see the result in message window. ''' | ||
| + | |||
| + | [[File:ROM-2860 provision file result.PNG|RTENOTITLE]] | ||
| + | |||
| + | '''Connect to device and Flash''' | ||
| + | |||
| + | ''' <span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);">1. Change the SW1 and SW2 </span>''' | ||
| + | |||
| + | '''<span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);"> Flash UFS: the SW1 switch to 1-on, 2-on</span>''' | ||
| + | |||
| + | '''<span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);">Forced Recovery : The SW2 switch to 1-on ,2 - on . </span>''' | ||
| + | |||
| + | ''' 2. Turn on the power ''' | ||
| + | |||
| + | ''' 3. Open " PCATApp" Tool ''' | ||
| + | |||
| + | ''' 4. Click " Connect A Device" ''' | ||
| + | |||
| + | [[File:ROM-2860 PCAT UFS .PNG|RTENOTITLE]] | ||
| + | |||
| + | '''5. Select "Qualcomm HS-USB QDLoader 9008 (COM6) ''' | ||
| + | |||
| + | [[File:ROM-2860 PCAT Tool Select device.PNG|RTENOTITLE]] | ||
| + | |||
| + | '''6. Click " Connect " device ''' | ||
| + | |||
| + | [[File:ROM-2860 PCAT Tool Connect device.PNG|RTENOTITLE]] | ||
| + | |||
| + | '''7. When you connected successfully , it will show "green word" - Qualcomm HS-USB QDLoader 9008 (COM 6) ''' | ||
| + | |||
| + | [[File:ROM-2860 PCAT UFS connectiondevice.PNG|RTENOTITLE]] | ||
| + | |||
| + | '''8. Select UFS Folder in PCAT Tool , the Tool will help load Files automatically and Select "MEMORY_TYPE_UFS" ''' | ||
| + | |||
| + | [[File:ROM-2860 PCAT Select UFS File .PNG|RTENOTITLE]] | ||
| + | |||
| + | '''9. Click " Download" ''' | ||
| + | |||
| + | [[File:ROM-2860 PCAT Select UFS File Download.png|RTENOTITLE]] | ||
| + | |||
| + | '''10. UFS Download Status ''' | ||
| + | |||
| + | '''[[File:ROM-2860 PCAT Select UFS File Download status.png|RTENOTITLE]]11. UFS Donwload compeleted ''' | ||
| + | |||
| + | '''[[File:ROM-2860 PCAT Select UFS File Download status 100.png|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 : ''' | ||
| + | |||
| + | '''<span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);">The SW1 switch to 1-on, 2-on</span>''' | ||
| + | |||
| + | '''<span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);">The SW2 switch to 1-off, 2-on</span>''' | ||
| + | |||
| + | '''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.. ''' | ||
| + | |||
| + | ==== '''<u>eMMC</u>''' ==== | ||
| + | |||
| + | '''1. Turn off the Power ''' | ||
| + | |||
| + | '''<span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);">2. Change the SW1 and SW2 </span>''' | ||
| + | |||
| + | '''<span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);"> Flash eMMC: The SW1 switch to 1-off, 2-on</span>''' | ||
| + | |||
| + | '''<span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);">Forced Recovery : The SW2 switch to 1-on, 2-on</span>''' | ||
| + | |||
| + | '''3. Turn on the power ''' | ||
| + | |||
| + | '''4. Make sure the device connection status. ''' | ||
| + | |||
| + | '''5. If the device disconnect with PCAT Tool , please connect it again. ''' | ||
| + | |||
| + | [[File:ROM-2860 PCAT Tool Connect device.PNG|RTENOTITLE]] | ||
| + | |||
| + | '''6. Select eMMC Folder.''' | ||
| + | |||
| + | '''[[File:ROM-2860 PCAT Select eMMC File.png|RTENOTITLE]]7. Make sure the setting ,then press " Download " button.''' | ||
| + | |||
| + | [[File:ROM-2860 PCAT check eMMC setting download1.png|RTENOTITLE]] | ||
| + | |||
| + | ''' 8. eMMC downlaoad status ''' | ||
| + | |||
| + | [[File:ROM-2860 PCAT Select eMMC File Download status.png|RTENOTITLE]] | ||
| + | |||
| + | '''9. eMMC D''''''onwload compeleted ''' | ||
| + | |||
| + | [[File:ROM-2860 PCAT Select eMMC File Download status 100.png|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 : ''' | ||
| + | |||
| + | '''<span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);">The SW1 switch to 1-off, 2-on</span>''' | ||
| + | |||
| + | '''<span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);">The SW2 switch to 1-off, 2-on </span>''' | ||
| + | |||
| + | '''13. Connect debug cable and open the terminal , turn on the power . ''' | ||
| + | |||
| + | '''14. When the systme boot up , you need to type " qcm6490 login: <span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 51); --darkreader-inline-bgcolor: var(--darkreader-background-ffff33, #828200);">root </span>" , " Password: <span data-darkreader-inline-bgcolor="" style="background-color: rgb(255, 255, 0); --darkreader-inline-bgcolor: var(--darkreader-background-ffff00, #999900);">oelinux123</span>"''' | ||
| + | |||
| + | '''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: | ||
| + | <pre>$ 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</pre> | ||
| + | |||
| + | === Use the QDL to flash images (UFS only now) === | ||
| + | |||
| + | 1. Ensure the QDL mode | ||
| + | <pre>$ lsusb | ||
| + | Bus 001 Device 028: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)</pre> | ||
| + | |||
| + | 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: | ||
| + | <pre>$ sudo systemctl status ModemManager</pre> | ||
| + | |||
| + | If the ModemManager is enabling, please help to stop it by: | ||
| + | <pre>$ sudo systemctl stop ModemManager</pre> | ||
| + | |||
| + | 3. Go to the location of images in the workspace to flash the images: | ||
| + | <pre>$ 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</pre> | ||
| + | |||
| + | 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 https://www.dropbox.com/scl/fi/nv65h778rwkhtul1gnwrr/qdl?rlkey=gzy83yt1x2qhhnqzra9kukhai&st=p4n42eax&dl=0]) or to build the standalone QDL. | ||
| + | <pre>$ ./qdl prog_firehose_ddr.elf rawprogram*.xml patch*.xml | ||
| + | -bash: ./qdl: No such file or directory</pre> | ||
| + | |||
| + | How to build the standalone QDL? | ||
| + | <pre>$ sudo apt-get install libxml2-dev libudev-dev | ||
| + | $ git clone https://git.codelinaro.org/linaro/qcomlt/qdl.git | ||
| + | $ cd qdl | ||
| + | $ make</pre> | ||
| + | |||
| + | | ||
| + | |||
| + | = Customization = | ||
| + | |||
| + | == Setting up SDK == | ||
| + | |||
| + | You can download the sdk from [https://www.dropbox.com/scl/fo/tptbp080ohgckjdbr3vrq/ANzxY7ble5Crf5iY3OBFgpo/officialbuild/risc_qcs_linux_yocto_00041.0?dl=0&e=2&preview=sdk.qcs6490.le.1.1.r00041.0.tar.gz&rlkey=647rksjn60zyqj4i134tflsuj&subfolder_nav_tracking=1 [ 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 <span data-darkreader-inline-color="" style="color: rgb(192, 57, 43); --darkreader-inline-color: var(--darkreader-text-c0392b, #d85c4f);">4160567372 </span>byte (<span data-darkreader-inline-color="" style="color: rgb(192, 57, 43); --darkreader-inline-color: var(--darkreader-text-c0392b, #d85c4f);">4,063,055 KB</span>) | ||
| + | |||
| + | The md5sum of sdk.qcs6490.le.1.1.r00041.0.tar.gz is <span data-darkreader-inline-color="" style="color: rgb(192, 57, 43); --darkreader-inline-color: var(--darkreader-text-c0392b, #d85c4f);">f4184521f8d2c71a8a2953ac1b143242</span> | ||
| + | <pre>$ 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</pre> | ||
| + | |||
| + | Enter new installed directory or just press <code>Enter</code> to use default directory. While <code>Proceed[Y/n]?</code> shows up, please enter the correct one. | ||
| + | |||
| + | [[File:2025-02-18 123508.jpg|400px|2025-02-18 123508.jpg]] | ||
| + | |||
| + | Waiting for the SDK installed (while the following messages show up completely) | ||
| + | |||
| + | [[File:2025-02-18 124037.jpg|400px|2025-02-18 124037.jpg]] | ||
| + | |||
| + | == Setting up cross compiling environment == | ||
| + | |||
| + | SDK has been set up (ref.[[#Setting_up_SDK|<span data-darkreader-inline-color="" style="color: rgb(255, 0, 0); --darkreader-inline-color: var(--darkreader-text-ff0000, #ff1a1a);">Setting up SDK</span>]]) Perform the following command in terminal console | ||
| + | <pre>$ source ${TOOLCHAIN}/environment-setup-armv8-2a-qcom-linux | ||
| + | </pre> | ||
| + | |||
| + | | ||
| + | |||
| + | = Set the AI execution environment of QIRP images on your device board = | ||
| + | |||
| + | Set the AI execution environment of QIRP images on your board: | ||
| + | <pre>$ source /opt/qcom/qirp-sdk/qirp-setup.sh | ||
| + | </pre> | ||
Latest revision as of 03:45, 12 November 2025
Contents
- 1 Introduction
- 2 Host machine requirements
- 3 Docker Install and BSP Download
- 4 Build Instructions
- 5 Recovery & Rescue
- 6 Customization
- 7 Set the AI execution environment of QIRP images on your device board
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 project.
$ 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)
- AOM-2721: A example of ${OFFICIAL_MANIFEST} is aom2721a1_yl01101_k0606028_q6490_08g.xml
- MIO-5355: A example of ${OFFICIAL_MANIFEST} is mio5355a1_yl01101_k0606028_q6490_08g.xml
- DS-011: A example of ${OFFICIAL_MANIFEST} is ds011a1_yocto4.0.18-le1.1_v2.0.0_kernel-6.6.28_qcs6490.xml
- AOM-5721: A example of ${OFFICIAL_MANIFEST} is aom5721a1_yocto4.0.18-le1.1_v0.0.2_kernel-6.6.28_qcs6490.xml
$ repo init -u https://dev.azure.com/AIM-Linux/risc_qcs_linux_le_1.1/_git/manifest -b main -m ${OFFICIAL_MANIFEST}
$ repo sync -c -j${YOUR_CPU_CORE_NUM}
$ cp layers/meta-advantech/conf/machine/qcm6490.conf layers/meta-qcom-hwe/conf/machine/qcm6490.conf
$ cp layers/meta-advantech/recipes-sdk/files/content_config.json layers/meta-qcom-robotics-sdk/recipes-sdk/files/content_config.json
$ cp layers/meta-advantech/recipes-core/base-files/base-files/fstab layers/poky/meta/recipes-core/base-files/base-files/fstab
If you want to get latest bsp
- AOM-2721: ${LATEST_MANIFEST} is adv-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1.xml
- MIO-5355: ${LATEST_MANIFEST} is adv-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1_mio5355.xml
- DS-011: ${LATEST_MANIFEST} is adv-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1_ds011.xml
- AOM-5721: ${LATEST_MANIFEST} is adv-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1_aom5721.xml
$ repo init -u https://dev.azure.com/AIM-Linux/risc_qcs_linux_le_1.1/_git/manifest -b main -m ${LATEST_MANIFEST}
$ repo sync -c -j${YOUR_CPU_CORE_NUM}
$ cp layers/meta-advantech/conf/machine/qcm6490.conf layers/meta-qcom-hwe/conf/machine/qcm6490.conf
$ cp layers/meta-advantech/recipes-sdk/files/content_config.json layers/meta-qcom-robotics-sdk/recipes-sdk/files/content_config.json
$ cp layers/meta-advantech/recipes-core/base-files/base-files/fstab layers/poky/meta/recipes-core/base-files/base-files/fstab
You can check the download BSP as the following.
Get and Unzip the Downloads Files
1. Private Yocto downloads file (Must to do) : [ downloads_qcs6490_le1.1_private.tar.gz ]
The size of downloads_qcs6490_le1.1_private.tar.gz is 277854168 byte (271,342 KB)
The md5sum of downloads_qcs6490_le1.1_private.tar.gz is 57692f7262a68b21a5885e8d72299d78
You need to get the PASSWORD by contacting the PM or AE of project.
$ cd /home/adv/BSP
$ openssl des3 -d -k ${PASSWORD} -salt -pbkdf2 -in downloads_qcs6490_le1.1_private.tar.gz -out downloads_qcs6490_le1.1_private_decrypt.tar.gz
$ tar -zxvf downloads_qcs6490_le1.1_private_decrypt.tar.gz
2. Public Yocto downloads file: [ downloads_qcs6490_le1.1_public.tar.gz ]
The size of downloads_qcs6490_le1.1_public.tar.gz is 31810989229 byte (31,065,420 KB)
The md5sum of downloads_qcs6490_le1.1_public.tar.gz is 870323bca740ca9af5322c6553a749ac
$ cd /home/adv/BSP $ tar -zxvf downloads_qcs6490_le1.1_public.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 -qcm6490 -user
- 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 -qcm6490 -user
Build yocto images
$ cd /home/adv/BSP $ source scripts/env.sh $ unset DEBUG_BUILD $ 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
Install
You can choose one of the following methods to install the flash tool.
Install via CLI
1. Download and install the Qualcomm Software Center
2. Open CMD or PowerShell
3. Login your Qualcomm ID
qsc-cli login -u <USER> -p <PASSWORD>
4. Install
Use -rv to specify the version you want to install.
The tool has only been tested with the version mentioned below.
Using other versions may result in unexpected behavior or inconsistent outcomes.
qsc-cli tool install --name pcat --activate-default-license -rv 2.40.2.83 qsc-cli tool install --name quts --activate-default-license -rv 1.82.2.7 qsc-cli tool install --name qud --activate-default-license -rv 1.00.90.9
If you see the message "Accept and continue with installation [y/n] :", type y and press Enter to proceed.
Install via GUI
1. Download and install the Qualcomm Software Center
This wiki page was created based on version 1.16.0. GUIs in other versions may differ.
2. Open the Qualcomm Software Center
Login in your Qualcomm ID and Click "Catalog -> Tools -> Search Tools"
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 or 2.40.2.83
6. Install Qualcomm® Product Configuration Assistant Tool
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 or 1.82.2.7
10. Install Qualcomm® Unified Tools Services
11. Search "QUD" in the search bar
12. Click the Qualcomm® USB Drivers and click the Qualcomm® USB Driver
13. Select Qualcomm® USB Driver version
Version: 1.00.90.9
14. Install the Qualcomm® USB Driver
Flash
1. 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
2. After completing the installation of PCAT and QUTS, you will find the new applications in your Windows system. To begin, open PCAT.
3. Connect your device via Micro USB.
UFS
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.
Connect to device and Flash
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..
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
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.
Waiting for the SDK installed (while the following messages show up completely)
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 your device board
Set the AI execution environment of QIRP images on your board:
$ source /opt/qcom/qirp-sdk/qirp-setup.sh





