设为首页 加入收藏

TOP

WIFI模块RT3070的ARM Linux移植
2014-11-24 01:04:10 来源: 作者: 【 】 浏览:3
Tags:WIFI 模块 RT3070 ARM Linux 移植

软硬件平台:


目标版:tiny6410,Linux2.6.38


交叉编译工具:arm-linux- 4.5.1


网卡:Ralink3070模块



步骤:


1、编译驱动的预操作:编译arm版本的内核源码。


从tiny6410的光碟中获取内核源码,此内核源码已经经过友善之臂的移植,可以直接编译移植入tiny6410中。


cp linux-2.6.38-20110718.tar.gz /usr/src/kernels/


cd /usr/src/kernels


tar -zxvf linux-2.6.38-20110718.tar.gz


cd linux-2.6.38


cp config_mini6410_n43 .config


make menuconfig


进入内核配置界面,内核配置中需要做的修改如下:


[*] Networking support --->


[*] Wireless --->


<*> cfg80211 - wireless configuration API


[*] Wireless extensions sysfs files


<*> Generic IEEE 802.11 Networking Stack (mac80211)


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


[*] Support for non-volatile firmware download


Ralink driver support --->


Ralink rt27xx/rt28xx/rt30xx (USB) support


然后make,编译通过后会在arch/arm/boot/目录下生成可烧写入开发板的zImage内核镜像。



2、编译rt3070模块的驱动


在雷凌的官网下载linux版本的rt3070驱动2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2,解压后的目录名称太长,所以可以对其做修改方便使用,然后进入到目录中


tar –jxf 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2


mv 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO rt3070


cd rt3070


目录中的README_STA_usb文件介绍了编译和加载驱动的一些信息。需要对os/linux/目录下的conf.mk文件进行修改,这里只贴出要修改的部分:


vim os/linux/config.mk


# Support Wpa_Supplicant


HAS_WPA_SUPPLICANT=y


# Support Native WpaSupplicant for Network Maganger


HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y


Makefile也要进行修改,芯片类型改为3070,默认的PLATFORM为PC,那么将后面的ifeq($(PLATFORM),PC)下的内核源码路径指定为上述的交叉编译过的内核源码目录,交叉编译工具指定为arm-linux-,当然之前应该把交叉工具链安装好,这里不再详述。


vim Makefile


ifeq ($(CHIPSET),)
CHIPSET = 3070
endif


……


ifeq ($(PLATFORM),PC)


# Linux 2.6


LINUX_SRC = /usr/src/kernels/linux-2.6.38


# Linux 2.4 Change to your local setting


#LINUX_SRC = /usr/src/linux-2.4


LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/


CROSS_COMPILE = /usr/local/FriendlyARM/toolschain/4.5.1/bin/arm-linux-


endif


然后如果直接make,会报如下错误:


/home/cabbage/Desktop/rt3070/os/linux/../../chips/rtmp_chip.c: In function 'RtmpChipOpsHook':


/home/cabbage/Desktop/rt3070/os/linux/../../chips/rtmp_chip.c:470: error: implicit declaration of function 'RT33xx_Init'


make[2]: *** [/home/cabbage/Desktop/rt3070/os/linux/../../chips/rtmp_chip.o] Error 1


make[1]: *** [_module_/home/cabbage/Desktop/rt3070/os/linux] Error 2


make[1]: Leaving directory `/usr/src/kernels/linux-2.6.38'


make: *** [LINUX] Error 2


在网上查到似乎是因为改变了CHIPSET所导致的错误。修改chips/目录下的rtmp_chip.c文件,定位到470行,修改后如下:


#ifdef RT30xx



if (IS_RT30xx(pAd))


{


if (IS_RT3390(pAd))


;//RT33xx_Init(pAd);


else


RT30xx_Init(pAd);


}


#endif /* RT30xx */


然后再make,编译通过后会在os/linux/下生成rt3070sta.ko,这就是模块的驱动。 但是这里我出现了一个问题,查看rt3070sta.ko这个文件的大小,居然达到了12m,这是不合理的,原因应该是包含了大量调试信息,用arm-linux-strip可将它的大小裁剪为750k左右。


#arm-linux-strip -S rt3070sta.ko


其中-S参数是必须的,否则在加载驱动的时候会报找不到版本信息的错误。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇在iOS上绘制自然的签名 下一篇Android WIFI Ralink RT3070开发..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: