1. 程式人生 > >7 無線wifi傳輸視訊開發

7 無線wifi傳輸視訊開發

轉載,侵刪

7 無線wifi傳輸視訊開發

MT7601的驅動原始碼提供了兩種:AP模式和STA模式原始碼。此時我使用USB作為AP熱點,電腦作為STA模式,並使用ORTP實現無線傳輸視訊

7.1、AP模式下USB WIFI驅動移植

(1)準備wifi原始碼並將原始碼複製到ubuntu伺服器下解壓

原始碼在主機的:E:\winshare\HI3518EV200\MT7601_driver\下,此後開啟Ubuntu終端,並執行以下命令:
cd /home/aston/sambashare[進入目標目錄]
cp /mnt/hgfs/winshare/HI3518EV200/MT7601_driver/ ./ -rf[複製到ubuntu]
cd MT7601_driver/ap[進入AP模式原始碼目錄]
tar -jxvf MT7601U_LinuxAP_3.0.0.1_20130802.tar.bz2[解壓wifi原始碼]
cd MT7601U_LinuxAP_3.0.0.1_20130802/[進入原始碼目錄]

(2)根據硬體條件對原始碼作出修改以適應硬體平臺

步驟一:在include/rtmp_def.h中的1627行,修改完網路名始終為:wlan:
Sudo vi include/rtmp_def.h[開啟目標標頭檔案]
:1627[跳到1627行]
將下面的

#ifdef ANDROID_SUPPORT         
#define INF_MAIN_DEV_NAME     “wlan”   
#define INF_MBSSID_DEV_NAME “wlan” #else #define INF_MAIN_DEV_NAME “ra” #define INF_MBSSID_DEV_NAME “ra” #endif

第一句和後面四句用//註釋掉

(3)進入makefile目錄,編譯並修改錯誤

