高通IPQ5018 QSDK V11.5 64位编译实战:从源码获取到镜像生成全流程解析

张开发
2026/4/6 17:03:33 15 分钟阅读

分享文章

高通IPQ5018 QSDK V11.5 64位编译实战:从源码获取到镜像生成全流程解析
1. 环境准备与源码获取编译高通IPQ5018的QSDK V11.5 64位系统首先需要搭建合适的开发环境。我建议使用Ubuntu 20.04 LTS作为基础系统这个版本经过实测与QSDK兼容性最好。安装时记得勾选OpenSSH server和Standard system utilities选项避免后续缺少基础工具。获取源码有两种主要途径对于高通直接支持的企业可以通过Code Aurora仓库直接拉取大多数开发者需要通过方案商获取完整的SDK压缩包我最近一次使用的包名格式类似qca-networking-2021-spf-11-5_qca_oem-r11.5_00003.0.tar.gz。解压时要注意保留完整的文件权限建议使用tar xvf qca-networking-2021-spf-11-5_qca_oem-r11.5_00003.0.tar.gz mv qca-networking-2021-spf-11-5_qca_oem-r11.5_00003.0 qsdk-11.5解压完成后先清理掉不需要的芯片平台代码可以节省大量空间。IPQ5018属于IPQ50xx系列保留相关目录即可cd qsdk-11.5 rm -rf BOOT.AK.1.0 BOOT.BF.3.3.1 BOOT.XF.0.3 TZ.BF* TZ.AK.1.0 IPQ4019.ILQ.11.* IPQ80*2. SDK初始化与代码同步进入解压后的目录需要初始化repo并同步代码。这里有个坑要注意必须使用特定版本的repo工具。我习惯这样操作mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo ~/bin/repo chmod ax ~/bin/repo export PATH~/bin:$PATH然后执行初始化命令repo init -u git://codeaurora.org/quic/qsdk/releases/manifest/qstak \ -b release -m caf_AU_LINUX_QSDK_NHSS.QSDK.11.5_TARGET_ALL.11.5.0.7762.7876.xml \ --repo-urlgit://codeaurora.org/tools/repo.git --repo-branchcaf-stable同步代码时建议使用-j8参数但要根据你的CPU核心数调整。我遇到过网络不稳定导致同步失败的情况这时可以while ! repo sync -j8 --no-tags -qc; do echo Sync failed, retrying in 5 seconds... sleep 5 done同步完成后需要复制预编译的WiFi固件和驱动到正确位置。这一步很关键否则后续编译会报错mkdir -p qsdk/dl cp -rf apss_proc/out/proprietary/Wifi/qsdk-qca-art/* qsdk cp -rf apss_proc/out/proprietary/Wifi/qsdk-qca-wifi/* qsdk cp -rf wlan_proc/src/components/QCA8074_v1.0/qca-wifi-fw-src-component-cmn-* qsdk/dl/3. 64位系统适配IPQ5018支持32位和64位两种模式这里我们重点讲64位配置。首先需要设置交叉编译工具链路径export STAGING_DIR$(pwd)/qsdk/staging_dir export PATH$STAGING_DIR/toolchain-aarch64_cortex-a53_gcc-5.2.0_musl-1.1.16/bin:$PATH然后复制64位专用的预编译库文件mkdir -p qsdk/staging_dir/target-aarch64_cortex-a53_musl-1.1.16/usr/lib/ cd qsdk/prebuilt/ipq50xx_64/ipq_premium/ tar zxpvf qti-mfg-provision_1.0-1_ipq.ipk tar zxpvf data.tar.gz cp -rf ./usr/lib/libprovision.so ../../../staging_dir/target-aarch64_cortex-a53_musl-1.1.16/usr/lib/创建必要的包信息文件cd ../.. mkdir -p qsdk/staging_dir/target-aarch64_cortex-a53_musl-1.1.16/pkginfo/ touch qsdk/staging_dir/target-aarch64_cortex-a53_musl-1.1.16/pkginfo/qti-mfg-provision.provides echo libprovision.so qsdk/staging_dir/target-aarch64_cortex-a53_musl-1.1.16/pkginfo/qti-mfg-provision.provides4. 功能组件配置4.1 Wi-Fi驱动配置QSDK默认配置可能不包含所有Wi-Fi驱动需要手动启用echo CONFIG_PACKAGE_kmod-qca-wifiy qsdk/.config echo CONFIG_PACKAGE_qca-hostapy qsdk/.config echo CONFIG_PACKAGE_qca-wpa-supplicanty qsdk/.config对于IPQ5018还需要特别启用11ax支持echo CONFIG_PACKAGE_kmod-qca-wifi-akronite-perfy qsdk/.config echo CONFIG_PACKAGE_kmod-qca-wifi-unified-profiley qsdk/.config4.2 EZMESH配置如果需要EZMESH功能要先确保获得了ezmesh-src源码包。将其解压到正确位置后cp -rf ezmesh-src/NHSS.QSDK.11.5/apss_proc/out/proprietary/RSRC-EZMESH/qsdk-ezmesh-src/* qsdk然后修改配置文件sed -i s/HYD_MODULE_STRATEGYy/HYD_MODULE_STRATEGYn/g qsdk/qca/src/qca-ezmesh/ezmeshConfig.defs sed -i 0,/ifeq/{/ifeq/d;} qsdk/qca/feeds/qca-ezmesh/qca-ezmesh/Makefile4.3 其他组件HYFI和WHC组件也需要特别处理cp -rf apss_proc/out/proprietary/Hyfi/hyfi/* qsdk cp -rf apss_proc/out/proprietary/Wifi/qsdk-whc/* qsdk mkdir qsdk/qca/feeds/qca-son-mem-debug/qca-son-mem-debug mv qsdk/qca/feeds/qca-son-mem-debug/Makefile qsdk/qca/feeds/qca-son-mem-debug/Config.in qsdk/qca/feeds/qca-son-mem-debug/qca-son-mem-debug5. 编译配置与系统构建5.1 基础配置首先更新并安装所有feedcd qsdk ./scripts/feeds update -a ./scripts/feeds install -a -f然后应用IPQ5018 64位的默认配置cp qca/configs/qsdk/ipq_premium.config .config sed -i s/TARGET_ipq_ipq806x/TARGET_ipq_ipq50xx_64/g .config mv prebuilt/ipq50xx_64/ipq_premium/* prebuilt/ipq50xx_64/5.2 自定义配置根据需求调整组件选择echo CONFIG_PACKAGE_whc-meshn .config echo CONFIG_PACKAGE_hyfi-meshn .config echo CONFIG_PACKAGE_qca-ezmeshy .config echo CONFIG_PACKAGE_qca-ezmesh-algy .config5.3 开始编译先验证配置make defconfig然后开始正式编译。建议第一次编译时使用单线程方便排查问题make Vs -j1如果一切正常后续编译可以使用多线程加速make Vs -j$(nproc)6. 镜像生成与打包6.1 准备镜像目录创建必要的目录结构mkdir -p common/build/ipq_x64 mkdir -p apss_proc/out/meta-scripts cp qsdk/qca/src/u-boot-2016/tools/pack.py apss_proc/out/meta-scripts/pack_hk.py6.2 复制必要文件将编译生成的二进制文件复制到打包目录cp qsdk/bin/ipq/openwrt* common/build/ipq_x64 cp -r apss_proc/out/proprietary/QSDK-Base/meta-tools apss_proc/out/ cp -rf qsdk/bin/ipq/dtbs/* common/build/ipq_x64/ cp -rf skales/* common/build/ipq_x64/6.3 无线固件处理IPQ5018需要特定的无线固件cp -rf wlan_proc/build/ms/bin/5018.wlanfw.eval/* common/build/ipq_x64/ cp -rf wlan_proc/build/ms/bin/5018.wlanfw2.map_spruce_eval/* common/build/ipq_x64/ cp -rf btfw_proc/out/IPQ5018/bin/FW_IMAGES/bt_fw_patch_* common/build/ipq_x646.4 生成最终镜像进入打包目录执行打包脚本cd common/build export BLD_ENV_BUILD_IDP python update_common_info.py这个过程可能会持续几分钟完成后会在当前目录生成可以烧录的系统镜像文件。我遇到过脚本报错的情况通常是某些文件路径不对可以检查update_common_info.py脚本中的路径设置。

更多文章