搭建Hexagon环境可以在windows和linux下进行,本文档以linux虚拟机环境搭建Hexagon环境说明;
首先是在Linux环境下安装QPM(Qualcomm Package Manager)工具,这个是高通工具包管理工具,搭建Hexagon环境需要的Hexagon SDK就需要从其中下载安装;
ps:按照高通官方文档,QPM工具需要在Linux 16.04或18.04上面运行,20.04版本有可能出现安装无法成功导致Linux GUI界面崩溃等一系列未知错误
1.1、首先需要安装QPM软件包的依赖,执行:
sudo apt-get update -y
sudo apt-get install -y xterm
sudo dpkg -i multiarch-support_2.27-3ubuntu1.5_amd64.deb
sudo dpkg -i libgnome-keyring-common_3.12.0-1build1_all.deb
sudo dpkg -i libgnome-keyring0_3.12.0-1build1_amd64.deb
以上是安装完成QPM的软件包依赖,再执行
sudo dpkg -i QualcommPackageManager.2.0.21.1.Linux-x86.deb
安装QPM
1.2、在安装QPM之前,需要确认python软连接是否正确,执行
python --version
查看是否有正常输出:
如果没有输出,需要更改默认的python软链接,不然QPM安装的时候会有部分模块无法安装;
查看python位置
whereis python
删除旧的软连接
sudo rm -rf /usr/bin/python
建立新的软连接
sudo ln -s /usr/bin/python3.6 /usr/bin/python
1.3、打开QPM,进行Hexagon SDK安装
选择install进行安装
1.4、Hexagon SDK安装完成后,如果安装目录下没有addons目录(有可能addons安装不成功),可以下载链接中的文件解压到SDK根路径下;
QPM_linux_deb软件包+依赖库-Android文档类资源-CSDN文库
这样Hexagon SDK基本组件已经安装完成了,接下来将简单介绍如何运行其中的camera_streaming demo;
2.1、进入SDK根目录(下文用<HEXAGON_SDK_ROOT>代替),找到setup_sdk_env.source文件,执行:
source setup_sdk_env.source
2.2、进入到<HEXAGON_SDK_ROOT>/addons/compute/examples/camera_streaming/
可以选择执行以下编译命令:
cmake编译(四选一即可):
build_cmake hexagon BUILD=Debug DSP_ARCH=v66
build_cmake android BUILD=Debug
build_cmake hexagon BUILD=ReleaseG DSP_ARCH=v66
build_cmake android BUILD=ReleaseG
ps:平台不同,DSP_ARCH也不同,这里参考项目选择的是v66
这里选择执行了
build_cmake hexagon BUILD=Debug DSP_ARCH=v66
会生成如下文件:
<HEXAGON_SDK_ROOT>/addons/compute/examples/camera_streaming/hexagon_Debug_toolv85_v66/ship/libdsp_streamer_add_constant.so
2.3、链接qcom设备,向camxoverridesettings.txt写入HVX配置启用Camera Streaming
adb root
adb remount
adb shell mkdir -p /vendor/etc/camera
adb shell "echo enableDualIFE=FALSE >> /vendor/etc/camera/camxoverridesettings.txt"
adb shell "echo enableHVXStreaming=1 >> /vendor/etc/camera/camxoverridesettings.txt"
adb reboot
2.4、更改topology xml
注意,需要确认设备vendor目录下是否存在com.qti.hvx.addconstant.so库,更改了usecase之后要重新编译chi将对应的usecase库push进设备;
2.5、对2.2编译出的libdsp_streamer_add_constant.so库进行签名处理,官方文档关于签名给出了三种解决方案,我们这里选择其中一种,用签名脚本对库本身进行签名处理
进入<HEXAGON_SDK_ROOT>/utils/scripts/,执行
./signer.py sign -i <HEXAGON_SDK_ROOT>/addons/compute/examples/camera_streaming/hexagon_Debug_toolv85_v66/ship/libdsp_streamer_add_constant.so -o out_dir
则在本目录下会生成一个out_dir,其中会生成签名过后的libdsp_streamer_add_constant.so库
2.6、执行
adb push <HEXAGON_SDK_ROOT>/utils/scripts/out_dir/libdsp_streamer_add_constant.so /vendor/lib/rfsa/dsp/sdk
adb reboot
2.7、重启之后需要打开camera应用,例如骁龙相机app等,就可以看到图像在间歇性的变为粉色;
注:<HEXAGON_SDK_ROOT>/addons/compute/docs目录下有官方文档进行具体的架构说明和示例步骤,本文部分步骤来自官方文档,仅供参考;