本次開發(fā)筆記主要內(nèi)容是 WIFI&BT 模塊、SDIO WIFI 模塊的移植和測試。
1. 硬件資源
SDIO WIFI 模塊
USB-TTL 模塊
3. 環(huán)境準(zhǔn)備
Linux 虛擬環(huán)境
安裝好 SDK
4. 操作步驟?
4.1. 移植 AP6212?
這個(gè)移植一般分兩步,設(shè)備樹配置硬件信息和拷貝 wifi 固件到系統(tǒng)。?1) 設(shè)備樹配置 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 };
這里分別對幾個(gè)關(guān)鍵設(shè)備樹語法進(jìn)行說明 .
- non-removable:表示不能進(jìn)行熱插拔,設(shè)備一直連接(比如 eMMC),因?yàn)榘遢d的 AP6212 一直連接,所以需要此屬性,假如是 SDIO WIFI 模塊則不需要配置。bus-width = <4>:數(shù)據(jù)總線位?vmmc-supply:指向 regulator 設(shè)備樹節(jié)點(diǎn)?mmc-pwrseq:指定電源上電順序?keep-power-in-suspend:表示待機(jī)時(shí)不掉電?mmc 控制器存在子節(jié)點(diǎn)時(shí),必須指定下面兩個(gè)選項(xiàng)?#address-cells 值必須是 1?#size-cells 值必須是 0 其中 MMC 子節(jié)點(diǎn)屬性 reg 該值必須是 0~7,其中 0 表示 SD 卡,1~7 表示 SDIO 設(shè) 備比如 SDIO 接口的 WIFI 芯片。
2)配置內(nèi)核?在內(nèi)核目錄運(yùn)行 make menuconfig(先確認(rèn)對應(yīng)的 ARCH 是否是 arm),檢查對應(yīng)的配 置選項(xiàng)。Networking support->Wireless->cfg80211 - wireless configuration API 配置為
圖 4-1. 無線設(shè)備管理配置
Device Drivers->Network device support->Wireless LAN->Broadcom FullMAC WLAN driver
圖 4-2. 無線網(wǎng)絡(luò)硬件 MAC 配置
3)編譯并更新編譯內(nèi)核模塊和設(shè)備樹(詳情請參考 UDG 手冊),然后更新到開發(fā)板上面,在終端中 輸入命令檢查 brcmfmac 驅(qū)動(dòng)模塊有沒有加載。root@myir:/# lsmod | grep brcm?brcmfmac 258048 0?cfg80211 585728 1 brcmfmac?brcmutil 16384 1 brcmfmac
4)驅(qū)動(dòng)加載?當(dāng)加載完成后,還需要加載固件,一般是驅(qū)動(dòng)中斷方式向系統(tǒng)文件申請固件,然后系 統(tǒng)文件把固件拷貝到內(nèi)核 firmware buf,然后內(nèi)核讀取 wifi 固件并通過 SDIO 寫入芯片內(nèi) 部,這個(gè)固件路徑一般是在內(nèi)核定義好,也可以直接通過傳入?yún)?shù)修改固件路徑。默認(rèn)固 件路徑是 /lib/firmware/brcm。
圖 4-3.WIFI 固件路徑
AP6212 模組 wifi 需要加載的固件為:brcmfmac43430-sdio.bin /brcmfmac43430- sdio.myir,stm32mp157c-ya157c-v2.txt/brcmfmac43430-sdio.clm_blob 藍(lán)牙需要加載的固件:BCM43430A1.hcd5)wifi 測試過程?Wifi 測試詳情請參考《MYD-YA157C_Linux 軟件評估指南》。4.2.SDIO WIFI 移植和測試 SDIO WIFI 模塊移植一般也是分兩步,設(shè)備樹配置硬件信息,因?yàn)檫@個(gè) SDIO WIF 用 的 TF 卡接口,所以 SDMMC1 設(shè)備樹不需要配置什么,默認(rèn)就可以。然后拷貝 SDIO WIFI 對應(yīng)的固件到 /lib/firmware/brcm。1) 內(nèi)核驅(qū)動(dòng)配置?在內(nèi)核目錄運(yùn)行 make menuconfig 確認(rèn)對應(yīng)的 SDIO WIFI 配置信息。Networking support->Wireless->cfg80211 - wireless configuration API->[*] enable powersave by default
圖 4-4. 無線網(wǎng)絡(luò)管理
Device Drivers->Network device support ->Wireless LAN-> [*] SDIO bus interface support for FullMAC driver
圖 4-5.SDIO bus 接口支持
2) 查看接口?編譯內(nèi)核模塊和設(shè)備樹,然后更新到開發(fā)板上面,ifconfig -a 查看網(wǎng)絡(luò)。
圖 4-6.wlan1 網(wǎng)絡(luò)
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
獲取完整 MYD-YA157-V2 開發(fā)板 WIFI&BT 模塊的移植筆記
http://www.myir-tech.com/soft.asp?id=1200
了解 MYD-YA157-V2 開發(fā)板信息,請?jiān)L問:
http://www.myir-tech.com/product/myd-ya157c.htm