imx6sx平台BCM4335WIFI+BT模块驱动调试

BCM的代码相对保密一些,所以提供了一些bin文件,首先把模块厂商提供的配置文件和相关bin文件用adb放到板子上/etc/wifi/文件下

例adb remount
 adb push bcmdhd.cal /etc/wifi/
 adb push fw_bcmdhd.bin /etc/wifi/
 adb push fw_bcmdhd_apsta.bin /etc/wifi/
 adb push fw_bcmdhd_mfgtest.bin /etc/wifi/
 adb push p2p_supplicant.conf /etc/wifi/
 adb push sta.conf /etc/wifi/
 adb push wpa_supplicant.conf /etc/wifi/
 adb push wpa_supplicant_ap.conf /etc/wifi/

如果你adb不好用也可以直接把这些文件拷贝到android代码android/out/target/product/sabresd_6sx/system/etc/wifi/下面 重新编译bootimage即可

下面开启内核IEEE80211相关配置,我直接修改imx_v7_android_defconfig配置文件

CONFIG_CFG80211=y
CONFIG_CFG80211_WEXT=y
CONFIG_MAC80211=y

下面需要对设备数进行修改,solox默认支持Murata的wifi+bt模块,在调试的时候是将slot3那个sdio口配置为wifi的接口,murata_quick_start_guide_android 其中wl_reg接到了slot2的第9引脚上(这个可选择,将对应的引脚配置成gpio模式就行了),wl_host_wake可以悬空。这里提供imxq的dts文件仅做参考

wlreg_on: fixedregulator@100 {
 compatible = "regulator-fixed";
 regulator-min-microvolt = <3300000>;
 regulator-max-microvolt = <3300000>;
 regulator-name = "wlreg_on";
 gpio = <&gpio2 22 0>;
 startup-delay-us = <30000>;
 enable-active-high;
};

bcmdhd_wlan_1: bcmdhd_wlan@0 {
 compatible = "android,bcmdhd_wlan";
 gpios = <&gpio3 15 0>; //wl host wakeup
 wlreg_on-supply = <&wlreg_on>;
};

pinctrl_usdhc3: usdhc3grp {
 fsl,pins = <
 MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
 MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059
 MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
 MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
 MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
 MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
 MX6QDL_PAD_EIM_A16__GPIO2_IO22 0x80000000
 MX6QDL_PAD_EIM_DA15__GPIO3_IO15 0x80000000
 >;
};

&usdhc3 {
 pinctrl-names = "default";
 pinctrl-0 = <&pinctrl_usdhc3>;
 bus-width = <4>;
 cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
 wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
 no-1-8-v;
 wifi-host;
 non-removable;
 keep-power-in-suspend;
 enable-sdio-wakeup;
 status = "okay";
};

然后再修改kernel\drivers\net\wireless\Makefile和Kconfig,增加编译bcmdhd,为了方便调试我们先将驱动生成模块。

编译出来为模式:bcmdhd.ko,将编译出来的bcmdhd.ko push到/system/lib/modules下。下面开始相关的测试工作。

加载驱动模块,加载的过程中可能会报错,如果不是致命错误可以暂时不要理睬,进行下面步骤,如果出现致命错误,首先检查的kernel配置,其次检查模块和wifi相关
这几个脚的状态,比如电压等。最后查硬件布线等等。根据以往经验,可能硬件出现问题比较多,所以硬件设计一定要参考模块规格书。如果这都没有解决建议尝试到bcm官网下载相应的bin文件或者向厂商核实bin文件………………


 insmod     /system/lib/modules/bcmdhd.ko   "firmware_path=/system/etc/wifi/fw_ bcmdhd.bin nvram_path=/system/etc/wifi/bcmdhd.cal"

开启wpa_supplicant


 /system/bin/wpa_supplicant -iwlan0 -Dnl80211 -c/etc/wifi/wpa_supplicant.conf -m/etc/wifi/p2p_supplicant.conf -puse_p2p_group_interface=1p2p_device=1 -e/data/misc/wifi/entropy.bin -g/data/misc/wifi/sockets/wpa_wlan0 -dd -B

开启后ps看一下是否wpa_supplicant进程存在,如果不存在下面的命令会提示无法连接的错误

wpa_cli -p/data/misc/wifi/sockets -iwpa_wlan0
如果一切都正常,那就来连接下wifi试试,测试连接无密码AP

 wpa_cli> IFNAME=wlan0 add_network
 wpa_cli> IFNAME=wlan0 set_network 0 ssid "CMCC" //0为add_network时显示的[network id]
 wpa_cli> IFNAME=wlan0 set_network 0 key_mgmt NONE
 wpa_cli> IFNAME=wlan0 enable_network 0

猜你喜欢

转载自blog.csdn.net/bin_zhang1/article/details/80708392
今日推荐