Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3759289
  • 博文数量: 880
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 6155
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-11 09:12
个人简介

To be a better coder

文章分类

全部博文(880)

文章存档

2022年(5)

2021年(60)

2020年(175)

2019年(207)

2018年(210)

2017年(142)

2016年(81)

分类: LINUX

2017-08-29 09:55:48

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.0linux支持的版本外,最终跟供应商沟通后获得新版本的驱动代码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_cliwpa_passphrasewpa_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,生成iwconfigiwlist

 

 

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_cliwpa_passphrasewpa_supplicant,iwconfigiwlistdhclient拷贝到/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密码,输入ssidkey

dhclient wlan0 //动态获取wlan0ip

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移植到此完成了。

阅读(1704) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~