<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux 驅動開發:USB無線wifi驅動開發(MT7601)、完成WIFI管理工具安裝

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-07-14 13:48 ? 次閱讀

開發環境說明

內核版本:3.5.0

交叉編譯器:arm-linux-gcc-4.5.1

PC 宿主機:紅帽 REDHAT

一、移植 WIFI 驅動

當前采用的WIFI是360隨身WIFI,這款隨身WIFI所用的網卡芯片是 Ralink(雷凌科技) 的解決方案(在之前文章里也有詳細介紹),芯片型號為 MT7601。 如果在PC計算機上使用這款隨身WIFI那自然是簡單,官網下載個驅動安裝插上就能使用。 如果是在嵌入式平臺,自動的平臺上使用,官網就沒有現成的驅動下載了,這種情況下就需要針對WIFI編寫驅動。當然,從0開始寫確實困難,不過這款芯片官方提供了linux下的驅動源碼,這就好辦了。只需要下載下來,編譯就能使用了。

接下來這篇文章會詳細介紹WIFI驅動從哪里下載,下載下來如何修改進行編譯安裝測試,并交叉編譯對應的WIFI工具,最終完成WIFI的基本使用,完成IP地址動態分配,熱點連接,熱點掃描、熱點信息查看等等。

1.1 下載 WIFI 驅動

下載鏈接:http://mediatek.com/zh-CN/downloads1/downloads/[](http://mediatek.com/zh-CN/downloads1/downloads/)

直接下載鏈接

http://s3.amazonaws.com/mtk.cfs/Downloads/linux/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2[](http://s3.amazonaws.com/mtk.cfs/Downloads/linux/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2)

1.2配置編譯驅動

將下載的驅動壓縮包拷貝到虛擬機,解壓。(為了好分類,最好單獨創建一個文件夾存放)

1.2.1 解壓

[root@XiaoLong 360_WIFI]# tar xvf DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2

1.2.2 修改運行環境

進入到解壓的目錄下,修改頂層 Makefile,驅動默認的運行環境為 X86,需要注釋掉。

[root@XiaoLong DPO_MT7601U_LinuxSTA_3.0.0.4_20130913]# gedit Makefile +3030 行加上注釋:#PLATFORM = PC 第 49 行取消注釋:LATFORM = SMDK

1.2.3 修改編譯環境

[root@XiaoLong DPO_MT7601U_LinuxSTA_3.0.0.4_20130913]# gedit Makefile +275
ifeq ($(PLATFORM),SMDK)

LINUX_SRC = /work/linux3.5/linux-3.5 內核路徑 CROSS_COMPILE = arm-linux- 交叉編譯器 endif

1.2.4 查看 USB 的 ID

USB 芯片的 ID,需要用作匹配作用!相當于平臺設備的驅動端與設備端一樣,插入了 USB 之后,USB 控制器需要對插入的 USB 進行訪問,確認是否是 WIFI 芯片。確定的憑證就是 ID 號

查看 USB ID 的方法:

在虛擬機環境下,輸入 lsusb 先查看已經存在的 USB 設備:

查看之后,再插入 360WIFI,再次輸入 lsusb 查看存在的 USB 設備。

注意: 默認 360WIFI 會被 windows 掛載,需要手動點擊虛擬機右下腳的 USB 圖標將 360WIFI 掛載進來。

掛載進來之后,查看的結果:

由上面可以看出,360WIFI 的設備 ID 分別是:148f 和 760b。

1.2.5 添加 USB ID

添加 USB 的 ID 需要修改 common 目錄下的 rtusb_dev_id.c 文件,該文件里有一個存放 ID 的結構體,我們需要將上一步得到的 360WIFI 的 ID 添加到結構體中。

[root@XiaoLong DPO_MT7601U_LinuxSTA_3.0.0.4_20130913]# cd common/

[root@XiaoLong common]# gedit rtusb_dev_id.c +37

添加的格式:

{USB_DEVICE(0x148f,0x760b)}, //添加 360wifi 的設備 ID

1.2.6 去除調試信息

為什么去除調試信息呢?因為在終端調試代碼的時候,驅動會不斷的向終端打印信息,導致沒法敲打命令,所以需要將其注釋掉。去除調試信息需要進入到 include/os/目錄下,修改 rt_linux.h 文件的 1558 行。

[root@XiaoLong DPO_MT7601U_LinuxSTA_3.0.0.4_20130913]# cd include/os/

[root@XiaoLong os]# gedit rt_linux.h +1558
#include "os/rt_os.h"

#undef DBGPRINT //添加這兩句話 去除調試打印輸出

#define DBGPRINT(...)

#endif /* __RT_LINUX_H__ */

1.2.7 編譯源碼

修改完之后,編譯源碼,生成驅動文件。 (需要在解壓的頂層目錄下輸入 make) 編譯成功后,會在 os/linux/目錄下生成 mt7601Usta.ko 文件。

