基于IMX6 RT3070的USB接口wifi模块移植

来源:互联网 发布:mobiscroll.custom.js 编辑:程序博客网 时间:2024/05/01 04:01


正好手上有一个RT3070的USB接口wifi模块,今天晚上上网查了下,顺便做了个驱动代码在RIOtboard板子上的移植。

具体过程如下,首先到Ralink官网上http://www.mediatek.com/en/downloads/下载最新linux驱动代码。我下的是DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar.bz2,其实已经不新了,文档上说这个代码适用于linux2.4和linux2.6内核的,内心忐忑,是否能用还是个问题,但是下载下来就编译下试试。
代码下载到ubuntu虚拟机之后进行解压,然后到解压后的文件夹,打开readme_sta_usb文档,里面有具体修改地方的指导,但是有些具体参数没有说到。我们在这里注明下:
首先修改makefile文件:
set the "MODE = STA" 
chose the TARGET to Linux by set "TARGET = LINUX"
LINUX_SRC 修改为我们RIOTboard的linux内核源代码路径。
ifeq ($(PLATFORM), RALINK_2880)
LINUX_SRC = /home/xinxinyuan/linux-imx
CROSS_COMPILE = /home/xinxinyuan/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-
endif。
platform修改为RALINK_2880,
#PLATFORM = CMPC
PLATFORM = RALINK_2880
这样我们的makefile就修改差不多了。
然后看看config.mk文件修改的地方:
首先根据readme文件修改如下:
** Build for being controlled by NetworkManager or wpa_supplicant wext functions
           Please set 'HAS_WPA_SUPPLICANT=y' and 'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y'.
           => #>cd wpa_supplicant-x.x
           => #>./wpa_supplicant -Dwext -ira0 -c wpa_supplicant.conf -d
        ** Build for being controlled by WpaSupplicant with Ralink Driver
           Please set 'HAS_WPA_SUPPLICANT=y' and 'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n'.
           => #>cd wpa_supplicant-0.5.7
           => #>./wpa_supplicant -Dralink -ira0 -c wpa_supplicant.conf -d
这个选项根据自己需要配置就可以,然后是 cc和ld的路径配置:
CC := /home/xinxinyuan/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-gcc
LD := /home/xinxinyuan/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-ld
然后是配置编译参数,主要关心一个地方就是CPU架构
-D__LINUX_ARM_ARCH__=7 -march=armv7-a
我们用的是imx6s,imx6s是cortex-A9 MPcore,这个arm架构是属于armv7-a,所以这里-mach一定要配置为armv7-a,其他型号多数会出错误。这样整个编译选项就如下:
ifeq ($(PLATFORM), RALINK_2880)EXTRA_CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -DMODULE -DMODVERSIONS $(WFLAGS)export EXTRA_CFLAGSendif
配置完后我们就可以到源代码文件夹下make,然后在os/linux/下生成rt5572sta.ko文件,没事儿,这个不影响使用,下面我们把
rt5572sta.ko文件和源代码根目录下的RT2870STA.dat文件拷贝到RIOTboard上面,其中RT2870STA.dat一定要放在/etc/Wireless/RT2870STA路径下,.ko文件可以自己找目录。拷贝过去之后我们就insmod rt5572sta.ko,没有任何输出,然后使用lsmod查看发现驱动已经加载,说明我们的驱动初步是成功的。我们使用ifconfig命令查看下:
net1.PNG 
已经出现ra0网络。然后使用iwlist ra0 scan扫描无线网络:
net2.PNG 
已经可以扫描到多个无线网络,到这儿基本就可以确定我们的驱动和wifi模块已经在工作了。
下面看看图形界面中的工作情况:
扫描到的无线网络:
IMG_20140527_220600.jpg 
图中可以看到多个无线网络连接点,我的就是9f995a了,在看看整体情况和wifi模块:
IMG_20140527_220609.jpg 
IMG_20140527_220619.jpg
0 0
原创粉丝点击