<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          圖文講解 WiFi 驅(qū)動(dòng)移植過(guò)程,很肝~

          共 3830字,需瀏覽 8分鐘

           ·

          2021-06-08 03:21

          關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容
          來(lái)源:嵌入式基礎(chǔ)學(xué)習(xí)
          作者:小二

          本篇文章打算對(duì)WiFi 驅(qū)動(dòng)移植文章進(jìn)行一次系統(tǒng)性的總結(jié)、復(fù)盤,分享一下自己的思考過(guò)程,遇到的問(wèn)題等。
          希望對(duì)您有點(diǎn)幫助??????
          備注:由于自己目前僅使用了一款 WiFi ,因此不能代表所有的 WiFi 種類,僅以此為代表,談?wù)勛约旱睦斫馀c思考。如有問(wèn)題,歡迎一塊討論交流??申P(guān)注微信公眾號(hào)「嵌入式基礎(chǔ)學(xué)習(xí)」,通過(guò)公眾號(hào)后臺(tái),加我微信好友,一起學(xué)習(xí)!

          1 簡(jiǎn)介

          WiFi 是什么?能用來(lái)做什么?
          都 2021 年了,相信您對(duì) WiFi 一定不陌生了。
          可以參考這里的百度百科釋義:【百度百科 - WiFi(https://baike.baidu.com/item/Wi-Fi/151036?fromtitle=WIFI&fromid=803834&fr=aladdin)】
          那 WiFi 能用來(lái)干什么呢?
          以手機(jī)為例,很明顯有兩個(gè)功能:
          • 開(kāi)啟 WiFi ,連接到路由器;
          • 開(kāi)啟熱點(diǎn)(AP),讓別人連接到由自己設(shè)備 WiFi 開(kāi)出來(lái)的路由;
          這兩個(gè)場(chǎng)景,在實(shí)際中已經(jīng)很常見(jiàn)了。
          本次 WiFi 驅(qū)動(dòng)移植,應(yīng)用場(chǎng)景是什么呢?
          簡(jiǎn)單的說(shuō),就是我有一塊控制板,現(xiàn)在需要增加 WiFi 模塊,讓設(shè)備可以通過(guò) WiFi ,正常連接到網(wǎng)絡(luò)。
          應(yīng)用場(chǎng)景也有很多,比如這些:
          • 對(duì)安裝環(huán)境要求較高的地方(盡可能少的接線);
          • 不易連接有線網(wǎng)絡(luò)的地方;
          • 低成本,不想用 4G 的地方;
          • 僅用作局域網(wǎng)通信;
          • ...
          說(shuō)到這里,還有一個(gè)比較重要的場(chǎng)景,就是設(shè)備端作為一個(gè) Web 服務(wù)器,可以接入其他設(shè)備,比如手機(jī) APP 等,進(jìn)行功能參數(shù)的配置。這塊考慮后邊單獨(dú)寫一篇文章總結(jié)。
          設(shè)備怎么與 WiFi 模塊通信?有哪幾種方式?
          目前主流的方案有兩種:USB 和 SDIO ;
          不過(guò)由于 USB 方案,適配相對(duì)簡(jiǎn)單,因此選用 USB 方式的芯片。
          生活中常見(jiàn)的 USB 無(wú)線網(wǎng)卡,類似的也是這種方式。
          備注:具體使用哪種接口,還要結(jié)合實(shí)際情況選擇。
          關(guān)于 USB 方式和 SDIO 方式,可以看看這份參考資料,WIFI的USB和SDIO接口是什么??(https://zhidao.baidu.com/question/117152584.html)
          硬件怎么連接?是否需要天線?如果不需要天線有什么問(wèn)題?天線不適配又有什么問(wèn)題?
          使用 USB 方式的 WiFi 模組,硬件接線較為方便,如下圖所示
          截圖源自創(chuàng)凌官網(wǎng)
          由上圖可以看到,引腳功能如下:
          • D+:USB接口+
          • D-:USB接口-
          • ANT:天線接口
          而且整體尺寸很小,圖中尺寸單位為 毫米(mm)。
          下一個(gè)問(wèn)題,肯定是需要天線的,否則 WiFi 無(wú)法發(fā)射出來(lái)信號(hào)?,F(xiàn)象就是:AP 模式下,搜索不到路由。
          如果天線不適配,則不能達(dá)到最大利用率。實(shí)際現(xiàn)象:WiFi 網(wǎng)速慢,網(wǎng)絡(luò)連接不穩(wěn)定,ping 丟包等。

          2 整體流程

          這一部分,就回顧一下,從拿到 WiFi 模塊,到最后產(chǎn)品交付的全流程,然后復(fù)盤總結(jié)一下。
          我把整個(gè)過(guò)程大致分為三個(gè)階段,圖示如下:
          其實(shí)在這之前,還應(yīng)該有一個(gè)硬件環(huán)境準(zhǔn)備階段。為了盡量詳細(xì),簡(jiǎn)要描述如下:
          (如果您已了解,可直接看下一部分??)
          硬件連接圖,簡(jiǎn)要圖示如下:

          2.1 基礎(chǔ)移植

          此階段的終極目的:使系統(tǒng)檢測(cè)到 WiFi 網(wǎng)卡。為什么呢?
          • USB WiFi 的基本操作,都是通過(guò) 命令行 實(shí)現(xiàn),因此必須要先檢測(cè)到 WiFi 網(wǎng)卡,才能針對(duì)此網(wǎng)卡,進(jìn)行特定操作。
          • 本質(zhì)與操作有線網(wǎng)卡 eth0 類似。
          這里首先要做的就是 驅(qū)動(dòng)移植 ,將官方的驅(qū)動(dòng),移植到現(xiàn)有內(nèi)核中,這樣才能在內(nèi)核菜單中看到對(duì)應(yīng)模塊。
          接著需要修改內(nèi)核選項(xiàng),使能所用的 WiFi 模塊。
          可以參考文章「詳細(xì)記錄丨Realtek RTL8188FU WiFi 驅(qū)動(dòng)移植」
          最后肯定是要編譯,生成新的內(nèi)核文件,可以使用掛載內(nèi)核的方式,驗(yàn)證一下新編譯的文件是否正常運(yùn)行。
          如果可以看到 WiFi 網(wǎng)卡驅(qū)動(dòng),則表示內(nèi)核編譯無(wú)誤;否則,需要重復(fù)上述步驟,進(jìn)行檢查;
          PS:一定要確保硬件連線無(wú)誤,沒(méi)有斷路、短路、接反等問(wèn)題。

          2.2 命令交叉編譯

          經(jīng)過(guò)上個(gè)階段,我們已經(jīng)可以正常檢測(cè)到網(wǎng)卡了。
          這個(gè)階段,主要是準(zhǔn)備一些 工具 ,也就是一些用來(lái)操作 WiFi 的命令、依賴的庫(kù)文件等;
          這個(gè)階段可以參考文章:「詳細(xì)記錄丨Realtek RTL8188FU WiFi 命令編譯」
          最后記得把編譯生成的命令,放到文件系統(tǒng)中的對(duì)應(yīng)路徑。
          注意命令權(quán)限,正常應(yīng)該是 755 ,一定要有可執(zhí)行權(quán)限?。?!
          當(dāng)我們準(zhǔn)備好所需命令后,就可以編寫一些自動(dòng)化的腳本,這樣在程序中,只需調(diào)用對(duì)應(yīng)腳本文件即可。
          當(dāng)然了,一些特殊文件,比如保存 WiFi 名稱密碼的文件,由于需要經(jīng)常修改,因此還需要在程序中進(jìn)行寫文件操作。
          我的做法是先在文件系統(tǒng)中,給一個(gè)默認(rèn)的初始文件,當(dāng)參數(shù)有改變時(shí),重新再寫一次文件。
          其實(shí)也可以單獨(dú)修改文件中的某一部分,但是經(jīng)過(guò)評(píng)估,發(fā)現(xiàn)數(shù)據(jù)量不大,直接擦了重寫,更加簡(jiǎn)單方便!

          2.3 業(yè)務(wù)開(kāi)發(fā)

          第一個(gè)應(yīng)用場(chǎng)景:連接路由
          即需要控制 WiFi 模塊,連接到特定的路由,進(jìn)行網(wǎng)絡(luò)通信、數(shù)據(jù)交互等。
          此時(shí)可以參考文章:「詳細(xì)記錄丨Realtek RTL8188FU WiFi 連接路由」

          第二個(gè)應(yīng)用場(chǎng)景:開(kāi)啟 AP 熱點(diǎn)
          也就是設(shè)備本身,需要發(fā)射出來(lái)信號(hào),以供其他設(shè)備連接。
          此時(shí)可以參考文章:「詳細(xì)記錄丨Realtek RTL8188FU WiFi 開(kāi)啟熱點(diǎn)」

          其實(shí)還有另外一個(gè)應(yīng)用場(chǎng)景:Web服務(wù)器 ,不過(guò)我想后邊單獨(dú)出一篇文章來(lái)寫。
          是什么呢?簡(jiǎn)單說(shuō)就是一個(gè) HTTP Server ,這個(gè) Server 可以處理 POST 請(qǐng)求,進(jìn)而實(shí)現(xiàn)與其他移動(dòng)端設(shè)備的數(shù)據(jù)交互。
          結(jié)合本項(xiàng)目,是用于 APP 給設(shè)備配置功能參數(shù)。

          3 問(wèn)題匯總

          由于自己在做這一塊的時(shí)候,遇到太多坑了,因此覺(jué)得很有必要再總結(jié)一下,希望能幫到您~
          WiFi 配置為 AP 模式需要做什么?注意什么?
          WiFi 開(kāi)啟 AP 模式,說(shuō)白了,就兩點(diǎn)要求:找得到,連得上;
          • 找得到:我們總得能看到這個(gè) WiFi 熱點(diǎn)吧?
          • 連得上:我們即使看到了,也得能正常連上去吧?
          這里進(jìn)一步延伸,就有兩個(gè)技術(shù)點(diǎn)
          • 必須要選擇合適的天線,否則信號(hào)較難發(fā)射出來(lái),又或者信號(hào)不好;
          • 服務(wù)端需要有 DHCP 功能,確保設(shè)備可以正常連接,正常獲取到 IP 地址;
          其實(shí)腳本文件中的這一步,就是自動(dòng)分配 IP 地址的過(guò)程。
          如果沒(méi)有開(kāi)啟 DHCP 功能,有什么異常?
          我實(shí)際遇到的異常是:手機(jī)打開(kāi) WiFi 開(kāi)關(guān),點(diǎn)擊連接 WiFi ,發(fā)現(xiàn)一直處于 獲取 IP 地址的過(guò)程中 ,始終無(wú)法連接上去,后經(jīng)查找資料,才發(fā)現(xiàn)還需要服務(wù)端自動(dòng)分配 IP 地址。
          WiFi 開(kāi)啟 AP 模式,信道選擇有什么注意的?
          關(guān)于這個(gè)問(wèn)題,強(qiáng)烈推薦這篇教程 為什么WiFi自動(dòng)信道選到的信道多數(shù)在1/6/11(https://blog.csdn.net/linuxjourney/article/details/39828553)
          經(jīng)過(guò)實(shí)際測(cè)試,發(fā)現(xiàn)修改為信道 11 ,效果要好一點(diǎn)。當(dāng)然,這個(gè)還是要結(jié)合實(shí)際情況來(lái)定??
          具體表現(xiàn)就是:可以更快的找到 WiFi 熱點(diǎn),連接也比較穩(wěn)定。
          PS:自我感覺(jué)了解的不是很充分,如果您有不同見(jiàn)解,歡迎留言指出,十分感謝!比心??????
          如果信道選擇的不對(duì),造成的問(wèn)題,具體表現(xiàn)有這幾種
          • WiFi 信號(hào)強(qiáng)度不好;
          • WiFi 信號(hào)穩(wěn)定性不好;
          • 找到 WiFi 路由,需要的時(shí)間較久;
          WiFi 模塊天線選擇問(wèn)題
          這個(gè)問(wèn)題,極其重要。
          剛開(kāi)始拿到樣品后,我們使用現(xiàn)有的其他天線,有好幾種不同的,發(fā)現(xiàn)測(cè)試結(jié)果總是不盡人意。
          一個(gè) 8M 的文件,傳輸過(guò)程需要好幾分鐘;實(shí)際測(cè)到的速度,也就幾十 kb ,用起來(lái)也很糟心。
          后來(lái)我們的硬件工程師,單獨(dú)把我們的樣機(jī),送到天線廠商那做了適配,回來(lái)后,發(fā)現(xiàn)效果還真是不錯(cuò)。
          因此,一款合適的天線,還是極其重要的?。?!
          WiFi 模塊相關(guān)問(wèn)題,是否跟驅(qū)動(dòng)有關(guān)系?
          這個(gè)問(wèn)題,我目前還沒(méi)有測(cè)試。
          但是之前把問(wèn)題反饋給供應(yīng)商的時(shí)候,他們是給了一個(gè)新的 WiFi 驅(qū)動(dòng)程序,讓再測(cè)試一下。
          因此,自我感覺(jué),還是有一定影響的。
          天線安裝位置問(wèn)題
          由于我們的設(shè)備,是集成在一個(gè)很小的外殼里邊,而且有大部分面積,都是金屬材料。
          然后設(shè)備還有 4G 、WiFi 、兩個(gè)藍(lán)牙模塊,這些無(wú)線模塊之間,信號(hào)頻段又會(huì)互相造成干擾。
          因此安裝位置一定要找好,多考慮考慮。

          4 總結(jié)

          第一次做這樣的總結(jié)復(fù)盤,如有不適之處,煩請(qǐng)?zhí)岢瞿膶氋F意見(jiàn),謝謝您!
          我一直相信「 兼聽(tīng)則明,偏聽(tīng)則暗 」,所以有問(wèn)題請(qǐng)一定記得給我留言哈~
          然后這篇文章,也算斷斷續(xù)續(xù)寫了兩周時(shí)間,期間在忙工作、也在忙一些其他的事情。經(jīng)過(guò)這幾天的加班加點(diǎn),總算趕出來(lái)了。

          我是一個(gè)積極樂(lè)觀??????的程序開(kāi)發(fā)者,您可以叫我一聲 小二 ,亦或者,叫我一聲 Boom ,都行,隨您開(kāi)心。
          ????????????????  END  ????????????????
          推薦閱讀:

          嵌入式編程專輯
          Linux 學(xué)習(xí)專輯
          C/C++編程專輯
          Qt進(jìn)階學(xué)習(xí)專輯

          關(guān)注下面微信公眾號(hào),通過(guò)公眾號(hào)后臺(tái),加作者微信好友,一起學(xué)習(xí)!
          瀏覽 94
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久午夜福利电影 | 成人亚洲性情网站www在线 | 国产1234第一页 | 久久百万精品 | 一起操电影网 |