1.2.8 修改 U-BOOT 啟動代碼

啟動 u-bootd 的時候先進入 U-BOOT 命令行,設置 UBOOT 環境變量,在之前的環境變量后加一句 coherent_pool=2M。

coherent_pool=2M 表示設置 DMA 的緩沖區大小。如果不設置 DMA 緩沖區大小,裝載 360WIFI 驅動的時候會報錯。

設置UBOOT環境變量代碼如下:(注意:下邊代碼是一行,不能有換行符出現)

set bootargs root=/dev/nfs nfsroot=192.168.18.3:/work/nfs_root ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0:off console=ttySAC0,115200 lcd=s70 coherent_pool=2M init=/linuxrc

1.2.9 測試 WIFI 驅動

將生成的 mt7601Usta.ko 驅動文件拷貝到開發板目錄下,安裝。安裝成功之后,將 360WIFI 插入到開發板的 USB 口中,觀察彈出的測試信息。

[root@XiaoLong /360_WIFI]# insmod mt7601Usta.ko

如果識別成功,會出現以下的提示信息:

1.3.0 拷貝 WIFI 啟動配置文件

將 RT2870STA.dat 拷貝至開發板 /etc/Wireless/RT2870STA/目錄下。

(沒有目錄就創建一個); mkdir /etc/Wireless/RT2870STA

二、移植 WIFI 配置工具

2.1 移植wireless_tools

Wireless tools for Linux是一個Linux命令行工具包,用來設置支持Linux Wireless Extension的無線設備。Wireless tools for Linux 和 Linux Wireless Extension 由 Jean Tourrilhes在維護,由Hewlett-Packard(HP惠普)贊助。

大多數基于Linux內核的操作系統都包含Wireless tools。在許多GNU/Linux 發行版中,都缺省安裝這個工具包,即使是沒有自動安裝,也能很容易地找到其二進制代碼安裝包。

Wireless Extension (WE)是一組通用的API,能在用戶空間對通用Wireless LANs進行配置和統計。它的好處在于僅通過一組單一的工具就能對各種各樣的Wireless LANs進行管理,不過它們是什么類型,只要其驅動支持Wireless Extension就行;另一個好處就是不用重啟驅動或Linux就能改變這些參數。

Wireless Tools (WT)就是用來操作Wireless Extensions的工具集,它們使用字符界面,雖然粗糙,但支持所有Wireless Extension。雖然還有很多其他管理Wireless Extensions的工具,但Wireless Tools是參考實現,它包括以下工具:

iwconfig:設置基本無線參數

iwlist:掃描、列出頻率,比特率,密鑰等

iwspy:獲取每個節點鏈接的質量(只能查閱與之相連的節點)

iwpriv:操作Wireless Extensions 特定驅動

ifrename: 基于各種靜態標準命名接口

大多數 Linux 發行版本都在其網絡初始化腳本中集成Wireless Extension,以便啟動時配置無線接口。他們還將Wireless Tools作為其標準封裝包。

2.1.1 下載地址

下載地址:

http://www.labs.hpe.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz[](http://www.labs.hpe.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz)

2.1.2 解壓配置

(1)解壓

[root@xiaolong 360wifi]# tar xvf wireless_tools.29.tar.gz

[root@xiaolong 360wifi]# cd wireless_tools.29

(2)修改 Makefile

[root@xiaolong wireless_tools.29]# gedit Makefile 大約 12 行和 14 行

12 CC = arm-linux-gcc

14? R = arm-linux-ar

(3)? 編譯

[root@xiaolong wireless_tools.29]# make

(4) 拷貝文件

拷貝 libiw.so.29 文件到目標系統 rootfs/usr/lib/目錄




拷貝用到的幾個程序到目標板 rootfs/usr/lib/bin/目錄

iwpriv、iwconfig、iwlist, iwevent, iwspy




至此 wireless_tools 移植完成




有可能出現的錯誤:

在到產品板上還可能出現 can't resolve symbol '__ctype_b_loc' 錯誤




去掉 iwlib.h 中這一行重新編譯即可

#include < ctype.h >

2.1.3 工具使用方法

1. 啟動網卡:

ifconfig ra0 up

2. 關閉網卡:

ifconfig ra0 down

3. 掃描周圍的 wifi 信息:

iwlist ra0 scan

4. 查看無線網卡的信息(比如:網卡名稱,已經連接上的 WIFI 等):

iwconfig

5. 我們經常會用到的主要是 iwlist、iwconfig、 iwpriv(沒有全部測試過)

命令行:(連接不需要驗證密碼的熱點)

iwlist mlan0 scan //搜索熱點信息

ap iwconfig mlan0 essidlinksys//連接熱點

udhcpc -i mlan0 //獲得動態 IP

命令行:(連接需要驗證密碼的熱點)

iwlist mlan0 scan //搜索熱點信息

