WIFI调试笔记

更新时间:2023-06-30 10:55:02 阅读: 评论:0

S3c6410 平台 Android系统的Wi-Fi调试记录
2011-02-11 16:26
硬件平台:S3c6410
操作系统:Androidyuxuan
网卡芯片:GH381(SDIO接口 sdio8688)
1SDIO驱动
        因为是SDIO接口,所以请先保证mmc驱动(代码在kernel\drivers\mmc”)部分能够正常工作,这个一般调试flash的时候会涉及到,问题不大,因为S3c6410平台的HSMMC3个,要根据硬件原理图确认网卡的frossSDIO接口接在哪个上面了,我调试的时候是HSMMC1,针对HSMMC1涉及到的修改有
        "kernel\arch\arm\configs\smdk6410_android_deconfig":
                CONFIG_S3C_DEV_HSMMC1=y
  绯闻女孩是谁              CONFIG_S3C6410_SD_CH1=y
        "kernel\arch\arm\mach-s3c6410\Kcofnig":
                lect S3C_DEV_HSMMC1
        kernel\arch\arm\mach-s3c6410\mach-smdk6410.c":
               #ifdef CONFIG_S3C6410_SD_CH1
                    &s3c_device_hsmmc1,
                 #endif
        注:目前暂时把网卡的上电部分放到了mmc初始化管脚的时候,以后再挪到其他地方
2、网卡驱动
        网卡驱动一般由芯片厂商提供,如果能拿到源代码首先要保证能够编译通过,GH381的驱动编译出来名为sd8xxx.ko
        驱动能够编译通过后,就是加载了,两个步骤:
        1)把驱动和firmware放到系统中去.
        一般是在eclair\vendor\c_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层能能够正确的识别网卡。
        涉及到的代码修改有:
        eclair\hardware\libhardware_legacy\wifi\wifi.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的时候可以找到对应的驱动
        eclair\vendor\c\smdk6410\AndroidBoard.mk
                BOARD_WPA_SUPPLICANT_DRIVER := WEXT
        注:这部分修改,保证wpa_supplicnat能够正常编译到系统中(见external\wpa_supplicant\Android.mk开始部分的编译条件)
        treats③eclair\vendor\c\
                # give system access to f for backup and restore
                mkdir /system/etc/wifi 0770 wifi wifi
                chmod 0770 /system/etc/wifi
                chmod 0660 /system/etc/wifi/f
                chown wifi wifi /system/etc/wifi/f
   
                #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/f
                chown wifi wifi /data/misc/wifi
                chown wifi wifi /data/misc/wifi/f
   
                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服务更无法工作。
               rvice wpa_supplicant /system/bin/wpa_supplicant -dd -Dwext -imlan0-c /system/etc/wifi/f
                #socket wpa_mlan0dgram 660 wifi wifi
               #group system wifi inet
                disabled
                oneshot
                rvice dhcpcd /system/bin/dhcpcd -f /system/etc/f -dmlan0
                #group system dhcp wifi
                disabled
                oneshot
                tprop wifi.interface "mlan0"
                tprop wlan.driver.status "ok"
                tprop wlan.interface "mlan0"
                全脑速读记忆注:红色的部分conveniencemlan0是网卡驱动设置的网卡名字,这部分代码可以在驱动代码的wlan_add_card()函数中找到:
                 if (dev_alloc_name(dev, "mlan%d") < 0) {
                     PRINTM(ERROR, "Could not allocate device name!\n");
                     goto err_kmalloc;
                }
        "eclair\external\wpa_supplicant\f"
               update_config=1
                //ctrl_interface=mlan0 这部分应该是Android的特殊定义,不过用起来貌似会有错误,就使用下面通用的unix设置了
                ctrl_interface=DIR=/data/misc/wifi/wpa_supplicant GROUP=wifi
                ap_scan=1 #ps什么意思>翻译社这里最好设置为1,不然可能会出现搜索不到AP的现象。
 
        目前的状态:WIFI可以成功打开,搜索到周围的AP,连接部分还存在问题,继续调试。2011.2.11 16:30
-------------------------------------------------------------------------------------------------------
碰到问题及解决方式:
1、连接AP时,运行到下面的代码时,出现错误
     Wlan_wmm.c wmm_process_app_iface_tx{
     ...
     atomic_inc(&Adapter->wmm.packetsQueued);//此处有错误
     ...
     }
     错误如下:
     Alignment trap: not handling instruction e1930f9f at [<bf027b90>]wisp
     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地址失败,可能的原因如下:
1DHCP服务没有启动,或者启动后工作不正常,请参考前面eclair\vendor\c\中增加的内容。
2DHCP代码中的网卡接口错误,请查看文件eclair\frameworks\ba\wifi\jafa\android\net\wifi\WifiStateTracker.java中的函数:
public WifiStateTracker()
{
...
        mSettingsObrver = new SettingsObrver(new Handler());
        mInterfaceName = ("wifi.interface", "mlan0" ); //"tiwlan0");此处默认的网卡名称为tiwlan0,需修改为我们使用的
        sDnsPropNames = new String[] {
            "dhcp." + mInterfaceName + ".dns1",
            "dhcp." + mInterfaceName + ".dns2"
        };
...
}
目前,WIFI已经可以正常的连接不加密类型的AP热点,并成功获取IP地址,打开网页,正常开关。

本文发布于:2023-06-30 10:55:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/162532.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:驱动   网卡   设置   错误   编译   部分   问题   名字
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图