Cd ../Makefile ./ [進入原始碼根目錄]
Make clean;make [清除並編譯]
錯誤提示:linux/rt_profile.c:26:23: 致命錯誤: rt_config.h:沒有這樣的檔案或目錄
推測:cd os/linux [發現rt_profile.c]
Sudo vi rt_profile.c [開啟 rt_profile.c原始碼檔案]
: 26[跳轉至第26行,發現#include "rt_config.h" ,即包含了rt_config標頭檔案]
Cd ../../include [進入原始碼的標頭檔案總目錄,發現已經有了"rt_config.h"標頭檔案,但是編譯時找不到這個標頭檔案,因此這個錯誤應該是編譯沒有把這個標頭檔案連結包含進去,導致找不到這個檔案 ]
解決:在./os/linux/config.mk中新增EXTRA_FLAGS
Cd os/linux
Sudo vi config.mk[開啟wifi原始碼配置檔案]
/DM6446[搜尋關鍵字DM6446]
在DM6446平臺架構之上新增HI3518E支援[1048行],如下:
ifeq ($(PLATFORM),HISI_3518E)
EXTRA_CFLAGS := $(WFLAGS) //指定預定義變數EXTRA_CFLAGS作為C編譯器選項編譯HI3518E原始碼樹
endif
Cd ../../ [重新進入原始碼根目錄]
Make clean;make [清除並編譯]

(4)修改Makefile或者手工複製xx.ko到/home/aston/rootfs中

ls /os/linux/*.ko[發現os/linux/mt7601Uap.ko驅動已經生成]
sudo vi Makefile
/ko [搜尋關鍵詞ko]
將原來415行的內容改成:
cp -f $(RT28xx_DIR)/os/linux/mt$(MODULE)ap.ko /home/aston/rootfs [將生成的ko驅動掛載到 /home/aston/rootfs共享目錄中]
Make[重新編譯]
Cd /home/aston/rootfs[進入共享目錄]
Ls [發現mt7601Uap.ko已經複製到了共享目錄中去了]

7.2、AP模式下USB WIFI開發板部署

(1)測試wifi硬體是否能夠正常使用

將開發板連上電腦,並進入Hilinux模式:
A:不插wifi時,串列埠輸入命令lsusb,此時顯示
Bus 001 Device 001:ID 1d6b:0002
Bus 001 Device 001:ID 1d6b:0001
B:現在插入wifi,會提示新高速USB裝置002即hiusb-ehci.
這時執行命令:lsusb,發現新增加一個裝置
Bus 001 Device 002:ID 148f:7601[這就是wifi裝置,它的ID時002]

(2)將USB WIFU的AP模式驅動部署到開發板上

A:Ubunu:複製配置檔案RT2870AP.dat檔案到nfs共享資料夾中
Cd/home/aston/sambashare/MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802 [進入目標目錄]
cp RT2870AP.dat ~/rootfs/ -f [將RT2870AP.dat複製到共享目錄中]

B:Hilinux中執行命令建立目錄
cd /mnt [進入mnt共享目錄]
Ls [發現RT2870AP.dat已經複製進入了此目錄]
mkdir -p /etc/Wireless/RT2870AP [建立目標目錄]
cd /etc/Wireless/RT2870AP/ [ls檢視此目錄發現為空目錄]
cp /mnt/RT2870AP.dat ./ [從共享目錄中複製配置檔案到當前目錄]
Ls [RT2870AP.dat檔案,說明覆製成功了]
vi RT2870AP.dat [更改這個檔案,因為預設沒有密碼,不安全,要改成帶密碼的,按照以下方式修改]
SSID=MT7601AP_WPA(這裡的名字是在pc機上看到的連線ssid名)AuthMode=WPA2PSK(加密方式)
EncrypType=TKIP;AES(加密演算法)
WPAPSK=1234567890(這個是密碼)

C:insmod xx.ko安裝USB WIFI驅動模組
cd /mnt/
insmod mt7601Uap.ko [裝載驅動]
lsmod[在最前面發現了mt7601Uap驅動模組已經安裝]
ifconfig -a[發現有eth0,lo和wlan0三個網絡卡,即有wlan0目標網絡卡生成,說明安裝成功]

D:設定IP地址
ifconfig wlan0 192.168.0.100[設定無線網絡卡wlan0的IP地址]
ifconfig wlan0 up[喚醒無線網絡卡wlan0]
ifconfig [發現wlan0網絡卡的inet addr地址為192.168.0.100,證明設定成功,注此時eth0的ip地址時192.168.1.10,即開發板的有線網絡卡和無線網絡卡都在工作了,注ifconfig是檢視已經工作的網絡卡,ifconfig -a是檢視所有的網絡卡]
windows和開發板都有一個無線網絡卡和一個有線網絡卡,它們彼此獨立,可以同時工作。開發板和主機windows要處在同一個網段[區域網]
無線:
windows: 192.168.0.30
AP: 192.168.0.100

E:用PC或手機的WIFI搜尋看一下,是否有一個名為:MT7601AP_WPA的網路了,有了就成功了,但是輸入密碼之後會提示連線不成功[此計算機當前已將連線限制為MT7601AP_WPA],其實當前已經連線成功了,但是此時的AP還是不能訪問外網,所以會提示有限的訪問許可權。
主機上選擇開啟網路共享中心,點選無線網路連線(MT7601AP_WPA),選擇詳細資訊,發現自動分配的IP地址時169.254.158.163,子網掩碼時255.255.0.0,即全部都是亂的,因此需要給PC端強制分配一個靜態IP地址。

F:給PC強制分配靜態IP
主機上選擇開啟網路共享中心,點選無線網路連線(MT7601AP_WPA),選擇屬性,選擇Internet協議版本4(TCP/IPv4),選擇"使用下面的IP地址",指定ip地址為162.168.0.30,指定子網掩碼為255.255.255.0,點選確定,點選確定,確定,選擇詳細資訊,發現此時的ip地址為192.168.0.30,子網掩碼為255.255.255.0,證明設定成功了。然後關閉對話方塊。此時的開發板和window已經通過無線wifi連線通了。

8 效果

MT7601的驅動原始碼提供了兩種:AP模式和STA模式原始碼。此時我使用USB作為AP熱點,電腦作為STA模式,並使用ORTP實現無線傳輸視訊

7.1、AP模式下USB WIFI驅動移植

(1)準備wifi原始碼並將原始碼複製到ubuntu伺服器下解壓

原始碼在主機的:E:\winshare\HI3518EV200\MT7601_driver\下,此後開啟Ubuntu終端,並執行以下命令:
cd /home/aston/sambashare[進入目標目錄]
cp /mnt/hgfs/winshare/HI3518EV200/MT7601_driver/ ./ -rf[複製到ubuntu]
cd MT7601_driver/ap[進入AP模式原始碼目錄]
tar -jxvf MT7601U_LinuxAP_3.0.0.1_20130802.tar.bz2[解壓wifi原始碼]
cd MT7601U_LinuxAP_3.0.0.1_20130802/[進入原始碼目錄]

(2)根據硬體條件對原始碼作出修改以適應硬體平臺

步驟一:在include/rtmp_def.h中的1627行,修改完網路名始終為:wlan:
Sudo vi include/rtmp_def.h[開啟目標標頭檔案]
:1627[跳到1627行]
將下面的

#ifdef ANDROID_SUPPORT         
#define INF_MAIN_DEV_NAME     “wlan”   
#define INF_MBSSID_DEV_NAME “wlan” #else #define INF_MAIN_DEV_NAME “ra” #define INF_MBSSID_DEV_NAME “ra” #endif

第一句和後面四句用//註釋掉

(3)進入makefile目錄,編譯並修改錯誤

Cd ../Makefile ./ [進入原始碼根目錄]
Make clean;make [清除並編譯]
錯誤提示:linux/rt_profile.c:26:23: 致命錯誤: rt_config.h:沒有這樣的檔案或目錄
推測:cd os/linux [發現rt_profile.c]
Sudo vi rt_profile.c [開啟 rt_profile.c原始碼檔案]
: 26[跳轉至第26行,發現#include "rt_config.h" ,即包含了rt_config標頭檔案]
Cd ../../include [進入原始碼的標頭檔案總目錄,發現已經有了"rt_config.h"標頭檔案,但是編譯時找不到這個標頭檔案,因此這個錯誤應該是編譯沒有把這個標頭檔案連結包含進去,導致找不到這個檔案 ]
解決:在./os/linux/config.mk中新增EXTRA_FLAGS
Cd os/linux
Sudo vi config.mk[開啟wifi原始碼配置檔案]
/DM6446[搜尋關鍵字DM6446]
在DM6446平臺架構之上新增HI3518E支援[1048行],如下:
ifeq ($(PLATFORM),HISI_3518E)
EXTRA_CFLAGS := $(WFLAGS) //指定預定義變數EXTRA_CFLAGS作為C編譯器選項編譯HI3518E原始碼樹
endif
Cd ../../ [重新進入原始碼根目錄]
Make clean;make [清除並編譯]

(4)修改Makefile或者手工複製xx.ko到/home/aston/rootfs中

ls /os/linux/*.ko[發現os/linux/mt7601Uap.ko驅動已經生成]
sudo vi Makefile
/ko [搜尋關鍵詞ko]
將原來415行的內容改成:
cp -f $(RT28xx_DIR)/os/linux/mt$(MODULE)ap.ko /home/aston/rootfs [將生成的ko驅動掛載到 /home/aston/rootfs共享目錄中]
Make[重新編譯]
Cd /home/aston/rootfs[進入共享目錄]
Ls [發現mt7601Uap.ko已經複製到了共享目錄中去了]

7.2、AP模式下USB WIFI開發板部署

(1)測試wifi硬體是否能夠正常使用

將開發板連上電腦,並進入Hilinux模式:
A:不插wifi時,串列埠輸入命令lsusb,此時顯示
Bus 001 Device 001:ID 1d6b:0002
Bus 001 Device 001:ID 1d6b:0001
B:現在插入wifi,會提示新高速USB裝置002即hiusb-ehci.
這時執行命令:lsusb,發現新增加一個裝置
Bus 001 Device 002:ID 148f:7601[這就是wifi裝置,它的ID時002]

(2)將USB WIFU的AP模式驅動部署到開發板上

A:Ubunu:複製配置檔案RT2870AP.dat檔案到nfs共享資料夾中
Cd/home/aston/sambashare/MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802 [進入目標目錄]
cp RT2870AP.dat ~/rootfs/ -f [將RT2870AP.dat複製到共享目錄中]

B:Hilinux中執行命令建立目錄
cd /mnt [進入mnt共享目錄]
Ls [發現RT2870AP.dat已經複製進入了此目錄]
mkdir -p /etc/Wireless/RT2870AP [建立目標目錄]
cd /etc/Wireless/RT2870AP/ [ls檢視此目錄發現為空目錄]
cp /mnt/RT2870AP.dat ./ [從共享目錄中複製配置檔案到當前目錄]
Ls [RT2870AP.dat檔案,說明覆製成功了]
vi RT2870AP.dat [更改這個檔案,因為預設沒有密碼,不安全,要改成帶密碼的,按照以下方式修改]
SSID=MT7601AP_WPA(這裡的名字是在pc機上看到的連線ssid名)AuthMode=WPA2PSK(加密方式)
EncrypType=TKIP;AES(加密演算法)
WPAPSK=1234567890(這個是密碼)

C:insmod xx.ko安裝USB WIFI驅動模組
cd /mnt/
insmod mt7601Uap.ko [裝載驅動]
lsmod[在最前面發現了mt7601Uap驅動模組已經安裝]
ifconfig -a[發現有eth0,lo和wlan0三個網絡卡,即有wlan0目標網絡卡生成,說明安裝成功]

D:設定IP地址
ifconfig wlan0 192.168.0.100[設定無線網絡卡wlan0的IP地址]
ifconfig wlan0 up[喚醒無線網絡卡wlan0]
ifconfig [發現wlan0網絡卡的inet addr地址為192.168.0.100,證明設定成功,注此時eth0的ip地址時192.168.1.10,即開發板的有線網絡卡和無線網絡卡都在工作了,注ifconfig是檢視已經工作的網絡卡,ifconfig -a是檢視所有的網絡卡]
windows和開發板都有一個無線網絡卡和一個有線網絡卡,它們彼此獨立,可以同時工作。開發板和主機windows要處在同一個網段[區域網]
無線:
windows: 192.168.0.30
AP: 192.168.0.100

E:用PC或手機的WIFI搜尋看一下,是否有一個名為:MT7601AP_WPA的網路了,有了就成功了,但是輸入密碼之後會提示連線不成功[此計算機當前已將連線限制為MT7601AP_WPA],其實當前已經連線成功了,但是此時的AP還是不能訪問外網,所以會提示有限的訪問許可權。
主機上選擇開啟網路共享中心,點選無線網路連線(MT7601AP_WPA),選擇詳細資訊,發現自動分配的IP地址時169.254.158.163,子網掩碼時255.255.0.0,即全部都是亂的,因此需要給PC端強制分配一個靜態IP地址。

F:給PC強制分配靜態IP
主機上選擇開啟網路共享中心,點選無線網路連線(MT7601AP_WPA),選擇屬性,選擇Internet協議版本4(TCP/IPv4),選擇"使用下面的IP地址",指定ip地址為162.168.0.30,指定子網掩碼為255.255.255.0,點選確定,點選確定,確定,選擇詳細資訊,發現此時的ip地址為192.168.0.30,子網掩碼為255.255.255.0,證明設定成功了。然後關閉對話方塊。此時的開發板和window已經通過無線wifi連線通了。

8 效果