ap iwconfig mlan0 key xxxxxxxxxx //輸入驗證密碼

iwconfig mlan0 key open //密碼驗證功能打開

iwconfig mlan0 essidlinksys//連接熱點

udhcpci mlan0 //獲得動態 IP

3.1 移植 wap_supplicant 工具

目前可以使用wireless-tools 或wpa_supplicant工具來配置無線網絡。請記住重要的一點是,對無線網絡的配置是全局性的,而非針對具體的接口。

wpa_supplicant是一個較好的選擇,但缺點是它不支持所有的驅動。請瀏覽wpa_supplicant網站獲得它所支持的驅動列表。另外,wpa_supplicant目前只能連接到那些你已經配置好ESSID的無線網絡,它可以讓您連接到那些使用WPA的AP。wireless-tools支持幾乎所有的無線網卡和驅動,但它不能連接到那些只支持WPA的AP。

關于WPA:

WPA是WiFi Protected Access的縮寫,中文含義為“WiFi網絡安全存取”。WPA是一種基于標準的可互操作的WLAN安全性增強解決方案,可大大增強現有以及未來無線局域網絡的數據保護和訪問控制水平。

wpa_supplicant是一個開源項目,已經被移植到Linux,Windows以及很多嵌入式系統上。它是WPA的應用層認證客戶端,負責完成認證相關的登錄、加密等工作。

wpa_supplicant是一個 獨立運行的 守護進程,其核心是一個消息循環,在消息循環中處理WPA狀態機、控制命令、驅動事件、配置信息等。

經過編譯后的 wpa_supplicant源程序可以看到兩個主要的可執行工具:wpa_supplicant 和 wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的關系就是服務和客戶端的關:

后臺運行wpa_supplicant,使用 wpa_cli來搜索、設置、和連接網絡。

3.1.1 wap_supplicant 簡介

在 Linux 移植 iw 工具的時候,我們講過 iw 支持兩種“認證/加密”的方式,這兩種方式分別為:open 與 wep。但是現在很多的無線加密方法都是以 wpa 與 wpa2(AES)方式加密的。那么這里就出現了 iw 工具不能再 wpa 與 wpa2 的無線加密上使用。因此接下來移植一個 wpa_supplicant 的工具:這個工具支持上面介紹到的四種方式:

1? open

2? WEP

3? WPA(TKJP)

4? WAP2(AES)

3.1.2 移植 libopenssl 庫

OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,并提供豐富的應用程序供測試或其它目的使用。

OpenSSL被曝出現嚴重安全漏洞后,發現多數通過SSL協議加密的網站使用名為OpenSSL的開源軟件包。OpenSSL漏洞不僅影響以https開頭的網站,黑客還可利用此漏洞直接對個人電腦發起“心臟出血”(Heartbleed)攻擊。據分析,Windows上有大量軟件使用了存在漏洞的OpenSSL代碼庫,可能被黑客攻擊抓取用戶電腦上的內存數據。

下載鏈接:http://distfiles.macports.org/openssl/[](http://distfiles.macports.org/openssl/)

1.? 將下載的 openssl-1.0.2e.tar.gz 壓縮包拷貝至虛擬機解壓。

[root@XiaoLong 360_WIFI]# tar xvf openssl-1.0.2e.tar.gz

2.? 配置編譯安裝的路徑

[root@XiaoLong openssl-1.0.2e]# ./config shared no-asm --prefix=$PWD/tmp

--prefix=$PWD/tmp 表示編譯安裝的路徑為當前目錄下的 tmp


3.? 修改頂層 Makefile

[root@XiaoLong openssl-1.0.2e]# gedit Makefile +62


62 CC= arm-linux-gcc

AR= arm-linux-ar $(ARFLAGS) r

RANLIB= arm-linux-ranlib

NM= arm-linux-nm

75? AKEDEPPROG= arm-linux-gcc

4.? 編譯

[root@XiaoLong openssl-1.0.2e]# make

5.? 安裝

[root@XiaoLong openssl-1.0.2e]# make DESTDIR=$PWD/tmp install

3.1.3 拷貝生成的文件

(1)將安裝目錄下(tmp/include)的頭文件拷貝到交叉編譯器的 include 目錄下

[root@XiaoLong openssl-1.0.2e]# cp tmp/include/* /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include/ -rf

(2) 將編譯生成 lib 庫拷貝一份到開發板根文件系統 lib 目錄下

[root@XiaoLong tmp]# pwd

/work/360_WIFI/openssl-1.0.2e/tmp

[root@XiaoLong tmp]# ls bin include lib openssl-1.0.2e.tmp.tar ssl

[root@XiaoLong tmp]# cp lib/* /work/nfs_root/lib/ -rf -d

(3) 將編譯生成的 lib 庫拷貝到交叉編譯器的 lib 目錄下

[root@XiaoLong openssl-1.0.2e]#

