在Mini2440上移植RT3070驱动+wpa_supplicant调通

时间:2020-12-29 16:05:05
第一:移植RT3070驱动可参考
1.从官方下载原驱动程序

http://www.ralinktech.com/en/04_support/license.php?sn=5016

然后把驱动代码放到/home/tango/code/linux-2.6.32.2/drivers/net/wireless/目录下
其中/home/tango/code/linux-2.6.32.2 是 linux2.6.32.2内核源码路径。

2.在rt3070驱动程序根目录的Makefile文件的修改
2.1.定义芯片类型及头文件包含路径以及选择硬件运行平台

CHIPSET = 3070

C_INCLUDE_PATH ?= $(PWD)/include

PLATFORM = SMDK

2.2修改LINUX_SRC及CROSS_COMPILE参数

ifeq ($(PLATFORM),SMDK)

#LINUX_SRC = /home/bhushan/itcenter/may28/linux-2.6-samsung

#CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
#以下设置根据自己的放置位置及编译具体路径设置

LINUX_SRC = /home/tango/code/linux-2.6.32.2

CROSS_COMPILE = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-

endif



3.在os/linux/config.mk 文件中
定义

CHIPSET = 3070

CROSS_COMPILE ?=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-


修改以下两个选项

# Support Wpa_Supplicant

HAS_WPA_SUPPLICANT=y

# Support Native WpaSupplicant for Network Maganger

HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

然后再make即可生成rt3070sta.ko文件。

把RT2870STA.dat文件复制到etc/Wireless/RT2870STA 目录下

若编译中出现

/home/arm443/code/linux-2.6.32.2/drivers/net/wireless/rt3070/os/linux/../../chips/rtmp_chip.c:470: error: implicit declaration of function 'RT33xx_Init'

make[2]: *** [/home/arm443/code/linux-2.6.32.2/drivers/net/wireless/rt3070/os/linux/../../chips/rtmp_chip.o] Error 1

make[1]: *** [_module_/home/arm443/code/linux-2.6.32.2/drivers/net/wireless/rt3070/os/linux] Error 2

make[1]: Leaving directory `/home/arm443/code/linux-2.6.32.2'

make: *** [LINUX] Error 2

错误,则把/chips/rtmp_chip.c中的470行代码给屏蔽掉,然后再编译。


iwlist  scan  搜索网络

ifconfig eth0 down  关闭有线网络

insmod rt3070sta.ko   动态加载rt3070驱动

ifconfig ra0 192.168.1.231 up  设置无线网线的ip

route add default gw 192.168.1.1 添加网关


第二 .配置路由器

在Mini2440上移植RT3070驱动+wpa_supplicant调通
 

第三 ,移植wpa_supplicant

嵌入式的

因为现在的无线wifi网络大多是wpa加密。所以需要移植wpa_supplicant工具。 
一、下载源码
        http://hostap.epitest.fi/wpa_supplicant/
 

        下载wpa_supplicant-0.7.3.tar.gz (openssl用到0.7.3提供的补丁)
                #tar xvfz wpa_supplicant-0.7.3.tar.gz
        下载www.openssl.org/source/openssl-0.9.8e.tar.gz
                #tar zxvf openssl-0.9.8e.tar.gz

二、编译openssl库
将wpa_supplicant中的补丁拷贝到openssl中 
        # cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/
        #cd openssl-0.9.8e
        #mkdir /usr/local/ssl
        #vim Makefile
                CC= arm-linux-gnu-gcc
                AR= arm-linux-gnu-ar $(ARFLAGS) r
                RANLIB= arm-linux-gnu-ranlib
                INSTALLTOP=/usr/local/ssl
                OPENSSLDIR=/usr/local/ssl
        #make 
        #make install

在/usr/local/ssl目录下安装了ssl库
 #ls /usr/local/ssl
 #bin  certs  include  lib  man  misc  openssl.cnf  private

后面编译wpa_supplicant要依赖openssl中的lib和include

三、编译wpa_supplicant 
进入wpa_supplicant-0.7.3.tar.gz解压生成的wpa_supplicant-0.7.3/wpa_supplicant目录中:
        #cp defconfig        .config
        #vim .config
                CC= arm-linux-gnu-gcc -L/usr/local/ssl/lib/
                CFLAGS += -I/usr/local/ssl/include/
                LIBS += -L/usr/local/ssl/lib/
        #make

        经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。 wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli 来搜索、设置、和连接网络。

四、配置wpa_supplicant
(1)首先拷贝wpa_supplicant和wpa-psk-tkip.conf到开发板根文件系统中,并改名wpa-psk-tkip.conf为wpa_supplicant.conf

#cp wpa_supplicant /rootfs/filesystem/bin
#cp wpa_supplicant-0.7.3/wpa_supplicant/examples/wpa-psk-tkip.conf  /rootfs/filesystem/etc/wpa_supplicant.conf

(2)修改wpa_supplicant.conf配置文件
#vim /rootfs/filesystem/etc/wpa_supplicant.conf

修改内容如下:

# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
        ssid="gps"
         key_mgmt=WPA-PSK
         proto=WPA
         pairwise=TKIP
         group=TKIP
         psk="123456789"

}

五、测试
(1)在开发板终端:

#mkdir –p /var/run/wpa_supplicant



wpa_supplicant -Dwext -i ra0 -c /etc/wpa_supplicant.conf -dd  &  连接无线路由,因为现大部分是wpa、wpa2加密的,所以使用wpa_supplicant 工具。