我是靠谱客的博主 欣喜百褶裙,最近开发中收集的这篇文章主要介绍S5p4418平台AP6212 WIFI稳定性的解决过程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

平台:

        s5p4418, ubuntu-core(14.04), WIFI(AP6212)

 

一、问题描述:

         WIFI(AP6212)作为ap模式时, 手机有时搜索不到WIFI热点。(测了五块板子,每块板子重启10次,其中三块大约有3-4次搜索不到板子的WIFI热点)

 

二、解决过程:

1. 更新原厂提供的驱动版本

         1.1 根据原厂提供的< AP6212新旧版兼容说明.pdf> 修改,发现原厂提供的.bin文件和其他文件并不能更新驱动版本。

         1.2 同原厂沟通,原厂重新提供了一份WIFI驱动的源代码bcmdhd.1.201.59.x.cn, 用于加入到内核kernel-3.4.39

         1.3 bcmdhd.1.201.59.x.cn加入到内核源码kernel-3.4.39的过程:

                   1.3.1bcmdhd.1.201.59.x.cn目录下的文件,替换掉kernel-3.4.39/drivers/net/wireless/bcmdhd 目录下所有的文件。

                   1.3.2 跟根据原理图修改了dhd_gpio.c中的gpio_wl_reg_ongpio_wl_host_wake的值,如下图所示:

                       

                   1.3.3. 编译上述修改的linux内核源码,得到uImage,并制作成boot.img 发现WIFI并没有起来。

                   部分错误log如下:

                             

        测量gpio_wl_reg_ongpio_wl_host_wake两处引脚电压都为3.3v

                   经分析应该是MMC检测错误.

        

         1.4 修改MMC驱动

                   1.4.1 修改kernel-3.4.39/drivers/net/wireless/bcmdhd/dhd_gpio.c 中的dhd_wlan_set_carddetect 函数

                  

                  

                   替换为:

                  

                  1.4.2修改kernel-3.4.39/drivers/net/wireless/bcmdhd/dhd_gpio.c 中的force_presence_change 函数声明.

                  //extern void force_presence_change(struct platform_device *dev, int state);

                   修改为:

                  extern void force_presence_change(/*struct platform_device *dev, */int state);

 

                   1.4.3 编译内核得到uImage ,并制作boot.img

                           经测试,新版本驱动已更新成功,1.201.59.06更新到1.201.59.11

               

                  

         1.5 新版本驱动已更新成功,测试之后发现仍然存在以下问题:

                  1.5.1 手机有时搜索不到WIFI热点,具体如下:

                           测了五块板子,每块板子重启10次,其中三块大约有3-4次搜索不到板子的WIFI热点

 

                  1.5.2 经测试分析,搜索不到WIFI热点分为以下两种情况:

                           a)  u-boot启动成功,内核并没有加载, 此时发现电流偏低,测试当然搜索不到WIFI热点

                            b)  发现系统已启动,命令查看wlan0均已加载成功,有时候手动关闭wlan,再次打开之后,可以搜索得到

                                WIFI热点; 但有时候这种操作依然搜索不到

 

2. 解决系统没有启动的问题.

         解决方案:电源供电,在WIFI电源部分增加一个电容蓄电

         结果:

         1) 发现内核没加载成功的情况基本解决

         2) 发现系统已启动,命令查看wlan0均已加载成功, 测了五块板子,每块板子重启10次,其中三块大约有1-2次搜索不到板子的WIFI热点

 

        

3. 解决系统已启动,WIFI驱动加载成功,但是不稳定的问题

查看各种配置文件

结果,还是没有完全解决!!!

 

 

4.重新对WIFI原理图检查,发现 7脚bt-host-wake需要加一个上拉电阻

(原厂协助检查)

 

5. 发现CONFIG_MMC_DW_IDMAC没有去掉,把CONFIG_MMC_DW_IDMAC去掉

 

去掉重新编译内核uImage,制作成boot.img

 

 

6. 替换fw_bcm43438a1.bin为fw_bcm43438a1_apsta.bin

原厂建议:

是客戶的op_mode設置錯了

NG:

[    7.356000] Final fw_path=/etc/firmware/fw_bcm43438a1.bin

[    7.610000] Firmware up: op_mode=0x0005, MAC=8c:f7:10:0f:af:ce

OK:

[   10.034000] Final fw_path=/etc/firmware/fw_bcm43438a1.bin

[   10.193000] Firmware up: op_mode=0x0002, MAC=8c:f7:10:0f:af:dc

 

建議客戶用AP mode時就用fw_bcm43438a1_apsta.bin,而不是用fw_bcm43438a1.bin

 

 

 

操作步骤:

修改linux kernel的.config配置文件

cd /home/kernel-3.4.39/

vim .config

 

然后重新编译内核生成uImage,制作成boot.img

 

自此,WIFI稳定性能已解决!

最后

以上就是欣喜百褶裙为你收集整理的S5p4418平台AP6212 WIFI稳定性的解决过程的全部内容,希望文章能够帮你解决S5p4418平台AP6212 WIFI稳定性的解决过程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部