S3c6410 平台 Android系统的Wi-Fi调试记录

发布时间:2024-09-18  

硬件平台:S3c6410

操作系统:Android

网卡芯片:GH381(SDIO接口 sdio8688)

1、SDIO驱动

        因为是SDIO接口,所以请先保证mmc驱动(代码在“kerneldriversmmc”)部分能够正常工作,这个一般调试flash的时候会涉及到,问题不大,因为S3c6410平台的HSMMC有3个,要根据硬件原理图确认网卡的SDIO接口接在哪个上面了,我调试的时候是HSMMC1,针对HSMMC1涉及到的修改有

         ① 'kernelarcharmconfigssmdk6410_android_deconfig':

                CONFIG_S3C_DEV_HSMMC1=y

                CONFIG_S3C6410_SD_CH1=y

        ②'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_name(dev, 'mlan%d') < 0) {

                     PRINTM(ERROR, 'Could not allocate device name!n');

                     goto err_kmalloc;

                 }

        ③'eclairexternalwpa_supplicantwpa_supplicant.conf'

                update_config=1

                //ctrl_interface=mlan0 这部分应该是Android的特殊定义,不过用起来貌似会有错误,就使用下面通用的unix设置了

                ctrl_interface=DIR=/data/misc/wifi/wpa_supplicant GROUP=wifi

                ap_scan=1 #这里最好设置为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 []
     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;

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
服务
平台入驻

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

原厂代理商合作

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

闲置物料合作

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

生态合作

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

加工与定制类服务商合作

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

线上代理合作

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

邮件营销及广告服务

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>