第二章 开发环境搭建:高通SDK配置、QCT工具链安装、目标板连接与调试环境验证
做夜景模式开发,第一步不是写代码,而是把环境搭稳。我见过太多工程师花两周调通了算法,结果发现连不上目标板——那种感觉,真的很崩溃。
这一章,我们就把高通平台的开发环境从头捋一遍。你跟着我的步骤走,基本不会踩坑。
2.1 高通SDK配置——别小看这一步
高通SDK不是一套简单的库,它包含了ISP pipeline配置、3A算法接口、降噪模块注册框架等等。说白了,你后面写的每一行降噪代码,都要依赖这套SDK才能跑起来。
2.1.1 获取SDK包
你需要从高通官方(QIDP或Chipcode门户)下载对应芯片平台的SDK。常见的有:
| 芯片平台 | SDK名称 | 关键版本号 |
|---|---|---|
| SM8450 (Snapdragon 8 Gen1) | CamX + CHI | v6.0.1 以上 |
| SM8550 (Snapdragon 8 Gen2) | CamX + CHI | v6.1.0 以上 |
| SM8650 (Snapdragon 8 Gen3) | CamX + CHI | v6.2.0 以上 |
2.1.2 配置环境变量
解压SDK后,需要设置几个关键环境变量。我建议你直接写到 ~/.bashrc 里:
export QC_SDK_ROOT=/opt/qcom/sdk/v6.2.0
export CHIAPI_DIR=$QC_SDK_ROOT/chi/api
export CAMX_DIR=$QC_SDK_ROOT/camx
export TARGET_ARCH=aarch64
export CROSS_COMPILE=aarch64-linux-android-
嗯,这里要注意:TARGET_ARCH 一定要和你目标板的架构一致。我见过有人用armv7的交叉编译器去编aarch64的库,结果链接的时候报了一堆undefined reference。
2.2 QCT工具链安装——调试的命脉
QCT(Qualcomm Camera Tuning)工具链,是我们做图像质量调优的瑞士军刀。它包含了ISP tuning、3A tuning、降噪参数调试等全套工具。
2.2.1 安装步骤
- 安装QCT主程序:从高通官方获取安装包,通常是
.run或.bin格式。直接执行:./QCT_Installer_v7.2.0.bin - 安装驱动:QCT需要与目标板通过USB或以太网通信。需要安装
qcusb_driver和qceth_driver。 - 配置License:将license文件放到
/opt/qcom/license/目录下,然后设置环境变量:export LM_LICENSE_FILE=/opt/qcom/license/license.dat
2.2.2 验证安装
安装完成后,在终端输入:
qct --version
如果看到类似 QCT v7.2.0 (Build 2024-03-15) 的输出,说明安装成功。
2.3 目标板连接——这一步最容易出问题
目标板连接,说白了就是让你的开发机和高通手机/开发板建立通信。我们通常用两种方式:
| 连接方式 | 适用场景 | 速度 | 稳定性 |
|---|---|---|---|
| USB 3.0 | 初期调试、单帧抓取 | ~5 Gbps | 中等(线缆质量影响大) |
| 以太网 (ADB over TCP/IP) | 长时间跑测试、多设备并行 | ~1 Gbps | 高 |
2.3.1 USB连接步骤
- 用USB线连接目标板和开发机。
- 在目标板上开启开发者模式,启用USB调试。
- 在开发机上执行
adb devices,确认设备已识别。
如果 adb devices 显示 unauthorized,别慌。在目标板上确认授权即可。我遇到过最奇葩的情况是USB线只支持充电不支持数据传输——换了根线就好了。
2.3.2 以太网连接(推荐)
我个人更推荐用以太网。为什么呢?因为USB线在长时间调试时容易松动,一旦断开,QCT的session就掉了,所有未保存的参数全丢。
# 在目标板上执行(需要root权限)
adb tcpip 5555
# 在开发机上执行
adb connect 192.168.1.100:5555
# 验证连接
adb devices
2.4 调试环境验证——别急着写代码
环境搭好了,先别急着写降噪算法。我们做一轮完整的验证,确保所有链路都是通的。
2.4.1 验证清单
- SDK编译验证:编译一个空白的CHI usecase,确认编译链没问题。
- ADB通信验证:执行
adb shell进入目标板,确认能正常交互。 - QCT连接验证:启动QCT,尝试连接目标板。如果能看到ISP pipeline的实时预览,说明通信正常。
- 抓图验证:用QCT抓一张raw图,确认数据能正常回传。
2.4.2 快速验证脚本
我写了一个小脚本,用来快速验证环境是否就绪。你可以直接拿去用:
#!/bin/bash
# 环境验证脚本
echo "=== 1. 检查SDK环境变量 ==="
if [ -z "$QC_SDK_ROOT" ]; then
echo "❌ QC_SDK_ROOT 未设置"
exit 1
else
echo "✅ QC_SDK_ROOT = $QC_SDK_ROOT"
fi
echo "=== 2. 检查交叉编译器 ==="
if command -v ${CROSS_COMPILE}gcc &> /dev/null; then
echo "✅ 交叉编译器可用"
else
echo "❌ 交叉编译器未找到"
exit 1
fi
echo "=== 3. 检查ADB连接 ==="
adb devices | grep -q "device$"
if [ $? -eq 0 ]; then
echo "✅ ADB连接正常"
else
echo "❌ 未检测到设备"
exit 1
fi
echo "=== 4. 检查QCT ==="
qct --version &> /dev/null
if [ $? -eq 0 ]; then
echo "✅ QCT可用"
else
echo "❌ QCT未安装或license失效"
exit 1
fi
echo "🎉 环境验证通过!"
2.5 整体环境架构图
下面这张图,把整个开发环境的架构画清楚了。你对照着看,心里就有谱了。
2.6 常见问题与避坑
问题1:ADB连接不稳定,经常断开
原因:USB线缆质量差,或者USB端口供电不足。
解决方案:换一根带屏蔽的USB 3.0线,或者用带外接电源的USB Hub。
问题2:QCT连接目标板时提示 "Device not found"
原因:QCT驱动未安装,或者目标板上的QCT服务未启动。
解决方案:在目标板上执行 start qctd 启动服务,然后重新连接。
问题3:编译SDK时报错 "undefined reference to CHIAPI"
原因:环境变量 CHIAPI_DIR 未正确设置,或者SDK版本不匹配。
解决方案:检查 echo $CHIAPI_DIR 是否指向正确的路径。我建议你每次打开新终端都执行一遍 source ~/.bashrc。
好了,环境搭建这部分就到这里。你按照上面的步骤走一遍,应该不会有什么大问题。如果遇到奇怪的现象,先检查USB线,再检查环境变量——这两个是出问题最多的环节。