硬體資源

WiFi
今天研究 WiFi,所以重點關注板子的這兩個部件:
| 部件 | 型號 | 描述 |
|---|---|---|
| SOC | BCM2837B0 | 4 核 Cortex-A53, 64位,ARMv8-A 指令集架構,1.4GHz |
| WiFi / 藍牙 | BCM/CYW43455 | 802.11 b/g/n/ac + Bluetooth 4.2 BLE |
關于 WiFi 芯片的名稱 BCM/CYW43455,這里我想說一下,芯片絲印上是 CYW43455,但是驅動名稱又是 brcmfmac.ko,包括芯片的韌體名稱是 brcmfmac43455-sdio.bin,CYW 和 Broadcom 明明是兩家公司呀,一家是賽普拉斯,一家是博通,這顆芯片到底和這兩家是什么關系呀?
后來了解到,原來賽普拉斯收購了博通的 Wi-Fi,藍牙和 ZigBee 物聯網產品線和相關知識產權,這樣一切都解釋的通了,應該是 CYW43455 = BCM43455 = BCM/CYW43455,收購關系產生的不同叫法而已,
構建鏡像
我們選擇使用 buildroot 構建鏡像,不使用官方鏡像,不然就不需要費心考慮這些底層細節了,
人生四大境界
為什么要費心自己去構建鏡像呢?是因為麻煩和識訓是成正比的,遇到的麻煩越多,才能思考得更深,從而識訓得更多,這就是為什么,懂的越多,不懂的就越多,
人生四大境界:
- 不知道自己不知道
- 知道自己不知道
- 不知道自己知道
- 知道自己知道

很多時候停留在第一層,,,
努力讓自己到達第二層,之后就好辦了,
default 編譯
buildroot 選擇 raspberrypi3_defconfig 進行編譯,燒錄后是沒有 WiFi 的,因為默認配置選項沒有啟用 WiFi,
啟用 WiFi
make menuconfig 使能以下選項
Target packages → Hardware handling → Firmware → rpi-wifi-firmwareTarget packages → Hardware handling → Firmware → rpi-firmware
安裝驅動
將編譯好的鏡像 sdcard.img 燒錄到 SD 卡,啟動系統,
在 /lib/modules/5.10.36-v7/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac 目錄下有 brcmfmac.ko,我們手動將它安裝
# modprobe brcmfmac.ko
查看 WiFi 是否驅動成功
# ifconfig -a
eth0 Link encap:Ethernet HWaddr B8:27:EB:8A:BC:F4
inet addr:192.168.1.38 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::ba27:ebff:fe8a:bcf4/64 Scope:Link
inet6 addr: 240e:3a1:1848:e1e0:ba27:ebff:fe8a:bcf4/64 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3032 errors:0 dropped:96 overruns:0 frame:0
TX packets:449 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:210412 (205.4 KiB) TX bytes:61314 (59.8 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr B8:27:EB:DF:E9:A1
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
看到已經有 wlan0 設備了,說明 WiFi 子卡驅動成功,接下來只要 ifconfig wlan0 up,然后配合 wpa_supplicant 和 hostapd 就可以開心地使用 WiFi 了,
細節
成功驅動 WiFi 之后,我們對前面的操作進行分析,使我們對底層細節更加了解,
-
選中
rpi-wifi-firmware是為了讓鏡像包含以下三個檔案brcmfmac43455-sdio.bin brcmfmac43455-sdio.clm_blob brcmfmac43455-sdio.txt其中
brcmfmac43455-sdio.bin就是 BCM/CYW43455 子卡的韌體, -
選中
rpi-firmware是為了讓鏡像包含brcmfmac.ko,這個檔案就是 BCM/CYW43455 子卡的驅動,
在安裝驅動 brcmfmac.ko 時,驅動會將 brcmfmac43455-sdio.bin 韌體安裝到子卡,這樣,子卡能夠正常運行,驅動也能正常運行,兩者一對接,WiFi 功能就實作了,后面再啟用應用層軟體 wpa_supplicant 或 hostapd,就可以配置 WiFi 作為 STA 或 AP 進行作業了,
技術統覽

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/302544.html
標籤:其他
