主要作的工做:讓內核如何支持現有的無線網卡。知道這個流程就能夠了,不必深究。html
使用WIFI功能時,涉及兩個東西:linux
一樣手機也能夠用於WIFI AP模式,讓別的設備來鏈接它。就是咱們平時所說的用手機開一個熱點。windows
從這裏能夠看出,同一個WIFI網卡,它能夠工做於不一樣的模式。網絡
對於ARM板而言,外接一個wifi網卡,它就能夠工做於STA模式,能夠去鏈接熱點。less
一樣它能夠工做與AP模式,讓其餘設備來鏈接它。spa
1. 準備工做(虛擬機,開發板)及配置內核選擇WIFI驅動htm
1.1 選型:肯定網卡的VID,PID是否在列表裏:http://wireless.kernel.org/en/users/Devices/USB
選購WIFI:
Atheros : VID 0x13D3 PID 0x3327 (成品型號 AR9271)
realtek : VID 0x0bda PID 0x8176 (成品型號TP-LINK公司TL-WN721N)blog
1.2 搭建開發環境:
首先要看一下,電腦和開發板是如何鏈接的?
開發板和電腦有3種鏈接方式。
1). 直連
這種方法很是簡單,可是使用起來很是不方便。
當開發板上使用的是uboot的時候,電腦上的網卡就會顯示爲斷開,就致使linux和windows之間不能傳文件。
2).用hub/路由器
3).有些電腦沒有有線網卡,它只有無線網卡,此時就須要用到一個無線路由器。ip
開發板上面會接一個wifi網卡,開發板自己有有線網卡。AP會給wifi網卡分配IP地址,假設是
192.168.1.xxx。那麼開發板上的有線網卡應該使用另外一個網段,如192.168.7.xxx。路由
總結搭建開發環境:
a.設置VMWARE的網絡爲橋接,並選擇使用哪個網卡
b. 把PC windows網卡,vmware linux的網卡、開發板的有線網卡IP設爲192.168.7.xxx(舉個例子而已),開發板上USB WIFI網卡將使用192.168.1.xxx.
1.3 配置內核以支持USB WIFI網卡
a. 打補丁
tar xjf linux-3.4.2.tar.bz2
cd linux-3.4.2
patch -p1 < ../linux-3.4.2_camera_mini2440.patch
cp config_ok .config
b. 配置內核
根據網卡的VID/PID肯定使用哪個源碼。打開源碼所在目錄的Makefile進而肯定配置項的名稱。
make menuconfig , 搜索 /名字
cd drivers/net/wireless/
grep "0x3327" * -nR
ath/ath9k/hif_usb.c:32: { USB_DEVICE(0x13D3, 0x3327) },
將ath/ath9k下面的Makefile打開,能夠看到
ath9k_htc-y += htc_hst.o \
hif_usb.o
obj-$(CONFIG_ATH9K_HTC) += ath9k_htc.o
能夠知道配置項是CONFIG_ATH9K_HTC
到目錄linux-3.4.2中,make menuconfig, /CONFIG_ATH9K_HTC 獲得下面信息
make uImage
配置內核、編譯內核以及使用瞭解便可,這個地方不重要。
另外一款網卡:
cd drivers/net/wireless/
grep "0x8176" * -nR
rtlwifi/rtl8192cu/sw.c:273: {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8176, rtl92cu_hal_cfg)},
打開rtlwifi/rtl8192cu/Makefile肯定配置項爲 CONFIG_RTL8192CU
make menuconfig, /CONFIG_RTL8192CU
make uImage
uboot:
set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.7.124:/work/nfs_root/fs_mini_mdev_new ip=192.168.7.17
set bootcmd 'nfs 32000000 192.168.7.124:/work/nfs_root/uImage_mini2440_wifi; bootm 32000000'
save
boot
c. 編譯、使用
c.1 把固件htc_9271.fw放到單板/lib/firmware
接上USB網卡, ifconfig wlan0 up
c.2 對於"realtek : VID 0x0bda PID 0x8176 (成品型號TP-LINK公司TL-WN721N)"
修改bug:
http://lkml.indiana.edu/hypermail/linux/kernel/1301.2/00465.html
make uImage