AP6236 WiFi模块调试记录

Platform: RK3368
OS: Android 6.0
Kernel: 3.10.0

文章目录

  • AP6236 WiFi模块调试记录
    • 内核驱动移植
      • 1. 更新驱动
        • 1.1 修改驱动代码,适配rk平台
      • 2. 修改RK平台代码
      • 3 修改dts文件中的wifi配置,修改wireless-wlan节点里面:
    • Android系统适配
    • 遇到的问题
      • 1. 蓝牙打不开
      • 2. 在系统设置->WLAN中打开WiFi自动关闭
      • 3. sdmmc通信报错
      • 4. 32k晶振不起振
      • 5. Wifi信号差

内核驱动移植

1. 更新驱动

先将供应商给的最新wifi驱动更新到kernel中:drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/

1.1 修改驱动代码,适配rk平台

修改Makefile中的WiFi配置:

diff --git a/Makefile b/Makefile
index 5beada4..fdd9e22 100644
--- a/Makefile
+++ b/Makefile
@@ -2,16 +2,17 @@# 1. WL_IFACE_COMB_NUM_CHANNELS must be added if Android version is 4.4 with Kernel version 3.0~3.4,#    otherwise please remove it.-#CONFIG_BCMDHD := m
-#CONFIG_BCMDHD_SDIO := y
+CONFIG_BCMDHD := y
+CONFIG_BCMDHD_SDIO := y#CONFIG_BCMDHD_PCIE := y#CONFIG_BCMDHD_USB := y-#CONFIG_BCMDHD_OOB := y
+CONFIG_BCMDHD_OOB := y#CONFIG_BCMDHD_CUSB := yCONFIG_BCMDHD_PROPTXSTATUS := y
+#CONFIG_BCMDHD_AG := y#CONFIG_DHD_USE_STATIC_BUF := y
-#CONFIG_VTS_SUPPORT := y
+CONFIG_VTS_SUPPORT := yCONFIG_MACH_PLATFORM := y#CONFIG_BCMDHD_DTS := y
@@ -25,7 +26,9 @@ DHDCFLAGS = -Wall -Wstrict-prototypes -Dlinux -DBCMDRIVER                 \-DMULTIPLE_SUPPLICANT -DTSQ_MULTIPLIER -DMFP                          \-DWL_EXT_IAPSTA                                                       \-DENABLE_INSMOD_NO_FW_LOAD                                            \
-       -Idrivers/net/wireless/bcmdhd -Idrivers/net/wireless/bcmdhd/include
+       -Idrivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd                    \
+       -Idrivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include
+DHDOFILES = aiutils.o siutils.o sbutils.o bcmutils.o bcmwifi_channels.o   \dhd_linux.o dhd_linux_platdev.o dhd_linux_sched.o dhd_pno.o           \

修改dhd_gpio.c添加WiFi模块电源控制和sdio卡检测:

diff --git a/dhd_gpio.c b/dhd_gpio.c
index 0819d0c..25a44ba 100644
--- a/dhd_gpio.c
+++ b/dhd_gpio.c
@@ -2,6 +2,7 @@#include <osl.h>#include <dhd_linux.h>#include <linux/gpio.h>
+#include <linux/rfkill-wlan.h>#ifdef CUSTOMER_HW_PLATFORM#include <plat/sdhci.h>
@@ -64,6 +65,7 @@ dhd_wlan_set_power(int on}#endif /* BCMPCIE */#endif /* BUS_POWER_RESTORE */
+               rockchip_wifi_power(1);/* Lets customer power to get stable */mdelay(100);} else {
@@ -92,6 +94,7 @@ dhd_wlan_set_power(int onreturn -EIO;}}
+               rockchip_wifi_power(0);}return err;
@@ -116,6 +119,7 @@ static int dhd_wlan_set_carddetect(int present)#elif defined(BCMPCIE)printf("======== Card detection to detect PCIE card! ========\n");#endif
+               rockchip_wifi_set_carddetect(1);} else {#if defined(BCMSDIO)printf("======== Card detection to remove SDIO card! ========\n");
@@ -125,6 +129,7 @@ static int dhd_wlan_set_carddetect(int present)#elif defined(BCMPCIE)printf("======== Card detection to remove PCIE card! ========\n");#endif
+               rockchip_wifi_set_carddetect(0);}#endif /* BUS_POWER_RESTORE */@@ -157,6 +162,7 @@ static int dhd_wlan_get_mac_addr(unsigned char *buf)bcopy(macpad, buf+6, sizeof(macpad));}#endif /* EXAMPLE_GET_MAC_VER2 */
+       err = rockchip_wifi_mac_addr(buf);return err;}

