【Android源码 栏目提醒】:网学会员--在 Android源码 编辑为广大网友搜集整理了:S3C6410 平台Android系统的Wi-Fi调试记录 - 培训资料绩等信息,祝愿广大网友取得需要的信息,参考学习。
S3C6410 平台
Android 系统的 Wi-Fi 调试记录硬件平台:S3C6410操作系统:
Android网卡芯片:GH381SDIO 接口 sdio86881、SDIO 驱动 )部分能够正常工作, 因为是 SDIO 接口,所以请先保证 mmc 驱动(代码在“kerneldriversmmc”这个一般调试 flash 的时候会涉及到,问题不大,因为 S3c6410 平台的 HSMMC 有 3 个,要根据硬件原理图确认网卡的 SDIO 接口接在哪个上面了,我调试的时候是 HSMMC1,针对 HSMMC1 涉及到的修改有 ① kernelarcharmconfigssmdk6410_
android_deconfig: CONFIG_S3C_DEV_HSMMC1y CONFIG_S3C6410_SD_CH1y ②kernelarcharmmach-s3c6410Kcofnig: select S3C_DEV_HSMMC1 ③“kernelarcharmmach-s3c6410mach-smdk6410.c: ifdef CONFIG_S3C6410_SD_CH1 s3c_device_hsmmc1 endif 注:目前暂时把网卡的上电部分放到了 mmc 初始化管脚的时候,以后再挪到其他地方2、网卡驱动 网卡驱动一般由芯片厂商提供,如果能拿到源代码首先要保证能够编译通过,GH381 的驱动编译出来名为 sd8xxx.ko。
驱动能够编译通过后,就是加载了,两个步骤: 1)把驱动和 firmware 放到系统中去. 一般是在”eclairvendorsec_proprietary目录下建一个目录,放上驱动和 firmware 文件。
然后在
Android.mk 中将文件拷贝到设备对应目录即可如: PRODUCT_COPY_FILES LOCAL_PATH/helper_sd.bin:system/etc/firmware/mrvl/helper_sd.bin(firmware 文件) PRODUCT_COPY_FILES LOCAL_PATH/sd8688.bin:system/etc/firmware/mrvl/sd8688.bin(firmware 文件) PRODUCT_COPY_FILES LOCAL_PATH/sd8xxx.ko:system/lib/modules/sd8xxx.ko (驱动文件) 2系统调用驱动,驱动 download firmware 因为网卡驱动对上层的接口是通过 wpa_supplicant 中间层实现的,因此也要保证 wpa 层能能够正确的识别网卡。
涉及到的代码修改有: ①”eclairhardwarelibhardware_legacywifiwifi.c“ define WIFI_DRIVER_MODULE_PATH /system/lib/modules/sd8xxx.ko//驱动文件的全路径 define WIFI_DRIVER_MODULE_NAME sd8xxx //这个名字是模块名字,用于关闭 WIFI 时调用,一般和 ko 文件的名字相同 define WIFI_TEST_INTERFACE mlan0//sta (这个名字是根据网卡名字写的,但是个人感觉应该用 sta 才对) 注:这部分修改,保证在启动 wifi 的时候可以找到对应的驱动 ②“eclairvendorsecsmdk6410AndroidBoard.mk” BOARD_WPA_SUPPLICANT_DRIVER : WEXT 注 : 这 部 分 修 改 , 保 证 wpa_supplicnat 能 够 正 常 编 译 到 系 统 中 ( 见“externalwpa_supplicantAndroid.mk”开始部分的编译条件) ③“eclairvendorsecsmdk6410init.rc” give system access to wpa_supplicant.conf for backup and restore mkdir /system/etc/wifi 0770 wifi wifi chmod 0770 /system/etc/wifi chmod 0660 /system/etc/wifi/wpa_supplicant.conf chown wifi wifi /system/etc/wifi/wpa_supplicant.conf wpa_supplicant control socket for
android wifi.c
android private socket mkdir /data/misc/wifi 0777 wifi wifi mkdir /data/misc/wifi/sockets 0777 wifi wifi mkdir /data/system/wpa_supplicant 0777 wifi wifi chmod 0777 /data/misc/wifi chmod 0777 /data/misc/wifi/wpa_supplicant.conf chown wifi wifi /data/misc/wifi chown wifi wifi /data/misc/wifi/wpa_supplicant.conf mkdir /data/misc/dhcp 0777 dhcp dhcp chmod 0777 /data/misc/dhcp chmod 0777 /system/etc/dhcpcd chmod 0777 /system/etc/dhcpcd/dhcpcd-run-hooks dhcpcd-run-hooks 的权限一定要设置,不然 DHCP 服务无法正常工作 chown dhcp dhcp /data/misc/dhcp chown dhcp dhcp /system/etc/dhcpcd chown dhcp dhcp /system/etc/dhcpcd/dhcpcd-run-hooks on boot注意这里,创建目录,设置权限的部分一定要放在 on boot 之前,而启动服务设置接口的在放在之后。
不然会出现没有/data/misc/dhcp 目录的问题,之后 dhcp 服务更无法工作。
service wpa_supplicant /system/bin/wpa_supplicant -dd -Dwext -imlan0-c/system/etc/wifi/wpa_supplicant.conf socket wpa_mlan0dgram 660 wifi wifi group system wifi inet disabled oneshot service dhcpcd /system/bin/dhcpcd -f /system/etc/dhcpcd/dhcpcd.conf -dmlan0 group system dhcp wifi disabled oneshot setprop wifi.interface mlan0 setprop wlan.driver.status ok setprop wlan.interface mlan0 注:红色的部分 mlan0 是网卡驱动设置的网卡名字,这部分代码可以在驱动代码的wlan_add_card函数中找到: if dev_alloc_namedev mland 0 PRINTMERROR Could not allocate device namen goto err_kmalloc ③eclairexternalwpa_supplicantwpa_supplicant.conf update_config1 //ctrl_interfacemlan0 这部分应该是
Android 的特殊定义,不过用起来貌似会有错误,就使用下面通用的 unix 设置了 ctrl_interfaceDIR/data/misc/wifi/wpa_supplicant GROUPwifi ap_scan1 这里最好设置为 1,不然可能会出现搜索不到 AP 的现象。
目前的状态:WIFI 可以成功打开,搜索到周围的 AP,连接部分还存在问题,继续调试。
2011.2.1116:30-------------------------------------------------------------------------------------------------------碰到问题及解决方式:1、连接 AP 时,运行到下面的代码时,出现错误 Wlan_wmm.c wmm_process_app_iface_tx ... atomic_incAdapter-wmm.packetsQueued//此处有错误 ... 错误如下: Alignment trap: not handling instruction e1930f9f at Unhandled fault: alignment exception 0x001 at 0xc98ac0b2 //校准错误 解决办法: 在 wmm 的结构体中增加变量,使整个结构体,在 packetsQueued 的前面是 4 个字节的整数倍 typedef struct u8 required u8 enabled u16 tmp//此处为额外增加,保证 packetsQueued 前面有 4 个字节 atomic_t packetsQueued ... __ATTRIB_PACK__ WMM_DESC 目前这种解决方式只是针对错误提示,也有可能根本原因在于编译参数等设置的存在问题,后续再分析。
目前状态:可以成功连接 AP,但是之后获取 AP 地址的时候失败,应该是 DHCP 服务器的设置还存在问题。
-------------------------------------------------------------------------------------------------------------------------获取 IP 地址失败,可能的原因如下:1、DHCP 服务没有启动,或者启动后工作不正常,请参考前面“eclairvendorsecsmdk6410init.rc”中增加的内容。
2 、 DHCP 代 码 中 的 网 卡 接 口 错 误 , 请 查 看 文 件“eclairframeworksbasewifijafaandroidnetwifiWifiStateTracker.java”中的函数:public WifiStateTracker... mSettingsObserver new SettingsObservernew Handler mInterfaceName SystemProperties.getwifi.interface mlan0 //tiwlan0此处默认的网卡名称为 tiwlan0,需修改为我们使用的 sDnsPropNames new String dhcp. mInterfaceName .dns1 dhcp. mInterfaceName .dns2 ...目前,WIFI 已经可以正常的连接不加密类型的 AP 热点,并成功获取 IP 地址,打开网页,正常开关。
转载请注明出处,文章来源:http://www.threeway.cc/sitecn/InformationInfo.aspxtid1380pid1673硅谷芯微技术中心:www.threeway.cc 芯片级 IT 教育第一品牌开设课程:单片机、嵌入式、ARM、Linux、
Android、iphone、PCB 设计官方网址:www.threeway.cc
上一篇:
Android系统的Binder机制之二——服务代理对象(1)
下一篇:
电话销售英文简历范文