1. 程式人生 > >第十七章:STA模式USB WIFI驅動移植

第十七章:STA模式USB WIFI驅動移植

1、下載原始碼

首先將原始碼複製到ubuntu中實驗目錄,並解壓開,這裡我們用到的是sta模式,所以解壓MT7601U_LinuxAP_3.0.0.1_20130802.tar.bz2這個檔案。

我們這裡解壓之後放在了以下目錄中.

           

2、修改移植

修改sta/MT7601U_LinuxAP_3.0.0.1_20130802資料夾下的主makefile

首先遮蔽SMDK,其次增加核心原始碼樹路徑、交叉編譯鏈、平臺架構等資訊,具體新增內容如下:

修改include/rtmp_def.h中1627行左右,修改網路名始終為:wlan

                       

修改os/linux/目錄下的config.mk。增加以下內容。

               

修改完成之後,再次make,就會在os/linux/目錄下生成mt7601Usta.ko檔案,之後將其拷貝進開發板的檔案系統中,載入就能使用。

           

3、部署到開發板

首先將上面編譯好的RT2870STA.dat,複製到開發板的檔案系統中的/etc/Wireless/RT2870STA目錄下。

RT2870STA.dat檔案在原始碼目錄下。

         

然後將上述檔案拷貝到開發板中的/etc/Wireless目錄下

4、移植wpa_supplicant

需要用到wpa_supplicant-2.5.tar.gz和openssl-0.9.8za.tar.gz,這兩個檔案在第一點那邊下載的時候,就有包含在裡面。

在移植wpa_supplicant之前還需要移植openssl。

4.1、移植openssl

給openssl打補丁。把wpa_supplicant-2.5裡面的patches資料夾下的openssl-0.9.8za-tls-extensions.patch檔案拷貝到openssl-0.9.8za目錄下,執行:patch -p1 < openssl-0.9.8za-tls-extensions.patch

4.2、修改makefile

修改openssl-0.9.8za目錄下的makefile,設定將來編譯好的時候,安裝的目錄,還有設定相關的編譯鏈。

            

然後執行make,編譯完成後,再執行make install,如果出現以下錯誤,原因:OpenSSL 與 perl版本不相容

解決方法:rm -f /usr/bin/pod2man

當然,如果你在上面有刪除install_docs的話,一般就不會碰到這個錯誤。

             

安裝完成之後,在安裝目錄下就會有這些東西了。

           

4.3、編譯wpa_supplicant

首先進入解壓好的wpa_supplicant-2.5/wpa_supplicant路徑中。將defconfig變成.config檔案。

執行命令:cp defconfig .config

在此修改wpa_supplicant原始碼目錄下的makefile(wpa_supplicant-2.6/wpa_supplicant資料夾中)

CC=arm-hisiv300-linux-gcc -L/home/aston/hi3518/usb/MT7601_driver/sta/openssl_install/lib

CFLAGS+=-I /home/aston/hi3518/usb/MT7601_driver/sta/openssl_install/include

LIBS+=-L/home/aston/hi3518/usb/MT7601_driver/sta/openssl_install/lib

其中:/home/aston/hi3518/usb/MT7601_driver/sta/openssl_install這個目錄是之前安裝openssl的目錄。

       

在wpa_supplicant-2.5/wpa_supplicant目錄下執行make後,報錯。

       

退回到wpa_supplicant-2.6的主目錄下執行make後,報錯。

上網查詢之後,發現要麼安裝libnl,要麼修改.config檔案,註釋 CONFIG_DRIVER_NL80211=y,在執行make,就好生成wpa_supplicant和wpa_cli。

最後將wpa_supplicant和wpa_cli檔案拷貝到nfs檔案系統中的/usr/bin目錄下。

          

5、部署wpa_supplicant

首先將wpa_supplicant、wpa_cli放到海思開發板/usr/bin目錄下

cp wpa_supplicant /usr/bin

然後建立配置檔案/etc/wap_supplicant.conf,內容如下:

ctrl_interface=/var/run/wpa_supplicant

network={

ssid="pipixia-lets-go"

scan_ssid=1

key_mgmt= WPA-EAP WPA-PSK IEEE8021X NONE

pairwise=TKIP CCMP

group=CCMP TKIP WEP104 WEP40

psk="******"//密碼

}

                                     

6、sta模式的USB WIFI設定

首先安裝驅動,我們先前將mt7601Usta.ko複製到了開發板檔案系統中的/home目錄。

insmod /home/mt7601Usta.ko

然後設定靜態IP地址,這裡先要確認清楚自己的pc主機的ip地址,將開發板的網段設定和pc一直,這裡我的電腦ip地址是192.168.1.102。

ifconfig wlan0 up, ifconfig wlan0 192.168.1.120

之後使用開發板sta連線AP (-dd開啟除錯資訊)

wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -dd &

完成後,輸入命令wpa_cli -i wlan0 status檢視連線狀態

                       

注:這時候可以ping我的pc主機192.168.1.102,但是會發現ping不通。主要原因是之前還有一個有線網絡卡,這時候使用命令:ifconfig eth0 down 關閉有線網絡卡。然後再ping主機就可以ping通了。

          

如果想上外網,就需要新增

route add default gw 192.168.0.1 dev wlan0

這時候ping 8.8.8.8就能ping通。

8、測試用例準備

參考之前移植的ortp庫,進行修改host端的ip地址。

參考帖子:

修改Hi3518E_SDK_V1.0.3.0/mpp/sample/common目錄下的sample_common_venc.c檔案。

將LOCAL_HOST_IP為192.168.1.102。(和我的Widnows的WIFI自動分配的IP一樣)

                

修改完成之後,進入Hi3518E_SDK_V1.0.3.0/mpp/sample/venc目錄下,執行make clean,然後再執行make,最後生成新的sample_venc檔案,放在開發板檔案系統中,將來就可以使用了。

最後開發板端執行 ./sample_venc 0

                        

PC端開啟vlc播放器,修改sdp配置,注意c=IN IP4 192.168.1.102,就能播放了。