應用開發筆記 |MYD-YA157C-V2開發板WIFI&BT 模組的移植

本次開發筆記主要內容是 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 配置為

應用開發筆記 |MYD-YA157C-V2開發板WIFI&BT 模組的移植

圖 4-1。無線裝置管理配置

Device Drivers->Network device support->Wireless LAN->Broadcom FullMAC WLAN driver

應用開發筆記 |MYD-YA157C-V2開發板WIFI&BT 模組的移植

圖 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。

應用開發筆記 |MYD-YA157C-V2開發板WIFI&BT 模組的移植

圖 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

應用開發筆記 |MYD-YA157C-V2開發板WIFI&BT 模組的移植

圖 4-4。無線網路管理

Device Drivers->Network device support ->Wireless LAN-> [*] SDIO bus interface support for FullMAC driver

應用開發筆記 |MYD-YA157C-V2開發板WIFI&BT 模組的移植

圖 4-5。SDIO bus 介面支援

2) 檢視介面 編譯核心模組和裝置樹,然後更新到開發板上面,ifconfig -a 檢視網路。

應用開發筆記 |MYD-YA157C-V2開發板WIFI&BT 模組的移植

圖 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