s3c2440 arm+linux 开发板移植rt3070驱动笔记

硬件平台:s3c2440 arm开发板

操作系统:Linux2.6.32

WIFI:    RT3070 USB WIFI模组

交叉编译环境:arm-linux-gcc-4.4.3

linux内核编译设置不做讲解

1.1:linux内核预配置

make menuconfig

将Ralink driver support设置为M,支持动态加载,把Ranlink相关的设置空,以免冲突// 防止和你自己编译的驱动冲突 在linux-2.6.32里面没有此驱动


将wireless extensions sysfs files选上

1.2 重新编译内核

make

生成 zImage 

2.1:网上下载雷凌最新的USB驱动,

2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2

拷备到Linux目录并解压:

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  Ralink_RT3070_LinuxSTA_V2.5.0.3

第三步:进入RT3070_Linux_STA目录,看到有一个README_STA_usb文件,里面介绍了如何加载该驱动:

vi Makefile

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

#PLATFORM: Target platform                                                     
PLATFORM = SMDK 

ifeq ($(PLATFORM),SMDK)                                                        
LINUX_SRC =/home/guazai/linux-2.6.32.2                                            
CROSS_COMPILE = /usr/local/arm/4.4.3/bin/arm-linux-                   
endif

芯片型号要选择对应的CHIPSET = 3070,

PLATFORM = SMDK选择什么不重要,关键是对应后面的ifeq ($(PLATFORM),SMDK)    里面的linux内核的路径和交叉编译环境要填正确

第四步:按照第三步README_STA_usb给出的提示,修改config.mk文件,这里也只给出修改部分:

# vi os/linux/config.mk 

# Support Wpa_Supplicant                                                       
HAS_WPA_SUPPLICANT=y                                                          

                                                                                                                                         
# Support Native WpaSupplicant for Network Maganger                            
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y  

2.2  编译源码
make通过,在2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux目录下生成了rt3070sta.ko,也就是RT3070的驱动了

若编译中出现

/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行代码给屏蔽掉,然后再编译。

3.1  拷贝驱动到目标系统
把RT2870STA.dat拷贝到/etc/Wireless/RT2870STA目录下
把rt3070sta.ko拷贝到/xxx/ 目录下 xxx自定

注意,如果重新编译过linux内核,zImage文件也要更换,rt3070sta.ko与zImage版本要一致

4. 加载驱动模块
insmod /xxx/rt3070sta.ko

出现以下错误
rt3070sta: Unknown symbol usb_alloc_urb
rt3070sta: Unknown symbol usb_free_urb
rt3070sta: Unknown symbol usb_register
rt3070sta: Unknown symbol usb_put_dev
rt3070sta: Unknown symbol usb_get_dev
rt3070sta: Unknown symbol usb_submit_urb
rt3070sta: Unknown symbol usb_control_msg
rt3070sta: Unknown symbol usb_deregister
rt3070sta: Unknown symbol usb_kill_urb
rt3070sta: Unknown symbol usb_buffer_free
rt3070sta: Unknown symbol usb_buffer_alloc
insmod: cannot insert `rt3070sta.ko': Unknown symbol in module (-1): No such file or directory

原因未加载USB驱动

 

5.1 加载usbcore.ko
insmod /lib/modules/2.6.14-hi3511v100dmeb-release/kernel/drivers/usb/core/usbcore.ko

显示
usbcore: registered new driver usbfs
usbcore: registered new driver hub
加载成功

 

5.2.1 如果为USB1.1 加载hi3511_usb_1-1.ko

insmod /lib/modules/2.6.14-hi3511v100dmeb-release/misc/hi3511_usb_1-1.ko

显示
USB1_1-M0001C030002 @Hi3511v110_OSDrv_1_0_0_1 2008-11-03 18:35:15
Clock to USB host has been enabled
hisilicon-ohci hisilicon-ohci.0: hisilicon OHCI
hisilicon-ohci hisilicon-ohci.0: new USB bus registered, assigned bus number 1
hisilicon-ohci hisilicon-ohci.0: irq 20, io mem 0xa0000000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usb 1-1: new full speed USB device using hisilicon-ohci and address 2
加载成功

 

5.2.2 如果为USB2.0 加载hiusb.ko

insmod /lib/modules/2.6.14-hi3511v100dmeb-release/misc/hiusb.ko

显示
<6>hiusb-hcd hiusb-hcd.0: Hisilicon USB host controller
hiusb-hcd hiusb-hcd.0: new USB bus registered, assigned bus number 1
hiusb-hcd hiusb-hcd.0: irq 23, io base 0x80090000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected

加载成功

 

5.3 然后再加载rt3070sta.ko
insmod /xxx/rt3070sta.ko
显示
rtusb init rt2870 --->

=== pAd = d1af4000, size = 514424 ===

<-- RTMPAllocTxRxRingMemory, Status=0
<-- RTMPAllocAdapterBlock, Status=0
usbcore: registered new driver rt2870
加载成功

#ifconfig -a 可以查看到ra0设备的存在

若无密码或密码为WEP加密,则此时可以启动无线, 若密码为WPA加密,则需移植wpa_supplicant,往后再说移植

 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值