• 编译安装并刷写高通智能机器人SDK


    The Qualcomm Intelligent Robotics Product SDK (QIRP SDK) 高通智能机器SDK基于ROS2进行开发,此SDK适用于高通linux发行版本,QIRPSDK中提供以下内容:

    ROS 包中用于支持机器人应用程序开发的参考代码

    • 用于评估机器人平台的端到端场景示例
    • 集成交叉编译工具链,包括常见的编译工具,例如 aarch64-oe-linux-gcc、make、cmake 和 ROS 核心
    • 集成开发的工具和脚本

    QIRP SDK整体架构如下图所示:

    Qualcomm® Intelligent Multimedia SDK (IM SDK) :提供用于优化应用开发的 Qualcomm 硬件加速插件。

    Qualcomm® Intelligent Robotics Function SDK: 为 Qualcomm 机器人平台提供机器人功能 ROS 节点。该 SDK 基于 ROS2,这是一个开源的操作系统。

    Qualcomm® AI Engine Direct SDK: 为 Qualcomm 芯片组和 AI 加速核心上的 AI/ML 用例提供软件架构。它提供了一个统一的 API,具有模块化和可扩展的单独加速器库,形成了全栈 AI 解决方案的可重用基础。它支持 runtime,如 Qualcomm Neural Processing SDK 和 TensorFlow Lite AI Engine Direct Delegate。

    编译和安装QIRPSDK

    前提条件:需要Ubunt22.04的主机和至少50GB的磁盘空间

    Ubuntu 主机需要进行一些配置操作,确保所需的软件工具已安装和配置,可以使用。

    1.安装以下软件包,准备好运行 Yocto 版本所需的主机环境

    sudo apt update

    sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential \

        chrpath socat cpio python3 python3-pip python3-pexpect xz-utils \

        debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa \

        libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd \

        liblz4-tool locales tar python-is-python3 file libxml-opml-simplegen-perl \

        vim whiptail

    2.设置语言环境:

    sudo locale-gen en_US.UTF-8

    sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

    export LC_ALL=en_US.UTF-8

    export LANG=en_US.UTF-8

    3更新 git 配置:

    # Check if your identity is configured in. gitconfig

    git config --get user.email

    git config --get user.name

    # Run the following commands if you do not have your account identity set in .gitconfig

    git config --global user.email

    git config --global user.name <"Your Name">

    # Add the following UI color option for output of console (optional)

    git config --global color.ui auto

    # Add the following git configurations to fetch large size repositories and to avoid unreliable connections

    git config --global http.postBuffer 1048576000

    git config --global http.maxRequestBuffer 1048576000

    git config --global http.lowSpeedLimit 0

    git config --global http.lowSpeedTime 999999

    编译基础镜像

    1.设置repo

    mkdir -p ~/bin

    cd ~/bin

    #Note if you already have a previous directory of repo_tool, you can delete it

    rm -rf ~/bin/repo_tool

    git clone https://android.googlesource.com/tools/repo.git -b v2.41 repo_tool

    cd repo_tool

    git checkout -b v2.41

    export PATH=~/bin/repo_tool:$PATH

    如果您所在的区域阻止了对 android.googlesource 的访问,请尝试以下配置以从 Codelinaro 镜像获取存储库

    git config --global url.https://git.codelinaro.org/clo/la/tools/repo.insteadOf https://android.googlesource.com/tools/repo

    如果上述方法不起作用,也可以尝试用命令行安装repo

    sudo apt install curl

    mkdir -p ~/bin

    curl https://raw.githubusercontent.com/GerritCodeReview/git-repo/v2.41/repo -o ~/bin/repo && chmod +x ~/bin/repo

    export PATH=~/bin:$PATH

    注意:最新的repo只支持python3

    2.下载 Qualcomm Yocto 和支持层:

     mkdir

     cd

    repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m

    repo sync -c -j8

    有关最新版的请参考Qualcomm Documentation

    举例:

    这里采用‘qcom-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1’版本

    repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m qcom-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1.xml

    repo sync -c -j8

    下载完后检查layer文件夹下这些层是否存在

    meta-qcom

    meta-qcom-hwe

    meta-qcom-distro

    meta-ros

    meta-qcom-robotics

    meta-qcom-robotics-distro

    meta-qcom-robotics-sdk

    meta-qcom-qim-product-sdk

    meta-qcom-qim-product-sdk

    3.设置编译环境:

    cd

    MACHINE=qcm6490 DISTRO=qcom-robotics-ros2-humble source setup-robotics-environment

    4编译机器人镜像和 QIRP SDK 组件

    ../qirp-build qcom-robotics-full-image

    编译过程中可能会出现网络错误导致fetch error,多尝试几次即可。

    编译完成后可查看以下文件是否存在

    QIRP SDK artifacts: /build-qcom-robotics-ros2-humble/tmpglibc/deploy/qirpsdk_artifacts/qirp-sdk_.tar.gz

    Robotics image:/build-qcom-robotics-ros2-humble/tmpglibc/deploy/images/qcm6490/qcom-robotics-full-image

    刷写镜像(需要RB3Gen2设备

    确保在 Linux 主机上配置了 Qualcomm 制造供应商 ID 05c6 的 udev USB 规则

    1.导航到 udev USB 规则目录

    cd /etc/udev/rules.d

    ls

    如果 51-qcom-usb.rules 文件不存在,使用 sudo vi 51-qcom-usb.rules 创建该文件并将以下内容添加到文件中:

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0666", GROUP="plugdev"

    重新启动udev

    sudo systemctl restart udev

    2.将设备进入EDL模式

    adb shell reboot edl

    3.验证设备是否已进入 QDL 模式

    lsusb

    输出以下内容表示成功进入QDL

    Bus 002 Device 014: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)

    4.确保ModemManager 未在运行

    有些 Linux 发行版本随附 ModemManager,即一款用于配置移动宽带的工具。当设备以 USB 模式连接时,它会被识别为 Qualcomm Modem,ModemManager 会尝试配置该设备。由于这会干扰 QDL 刷写,因此您必须在连接设备之前禁用 ModemManager。如果使用的 Linux 发行版本带有 systemd,则可使用以下命令停止 ModemManager:

    sudo systemctl stop ModemManager

    如果您需要 ModemManager,则可在刷写完成后再次启动它。

    5. 导航到工作区中的以下位置可找到 QDL 工具并刷写镜像

    # cd /build-qcom-wayland/tmp-glibc/deploy/images//

    # build_path: For DISTRO=qcom-wayland, it is build-qcom-wayland.

    #             For DISTRO=qcom-robotics-ros2-humble, it is build-qcom-robotics-ros2-humble

    # qdl [ ...]

    # Example: build_path is build-qcom-wayland

    cd /build-qcom-wayland/tmp-glibc/deploy/images/qcm6490/qcom-multimedia-image

    ./qdl prog_firehose_ddr.elf rawprogram*.xml patch*.xml

    如果您在终端窗口上看到 partition 1 is now bootable(如以下消息所示),则表示刷写成功

    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

    刷写操作成功后,运行 lsusb 命令以在终端窗口上查看设备信息:

    Bus 002 Device 006: ID 05c6:901d Qualcomm, Inc. QCM6490_fd2913cf

    作者:王纪尧 高通工程师

  • 相关阅读:
    阿里云“玩转云上 StarRocks3.0 湖仓分析”,开启数据分析新范式
    爬虫 — App 爬虫(二)
    【Spring Cloud系列】Config详解与应用
    【考研词汇训练营】Day 10 —— capital,expand,force,adapt,depand
    文献学习(part102-A)--Autoencoders
    Windows安装docker
    【C++从0到王者】第三十一站:map与set
    mybatis各阶段的详解
    【C++】STL —— list的基本使用
    zookeeper整理:paxos算法学习
  • 原文地址:https://blog.csdn.net/csdnsqst0050/article/details/143433424