本次開發筆記主要內容是 WIFI&BT 模組、SDIO WIFI 模組的移植和測試。
1。硬體資源
SDIO WIFI 模組
USB-TTL 模組
2。軟體資源 Linux 5。4。31
3。環境準備
Linux 虛擬環境
安裝好 SDK
4。操作步驟
4。1。移植 AP6212
這個移植一般分兩步,裝置樹配置硬體資訊和複製 wifi 韌體到系統。 1) 裝置樹配置 wifi 硬體資訊
351 /* Wifi */
352 &sdmmc3 {
353 arm,primecell-periphid = <0x10153180>;
354 pinctrl-names = “default”, “opendrain”, “sleep”;
355 pinctrl-0 = <&sdmmc3_b4_pins_a>;
356 pinctrl-1 = <&sdmmc3_b4_od_pins_a>;
357 pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>;
358 non-removable;
359 st,neg-edge;
360 bus-width = <4>;
361 vmmc-supply = <&v3v3>;
362 mmc-pwrseq = <&wifi_pwrseq>;
363 #address-cells = <1>;
364 #size-cells = <0>;
365 keep-power-in-suspend;
366 status = “okay”;
367
368 brcmf: bcrmf@1 {
369 reg = <1>;
370 compatible = “brcm,bcm4329-fmac”;
371 };
372 };
這裡分別對幾個關鍵裝置樹語法進行說明。
non-removable:表示不能進行熱插拔,裝置一直連線(比如 eMMC),因為板載的 AP6212 一直連線,所以需要此屬性,假如是 SDIO WIFI 模組則不需要配置。
bus-width = <4>:資料匯流排位
vmmc-supply:指向 regulator 裝置樹節點
mmc-pwrseq:指定電源上電順序
keep-power-in-suspend:表示待機時不掉電
mmc 控制器存在子節點時,必須指定下面兩個選項
#address-cells 值必須是 1
#size-cells 值必須是 0 其中 MMC 子節點屬性 reg 該值必須是 0~7,其中 0 表示 SD 卡,1~7 表示 SDIO 設 備比如 SDIO 介面的 WIFI 晶片。
2)配置核心 在核心目錄執行 make menuconfig(先確認對應的 ARCH 是否是 arm),檢查對應的配 置選項。Networking support->Wireless->cfg80211 - wireless configuration API 配置為
圖 4-1。無線裝置管理配置
Device Drivers->Network device support->Wireless LAN->Broadcom FullMAC WLAN driver
圖 4-2。無線網路硬體 MAC 配置
3)編譯並更新編譯核心模組和裝置樹(詳情請參考 UDG 手冊),然後更新到開發板上面,在終端中 輸入命令檢查 brcmfmac 驅動模組有沒有載入。root@myir:/# lsmod | grep brcm brcmfmac 258048 0 cfg80211 585728 1 brcmfmac brcmutil 16384 1 brcmfmac
4)驅動載入 當載入完成後,還需要載入韌體,一般是驅動中斷方式向系統檔案申請韌體,然後系 統檔案把韌體複製到核心 firmware buf,然後核心讀取 wifi 韌體並透過 SDIO 寫入晶片內 部,這個韌體路徑一般是在核心定義好,也可以直接透過傳入引數修改韌體路徑。預設固 件路徑是/lib/firmware/brcm。
圖 4-3。WIFI 韌體路徑
AP6212 模組 wifi 需要載入的韌體為:brcmfmac43430-sdio。bin /brcmfmac43430- sdio。myir,stm32mp157c-ya157c-v2。txt/brcmfmac43430-sdio。clm_blob 藍芽需要載入的韌體:BCM43430A1。hcd5)wifi 測試過程 Wifi 測試詳情請參考《MYD-YA157C_Linux 軟體評估指南》。4。2。SDIO WIFI 移植和測試SDIO WIFI 模組移植一般也是分兩步,裝置樹配置硬體資訊,因為這個 SDIO WIF 用 的 TF 卡介面,所以 SDMMC1 裝置樹不需要配置什麼,預設就可以。然後複製 SDIO WIFI 對應的韌體到/lib/firmware/brcm。1) 核心驅動配置 在核心目錄執行 make menuconfig 確認對應的 SDIO WIFI 配置資訊。Networking support->Wireless->cfg80211 - wireless configuration API->[*] enable powersave by default
圖 4-4。無線網路管理
Device Drivers->Network device support ->Wireless LAN-> [*] SDIO bus interface support for FullMAC driver
圖 4-5。SDIO bus 介面支援
2) 檢視介面 編譯核心模組和裝置樹,然後更新到開發板上面,ifconfig -a 檢視網路。
圖 4-6。wlan1 網路
3) wifi 測試過程
root@myir:~# wpa_passphrase “TP-LINK_D87A” > wifi。conf
wangsuna123
root@myir:~# wpa_supplicant -B -c wifi。conf -i wlan1
Successfully initialized wpa_supplicantroot@myir:~# [ 241。197380] IPv6: ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready
root@myir:~#
root@myir:~# udhcpc -i wlan1
udhcpc: started, v1。29。3
udhcpc: sending discover
udhcpc: sending select for 192。168。0。102udhcpc: lease of 192。168。0。102 obtained, lease time 7200
/etc/udhcpc。d/50default: Adding DNS 192。168。1。1
/etc/udhcpc。d/50default: Adding DNS 192。168。0。1
root@myir:~# echo “nameserver 114。114。114。114” > /etc/resolv。conf
root@myir:~# ping www。baidu。com
PING www。a。shifen。com (14。215。177。39) 56(84) bytes of data。
64 bytes from 14。215。177。39 (14。215。177。39): icmp_seq=1 ttl=53 time=28。5 ms
64 bytes from 14。215。177。39 (14。215。177。39): icmp_seq=2 ttl=53 time=36。6 ms
64 bytes from 14。215。177。39 (14。215。177。39): icmp_seq=3 ttl=53 time=34。8 ms