cp tmp/lib/* /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/ -rf -d

3.1.4 移植 wpa_supplicant : 可用于上述 4 種"認證/加密"的庫

下載鏈接:http://w1.fi/wpa_supplicant/[](http://w1.fi/wpa_supplicant/)

(1)將下載好的壓縮包拷貝至虛擬機解壓

[root@XiaoLong 360_WIFI]# tar xvf wpa_supplicant-2.5.tar.gz

(2) 加載配置文件

[root@XiaoLong wpa_supplicant-2.5]# cd wpa_supplicant/

[root@XiaoLong wpa_supplicant]# cp defconfig .config

(3)修改配置文件

[root@XiaoLong wpa_supplicant]# gedit .config


增加以下代碼:

CC=arm-linux-gcc

CFLAGS += -I/work/360_WIFI/openssl-1.0.2e/tmp/include

LIBS +=-L/work/360_WIFI/openssl-1.0.2e/tmp/lib

CFLAGS += -I /work/360_WIFI/libnl-3.2.25/tmp/include/libnl3

LIBS += -L /work/360_WIFI/libnl-3.2.25/tmp/lib

CONFIG_LIBNL32=y

(4)編譯

[root@XiaoLong wpa_supplicant]# make

(5)安裝

[root@XiaoLong wpa_supplicant]#make DESTDIR=$PWD/tmp install

(6)拷貝生成的可執行文件到開發板的 sbin 目錄下--路徑 /tmp/usr/local/sbin

[root@XiaoLong sbin]# pwd

/work/360_WIFI/wpa_supplicant-2.5/wpa_supplicant/tmp/usr/local/sbin

[root@XiaoLong sbin]# cp ./* /work/nfs_root/sbin/

(7)? 拷貝生成的可執行文件到開發板的 bin 目錄下

[root@XiaoLong sbin]# ls wpa_cli wpa_passphrase wpa_supplicant

[root@XiaoLong sbin]# cp ./* /work/nfs_root/bin/

4.1 測試使用 WIFI 步驟

4.1.1 創建密碼配置文件

在開發板根文件系統/etc/目錄創建 wpa_supplicant.conf 文件 ,輸入以下內容:

# WPA-PSK/TKIP

ctrl_interface=/var/run/wap_supplicant ap_scan=1 update_config=1

network={

ssid="208"

key_mgmt=WPA-PSK

proto=WPA

pairwise=TKIP CCMP

group=TKIP CCMP #

priority=2

psk="www.linux.com"

}

4.1.2 創建網卡控制接口

在開發板終端輸入:

[root@XiaoLong /]#mkdir /var/run/wap_supplicant -p

4.1.3 插入 360wifi 測試

360WIFI 插入開板 USB 口,安裝 WIFI 驅動:

[root@XiaoLong /driver/360wifi]# insmod mt7601Usta.ko

[ 47.260000] rtusb init rt2870 --- >

[ 47.260000] usbcore: registered new interface driver rt2870

[ 94.105000] usb 1-2.2: new high-speed USB device number 7 using s5p-ehci

[ 94.220000] usb 1-2.2: New USB device found, idVendor=148f, idProduct=760b

[ 94.220000] usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[ 94.220000] usb 1-2.2: Product: 802.11 n WLAN

[ 94.220000] usb 1-2.2: Manufacturer: MediaTek

[ 94.220000] usb 1-2.2: SerialNumber: 1.0

[ 94.225000] < -- RTMPAllocTxRxRingMemory, Status=0

[ 94.230000] < -- RTMPAllocAdapterBlock, Status=0

[ 94.235000] BULK IN MaxPacketSize = 512 [ 94.235000] EP address = 0x84

[ 94.240000] BULK IN MaxPacketSize = 512

[ 94.245000] EP address = 0x85

[ 94.245000] BULK OUT MaxPacketSize = 512 [ 94.250000] EP address = 0x 8

[ 94.255000] BULK OUT MaxPacketSize = 512 [ 94.255000] EP address = 0x 4

[ 94.260000] BULK OUT MaxPacketSize = 512 [ 94.265000] EP address = 0x 5

[ 94.265000] BULK OUT MaxPacketSize = 512 [ 94.270000] EP address = 0x 6

[ 94.275000] BULK OUT MaxPacketSize = 512

[ 94.280000] EP address = 0x 7

[ 94.280000] BULK OUT MaxPacketSize = 512

[ 94.285000] EP address = 0x 9

查看識別成功的網卡:

[root@XiaoLong /driver/360wifi]# iwconfig lo no wireless extensions.

ra0 Ralink STA sit0 no wireless extensions.

eth0 no wireless extensions.

ip6tnl0 no wireless extensions.

4.1.4 啟動網卡

[root@XiaoLong /]# wpa_supplicant -Dwext -ira0 -c /etc/wpa_supplicant.conf -B

[ 257.765000] Current MAC: =00:87:46:19:8f:eb

[ 257.780000] NICReadEEPROMParameters: RxPath = 1, TxPath = 1

[ 257.790000] 20MHz BW, 2.4G band-03030505, Adata = 03030505, Gdata = 03030505 [ 257.790000] 20MHz BW, 2.4G band-00000004, Adata = 00000004, Gdata = 00000004

[ 257.795000] 20MHz BW, 2.4G band-00000002, Adata = 00000002, Gdata = 00000002

[ 257.800000] 20MHz BW, 2.4G band-00000002, Adata = 00000002, Gdata = 00000002

[ 257.800000] 20MHz BW, 2.4G band-ffff0002, Adata = ffff0002, Gdata = ffff0002

[ 258.020000] BuildChannel # 1 :: Pwr0 = 16, Pwr1 =0, Flags = 0

BuildChannel # 2 :: Pwr0 = 16, Pwr1 =0, Flags = 0

BuildChannel # 3 :: Pwr0 = 16, Pwr1 =0, Flags = 0

BuildChannel # 4 :: Pwr0 = 16, Pwr1 =0, Flags = 0

BuildChannel # 5 :: Pwr0 = 17, Pwr1 =0, Flags = 0

BuildChannel # 6 :: Pwr0 = 17, Pwr1 =0, Flags = 0

BuildChannel # 7 :: Pwr0 = 17, Pwr1 =0, Flags = 0

BuildChannel # 8 :: Pwr0 = 17, Pwr1 =0, Flags = 0

BuildChannel # 9 :: Pwr0 = 17, Pwr1 =0, Flags = 0

BuildChannel # 10 :: Pwr0 = 18, Pwr1 =0, Flags = 0

BuildChannel # 11 :: Pwr0 = 18, Pwr1 =0, Flags = 0

BuildChannel # 12 :: Pwr0 = 18, Pwr1 =0, Flags = 0

BuildChannel # 13 :: Pwr0 = 18, Pwr1 =0, Flags = 0

BuildChannel # 14 :: Pwr0 = 18, Pwr1 =0, Flags = 0

<==== rt28xx_init, Status=0

[ 258.075000] 0x1300 = 00064300

[root@XiaoLong /]# [ 260.380000] RSN_IE: f0b15003, len = 24

[ 260.380000] 0x0000 : dd 16 00 50 f2 01 01 00 00 50 f2 04 01 00 00 50

[ 260.380000] 0x0010 : f2 04 01 00 00 50 f2 02

[ 260.545000] Key = 71:62:76:2d:90:f1:7d:e4:76:57:c0:c7:e4:a8:fa:a8

[ 260.545000] Rx MIC Key = 00:00:00:00:00:00:00:00 [ 260.545000] Tx MIC Key = 00:00:00:00:00:00:00:00

出現上面紅色部分的提示表示連接路由器成功??!

4.1.5 查看連接成功的 WIFI 信息

[root@XiaoLong /]# iwconfig lo no wireless extensions.

ra0 Ralink STA ESSID:"208" Nickname:"MT7601STA" 連接模式是 STA,連接上的路由器名稱是 208

Mode:Managed Frequency=2.437 GHz Access Point: D0:C7:C0:D4:84:12

Bit Rate=135 Mb/s

RTS thr:off Fragment thr:off

Encryption key:7162-762D-90F1-7DE4-7657-C0C7-E4A8-FAA8 [3] Security mode:restricted Security mode:open

Link Quality=100/100 Signal level:-27 dBm Noise level:-27 dBm

Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0

Tx excessive retries:0 Invalid misc:0 Missed beacon:0

4.1.6 配置網卡地址信息

① [root@XiaoLong /]# ifconfig ra0 192.168.18.123 broadcast 192.168.18.255 netmask 255.255.0.0 up




② [root@XiaoLong /]# ifconfig ra0

Link encap:Ethernet HWaddr 00:87:46:19:8F:EB inet addr:192.168.18.123 Bcast:192.168.255.255 Mask:255.255.0.0 配置成功 inet6 addr: fe80::287:46ff:fe19:8feb/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:124367 errors:0 dropped:0 overruns:0 frame:0 TX packets:175 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:26249317 (25.0 MiB) TX bytes:10673 (10.4 KiB)

4.1.6 配置網卡地址信息

[root@XiaoLong /]# ifconfig ra0 192.168.18.123 broadcast 192.168.18.255 netmask 255.255.0.0 up[root@XiaoLong /]# ifconfig ra0

Link encap:Ethernet HWaddr 00:87:46:19:8F:EB inet addr:192.168.18.123 Bcast:192.168.255.255 Mask:255.255.0.0 配置成功 inet6 addr: fe80::287:46ff:fe19:8feb/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:124367 errors:0 dropped:0 overruns:0 frame:0 TX packets:175 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:26249317 (25.0 MiB) TX bytes:10673 (10.4 KiB)

4.1.7 配置網關信息

[root@XiaoLong /]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ra0

查看路由表信息:

[root@XiaoLong /]# iproute

192.168.0.0/16 dev ra0 src 192.168.18.123

如果沒有無線網卡的網關信息,需要自己添加一個:

[root@XiaoLong /]# route add default gw 192.168.18.1

4.1.8 ping 外網 IP 測試

前提是當前連接的 WIFI 可以連接互聯網。

202.108.22.5 是百度的 IP 地址。

[root@XiaoLong /]# ping 202.108.22.5

PING 202.108.22.5 (202.108.22.5): 56 data bytes

64 bytes from 202.108.22.5: seq=0 ttl=51 time=51.431 ms

64 bytes from 202.108.22.5: seq=1 ttl=51 time=44.511 ms

64 bytes from 202.108.22.5: seq=2 ttl=51 time=95.936 ms 64 bytes from 202.108.22.5: seq=3 ttl=51 time=46.402 ms

4.1.9 實現 ping 域名

在/etc/目錄下創建一個 resolv.conf 文件,輸入 DNS 地址,如下:

nameserver 192.168.1.1 nameserver 202.96.134.33

說明:一般寫本地網關就可以了,也就是保留 nameserver 192.168.1.1

也可以直接在串口終端使用命令創建并且寫入內容。如下:

[root@XiaoLong /]# echo nameserver 192.168.1.1 > > /etc/resolv.conf

[root@XiaoLong /]# echo nameserver 202.96.134.33 > > /etc/resolv.conf

開發板中要想 ping 通外網 IP,需要設置默認網關,這個網關必須要和所連接的路由器設置的網關相同(resolv.conf 文件內容一般可以自動獲取,不用手動填)。

ping 百度示例:

[root@XiaoLong /]# ping www.baidu.com

[ 2742.105000] CmdThread : CMDTHREAD_SET_ASIC_WCID : WCID = 1, SetTid = 400000, DeleteTid = ffffffff.

[ 2742.105000] 1-MACValue= d4c0c7d0,

[ 2742.105000] 2-MACValue= 411284,

PING www.baidu.com (119.75.218.70): 56 data bytes

64 bytes from 119.75.218.70: seq=0 ttl=51 time=55.509 ms 64 bytes from 119.75.218.70: seq=1 ttl=51 time=53.253 ms 64 bytes from 119.75.218.70: seq=2 ttl=51 time=62.990 ms

64 bytes from 119.75.218.70: seq=3 ttl=51 time=44.665 ms

4.2.0 自動獲取 IP 地址

使用 busybox 的 udhcpc 工具。一般默認的配置都是選中的,為了確保成功,還是需要去確認一下。

1. 首先配置 linux 內核使其支持 DHCP,以及 socket:

[*] Networking support --- >< * > Packet socket

[*] IP: DHCP support

[*] Network packet filtering framework (Netfilter) --- >

2. 配置 busybox:

Networking Utilities --- > udhcp Server/Client --- >

[ * ] udhcp Server (udhcpd) udhcp Client (udhcpc)

[ * ] Lease display utility (dumpleases)

[ * ] Log udhcp messages to syslog (instead of stdout)

[ * ] Compile udhcp with noisy debugging messages

3. 編譯安裝 busybox

make

make install

4. 編譯完并安裝 busybox 后,將 busybox 源碼目錄下的 example/udhcpc/simple.script 腳本文件 cp 到根文件系統的/usr/share/udhcpc/default.script 文件中。

如果沒有目錄先創建目錄:

[root@XiaoLong /]#mkdir /usr/share/udhcpc -p

5. 自動獲取 IP:

[root@XiaoLong /]# udhcpc -i ra0 udhcpc (v1.23.2) started

Setting IP address 0.0.0.0 on ra0 Sending discover...

Sending select for 192.168.1.10...

Lease of 192.168.1.10 obtained, lease time 7200

Setting IP address 192.168.1.10 on ra0 Deleting routers

route: SIOCDELRT: No such process

Adding router 192.168.1.1 獲取的 IP 地址

Recreating /etc/resolv.conf 自動更新 resolv.conf 文件

Adding DNS server 211.162.66.66

Adding DNS server 211.162.77.77

6. 查看獲取到的 IP:

[root@XiaoLong /]# ifconfig ra0

Link encap:Ethernet HWaddr 00:87:46:19:8F:EB inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::287:46ff:fe19:8feb/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:260636 errors:0 dropped:0 overruns:0 frame:0 TX packets:528 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:55031927 (52.4 MiB) TX bytes:33119 (32.3 KiB)

7. ping 百度測試:

自動獲取 IP 也可以使用第三方其他工具(一般使用 busybox 自帶的即可):

下載 DHCP 源碼,編譯后得到 dhclient 工具,實現 DHCP client.

(1) 下載源碼:http://gd.tuwien.ac.at/infosys/servers/isc/dhcp/ ,選中 dhcp-3.1.3.tar.gz;

(2) 解壓 tar -zxvf dhcp-3.1.3.tar.gz,然后進入./dhcp-3.1.3/,運行配置./configure,之后生成 work.linux-2.2 文件夾, 進入 work.linux-2.2/client/,輸入 make "CC=arm-linux-gcc -static",將編譯生成 dhclient。

(3) 拷貝生成的 dhclient 到 mini2440 開發板上,為方便使用,可以放在/usr/bin/下;拷貝另外兩個配置文件到開發板,分別是 /dhcp-3.1.3/client/dhclient.conf 和/dhcp-3.1.3/client/scripts/linux 到開發板的/sbin/目錄下。并改名后一個文件為 dhclient-script ,并修改該文件的第一行 #! /bin/bash 為 #! /bin/sh ,保存后,修改權限 chmod +x /sbin/dhclient-script。

(4) 為 eth0 或者 wlan0 配置 dhcp 服務,輸入 dhclient eth0 或者 dhclient wlan0 即可.

4.2.1 開機自動加載連接路由器

可以將以下代碼加載到 etc/profile 文件里或者是/etc/rcS 文件里,開機自動執行。

insmod mt7601Usta.ko #安裝驅動

wpa_supplicant -Dwext -ira0 -c /etc/wpa_supplicant.conf -B #啟動網卡

udhcpc -i ra0 #自動獲取 IP 地址--busybox 自帶的工具

5.1 其他工具移植方法

5.1.1 安裝flex工具庫

系統自帶的flex庫版本太低,需要升級!

Flex 是一個高效、免費的開源框架,可用于構建具有表現力的 Web應用程序,這些應用程序利用Adobe Flash Player和Adobe AIR, 可以實現跨瀏覽器、桌面和操作系統。雖然只能使用 Flex 框架構建 Flex應用程序,但Adobe Flash Builder(之前稱為 Adobe Flex Builder?)軟件可以通過智能編碼、交互式遍歷調試以及可視設計用戶界面布局等功能加快開發。

下載鏈接:http://sourceforge.net/projects/flex/files/

將下載的壓縮文件拷貝至虛擬機,解壓,配置,編譯安裝。

[root@XiaoLong 360_WIFI]# tar xvf flex-2.6.0.tar.bz2

[root@XiaoLong 360_WIFI]# cd flex-2.6.0

[root@XiaoLong flex-2.6.0]# ./configure

[root@XiaoLong flex-2.6.0]# make && make install

5.1.2 安裝 bison

下載鏈接:http://ftp.gnu.org/gnu/bison/

GNU bison 是屬于 GNU 項目的一個語法分析器生成器。

GNU Bison是一種通用目的的分析器生成器。它將LALR(1)上下文無關文法的描述轉化成分析該文法的C程序。 一旦你精通Bison,你可以用它生成從簡單的桌面計算器到復雜的程序設計語言等等許多語言的分析器。

將下載好的bison-3.0 .tar.gz壓縮包拷貝到虛擬機解壓,解壓后,進入到解壓后的目錄,配置,編譯,安裝。

[root@XiaoLong bison-3.0]# ./configure

[root@XiaoLong bison-3.0]# make && make install

5.1.3 安裝libnl庫

libnl套件是netlink庫提供api的集合協議基于Linux內核的接口。

Netlink IPC機制主要是在內核和用戶空間之間提供接口。 它被設計為一個更靈活的ioctl的繼任者,主要提供網絡相關的內核配置和監控接口。

下載鏈接:http://www.infradead.org/~tgr/libnl/

將下載后的libnl-3.2.25.tar.gz壓縮包拷貝到虛擬機,解壓,配置,編譯,安裝。

[root@XiaoLong work]# tar xvf libnl-3.2.25.tar.gz

[root@XiaoLong libnl-3.2.25]# ./configure --host=arm-linux --prefix=$PWD/tmp

--prefix=$PWD/tmp :表示指定編譯安裝的路徑 ---安裝路徑為當前目錄的tmp文件夾

--host=arm-linux :指定編譯器
[root@XiaoLong libnl-3.2.25]# make && make install

5.1.4 拷貝依賴庫

Libnl庫安裝成功之后,在tmp目錄下會生成lib目錄。

1將lib目錄下的文件拷貝一份到系統交叉編譯路徑下的lib目錄里

2將lib目錄下的文件拷貝一份到開發板的根文件系統lib目錄里

3將libnl庫下include目錄下的文件,拷貝一份到交叉編譯器的include目錄

[root@XiaoLong libnl-3.2.25]# cp tmp/lib/* /work/nfs_root/lib/ -rf -d

[root@XiaoLong libnl-3.2.25]#

cp tmp/include/* /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include/ -rf


[root@XiaoLong libnl-3.2.25]#

cp tmp/lib/* /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/ -rf -d

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    59

    文章

    7457

    瀏覽量

    258997
  • Linux
    +關注

    關注

    87

    文章

    11001

    瀏覽量

    206847
  • WIFI
    +關注

    關注

    81

    文章

    5174

    瀏覽量

    199705
  • 驅動開發
    +關注

    關注

    0

    文章

    129

    瀏覽量

    12017
  • MT7601
    +關注

    關注

    0

    文章

    2

    瀏覽量

    2737
收藏 人收藏

    評論

    相關推薦

    Linux環境下如何管理Python包管理工具

    Linux環境下,需要對軟件包進行安裝、卸載、升級和查詢等操作,包含這些操作的工具,稱為包管理工具。
    發表于 08-22 15:14 ?393次閱讀
    <b class='flag-5'>Linux</b>環境下如何<b class='flag-5'>管理</b>Python包<b class='flag-5'>管理工具</b>

    RT5370,MT7601 WIFI模組專用DC-DC降壓芯片

    M3406-ADJ大量運用于RT5370 MT7601等方案,深圳中龍通 邁騰等大量運用驗證,歡迎各位研發工程聯系咨詢。深圳市東品科技全系列代理西安航天民芯科技產品歡迎來電咨詢索取免費樣品測試。梅
    發表于 08-13 17:13

    平板電腦/MID領域調試專用USB接口WiFi模塊Dongle版萬能轉接板/USB Dongle版WiFi模塊

    兼容芯片:RTL8188CUS/RTL8188CTV/RTL8188EUS/RTL8188ETV/RTL8188FTV/MT7601;WiFi+藍牙4.0模塊(13.4*12.2mm),采用芯片
    發表于 03-06 10:48

    登錄管理工具LimitLogin

    LimitLogin是一款于2005年面世的登錄管理工具,由一名微軟合作伙伴技術專家和一名應用程序開發顧問合力開發。LimitLogin旨在在Active Directory域中跟蹤和限制并發工作站和終端用戶登錄。
    發表于 07-16 06:27

    【MYD-YA157C開發板試用連載】一波多折的MT7601驅動編譯歷程

    是聯發科的一款無線網卡芯片,常見分為MT7601U和MT7601E(U后綴代表USB驅動,E后綴不明,可能是PCIE接口
    發表于 06-08 00:54

    【MYD-YA157C開發板試用連載】【資料帖】MT7601 RTL8192編譯相關obj和源碼

    ` 本帖最后由 donatello1996 于 2020-6-10 01:07 編輯 這帖是純資料帖,對應上貼《【MYD-YA157C開發板試用連載】一波多折的MT7601驅動編譯歷程》,放出
    發表于 06-08 01:15

    Linux的進程管理工具之Supervisor

    Linux進程管理工具Supervisor
    發表于 06-12 10:58

    迅為IMX6ULL開發Linux_WIFI驅動實驗

    ---> Realtek 8723B USB WiFi配置結果如圖所示:直接將 rtl8723 wifi 模塊的驅動編譯到內核中去。以上 Linu
    發表于 09-11 10:59

    RQM測試管理工具的應用和功能

    RQM — 需求驅動的測試管理工具
    發表于 01-14 07:54

    介紹在ARM-Linux平臺下移植MT7601U的無線網卡驅動

    具有USB外設接口,無線網卡等。本篇將介紹在ARM-Linux平臺下移植MT7601U的無線網卡驅動
    發表于 12-16 08:21

    USB無線網卡選擇MT7601驅動移植

    這里寫自定義目錄標題前言USB無線網卡選擇MT7601驅動移植資源下載驅動源碼修改編譯及加載功能快捷鍵合理的創建標題,有助于目錄的生成如何改
    發表于 12-16 07:30

    MT7601 WIFI驅動linux下的移植

    前言:本文針對的是MT7601 WIFI驅動linux下的移值,對于MT7601的兩種模式STA和AP模式都有說明,包括對支持
    發表于 12-16 07:29

    wg208–USB WIFI模塊數據表

    USB接口_WiFi模塊_MT7601,本文檔介紹了USB接口的wifi模塊的一些特征和參數,以及wif
    發表于 10-11 16:31 ?9次下載

    如何安裝Python包管理工具

    第三方庫,Python提供了一些強大的包管理工具。本文將介紹如何安裝Python包管理工具,以便您能夠在Python項目中方便地管理和使用第三方庫。
    的頭像 發表于 04-14 12:10 ?795次閱讀

    wifi模塊MTK方案 MT7601芯片模組在投影儀上的應用

    無線WiFi模塊MTK方案 MT7601芯片模組在投影儀上的應用介紹,開放、易用的開發和調試環境,無線W
    的頭像 發表于 11-17 11:53 ?2477次閱讀
    <b class='flag-5'>wifi</b>模塊MTK方案 <b class='flag-5'>MT7601</b>芯片模組在投影儀上的應用
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>