1.1 下载驱动代码
官方网站()上需找自己匹配的型号的驱动,这里我们使用的是8192du型号的wifi芯片,所以下载匹配的wifi驱动,还有就是使用的linux内核要在官方所指定的版本范围内,这部分多于供应商的技术支持多沟通。
这里我们使用的linux内核为linux3.6.0的高版本内核,Realtek上支持的RTL8192DE-VC支持的linux版本Linux Driver for Kernel 2.6.18~2.6.38 and 3.0.2 ,而我们的linux3.6.0在linux支持的版本外,最终跟供应商沟通后获得新版本的驱动代码rtl8192DU_linux_v4.0.2_9377.20131113.tar.gz。
1.2 Wifi驱动的交叉编译
参考文档Quick_Start_Guide_for_Driver_Compilation_and_Installation.pdf
步骤如下:
1,进入rtl8192DU_linux_v4.0.2_9377.20131025_beta目录下的Makefile,并了解框架
2,修改CONFIG_PLATFORM_I386_PC = n,添加CONFIG_PLATFORM_NEW_ARM = y
3,在合适的位置添加:
ifeq ($(CONFIG_PLATFORM_NEW_ARM), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN//支持小端
ARCH := arm//平台
CROSS_COMPILE := /home/guo/High-speed_Project/Tools/bin/arm-xilinx-linux-gnueabi-
//编译器路径
KVER := 3.6.0 //内核版本
KSRC ?= /home/guo/High-speed_Project/kernel/linux-digilent-master //内核路径
endif
4:保存退出,make,生成8192du.ko。
这样就生成了支持linux3.6内核的wifi驱动模块了。
1.3 应用程序交叉编译
1.3.1 wpa_supplicant_hostapd-0.8_rtw_r6747.20130222交叉编译
1,进入wpa_supplicant_hostapd-0.8_rtw_r6747.20130222/wpa_supplicant目录下打开Makefile
2,在第4行添加CC = /home/guo/High-speed_Project/Tools/bin/arm-xilinx-linux-gnueabi-gcc
3,保存退出,make,生成wpa_cli,wpa_passphrase,wpa_supplicant。
1.3.2 wireless_tools.30.rtl交叉编译
1,进入wireless_tools.30.rtl目录下打开Makefile
2,修改如下:
CC = /home/guo/High-speed_Project/Tools/bin/arm-xilinx-linux-gnueabi-gcc
AR = /home/guo/High-speed_Project/Tools/bin/arm-xilinx-linux-gnueabi-ar
RANLIB = /home/guo/High-speed_Project/Tools/bin/arm-xilinx-linux-gnueabi-ranlib
3,保存退出,make,生成iwconfig,iwlist。
1.3.3 dhclient命令的交叉编译
源码下载地址
下载dhcp-3.1-ESV-R3, 解压后生成dhcp-3.1-ESV-R3目录,
进入该目录执行./configure,该命令生成work.linux-2.2目录。(这部分对机器的配置有要求)
进入这个work.linux-2.2目录后,在编译时指定我们的交叉编译器,
make "CC = /home/guo/High-speed_Project/Tools/bin/arm-xilinx-linux-gnueabi-gcc -static"
生成的dhclient就是我们想要的了。
[root@localhost client]# file dhclient
dhclient: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, statically linked, not stripped
要使用到的文件有 命令dhclient,配置文件/dhcp-3.1-ESV-R3/client/dhclient.conf,
脚本文件/dhcp-3.1-ESV-R3/client/scripts/linux
修改 /dhcp-3.1-ESV-R3/client/scripts/linux为dhclient-script。
1.4 生成文件系统
拷贝驱动,命令,配置文件,脚本文件到文件系统下。
1,在根文件系统下创建一个目录wifi
2,把8192du.ko拷贝到/wifi目录下
把wpa_cli,wpa_passphrase,wpa_supplicant,iwconfig,iwlist,dhclient拷贝到/bin目录
把dhclient.conf,dhclient-script拷贝到/sbin目录下
3,创建/var/run
在/home/guo/High-speed_Project/script#下执行make rootfs,会在target目录下生成ramdisk8M.image.gz。
1.5 Wifi移植
1.5.1 配置linux3.6.0的内核
在linux源码目录下make menuconfig。
Device Drivers --->
[*] Network device support --->
[*] Wireless LAN --->
IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)
[*] Support downloading firmware images with Host AP driver
1.5.2 启动开发板测试
在启动的文件系统上会在/bin,/sbin,/wifi目录可以看到刚才放进去的配置文件,命令文件,脚本文件。
WEP模式
操作步骤如下:
1,进入/wifi目录下:insmod 8192du.ko
2,
ifconfig eth0 down //关掉eth0
ifconfig wlan0 up//打开wlan0
iwconfig wlan0 essid "Dragonwake" key 1111111111 //使用WEP密码,输入ssid及key
dhclient wlan0//动态获取wlan0的ip
ifconfig wlan0 192.168.1.103 netmask 255.255.255.0//配置ip与子网掩码
route add default gw 192.168.1.1//添加默认网关
3,测试:
ping
说明wifi模块已经连接上了无线路由,可以上网了
WPA模式:
操作步骤如下:
1,进入/wifi目录下:insmod 8192du.ko
2,加载驱动,配置网络设备
insmod 8192du.ko
ifconfig eth0 down
ifconfig wlan0 up
3,添加配置文件
touch /etc/wpa_supplicant.conf
在wpa_supplicant.conf文件中添加如下:
SSID为用户名,psk为密码。
4,后台运行程序
./wpa_supplicant -iwlan0 -c /etc/wpa_supplicant.conf -B
5,动态获取wlan0 ip
dhclient wlan0
6,收到设置网络参数
ifconfig wlan0 192.168.1.103 netmask 255.255.255.0
route add default gw 192.168.1.1
7,测试网络ping
这样wifi的安全模式下的WPE,WPA加密都实现了,wifi移植到此完成了。