日期:2014-05-16  浏览次数:20536 次

rt3070 wifi arm+linux移植 --转
rt3070 wifi arm+linux移植

软硬件平台:

宿主机:fedora10vmware虚拟机

目标版: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 andWEP/TKIP/CCMP)

                        
  •      Support downloading firmware images withHost AP driver

  •                     
  •        Support for non-volatile firmwaredownload

  •                      <M>   Ralink driver support  --->

                                <M>   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 –jxf2011_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_DPOrt3070

    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 NetworkMaganger

    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/$(shelluname -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'