修改dhd_linux.c添加WiFi驱动模块加载入口和指定WiFi固件路径:

diff --git a/dhd_linux.c b/dhd_linux.c
index 936a6c8..c63333f 100644
--- a/dhd_linux.c
+++ b/dhd_linux.c
@@ -481,7 +481,7 @@ static int is_reboot = 0;dhd_pub_t      *g_dhd_pub = NULL;#endif /* defined (BT_OVER_SDIO) */-atomic_t exit_in_progress = ATOMIC_INIT(0);
+static atomic_t exit_in_progress = ATOMIC_INIT(0);typedef struct dhd_if_event {struct list_head        list;
@@ -9915,6 +9915,8 @@ int dhd_bus_get_fw_mode(dhd_pub_t *dhdp)return dhd_get_fw_mode(dhdp->info);}+extern int rkwifi_set_firmware(char *fw, char *nvram);
+bool dhd_update_fw_nv_path(dhd_info_t *dhdinfo){int fw_len;
@@ -9925,6 +9927,8 @@ bool dhd_update_fw_nv_path(dhd_info_t *dhdinfo)const char *nv = NULL;const char *clm = NULL;const char *conf = NULL;
+       char firmware[100] = {0};
+       char nvram[100] = {0};#ifdef DHD_UCODE_DOWNLOADint uc_len;const char *uc = NULL;
@@ -9946,11 +9950,16 @@ bool dhd_update_fw_nv_path(dhd_info_t *dhdinfo)/* set default firmware and nvram path for built-in type driver *///     if (!dhd_download_fw_on_driverload) {
+               rkwifi_set_firmware(firmware, nvram);#ifdef CONFIG_BCMDHD_FW_PATHfw = CONFIG_BCMDHD_FW_PATH;
+#else
+               fw = firmware;#endif /* CONFIG_BCMDHD_FW_PATH */#ifdef CONFIG_BCMDHD_NVRAM_PATHnv = CONFIG_BCMDHD_NVRAM_PATH;
+#else
+               nv = nvram;#endif /* CONFIG_BCMDHD_NVRAM_PATH *///     }@@ -13276,7 +13285,7 @@ dhd_module_cleanup(void)printf("%s: Exit\n", __FUNCTION__);}-static void __exit
+static void dhd_module_exit(void){atomic_set(&exit_in_progress, 1);
@@ -13285,11 +13294,12 @@ dhd_module_exit(void)dhd_destroy_to_notifier_skt();}-static int __init
+static int dhd_module_init(void){int err;int retry = POWERUP_MAX_RETRY;
+       atomic_set(&exit_in_progress, 0);printf("%s: in %s\n", __FUNCTION__, dhd_version);@@ -13347,7 +13357,46 @@ dhd_reboot_callback(struct notifier_block *this, unsigned long code, void *unusereturn NOTIFY_DONE;}+#ifdef CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP
+static int wifi_init_thread(void *data)
+{
+       dhd_module_init();
+
+       return 0;
+}
+#endif
+
+int rockchip_wifi_init_module_rkwifi(void)
+{
+    printk("=======================================================\n");
+    printk("==== Launching Wi-Fi driver! (Powered by Rockchip) ====\n");
+    printk("=======================================================\n");
+#ifdef CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP
+       struct task_struct *kthread = kthread_run(wifi_init_thread, NULL, "wifi_init_thread");
+       if (IS_ERR(kthread))
+               pr_err("create wifi_init_thread failed.\n");
+    return 0;
+#else
+       return dhd_module_init();
+#endif
+}
+
+void rockchip_wifi_exit_module_rkwifi(void)
+{
+    printk("=======================================================\n");
+    printk("== Dis-launching Wi-Fi driver! (Powered by Rockchip) ==\n");
+    printk("=======================================================\n");
+       dhd_module_exit();
+}+#ifdef CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP
+late_initcall(rockchip_wifi_init_module_rkwifi);
+module_exit(rockchip_wifi_exit_module_rkwifi);
+#else
+EXPORT_SYMBOL(rockchip_wifi_init_module_rkwifi);
+EXPORT_SYMBOL(rockchip_wifi_exit_module_rkwifi);
+#endif
+#if 0#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)#if defined(CONFIG_DEFERRED_INITCALLS) && !defined(EXYNOS_PCIE_MODULE_PATCH)#if defined(CONFIG_MACH_UNIVERSAL7420) || defined(CONFIG_SOC_EXYNOS8890) || \
@@ -13370,6 +13419,7 @@ module_init(dhd_module_init);module_exit(dhd_module_exit);+#endif/** OS specific functions required to implement DHD driver in OS independent way*/

修改dhd_linux_platdev.c,替换中断标志:

diff --git a/dhd_linux_platdev.c b/dhd_linux_platdev.c
index 3c6c171..a71a7d8 100644
--- a/dhd_linux_platdev.c
+++ b/dhd_linux_platdev.c
@@ -172,11 +172,19 @@ void* wifi_platform_get_prealloc_func_ptr(wifi_adapter_info_t *adapter)int wifi_platform_get_irq_number(wifi_adapter_info_t *adapter, unsigned long *irq_flags_ptr){
+       if (irq_flags_ptr) {
+               *irq_flags_ptr = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL | IORESOURCE_IRQ_SHAREABLE) & IRQF_TRIGGER_MASK;
+       }
+
+       return rockchip_wifi_get_oob_irq();
+
+/*if (adapter == NULL)return -1;if (irq_flags_ptr)*irq_flags_ptr = adapter->intr_flags;return adapter->irq_num;
+       */}int wifi_platform_set_power(wifi_adapter_info_t *adapter, bool on, unsigned long msec)

2. 修改RK平台代码

添加模块信息:
menuconfig添加AP6236选项,用来适配此wifi模块:

diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 10c0979409d..6c14c58909e 100755
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -92,6 +92,10 @@ choicebool "AP6234"depends on RKWIFI+       config AP6236
+               bool "AP6236"
+               depends on RKWIFI
+config AP6330bool "AP6330"depends on RKWIFI

添加AP6236的固件所在路径:

diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/rk_wifi_config.c b/drivers/net/wireless/rockchip_wlan/rkwifi/rk_wifi_config.c
index db94e7e79f6..562e1c91268 100644
--- a/drivers/net/wireless/rockchip_wlan/rkwifi/rk_wifi_config.c
+++ b/drivers/net/wireless/rockchip_wlan/rkwifi/rk_wifi_config.c
@@ -62,6 +62,11 @@ if (chip == WIFI_AP6234) {sprintf(nvram, "%s%s", ANDROID_FW_PATH, "nvram_AP6234.txt");}+if (chip == WIFI_AP6236) {
+    sprintf(fw, "%s%s", ANDROID_FW_PATH, "fw_bcm43436b0.bin");
+       sprintf(nvram, "%s%s", ANDROID_FW_PATH, "nvram_ap6236.txt");
+}
+if (chip == WIFI_AP6441) {sprintf(fw, "%s%s", ANDROID_FW_PATH, "fw_bcm43341b0_ag.bin");sprintf(nvram, "%s%s", ANDROID_FW_PATH, "nvram_AP6441.txt");diff --git a/drivers/net/wireless/rockchip_wlan/wifi_sys/rkwifi_sys_iface.c b/drivers/net/wireless/rockchip_wlan/wifi_sys/rkwifi_sys_iface.c
index 2746daf3ae7..7fb560d08e6 100755
--- a/drivers/net/wireless/rockchip_wlan/wifi_sys/rkwifi_sys_iface.c
+++ b/drivers/net/wireless/rockchip_wlan/wifi_sys/rkwifi_sys_iface.c
@@ -46,7 +46,12 @@ static ssize_t wifi_chip_read(struct class *cls, struct class_attribute *attr, ccount = sprintf(_buf, "%s", "AP6234");printk("Current WiFi chip is AP6234.\n");}
-
+
+       if(type == WIFI_AP6236) {
+           count = sprintf(_buf, "%s", "AP6236");
+           printk("Current WiFi chip is AP6236.\n");
+       }
+if(type == WIFI_AP6330) {count = sprintf(_buf, "%s", "AP6330");printk("Current WiFi chip is AP6330.\n");diff --git a/include/linux/rfkill-wlan.h b/include/linux/rfkill-wlan.h
index 071f1b86c0b..4bf29511171 100755
--- a/include/linux/rfkill-wlan.h
+++ b/include/linux/rfkill-wlan.h
@@ -49,6 +49,7 @@ enum {WIFI_AP6210,WIFI_AP6212,WIFI_AP6234,
+    WIFI_AP6236,WIFI_AP6330,WIFI_AP6335,WIFI_AP6354,diff --git a/net/rfkill/rfkill-wlan.c b/net/rfkill/rfkill-wlan.c
index 411dbfba70e..ba041bd10ee 100755
--- a/net/rfkill/rfkill-wlan.c
+++ b/net/rfkill/rfkill-wlan.c
@@ -88,6 +88,8 @@ static const char wlan_name[] =#endif#elif defined(CONFIG_AP6330)"ap6330"
+#elif defined(CONFIG_AP6236)
+               "ap6236"#elif defined(CONFIG_AP6476)"ap6476"#elif defined(CONFIG_AP6493)
@@ -113,6 +115,8 @@ int get_wifi_chip_type(void)type = WIFI_AP6181;} else if (strcmp(wifi_chip_type_string, "ap6234") == 0) {type = WIFI_AP6234;
+    } else if (strcmp(wifi_chip_type_string, "ap6236") == 0) {
+        type = WIFI_AP6236;} else if (strcmp(wifi_chip_type_string, "ap6330") == 0) {type = WIFI_AP6330;} else if (strcmp(wifi_chip_type_string, "ap6335") == 0) {

AP6236的蓝牙需要添加串口RTS控制,否则串口不通:

diff --git a/net/rfkill/rfkill-bt.c b/net/rfkill/rfkill-bt.c
index 3df55f92d07..072cacb0e5f 100755
--- a/net/rfkill/rfkill-bt.c
+++ b/net/rfkill/rfkill-bt.c
@@ -97,6 +97,8 @@ static const char bt_name[] =#endif#elif defined(CONFIG_AP6330)"ap6330"
+#elif defined(CONFIG_AP6236)
+                       "ap6236"#elif defined(CONFIG_AP6476)"ap6476"#elif defined(CONFIG_AP6493)
@@ -266,7 +268,7 @@ static int rfkill_rk_set_power(void *data, bool blocked)struct rfkill_rk_data *rfkill = data;struct rfkill_rk_gpio *poweron = &rfkill->pdata->poweron_gpio;struct rfkill_rk_gpio *reset = &rfkill->pdata->reset_gpio;
-#if defined(CONFIG_AP6210) || defined(CONFIG_AP6335)
+#if defined(CONFIG_AP6210) || defined(CONFIG_AP6335) || defined(CONFIG_AP6236)struct rfkill_rk_gpio* rts = &rfkill->pdata->rts_gpio;struct pinctrl *pinctrl = rfkill->pdata->pinctrl;#endif
@@ -307,7 +309,7 @@ static int rfkill_rk_set_power(void *data, bool blocked)msleep(20);gpio_direction_output(reset->io, reset->enable);}
-#if defined(CONFIG_AP6210) || defined(CONFIG_AP6335)
+#if defined(CONFIG_AP6210) || defined(CONFIG_AP6335) || defined(CONFIG_AP6236)if (pinctrl != NULL && gpio_is_valid(rts->io)){pinctrl_select_state(pinctrl, rts->gpio_state);

3 修改dts文件中的wifi配置,修改wireless-wlan节点里面:

 wireless-wlan {compatible = "wlan-platdata";rockchip,grf = <&grf>;/* wifi_chip_type - wifi chip define* ap6210, ap6330, ap6335* rtl8188eu, rtl8723bs, rtl8723bu* esp8089*/wifi_chip_type = "ap6236";sdio_vref = <3300>; //1800mv or 3300mv//keep_wifi_power_on;//power_ctrl_by_pmu;//power_pmu_regulator = "rk818_ldo8_reg";//power_pmu_enable_level = <1>; //1->HIGH, 0->LOW//vref_ctrl_enable;//vref_ctrl_gpio = <&gpio0 GPIO_A2 GPIO_ACTIVE_HIGH>;//vref_pmu_regulator = "rk818_ldo8_reg";//vref_pmu_enable_level = <1>; //1->HIGH, 0->LOWWIFI,poweren_gpio = <&gpio3 GPIO_A4 GPIO_ACTIVE_HIGH>;WIFI,host_wake_irq = <&gpio3 GPIO_A7 GPIO_ACTIVE_LOW>;//WIFI,reset_gpio = <&gpio0 GPIO_A2 GPIO_ACTIVE_LOW>;status = "okay";};wireless-bluetooth {compatible = "bluetooth-platdata";//wifi-bt-power-toggle;uart_rts_gpios = <&gpio2 GPIO_D3 GPIO_ACTIVE_LOW>;pinctrl-names = "default","rts_gpio";pinctrl-0 = <&uart0_rts>;pinctrl-1 = <&uart0_rts_gpio>;//BT,power_gpio = <&gpio3 GPIO_A3 GPIO_ACTIVE_HIGH>;BT,reset_gpio = <&gpio3 GPIO_D5 GPIO_ACTIVE_HIGH>; //bt_disBT,wake_gpio = <&gpio3 GPIO_A6 GPIO_ACTIVE_HIGH>;BT,wake_host_irq = <&gpio3 GPIO_A2 GPIO_ACTIVE_HIGH>;status = "okay";};

Android系统适配

将wifi的firmware和nvram加到Android源码目录external/wlan_loader,与前面添加的模块信息中的文件名一致,编译时会自动复制到system/etc/firmware/:

firmware/fw_bcm43436b0.bin b/firmware/fw_bcm43436b0.bin
firmware/fw_bcm43436b0_apsta.bin b/firmware/fw_bcm43436b0_apsta.bin
firmware/nvram_ap6236.txt

遇到的问题

1. 蓝牙打不开

日志:

01-21 11:30:01.591  1122  1172 I bt_bluedroid: enable
01-21 11:30:01.592  1122  1173 D bt_stack_manager: event_start_up_stack is bringing up the stack.
01-21 11:30:01.605  1122  1173 I bt_hci  : start_up
01-21 11:30:01.611  1122  1173 D WifiHW  : check_wifi_chip_type_string: AP6236
01-21 11:30:01.611  1122  1173 D bt_vendor: vendor_open load libbt-vendor.so
01-21 11:30:01.622  1122  1173 I bt_vendor: alloc value 0xf3bf9301
01-21 11:30:01.622  1122  1173 I bt_vendor: init
01-21 11:30:01.622  1122  1173 E bt_userial_vendor: /dev/ttyS0 vnd_userial.port_name=libbt-vendor.so
01-21 11:30:01.622  1122  1173 I bt_vnd_conf: Attempt to load conf from /etc/bluetooth/bt_vendor.conf
01-21 11:30:01.623  1122  1173 I bt_hci  : start_up bluetooth_rtk_h5_flag :0
01-21 11:30:01.623  1122  1173 D bt_vendor: op for 0
01-21 11:30:01.623  1122  1173 D bt_upio : is_emulator_context : 0
01-21 11:30:01.623  1122  1173 D bt_upio : is_rfkill_disabled ? [0]
01-21 11:30:01.623  1122  1173 D bt_upio : is_rfkill_disabled ? [0]
01-21 11:30:01.650  1122  1173 D bt_upio : Delay 500ms for bluetooth power up
01-21 11:30:02.150  1122  1173 D bt_vendor: op for 0
01-21 11:30:02.150  1122  1173 D bt_upio : is_emulator_context : 0
01-21 11:30:02.150  1122  1173 D bt_upio : is_rfkill_disabled ? [0]
01-21 11:30:02.290  1122  1173 D bt_upio : Delay 500ms for bluetooth power up
01-21 11:30:02.790  1122  1173 D bt_vendor: Delay for a while after BT power on
01-21 11:30:02.991  1122  1173 D bt_hci  : start_up starting async portion
01-21 11:30:02.991  1122  1203 I bt_hci  : event_finish_startup
01-21 11:30:02.991  1122  1203 I bt_hci_h4: hal_open
01-21 11:30:02.991  1122  1203 D bt_vendor: op for 3
01-21 11:30:02.991  1122  1203 I bt_userial_vendor: userial vendor open: opening /dev/ttyS0
01-21 11:30:02.992  1122  1203 I bt_userial_vendor: device fd = 52 open
01-21 11:30:02.993  1122  1203 D bt_vendor: op for 1
01-21 11:30:03.000  1122  1203 I bt_hwcfg: bt vendor lib: set UART baud 1500000
01-21 11:30:03.203  1122  1203 D bt_hwcfg: Chipset BCM43430B0
01-21 11:30:03.204  1122  1203 D bt_hwcfg: Target name = [BCM43430B0]
01-21 11:30:03.204  1122  1203 D WifiHW  : check_wifi_chip_type_string: AP6236
01-21 11:30:03.204  1122  1203 I bt_hwcfg: BT module name is: AP6236, p_chip_id_str = BCM43430B0
01-21 11:30:03.204  1122  1203 I bt_hwcfg: Target HCD file name is: BCM43430B0.hcd
01-21 11:30:03.206  1122  1203 D bt_hwcfg: Target name = [BCM43430]
01-21 11:30:03.206  1122  1203 D WifiHW  : check_wifi_chip_type_string: AP6236
01-21 11:30:03.206  1122  1203 I bt_hwcfg: BT module name is: AP6236, p_chip_id_str = BCM43430
01-21 11:30:03.206  1122  1203 I bt_hwcfg: Target HCD file name is: BCM43430.hcd
01-21 11:30:03.207  1122  1203 E bt_hwcfg: vendor lib preload failed to locate firmware patch file
01-21 11:30:03.207  1122  1203 I bt_hwcfg: Setting local bd addr to 22:22:95:1C:00:01
01-21 11:30:03.208  1122  1203 I bt_hwcfg: vendor lib fwcfg completed
01-21 11:30:03.208  1122  1203 I bt_vendor: firmware callback
01-21 11:30:03.208  1122  1203 I bt_hci  : firmware_config_callback

解决办法:
将BCM43430.hcd文件放到vendor/rockchip/common/bluetooth/lib/firmware/目录下面,编译时会自动拷贝到/system/vendor/firmware/目录下面.

2. 在系统设置->WLAN中打开WiFi自动关闭

具体现象:

在系统设置->WLAN中,先连接一个WiFi热点,然后重启板子;进入系统后WiFi已经自动连接上之前保存的SSID,然后关闭WiFi再打开WiFi,出现打开WiFi自动关闭情况.

logcat:

[   73.378836]  [0:WifiStateMachin:  629] wl_android_wifi_on: Success
[   73.418263]  [0:WifiStateMachin:  629] [dhd] CFG80211-ERROR) __wl_update_wiphybands : error reading vhtmode (-23)
[   73.432993]  [0:WifiStateMachin:  629] dhd_open : the lock is released.
[   73.433079]  [0:WifiStateMachin:  629] dhd_open: Exit ret=0
[   73.754200]  [0: wpa_supplicant: 1394] P2P interface registered
[   73.754343]  [0: wpa_supplicant: 1394] wl_cfgp2p_add_p2p_disc_if: wdev: ffffffc02302ec00, wdev->net:           (null)
[   73.766470]  [2:        dhd_dpc: 1389] WLC_E_IF: NO_IF set, event Ignored
[   73.769732]  [1: wpa_supplicant: 1394] P2P interface started
[   73.861211]  [3: wpa_supplicant: 1394] dhd_ioctl_entry module exit in progress
[   73.862132]  [3: wpa_supplicant: 1394] dhd_ioctl_entry module exit in progress
[   73.863011]  [3: wpa_supplicant: 1394] dhd_ioctl_entry module exit in progress
[   73.869035]  [3: wpa_supplicant: 1394] dhd_ioctl_entry module exit in progress

解决办法:

修改WiFi驱动dhd_linux.c,将exit_in_progress初始化放到dhd_module_init中;因为驱动时build-in方式编译进kernel的,所以需要注意atomic的配对使用.

3. sdmmc通信报错

出错日志:

rk_sdmmc: ERROR Cmd response timeout hold times overflow. [mmc0]

解决办法:
修改/system/etc/firmware/config.txt,关闭自动休眠.

dhd_slpauto=0

或者采用轮询方式

dhd_poll=0

4. 32k晶振不起振

查看规格书发现32K晶振1脚需要悬空.

5. Wifi信号差

26M晶振的CL参数需要调整;

AP6236 WiFi模块调试记录相关推荐

  1. WIFI模块调试_RTL8189FTV

    WIFI模块调试记录 本文调试的模块是:BL_M8189FS6(必联的WIFI模块) 简单介绍: 该模块就是用的毛蟹的8189FTV(全程应该是:RTL8189FTV,和RTL8189ETV是有区别的 ...

  2. 2020-02-24 RK3288 Android7.1 5.1 增加AP6256 WI-FI Bluetooth调试记录

    RK3288 Android7.1 5.1 增加AP6256 WI-FI Bluetooth调试记录 一.硬件连接图,AP6335.AP6255.AP6256 Pin对Pin,可以直接替换. 二.原本 ...

  3. WG225模块(SDIO WIFI)调试记录

    由于笔记是在wznote做的,图片部分无法粘贴过来,如需要看图可以点击此处查看 主芯片:TI-DM8168 Linux版本:2.6.37 WG225是深圳天工测控做的一款wifi+蓝牙的芯片模组 首先 ...

  4. ESP8266 WIFI模块调试及在QT Windows下的通讯

    目录 一.前言 二.相关知识 1.  ESP8266 ESP-01 2. 接线 3. 调试 4. 通信说明 5. QT实现方案说明 一.前言 本例简述ESP8266 ESP-01 WIFI模块的基础调 ...

  5. STM32对接涂鸦wifi模块项目记录(智能插座完善版本)

    应项目需求,客户需要对接涂鸦平台,从了解平台到样品实际落地,还是挺方便的, 做过的一个项目,人体感应智能插座项目,对接涂鸦云 : 硬件平台:STM32F103 WIFI模块: 涂鸦WiFi(型号见文章 ...

  6. Lora模块调试记录

    一.Lora模块调试启动过程调试 1.Lora主程序启动 这个报错主要是GPS模块使用了另外一路的spi,在检查spi的模式.速率等等时候报错.目前没有GPS模块所以不影响正常运行情况下的报错信息忽略 ...

  7. 基于串口调试助手的WIFI模块调试-FPGA简单联网(点灯)

    根据正点原子的<ATK-ESP8266 WIFI用户手册>,使用XCOM V2.2串口调试助手测试WIFI模块[26].在本系统中运用到的功能主要是TCP/IP模式中的TCP Client ...

  8. NXP(imx8qxp)上android11的EG25-G(4G)模块调试记录

    文章目录 一.前期准备 二.底层配置 三.添加厂商提供的ril.so库 四.添加对应的配置 五.对应的报错解决 5.1 状态栏里面没有对应的 Mobile data SIM图标 5.2重复打印启动ri ...

  9. Simcom 5G模块调试记录

    最近做一个项目需要用到5G模块,写个博客记录一下调试过程.调试尚未完成,先调到哪写到哪.使用的开发板是ADI公司的ADSP-SC589开发板,Linux内核版本是**经过ADI公司剪裁的4.0.0版本 ...

最新文章

  1. 为绑定的NSArrayController设置默认的排序
  2. [C#]委托和事件(讲解的非常不错)
  3. 未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342...
  4. java bean与xml转换_Java Bean与xml互相转换的方法分析
  5. lua 的编译和使用
  6. ie-css3.htc参数无效,ie-css3.htc怎么用?
  7. RestFramework之认证组件
  8. python获取文件名不含后缀名_大部分Python资料都没有说到的重点-用实战教你解决问题的思路...
  9. 从背包问题优化详解动态规划思想
  10. 行内元素、块级元素和行内块级元素
  11. python logging使用_[译]Python Logging 使用指南
  12. Python基础——使用with结构打开多个文件
  13. Android MonkeyRunner
  14. 一周信创舆情观察(11.1~11.7)
  15. 使用md5对文件去重
  16. oracle英文怎么转中文,ORACLE英文字符集转中文
  17. 关于Id returned 1exit status的解决办法
  18. Android 模块化开发
  19. PLM( 产品生命周期管理)的简单介绍
  20. 日常交通工具日语词汇

热门文章

  1. 计算机教师工作业绩总结,【18-19一】【总结】小学信息技术教师个人工作总结...
  2. js 实现iFonts书签动画
  3. 如何删除正在运行的dll文件
  4. telegtram的通信协议MTproto2.0学习1 之 (tdLib编译使用)
  5. JAVA实现学生和老师同页面登录
  6. Android 尝试写一份Linux 字符设备驱动
  7. Mac电脑中的隐藏资源库在哪
  8. Java——Collections工具类
  9. mybatis —— ORM框架
  10. 云服务器流量是什么东西_云服务器1g流量能用多久