rt3070驱动移植到fsl imx51上

rt3070驱动移植到fsl imx51  android2.2

 

一,下载源代码

1,下载rt3070源代码 (可以到我上传的资料库中去下) 下载地址:http://download.csdn.net/detail/hp_2008/4358674

2,下载Wireless Tools源代码   下载地址:http://download.csdn.net/detail/hp_2008/4358698

二,编译rt3070

1,rt3070源代码
   解tar包:    tar -xf 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.tar
 
  
   解压后eg:/home/zjh/android-my/WIFI/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
     
2,设置交叉编译环境(略)

3,修改配置文件和源码文件
   A,在 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2 目录下的Makefile文件
   
    改成:
    CHIPSET = 3070
   PLATFORM = IXP   (可以根据自己的需要,随便改,以下在相应的地方也根着改就行)
  
   在有IPX行改成:
   ifeq ($(PLATFORM),IXP)
    LINUX_SRC =/home/zjh/android-my/imx51-android/kernel_imx
    CROSS_COMPILE = /opt/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-
    
   B,修改os/linux/config.mk文件
    
     HAS_NATIVE_WPA_SUPPLICANT_SUPPORT = n  (改为y)
    
     HAS_WPA_SUPPLICANT = n (改为y)
    
     ifeq ($(PLATFORM),IXP)
   #WFLAGS += -DRT_BIG_ENDIAN (注译的这行)
    endif 
   
    找到有IXP的判断改成如下:
    ifeq ($(PLATFORM),IXP)
        EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include
  endif
 
  C,include/rtmp_def.h 修改两个宏定义从ra修改为wlan 

  D,编译
       make ARCH=arm CROSS_COMPILE=arm-linux-
      
  编译成功后会在主目录下生成RT3070STA.dat文件和在os/linux/下生成rt3070.ko文件
 
      
三,编译wifi tools

  1,解tar.gz包:tar -xzf wireless_tools.29.tar.gz

    解压后进入目录eg: /home/zjh/android-my/WIFI/wireless_tools.29
  
  2,修改Makefile
  

    ifndef PREFIX
    PREFIX = /home/zjh/android-my/WIFI/bin  (用于安装工具,以便到时好找那几个可执行的命令工具。)
    endif
    
    ## Compiler to use (modify this for cross compile).
    CC = arm-linux-gcc
    ## Other tools you need to modify for cross compile (static lib only).
    AR = arm-linux-ar
    RANLIB = ranlib
    
    ## Uncomment this to build tools using static version of the library.
    ## Mostly useful for embedded platforms without ldd, or to create
    ## a local version (non-root).
    BUILD_STATIC = y
    
    .....
    
    
    # Standard compilation targets
    all:: $(IWLIB) $(PROGS)
    
    %: %.o
            $(CC) $(LDFLAGS) $(STRIPFLAGS) $(XCFLAGS) -static -o $@ $^ $(LIBS)  (只在这里加了一个 -static 用于静态编译)
    %.o: %.c wireless.h
            $(CC) $(XCFLAGS) -c $<
    %.so: %.c wireless.h
            $(CC) $(XCFLAGS) $(PICFLAG) -c -o $@ $<
    
    iwconfig: iwconfig.o $(IWLIB)
    
    iwlist: iwlist.o $(IWLIB)


 

  3,编译 make ;make install
     会在/home/zjh/android-my/WIFI/bin/sbin目录下产生几个二进制文件 eg:

    zjh@skypine:~/android-my/WIFI/bin/sbin$ ls -l
    total 5368
    -rwxr-xr-x 1 skypine2011 skypine2011 813352 2012-06-05 11:04 ifrename
    -rwxr-xr-x 1 skypine2011 skypine2011 780187 2012-06-05 11:04 iwconfig
    -rwxr-xr-x 1 skypine2011 skypine2011 778465 2012-06-05 11:04 iwevent
    -rwxr-xr-x 1 skypine2011 skypine2011 775058 2012-06-05 11:04 iwgetid
    -rwxr-xr-x 1 skypine2011 skypine2011 786592 2012-06-05 11:04 iwlist
    -rwxr-xr-x 1 skypine2011 skypine2011 770695 2012-06-05 11:04 iwpriv
    -rwxr-xr-x 1 skypine2011 skypine2011 770318 2012-06-05 11:04 iwspy
    zjh@skypine:~/android-my/WIFI/bin/sbin$ file iwlist
    iwlist: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.14, not stripped
    skypine2011@skypine:~/android-my/WIFI/bin/sbin$    


    
  4,wifi 工具使用说明:
  
   iwconfig:设置基本无线参数
   
   iwlist:扫描、列出频率,比特率,密钥等
   
   iwspy:获取每个节点链接的质量
   
   iwpriv:操作Wireless Extensions 特定驱动
   
   ifrename: 基于各种静态标准命名接口   
    
   启动WIFI     ifconfig wlan0 up
   搜索WIFI设备 iwlist wlan0 scan
      设置DNS可用 setprop net.dns1 xxx.xxx.xxx.xxx
      等等,可以去网上找。
      
  

