在今天分享一篇關(guān)于 WiFi驅(qū)動的文章,希望對正在做WiFi驅(qū)動的同學(xué)有幫助。
1 簡介
WiFi 是什么?能用來做什么?
都 2021 年了,相信您對 WiFi 一定不陌生了。
可以參考這里的百度百科釋義:
Wi-Fi,在中文里又稱作“行動熱點”,是Wi-Fi聯(lián)盟制造商的商標(biāo)做為產(chǎn)品的品牌認(rèn)證,是一個創(chuàng)建于IEEE 802.11標(biāo)準(zhǔn)的無線局域網(wǎng)技術(shù)。基于兩套系統(tǒng)的密切相關(guān),也常有人把Wi-Fi當(dāng)做IEEE 802.11標(biāo)準(zhǔn)的同義術(shù)語。
那 WiFi 能用來干什么呢?
以手機為例,很明顯有兩個功能:
開啟 WiFi ,連接到路由器;
開啟熱點(AP),讓別人連接到由自己設(shè)備 WiFi 開出來的路由;
這兩個場景,在實際中已經(jīng)很常見了。
本次 WiFi 驅(qū)動移植,應(yīng)用場景是什么呢?
簡單的說,就是我有一塊控制板,現(xiàn)在需要增加 WiFi 模塊,讓設(shè)備可以通過 WiFi ,正常連接到網(wǎng)絡(luò)。
應(yīng)用場景也有很多,比如這些:
對安裝環(huán)境要求較高的地方(盡可能少的接線);
不易連接有線網(wǎng)絡(luò)的地方;
低成本,不想用 4G 的地方;
僅用作局域網(wǎng)通信;
...
說到這里,還有一個比較重要的場景,就是設(shè)備端作為一個 Web 服務(wù)器,可以接入其他設(shè)備,比如手機 APP 等,進行功能參數(shù)的配置。這塊考慮后邊單獨寫一篇文章總結(jié)。
設(shè)備怎么與 WiFi 模塊通信?有哪幾種方式?
不過由于 USB 方案,適配相對簡單,因此選用 USB 方式的芯片。
生活中常見的 USB 無線網(wǎng)卡,類似的也是這種方式。
備注:具體使用哪種接口,還要結(jié)合實際情況選擇。
關(guān)于 USB 方式和 SDIO 方式,可以看看這份參考資料,WIFI的USB和SDIO接口是什么??
硬件怎么連接?是否需要天線?如果不需要天線有什么問題?天線不適配又有什么問題?
使用 USB 方式的 WiFi 模組,硬件接線較為方便,如下圖所示
截圖源自創(chuàng)凌官網(wǎng)
由上圖可以看到,引腳功能如下:
D+:USB接口+
D-:USB接口-
ANT:天線接口
而且整體尺寸很小,圖中尺寸單位為毫米(mm)。
下一個問題,肯定是需要天線的,否則 WiFi 無法發(fā)射出來信號。現(xiàn)象就是:AP 模式下,搜索不到路由。
如果天線不適配,則不能達(dá)到最大利用率。實際現(xiàn)象:WiFi 網(wǎng)速慢,網(wǎng)絡(luò)連接不穩(wěn)定,ping 丟包等。
2 整體流程
這一部分,就回顧一下,從拿到 WiFi 模塊,到最后產(chǎn)品交付的全流程,然后復(fù)盤總結(jié)一下。
我把整個過程大致分為三個階段
其實在這之前,還應(yīng)該有一個硬件環(huán)境準(zhǔn)備階段。
2.1 基礎(chǔ)移植
此階段的終極目的:使系統(tǒng)檢測到 WiFi 網(wǎng)卡。為什么呢?
USB WiFi 的基本操作,都是通過命令行實現(xiàn),因此必須要先檢測到 WiFi 網(wǎng)卡,才能針對此網(wǎng)卡,進行特定操作。
本質(zhì)與操作有線網(wǎng)卡 eth0 類似。
這里首先要做的就是驅(qū)動移植,將官方的驅(qū)動,移植到現(xiàn)有內(nèi)核中,這樣才能在內(nèi)核菜單中看到對應(yīng)模塊。
接著需要修改內(nèi)核選項,使能所用的 WiFi 模塊。
可以參考文章「詳細(xì)記錄丨Realtek RTL8188FU WiFi 驅(qū)動移植」
最后肯定是要編譯,生成新的內(nèi)核文件,可以使用掛載內(nèi)核的方式,驗證一下新編譯的文件是否正常運行。
如果可以看到 WiFi 網(wǎng)卡驅(qū)動,則表示內(nèi)核編譯無誤;否則,需要重復(fù)上述步驟,進行檢查;
PS:一定要確保硬件連線無誤,沒有斷路、短路、接反等問題。
2.2 命令交叉編譯
經(jīng)過上個階段,我們已經(jīng)可以正常檢測到網(wǎng)卡了。
這個階段,主要是準(zhǔn)備一些工具,也就是一些用來操作 WiFi 的命令、依賴的庫文件等;
這個階段可以參考文章:「詳細(xì)記錄丨Realtek RTL8188FU WiFi 命令編譯」
最后記得把編譯生成的命令,放到文件系統(tǒng)中的對應(yīng)路徑。
注意命令權(quán)限,正常應(yīng)該是 755 ,一定要有可執(zhí)行權(quán)限!!!
當(dāng)我們準(zhǔn)備好所需命令后,就可以編寫一些自動化的腳本,這樣在程序中,只需調(diào)用對應(yīng)腳本文件即可。
當(dāng)然了,一些特殊文件,比如保存 WiFi 名稱密碼的文件,由于需要經(jīng)常修改,因此還需要在程序中進行寫文件操作。
我的做法是先在文件系統(tǒng)中,給一個默認(rèn)的初始文件,當(dāng)參數(shù)有改變時,重新再寫一次文件。
其實也可以單獨修改文件中的某一部分,但是經(jīng)過評估,發(fā)現(xiàn)數(shù)據(jù)量不大,直接擦了重寫,更加簡單方便!
2.3 業(yè)務(wù)開發(fā)
第一個應(yīng)用場景:連接路由
即需要控制 WiFi 模塊,連接到特定的路由,進行網(wǎng)絡(luò)通信、數(shù)據(jù)交互等。
此時可以參考文章:「詳細(xì)記錄丨Realtek RTL8188FU WiFi 連接路由」
第二個應(yīng)用場景:開啟 AP 熱點
也就是設(shè)備本身,需要發(fā)射出來信號,以供其他設(shè)備連接。
此時可以參考文章:「詳細(xì)記錄丨Realtek RTL8188FU WiFi 開啟熱點」
其實還有另外一個應(yīng)用場景:Web服務(wù)器,不過我想后邊單獨出一篇文章來寫。
是什么呢?簡單說就是一個 HTTP Server ,這個 Server 可以處理 POST 請求,進而實現(xiàn)與其他移動端設(shè)備的數(shù)據(jù)交互。
結(jié)合本項目,是用于 APP 給設(shè)備配置功能參數(shù)。
3 問題匯總
由于自己在做這一塊的時候,遇到太多坑了,因此覺得很有必要再總結(jié)一下,希望能幫到您~
WiFi 配置為 AP 模式需要做什么?注意什么?
WiFi 開啟 AP 模式,說白了,就兩點要求:找得到,連得上;
找得到:我們總得能看到這個 WiFi 熱點吧?
連得上:我們即使看到了,也得能正常連上去吧?
這里進一步延伸,就有兩個技術(shù)點
必須要選擇合適的天線,否則信號較難發(fā)射出來,又或者信號不好;
服務(wù)端需要有 DHCP 功能,確保設(shè)備可以正常連接,正常獲取到 IP 地址;
其實腳本文件中的這一步,就是自動分配 IP 地址的過程。
如果沒有開啟 DHCP 功能,有什么異常?
我實際遇到的異常是:手機打開 WiFi 開關(guān),點擊連接 WiFi ,發(fā)現(xiàn)一直處于獲取 IP 地址的過程中,始終無法連接上去,后經(jīng)查找資料,才發(fā)現(xiàn)還需要服務(wù)端自動分配 IP 地址。
WiFi 開啟 AP 模式,信道選擇有什么注意的?
關(guān)于這個問題,強烈推薦這篇教程 為什么WiFi自動信道選到的信道多數(shù)在1/6/11(https://blog.csdn.net/linuxjourney/article/details/39828553)
經(jīng)過實際測試,發(fā)現(xiàn)修改為信道 11 ,效果要好一點。當(dāng)然,這個還是要結(jié)合實際情況來定
具體表現(xiàn)就是:可以更快的找到 WiFi 熱點,連接也比較穩(wěn)定。
PS:自我感覺了解的不是很充分,如果您有不同見解,歡迎留言指出,十分感謝!比心
如果信道選擇的不對,造成的問題,具體表現(xiàn)有這幾種
WiFi 信號強度不好;
WiFi 信號穩(wěn)定性不好;
找到 WiFi 路由,需要的時間較久;
WiFi 模塊天線選擇問題
這個問題,極其重要。
剛開始拿到樣品后,我們使用現(xiàn)有的其他天線,有好幾種不同的,發(fā)現(xiàn)測試結(jié)果總是不盡人意。
一個 8M 的文件,傳輸過程需要好幾分鐘;實際測到的速度,也就幾十 kb ,用起來也很糟心。
后來我們的硬件工程師,單獨把我們的樣機,送到天線廠商那做了適配,回來后,發(fā)現(xiàn)效果還真是不錯。
因此,一款合適的天線,還是極其重要的!!!
WiFi 模塊相關(guān)問題,是否跟驅(qū)動有關(guān)系?
這個問題,我目前還沒有測試。
但是之前把問題反饋給供應(yīng)商的時候,他們是給了一個新的 WiFi 驅(qū)動程序,讓再測試一下。
因此,自我感覺,還是有一定影響的。
天線安裝位置問題
由于我們的設(shè)備,是集成在一個很小的外殼里邊,而且有大部分面積,都是金屬材料。
然后設(shè)備還有 4G 、WiFi 、兩個藍(lán)牙模塊,這些無線模塊之間,信號頻段又會互相造成干擾。
因此安裝位置一定要找好,多考慮考慮。
4 總結(jié)
第一次做這樣的總結(jié)復(fù)盤,如有不適之處,煩請?zhí)岢瞿膶氋F意見,謝謝您!
原文標(biāo)題:我對 WiFi 驅(qū)動移植過程,做了一次總結(jié)復(fù)盤
文章出處:【微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
驅(qū)動
+關(guān)注
關(guān)注
12文章
1901瀏覽量
86546 -
WIFI
+關(guān)注
關(guān)注
81文章
5374瀏覽量
207473
原文標(biāo)題:我對 WiFi 驅(qū)動移植過程,做了一次總結(jié)復(fù)盤
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【米爾-RK3562開發(fā)板試用評測】EtherCat移植、編譯
不借助Linux系統(tǒng),在Windows下如何搭建ZMC900E交叉編譯環(huán)境

迅為RK3568開發(fā)板內(nèi)核模塊實現(xiàn)-設(shè)置交叉編譯器
FPGA Verilog HDL語法之編譯預(yù)處理

ElfBoard技術(shù)貼|如何在ELF 1開發(fā)板上交叉移植Qt

飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核編譯之初次編譯
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)環(huán)境搭建之交叉編譯
飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)環(huán)境搭建之交叉編譯
樹莓派4B的WiFi配置過程
linux開發(fā)板如何編譯curl
linux驅(qū)動程序的編譯方法是什么
linux驅(qū)動程序的編譯方法有哪兩種
第四章:在 PC 交叉編譯 aarch64 的 tensorflow 開發(fā)環(huán)境并測試

評論