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
刷寫 Wi-Fi 韌體
其中,`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 的參數是否正確載入。
評論