第五季1:AP模式USB-WIFI网卡移植与测试
以下內容源于朱有鵬課程,如有侵權,請告知刪除。
1、WIFI接口
- WIFI模塊與SoC的接口有多種,如SDIO、USB、串口(低帶寬)等。
2、AP、STA
- AP(Access Poin,接入點t),一般指(有線或者無線的)路由器。
- STA(Station,站點),指的是連接到路由器的終端設備,比如手機筆記本等等。
3、USB-WIFI網卡選作AP模式、STA模式
- USB-WIFI的模式選項,就是讓你選擇,你這(擁有USB-WIFI模塊的)設備,是作為站點還是作為接入點。如果它作為站點,那么它聯網的時候就會去尋找一個接入點來接入網絡。如果是作為接入點,那么局域網中其他設備在聯網的時候會接入它。
4、移植起點
(1)前置課程《USB-WIFI網卡在x210板子上的移植》
- 此課程見https://blog.csdn.net/oqqHuTu12345678/article/details/78945699
- 此課程中USB-WIFI網卡僅作station模式,它接入房間里的無線路由器來上網。
(2)USB WIFI網卡官方提供的驅動
(3)基于海思SDK中已經編譯過的內核源碼樹來編譯驅動
- 因為板載系統的內核和用來編譯驅動的內核源碼樹必須對應一致,這樣編譯出來的驅動才能在板載系統上安裝與工作。
5、本課程內容
- HI3518E+WIFI做AP,PC做STA,實現局域網內ortp視頻傳輸
- HI2518E+WIFI做STA,PC做STA,外部路由器做AP,實現局域網內ortp視頻傳
- HI2518E+WIFI做STA,PC做STA,外部路由器做AP,實現全程無線調試(不用有線網卡)
6、USB-WIFI驅動源碼
- 網盤資源【提取碼: p3e7】
- 將Makefile替換掉壓縮包里的Makefile。
7、假設的IP地址
| 無線 | 有線 | |
| windows | 192.168.0.30 | 192.168.1.20 |
| 開發板 | 192.168.0.100 | ?192.168.1.10 |
| ubuntu | 192.168.0.50 | 192.168.1.141 |
? ??
一、AP模式USB-WIFI網卡移植與測試
1、在虛擬機中合適目錄解壓
2、修改移植工作很簡單
(1)在include/rtmp_def.h中1627行左右,修改網絡名始終為:wlan。
- 但其實不改也行,只是將來網絡名字不叫wlan而是叫ra。
(2)將提供的Makefile替換掉原來的Makefile;
- 注意路徑問題,如果你自己的內核源碼樹的路徑不是所提供的Makefile中規定的,則需要將所提供的Makefile里的內核源碼樹的路徑修改下。
(3)此時執行make時報錯(注意分析錯誤的過程,挺受啟發的)。
- 需要在./os/linux/config.mk中添加EXTRA_FLAGS;(即添加1044~1046所示的內容)
- 報錯原因是找不到某些頭文件,但實際上在include目錄中有這些頭文件,為何還是找不到呢?在Make文件中有下面一句,即包含配置文件config.mk,進入到config.mk文件中查看,發現是flag的問題。因此要添加。
(4)執行make時依然出錯,原因是缺少autoconf.h文件。
- 海思SDK直接解壓后得到的kernel中并沒有包含此文件,因為(猜想的)在執行make distclean時刪除了此文件。解決方法是重新單獨編譯kernel,可以獲得此文件。
- 解釋見https://www.cnblogs.com/Suzkfly/p/11763948.html
(5)修改Makefile。
- 因為Makefile文件規定將得到xx.ko文件放在/tftpboot中,但我們想用NFS將驅動拷貝到板載系統,因此修改Makefile,使其將生成的ko文件放到/root/all_qianrushi/rootfs/hisrootfs中。
(6)執行make。
- 生成的驅動是./os/linux/*.o所示的文件(主要mt7601Uap.ko文件)。
- /root/all_qianrushi/rootfs/hisrootfs中也有一份(即mt7601Uap.ko)。
3、部署USB-WIFI驅動使之工作為AP
(1)確認模塊被識別。
- 先lsusb,然后插入USB WIFI模塊,再lsusb,確認模塊被識別了
(2)在開發板中部署 /etc/Wireless/RT2870AP/RT2870AP.dat,并修改以下幾個配置。
此配置文件在虛擬機的源碼中,將之拷貝到板載目錄/etc/Wireless/RT2870AP/(板載系統無此目錄而需要自己創建)并作修改。
- SSID=WIFI_XJH(此名字是在pc機上看到的wifi名字)?
- AuthMode=WPA2PSK(加密方式)
- EncrypType=TKIP;AES
- WPAPSK=123456789(這個是密碼)
(3)insmod mt7601Uap.ko安裝USB WIFI驅動模塊
(4)ifconfig -a看是否有wlan0
- 如果只ifconfig命令,只能看到打開狀態下的網卡。所以用ifconfig -a
(5)ifconfig wlan0 up, ifconfig wlan0 192.168.0.100來啟動wlan0并設置其IP。
(6)ifconfig查看,確認wlan0工作正常
(7)用PC或手機的WIFI搜索是否有一個名為:MT7601AP_WPA的網絡了,有了就成功了
(8)給PC強制分配靜態IP
設置無線網卡的IP為:192.168.0.30
設置有線網卡的IP為:192.168.1.20
4、測試用例準備
(1)在ORTP版本的sample中,在/common/sample_common_venc.c中,修改LOCAL_HOST_IP為192.168.0.30
(2)在sample/venc/下執行make clean,再執行make,得到sample_venc。
這步居然出現了問題,折騰大半天死活得不到sample_venc文件。
1)首先make clean和make的時候,出現一個提示說缺少文件。
ls: cannot access ‘./hiwork/osdrvhi3518e.C01’: No such file or directory
由于編譯得不到sample_venc文件,我以為是缺少該文件導致的。復制粘貼上網查詢,有人說不影響編譯結果的,的確如此,但得不到我需要的sample_venc文件,只得到sample_venc.o文件。
與我一樣有強迫癥的網友提供了方法:https://blog.csdn.net/PecoHe/article/details/89528018,即修改mpp目錄下的那個Makefile.param,如圖注釋掉部分代碼。
2)經過上面步驟后,執行make clean 和make時不再提示缺少文件,而且也得到了想要的文件。但將其放在板載系統上運行時出現下面圖片所示的錯誤。
根據提示是初始化失敗了。為何會失敗呢?我只是在sample_venc.c 修改了通道數目為1,然后在common/sample_common_venc.c中修改了主機IP,而之前的RTP傳輸視頻實驗是成功的,對比之下,這次只是修改了主機IP,為何就出錯了呢?我回到之前的實驗,發現自己缺失一個步驟,這個步驟在之前的RTP傳輸視頻實驗中我做過了,因此之前的實驗可以成功,但是因為我曾經重新執行過./sdk.cleanup和./sdk.unpack,所以那步驟的修改丟失了,而這次我修改了其他內容而唯獨忘記這個步驟,因此出錯。步驟是:由sample目錄下的readme的第三點可知,需要對sample目錄下的Makefile.param進行修改。如圖箭頭所示。
這兩個參數的值會影響其他參數,從而影響結果。
這番折騰花費我蠻多時間的,只因為缺失一個修改步驟,得到教訓:做實驗時,如果沒有沿用之前的設置,而是新建立項目內容時,要注意新舊文件內容對比,注意步驟是否完成。
(3)復制得到的sample_venc到/root/all_qianrushi/rootfs/hisrootfs。
5、測試實驗
(1)開發板端:cp /mnt/sample_venc /home/,然后cd /home
- 拔掉網線后不能再通過/mnt訪問虛擬機的內容,所以要將用到的文件拷貝到板載系統中。
(2)拔掉網線
- 證明是無線傳輸
(3)PC端WIFI連接WIFI-XJH,輸入密碼123456789
(4)PC端設置無線網絡的靜態IP地址為:192.168.0.30
(5)PC端cmd去ping 192.168.0.100,或者反過來開發板端ping PC的無線IP
- 開發板ping PC端的時候,記得關掉PC端的防火墻(在cmd輸入control選擇關閉),否則ping不通的。
(6)開發板端執行 ./sample_venc
(7)PC端打開VLC,使用第3季中的sdp配置,注意修改c=IN IP4 192.168.0.100,就能播放了。
總結
以上是生活随笔為你收集整理的第五季1:AP模式USB-WIFI网卡移植与测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cnnvd爬取漏洞信息
- 下一篇: vivo android 刷机教程,vi