四,WAP_supplicant、Hal、JNI、Java部分修改  
    
     WAP_supplicant部分
    
     1,不需要修改
    
     HAL部分
    
     1,修改 hardware/libardware_legacy/wifi/wifi.c (可以把wifi.c文件改成wifi_rt3070.c文件)
    
        修改成:

     #ifndef WIFI_DRIVER_MODULE_PATH
    #define WIFI_DRIVER_MODULE_PATH         "/system/lib/modules/rt3070sta.ko"
    #endif
    #ifndef WIFI_DRIVER_MODULE_NAME
    #define WIFI_DRIVER_MODULE_NAME         "rt3070sta"
    #endif
    #ifndef WIFI_DRIVER_MODULE_ARG
    #define WIFI_DRIVER_MODULE_ARG          ""
    #endif
    #ifndef WIFI_FIRMWARE_LOADER
    #define WIFI_FIRMWARE_LOADER ""
    #endif
    #define WIFI_TEST_INTERFACE "sta"



   
     2,修改./device/fsl/imx5x/BoardConfigCommon.mk 文件
    BOARD_WPA_SUPPLICANT_DRIVER := WEXT
    
   3,修改./device/fsl/imx51_bbg/BoardConfig.mk文件

    WIFI_DRIVER_MODULE_PATH :=  "/system/lib/modules/rt3070sta.ko"
    WIFI_DRIVER_MODULE_ARG      := ""
    WIFI_DRIVER_MODULE_NAME     := "rt3070sta"
    WIFI_FIRMWARE_LOADER        := ""
    
  JNI部分

  1, frameworks/base/core/jni/android_net_wifi_Wifi.cpp 不需要修改

    JAVA部分
    1, frameworks/base/services/java/com/android/server/
        frameworks/base/wifi/java/android/net/wifi/
        不需要修改
  
  WIFI Settings应用程序部分

    1,packages/apps/Settings/src/com/android/settings/wifi/ 不需要修改
   
   
    重新编译android
   
   五,进入android系统,在调试串口操作
  
   
     1,将RT3070STA.dat拷到/etc/Wireless/RT2870STA/目录下  没有的目录要自己用mkdir新建
    
     2,将rt3070sta.ko拷到/system/lib/modules/目录下    
    
     3,可以用上面编译的工具在调试终端下操作,以验证驱动加载和工作是否工常。
    
     4,一切OK就可以在界面下去setting操作
    

六,可以直接下载我已编译好的KO、DAT及二进制工具

       下载地址:http://download.csdn.net/detail/hp_2008/4359955

       下载后解压:tar -zxvf  rt3070sta_driver_wifitools.tar.gz

 

说明:

1,解压后有个sbin文件夹,所有文件在这里面。


2,用于fsl imx51 android2.2 平台。

 

3,包中包括了rt3070sta.ko  RT2870STA.dat固件文件 和已静态编译好了的二进制工具文件。

 

 

 

 

你可能感兴趣的:(android,Module,工具,tools,makefile,compilation)