登录站点

用户名

密码

三星coretx-A8开发板/友坚开发板S5PV210开发板 RT2070/RT3070 USBwifi在android2.3下

已有 458 次阅读  2012-04-01 16:59   标签三星  开发板  usb  wifi  S5PV210开发板  三星cortex-A8  工控主板 

三星coretx-A8开发板/友坚开发板S5PV210开发板 RT2070/RT3070 USBwifiandroid2.3下的调试方法

测试者:longtian

测试日期:2012-3-30

测试平台:UT-S5PV210

软件平台:android2.3

问题描述:

    RT2070USBwifi移植到android2.3上!

 

调试方法(建议)----详细的截图和文字资料

深圳市友坚恒天科技有限公司http://www.urbetter.com/main.asp

   销售热线:0755-86038900 / 26050792802
       QQ1732094339
       Emailjennifer_zhang@urbetter.com
       手机:13418792487 张顺香

   . 内核配置

1Networking supportWireless 如下图方式配配置:

 

2. Device Drivers Network device support Wireless Lan如下图方式配配置:

Wireless LAN 目录里IEEE 802.11 for Host AP (Prism2/2.5/3 andWEP/TKIP/CCMP)都选择上,目的是打开CONFIG_WIRELESS_EXT=y CONFIG_WEXT_PRIV=y

 

3. Device Drivers Generic Driver Option如下图方式配配置

4. Device DriversUSB supportUSB Wireless Device Management support

 

5.编译即可得到支持RT2070内核!

二、驱动配置与编译

 

1. 根目录Makefile修改

CHIPSET = 5370修改为3070

OSABL NO

RT28xx_DIR = $(shell pwd) 修改为

RT28xx_DIR = /home/android//home/android/2011_0407_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.2_DPO 3070驱动所有位置

屏蔽#PLATFORM = PC,打开PLATFORM = SMDK

修改交叉编译环境和内核所在代码路径

ifeq ($(PLATFORM),SMDK)

#LINUX_SRC = /home/bhushan/itcenter/may28/linux-2.6-samsung

#CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-

LINUX_SRC = /home/android/android2.3.4_kernel_2.6.35_dev

CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-endif

 

2. os\linux\目录下的config.mk文件修改

HAS_APCLI=y

HAS_WPA_SUPPLICANT=y

HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

HAS_AUTO_CH_SELECT_ENHANCE=y

 

3. 驱动代码修改

1) chips\rtmp_chip.cVOID RtmpChipOpsHook函数中将

#ifdef RT30xx

if (IS_RT30xx(pAd))

{

if (IS_RT3390(pAd))

RT33xx_Init(pAd);

else

RT30xx_Init(pAd);

}

#endif /* RT30xx */

修改成

#ifdef RT30xx

if (IS_RT30xx(pAd))

{

if (!IS_RT3390(pAd))

RT30xx_Init(pAd);

}

#endif /* RT30xx */

#ifdef RT33xx

if (IS_RT30xx(pAd))

{

if (IS_RT3390(pAd))

RT33xx_Init(pAd);

}

#endif /* RT33xx */

 

2) include\os\rt_linux.h中申明修改

//#define RTUSB_URB_ALLOC_BUFFER(_dev, _size, _dma)

usb_alloc_coherent(_dev, _size, GFP_ATOMIC, _dma)

//#define RTUSB_URB_FREE_BUFFER(_dev, _size, _addr, _dma)

usb_free_coherent(_dev, _size, _addr, _dma)

#define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev,BufSize, pDma_addr)

usb_alloc_coherent(pUsb_Dev,BufSize, GFP_ATOMIC, pDma_addr)

#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)

usb_free_coherent(pUsb_Dev, BufSize,pTransferBuf, Dma_addr)

linux\rt_linux.c

 

3) linux\rt_linux.cint RtmpOSNetDevAttach函数添加如下代码

strcpy( pNetDev->name, "mlan0");

也可以修改:修改ralinkwifi的驱动,更名ra0mlan0

include\rtmp_def.h

#define INF_MAIN_DEV_NAME "mlan"

#define INF_MBSSID_DEV_NAME "mlan

(改os/linux/Makefile.6

MOD_NAME = wlan

将文件中所有rt$(CHIPSET)sta-objs 替换成RT2070,然后编译,最后生成RT2070.ko。没调试)

注:此处所用的名字要与上层使用的节点名保持一致,你也可以修改在此说明一下上层主要有这几处用到节点名:

\frameworks\base\wifi\java\android\net\wifi\WifiStateTracker.java

(在WifiStateTracker.java中要将tiwlan0改成mlan0,该处的mlan0是供dhcpcd服务获得ipdns之类的信息)

init.rc启动wpa_supplicant守护进程里面与启动dhcpcd服务

 

wpa_supplicantdhcpcd都是表示该进程应用的对象)

dhcpcd服务配置文件,dhcpcd.conf里面

init.rc设置setprop wifi.interface "mlan0"

4) os\linux\rt_main_dev.c

打开MODULE_LICENSE("GPL");的屏蔽; (最新版驱动包肯不需修改)

