BDF(Board Data File)是高通 Wi-Fi 驱动程序中用来定义硬件参数的文件,包含许多关键设置,例如 XTAL_CAL_SECTION、PER_PHY_SETTING、WIFI_RADAR_SECTION、TPC_CONFIG 等。在开发新硬件板时,这些参数通常需要根据需求进行调整。然而,当我们完成 BDF 的修改后,该如何将新的 BDF 集成到设备中呢?以下将详细说明整个流程。
BDF 与 Wi-Fi 固件的存放位置
在设备的存储内存中,通常会有一个专门的分区用来存放 Wi-Fi 固件与 BDF。例如,在 IPQ6000 系列的设备中,Wi-Fi 固件与 BDF 通常位于 `/dev/mtdblock21`,并挂载于 `/lib/firmware/IPQ6018/WIFI_FW`。该分区采用的是 SquashFS 格式,属于只读文件系统。
制作定制化 IPQ50xx Wi-Fi 固件镜像的步骤
1.安装必要工具
在开始之前,请确保已安装以下工具:
mtd-utils:可以通过以下指令安装:
bash
sudo apt-get install mtd-utils
mksquashfs4:用于制作 SquashFS 文件。
2. 解压缩原始固件文件
首先,创建一个临时目录来存放解压缩的文件:
bash
mkdir -p /fwtemp
接着,将原始固件文件复制到该目录并解压缩:
bash
cp -rfv /wlan_proc/pkg/wlan_proc/bin/QCA5018_v1.0/qca-wifi-fw-QCA5018_v1.0-WLAN.HK.2.8.r1-xxxx-QCAHKSWPL_SILICONZ-X.tar.bz2 /fwtemp
cd /fwtemp
tar -xvf qca-wifi-fw-QCA5018_v1.0-WLAN.HK.2.8.r1-xxxx-QCAHKSWPL_SILICONZ-X.tar.bz2
3. 创建临时目录并放入自定义 BDF
在解压缩后的文件中,创建一个名为 `staging_dir` 的目录,并将 Wi-Fi 固件与 BDF 文件放入其中:
bash
句子: mkdir staging_dir
cp -rfv qca-wifi-fw-WLAN.HK.2.8.r1-xxxx-QCAHKSWPL_SILICONZ-X/PIL_IMAGES/* staging_dir
cp -rfv qca-wifi-fw-WLAN.HK.2.8.r1-xxxx-QCAHKSWPL_SILICONZ-X/bdwlan* staging_dir
此时,您可以将自定义的 BDF 文件放入 `staging_dir` 目录中。
4. 制作 SquashFS 文件
使用以下指令将 `staging_dir` 目录中的内容压缩为 SquashFS 文件:
bash
mksquashfs4 staging_dir/ wifi_fw.squashfs -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 -Xbcj arm -b 256k -processors 1
dd if=wifi_fw.squashfs of=wifi_fw_squashfs.img bs=2k conv=sync
5. 制作单一映像文件
将制作完成的 SquashFS 文件整合到最终的固件映像文件中:
bash
cp /fwtemp/wifi_fw_squashfs.img /wlan_proc/build/ms/bin/FW_IMAGES/
cp /fwtemp/wifi_fw_ubi.img /wlan_proc/build/ms/bin/FW_IMAGES/
export BLD_ENV_BUILD_ID=<profile>
python update_common_info.py
6. 使用单一镜像文件进行更新
制作好单一映像文件之后,就可以通过以下指令进行更新
bash
设置环境变量 loadaddr 为 0x44000000
通过 TFTP 启动 nand-ipq6018-single.img,并将 imgaddr 设置为 $fileaddr,然后执行 $imgaddr:script
单独更新 Wi-Fi 固件与 BDF
如果仅需更新 Wi-Fi 固件或 BDF,无需重新制作整个映像文件,可以通过以下方式进行:
1. 使用 TFTP 上传映像文件
将映像文件(例如 `wifi_fw_ubi.img` 或 `wifi_fw_squashfs.img`)上传到设备:
bash
tftpboot wifi_fw_ipq5018_qcn9000_squashfs.img
2. 使用 Flash 指令更新分区
根据设备的分区名称,执行以下指令进行更新:
bash
刷写 wifi 固件
其中,`wifi_fw` 是 Wi-Fi UBI 分区的名称。
注意事项
如果设备使用的是 NOR 或 eMMC 启动模式,请确认分区名称是否正确。例如:
bash
闪存 0:WIFIFW
其中,`0:WIFIFW` 是 Wi-Fi 分区的名称。
通过以上步骤,您可以成功制作并更新定制化的高通 Wi-Fi 固件与 BDF,确保设备的最佳性能与稳定性。
常见问题与解答
Q1: 为什么需要定制化 BDF?
A1:BDF定义了硬件的参数设置,定制化BDF可以根据不同的硬件设计需求进行调整,确保Wi-Fi的最佳性能。
Q2:SquashFS 是什么?
A2: SquashFS 是一种只读的压缩文件系统,适合用于嵌入式设备,能够有效减少存储空间的使用。
Q3: 如果更新失败该怎么办?
A3: 请检查镜像文件的完整性,并确认分区名称是否正确。如有必要,可以重新制作镜像文件并再次尝试。
Q4: 是否可以同时更新多个分区?
A4:可以,但建议逐一更新并验证,以降低风险。
Q5: 如何验证更新是否成功?
A5: 更新完成后,重新启动设备并检查 Wi-Fi 的功能是否正常运行,或使用相关工具查看 BDF 的参数是否正确加载。