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固件文件 和已静态编译好了的二进制工具文件。