int MainVirtualIF_close函数直接返回0;(解决不能反复关闭wifi问题)

5) make,即可在os/linux的目录下找到rt3070sta.ko

6) common下的rtusb_dev_id.c的数组里面rtusb_dev_id[]里面增加{USB_DEVICE(0x148F,0x2070)},不然会造成加载驱动的时候识别不到设备,

因为USB驱动识别是根据idVendoridProduct来识别设备的,2070的设备号为idVendor=148f, idProduct=2070

7) rt3070sta.ko拷贝到目录/system/wifi/下,将RT2870STA.dat拷贝到/system/Wireless/RT2870STA/目录下

三、文件系统支持修改

1. wap_supplicant不需要编译,android会带该工具 ,本人调试用wap_supplicant而非wap_supplicant_6

2. wifi移植所需在android系统修改的一些文件

打开目录文件hardware/libhardware_legacy/wifi/wifi.c

#define WIFI_DRIVER_MODULE_PATH "/system/wifi/rt3070sta.ko"

该目录为wifi驱动所放置的路径

#define WIFI_TEST_INTERFACE "mlan0"

该名字为在data/ data/system/wpa_supplicant /wifi设备名称

static const char IFACE_DIR[] = "/data/system/wpa_supplicant";

该路径为wifi设备接口所放置

static const char SUPP_CONFIG_TEMPLATE[] = "/system/etc/wifi/wpa_supplicant.conf";

wpa_supplicant.conf模板所放置的目录

static const char SUPP_CONFIG_FILE[] = "/data/misc/wifi/wpa_supplicant.conf";

系统中真实wpa_supplicant.conf在系统中所放置的目录(注:该目录与wpa_supplicant服务所指定的文件路径需一致)

3. wap_supplicant.confdhcpcd.conf文件修改

wap_supplicant.conf文件:

1) ctrl_interface修改问ctrl_interface=DIR=/data/system/wpa_supplicant GROUP=wifi(注:该路径需与wifi.c中的IFACE_DIR[]所指路径一致)

2) 该文件中的example等配置可以删除

3) 将该文件中的update_config=1打开,该开关为需要android界面去保存对ssidwifi密码等值

Dhcpcd.conf文件:

在该文件中添加如下项,并将多余的配置项删除

interface mlan0 option subnet_mask, routers,domain_name_servers

wap_supplicant.conf拷贝到/ system/etc/wifi//data/misc/wifi/下个一份,将Dhcpcd.conf文件拷贝到/system/etc/dhcpcd/下 (在文中没找到的文件夹就新建,建议在android2.3.4_GB_dev\out\target\product\smdkv210这下面修改,省事。。)

4.增加调试信息,android已经移植adb我们可以直接# logcat来查看调试信息,系统调试信息输出支持修改:

wpa_supplicant默认信息显示的等级为SG_INFO,为了输出更多信息,可修改:  
        修改external/wpa_supplicant/common.c                                   
            int wpa_debug_level = MSG_INFO;                                  
            改为:int wpa_debug_level = MSG_DEBUG;                             
        修改external/wpa_supplicant/common.h                                   
            把宏定义#define wpa_printf(level, ...)中的if ((level) >= MSG_INFO) 
            改为if ((level) >= MSG_DEBUG) 

5. init.rc里面增加wifi相关文件的权限设定,如下

mkdir /data/misc/wifi 0770 wifi wifi

mkdir /data/misc/wifi/sockets 0770 wifi wifi

chmod 0770 /data/misc/wifi

chmod 0660 /data/misc/wifi/wpa_supplicant.conf #wifi.c中的SUPP_CONFIG_FILE[]对应

chown wifi wifi /data/misc/wifi

chown wifi wifi /data/misc/wifi/wpa_supplicant.conf

#cp system/etc/wifi/wpa_supplicant.conf ./data/misc/wifi/

mkdir /data/misc/dhcp 0777 dhcp dhcp

chown dhcp dhcp /data/misc/dhcp

chmod 0770 /data/misc/dhcp

setprop wifi.interface "mlan0"

setprop wlan.driver.status "ok"

 

6. init.rc里面增加wifi的服务,如下:

service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \

-Dwext -imlan0 -c/data/misc/wifi/wpa_supplicant.conf -dd

group wifi inet

socket wpa_wlan0 dgram 660 wifi wifi

oneshot

service dhcpcd /system/bin/logwrapper /system/bin/dhcpcd -d -B mlan0

disabled

oneshot

 

 

调试结果:

1、在终端中我们能运用ifconfig mlan0 up能成功搜索到网络,并在setting中输入密码成功联网!

2、如果首次联网成功后,重启能自动连接!

 

不足与优化建议:

1.    setting中关掉后在开启不能搜索到网络,可能是权限设置不对。

2.    可以自己另外自己编译wpa_supplicant,可能由他引起!

上一篇: UT-S5PV210 开发板 android2.3 mini键盘和按键切换测试 下一篇: cortex-A8 S5PV210核心板之友坚UTV210CV03核心板全国首推

分享 举报