高通智能多媒体 SDK (QIM SDK) 快速入门指南(4)
4.5 与 Linux 工作站同步和构建 QIM SDK
QIM SDK 工作流程也可在 Linux 工作站中使用,无需安装额外的容器包(如 docker)。
Linux 工作站安装了 QIM SDK 工作流程的必备主机包后,可以通过从sdk -tools/scripts/host文件夹获取host_env_setup.sh脚本来启动 Linux 工作站上 QIM SDK 的工作流程。
要同步和构建 QIM SDK,请执行以下操作
-
在主机文件系统上创建一个目录以同步 QIM SDK 工作区。例如:
$mkdir <qim-sdk-workspace> $cd <qim-sdk-workspace>
-
从 CodeLinaro 获取 QIM SDK 源代码:
$ repo init -u https://git.codelinaro.org/clo/le/sdkqim/qim/manifest.git -- repo-branch=qc/stable --repo-url=git://git.quicinc.com/tools/repo.git -m QIM.SDK.1.0.0.r1-01100-QIM.0.xml -b release && repo sync -qc --no-tags -j8
-
使用以下条目编辑/sdk-tools/targets/LE.PRODUCT.2.1中存在的 JSON 配置文件 :
{ "Image_OS": "ubuntu18", "Additional_tag": "sdk-18", "eSDK_shell_file": "Absolute path to Platform extensible SDK file on Linux Workstation", "Base_Dir_Location": "path-to-the-directory-where-the-project-is-initialized-applies-only-for-Linux-Workstation(host)-build-variant", "Tflite_prebuilt_file": "absolute path to tf-lite-prebuilt-dev-tar-file generated from TfLite SDK", "Acceleration_engines": [ { "Acceleration_engine":"name of acceleration engine 1", "Acceleration_engine_path":"absolute path to Acceleration Engine SDK 1" }, { "Acceleration_engine":"-", "Acceleration_engine_path":"-" } ], "Host_dir_mounted_in_container": "<Directory on Host that will be mapped into QIMSDK container to get artifacts to host (not applicable to Linux Workstation workflow))", "Deploy_URL":”<not applicable>", "Deploy_dev_URL": "<not applicable>", "Deploy_QIMSDK_Artifacts_URL":"Directory on Host where all QIMSDK artifacts archive will be made available", "Gst_plugins_qti_oss_dependencies":["cairo", "ffmpeg", "gdk-pixbuf", "liba52", "libgudev", "lame", "librsvg", "libtheora", "libusb1", "libwebp", "mpg123", "orc", "sbc", "speex", "taglib", "vulkan-loader"] }
有关 json 配置文件中提到的条目的更多信息,请参阅/sdk-tools/中的Host.md自述文件 。
启用AI推理插件:
高通神经处理 SDK
QIM SDK 工作流程可以为 Qualcomm 神经处理 SDK(以前称为 SNPE)生成 QIM SDK 插件。要构建 SNPE QIM SDK 插件,需要下载 SNPE SDK,并需要在配置 JSON 文件中提供 Linux 工作站上 SNPE sdk 的路径。
-
要下载适用于 Ubuntu 的 Qualcomm Package Manager 3,请单击https://qpm.qualcomm.com/,然后单击工具。
-
在左窗格的“搜索工具”字段中,输入QPM。从系统操作系统列表中,选择Linux。
搜索结果显示 Qualcomm 包管理器列表。 -
选择 Qualcomm Package Manager 3 并下载 Linux debian 软件包。
-
要安装适用于 Linux 的 Qualcomm Package Manager 3,请使用以下命令:
$ dpkg -i --force-overwrite /path/to/QualcommPackageManager3.3.0.83.1.Linux-x86.deb
-
要下载 Qualcomm Snapdragon 神经处理引擎 SDK,请单击 https://qpm.qualcomm.com/,然后单击工具。
-
在左窗格的“搜索工具”字段中,输入ai stack。从系统操作系统列表中,选择Linux。
搜索结果显示 Qualcomm 包管理器列表。 -
单击 Qualcomm® Neural Processing SDK,然后下载 Linux 版本 2.13.0 的 .qik 包。
-
要在 Ubuntu 工作站上安装 Qualcomm® 神经处理 SDK,请运行以下命令:
$ qpm-cli --login <username> $ qpm-cli --license-activate qualcomm_neural_processing_sdk $ qpm-cli --extract <full path to downloaded .qik file>
提取成功后,显示以下消息。 “/opt/qcom/aistack/snpe/2.13.4.230831”
-
将条目添加到LE.PRODUCT.2.1.json文件中。例如:
"Acceleration_engines": [ {"Acceleration_engine":"snpe", "Acceleration_engine_path":”/opt/qcom/aistack/snpe/2.13.4.230831" }, ] 从 Ubuntu 工作站将库推送到设备。运行以下命令将相关库和二进制文件侧面加载到设备上: $ cd /opt/qcom/aistack/snpe/2.13.4.230831 on Ubuntu Workstation $ adb push ./lib/aarch64-oe-linux-gcc11.2/libcalculator_htp.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libcalculator.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libhta_hexagon_runtime_snpe.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libPlatformValidatorShared.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSnpeDspV65Stub.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSnpeDspV66Stub.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSnpeHta.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSnpeHtpV68Stub.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSnpeHtpV73Stub.so /usr/lib/ $ adb push ./lib/aarch64-oe-linux-gcc11.2/libSNPE.so /usr/lib $ adb push ./lib/hexagon-v65/unsigned/libSnpeDspV65Skel.so /usr/lib/rfsa/adsp $ adb push ./lib/hexagon-v65/unsigned/libCalculator_skel.so /usr/lib/rfsa/adsp $ adb push ./lib/hexagon-v66/unsigned/libSnpeDspV66Skel.so /usr/lib/rfsa/adsp $ adb push ./lib/hexagon-v68/unsigned/libSnpeDspV68Skel.so /usr/lib/rfsa/adsp $ adb push ./lib/hexagon-v69/unsigned/libSnpeDspV69Skel.so /usr/lib/rfsa/adsp $ adb push ./lib/hexagon-v73/unsigned/libSnpeDspV73Skel.so /usr/lib/rfsa/adsp $ adb push ./bin/aarch64-oe-linux-gcc11.2/snpe-net-run /usr/bin $ adb push ./bin/aarch64-oe-linux-gcc11.2/snpe-parallel-run /usr/bin $ adb push ./bin/aarch64-oe-linux-gcc11.2/snpe-platform-validator /usr/bin $ adb push ./bin/aarch64-oe-linux-gcc11.2/snpe-throughput-net-run /usr/bin
请参阅Qualcomm TensorFlow Lite 软件开发套件 (TFLITE SDK) 工具快速入门指南(80-50450-52) 执行以下操作:
- 启用 TFLite GStreamer 插件
- Tflite_prebuilt_file获取 TFLite 工件并更新上述 JSON 文件中的相关字段 ( )
-
-
在qimsdk-host-env-setup()函数内的 scripts/host/host_env_setup.sh脚本中添加以下行 。
export QIMSDK_ESDK_BASE_DIR=${QIMSDK_BASE_DIR}/esdk export QIMSDK_WORK_DIR=${QIMSDK_BASE_DIR}/work export QIMSDK_SCRIPTS=${QIMSDK_BASE_DIR}/scripts
-
通过获取host_env_setup.sh文件来设置 Linux 工作站 QIM SDK 的工作流程 。
$ source sdk-tools/scripts/host/host_env_setup.sh
-
使用以下命令解决任何依赖关系并运行 QIM SDK 工作流程来构建 QIM SDK 包:
$ qimsdk-setup targets/LE.PRODUCT.2.1
qimsdk-setup实用程序成功运行后将显示以下消息 。
所有层打包成功!
IM SDK 设置完成!
-
要将可用的 QIM SDK 包传输到 Deploy_QIMSDK_Artifacts_URL,请运行该 qimsdk-host-sync-artifacts-all实用程序。
$ qimsdk-host-sync-artifacts-all targets/LE.PRODUCT.2.1.json
-
将packages.zip解压到一个文件夹中。要从 QIM SDK 包安装工件,请参阅安装适用于 Windows 平台的工件和安装适用于 Linux 平台的工件。
4.6 主机设置故障排除
主机设置问题可能与构建 QIM SDK 之前必须在 Linux 主机上安装的缺少软件包有关。
按照提示上显示的消息对主机设置进行故障排除。
5 增量构建 QIM SDK
如果您是第一次构建 QIM SDK,请参阅构建 QIM SDK – 开发人员工作流程。相同的构建环境可以重复用于增量插件和应用程序开发。
开发人员可以使用图中提到的帮助程序实用程序(在容器内)来编译修改后的应用程序和插件。
在代码目录下代码修改完成后,运行以下命令:
-
编译修改后的代码:
$ qimsdk-layers-build
-
打包编译代码:
$ qimsdk-layers-package
-
将发布包与主机文件系统同步:
$ qimsdk-remote-sync-log-clear && qimsdk-remote-sync-rel
-
将开发包与主机文件系统同步:
$ qimsdk-remote-sync-log-clear && qimsdk-remote-sync-dev
编译后的工件 位于 JSON 文件中提到的Host_dir_mounted_in_container文件夹中,可以将其复制到任何目录。
6 使用 Visual Studio Code 开发应用程序
Visual Studio Code 是一个代码编辑器,支持使用 QIM SDK 在远程工作站上进行开发操作。
有关 Visual Studio Code 的更多信息,请参阅https://code.visualstudio.com/。
- 使用与远程工作配置文件相关的扩展设置 Visual Studio Code。
2 .连接到远程工作站。
- 连接到远程工作站上的 QIM SDK 容器。
- 打开gst-plugin-example目录以添加和开发新应用程序。
5. 请参阅构建 QIM SDK – 开发人员工作流程,以生成示例应用程序作为ipkgst -plugin-examples包的一部分。
有关 QIM SDK 插件和应用程序的更多信息,请参阅 QCS8550.LE.1.0 Qualcomm 智能多媒体 SDK (QIM SDK) 参考(80-50450-50)。