CPU:RK3566
编译环境:Ubuntu18.04
内核版本:kernel 4.19
因为RK3566/RK3568支持SDIO3.0并且向下兼有SDIO2.0接口,由于核心板在VCC_IO6上将电压定为了3.3V,无法改变为1.8V,所以没有办法支持SDIO3.0,所以这次需要调试SDIO2.0模式下的WiFi。


从Rockchip软件包中的Rockchip_Developer_Guide_Linux_WIFI_BT_CN.pdf doc操作文档可以得出:WiFi 部分共有两部分供电组成,一个是主控端的IO:SDIO_CLK/CMD/D0~D3,它需要外部供电,如VCCIO6。另一个是WiFi模块的IO的供电,wifi模块中的22引脚,两部分供电必须一致否则会导致WiFi异常;对于支持SDIO3.0 超高速模式的WiFi模块,必须供电1.8V,但对于仅支持SDIO2.0高速模式的WiFi模块,供电1.8/3.3V都是可以的,切记必须保持一致;
第一步
我们先用万用表测量这些引脚的电压,如果SDIO_CLK/CMD/D0~D3、VCCIO6电压都一样的话,视为正常,可以认为电源管理这一项没有问题。
第二步
查看一下ap6256芯片手册文档,看到如下图,其中wifi中的第9脚表明,如果需要SDIO3.0模式的话就把该引脚拉高,并且SDIO_CLK/CMD/D0~D3这些引脚电平为1.8V,如果SDIO2.0的话把该引脚拉低,并且SDIO_CLK/CMD/D0-D3这些引脚电平为3.3V。显然,这次我们需要将该引脚拉低。
这里有个小贴士,如果将WIFI第29脚接地的话,用O欧电阻串联,我试过用10K电阻串联,结果还是高电平1。

第三步
设备树的配置和WiFi驱动模块的编译
DTS:IO电源域的配置
&pmu_io_domains {
status = "okay";
pmuio1-supply = <&vcc3v3_pmu>;
pmuio2-supply = <&vcc3v3_pmu>;
vccio1-supply = <&vccio_acodec>;
vccio3-supply = <&vccio_sd>;
vccio4-supply = <&vcc_3v3>;
vccio5-supply = <&vcc_3v3>;
vccio6-supply = <&vcc_3v3>;
vccio7-supply = <&vcc_3v3>;
};
sdio_pwrseq: sdio-pwrseq {
compatible = "mmc-pwrseq-simple";
clocks = <&rk809 1>;
clock-names = "ext_clock";
pinctrl-names = "default";
pinctrl-0 = <&wifi_enable_h>;
/*
* On the module itself this is one of these (depending
* on the actual card populated):
* - SDIO_RESET_L_WL_REG_ON
* - PDN (power down when low)
*/
reset-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
};
wireless_wlan: wireless-wlan {
compatible = "wlan-platdata";
pinctrl-names = "default";
rockchip,grf = <&grf>;
wifi_chip_type = "ap6256";
pinctrl-0 = <&wifi_host_wake_irq>;
WIFI,host_wake_irq = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&sdmmc2 {
max-frequency = <50000000>;
supports-sdio;
bus-width = <4>;
disable-wp;
cap-sd-highspeed;
cap-sdio-irq;
keep-power-in-suspend;
mmc-pwrseq = <&sdio_pwrseq>;
non-removable;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>;
sd-uhs-sdr104;
status = "okay";
};
第四步
模块正常加载的打印信息
安装上一步编译好的wifi模块
[root@RK356X:/]# insmod bcmdhd.ko
[ 13.746289] dhd_module_init: in Dongle Host Driver, version 1.57# 9.77.41.22 (r-20191105-2)(20191120-1)
[ 13.746322] ======== dhd_wlan_init_plat_data ========
[ 13.746332] [WLAN_RFKILL]: rockchip_wifi_get_oob_irq: Enter
[ 13.746431] dhd_wlan_init_gpio: WL_HOST_WAKE=-1, oob_irq=101, oob_irq_flags=0x414
[ 13.746444] dhd_wlan_init_gpio: WL_REG_ON=-1
[ 13.746454] dhd_wifi_platform_load: Enter
[ 13.746465] Power-up adapter 'DHD generic adapter'
[ 13.747680] wifi_platform_set_power = 1
[ 13.747702] ======== PULL WL_REG_ON(-1) HIGH! ========
[ 13.747709] [WLAN_RFKILL]: rockchip_wifi_power: 1
[ 13.747716] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[ 13.747723] [WLAN_RFKILL]: wifi turn on power [GPIO-1-0]
[ 14.052582] wifi_platform_bus_enumerate device present 1
[ 14.052607] ======== Card detection to detect SDIO card! ========
[ 14.052614] mmc3:mmc host rescan start!
[ 14.068802] bcmsdh_register: register client driver
[ 14.069043] bcmsdh_sdmmc_probe: Enter num=1
[ 14.069667] bcmsdh_sdmmc_probe: Enter num=2
[ 14.069692] bus num (host idx)=3, slot num (rca)=1
[ 14.069704] found adapter info 'DHD generic adapter'
[ 14.069862] sdioh_attach: set sd_f2_blocksize 256
[ 14.069981] sdioh_attach: sd clock rate = 0
[ 14.070303] dhdsdio_probe : no mutex held. set lock
[ 14.070426] F1 signature read @0x18000000=0x15294345
[ 14.073767] F1 signature OK, socitype:0x1 chip:0x4345 rev:0x9 pkg:0x2
[ 14.074377] DHD: dongle ram size is set to 819200(orig 819200) at 0x198000
[ 14.074471] [dhd] dhd_conf_set_chiprev : chip=0x4345, chiprev=9
[ 14.074598] [dhd] CFG80211-ERROR) wl_setup_wiphy : Registering Vendor80211
[ 14.074923] [dhd] CFG80211-ERROR) wl_setup_wiphy : SAE support
[ 14.075159] [dhd] CFG80211-ERROR) wl_init_prof : wl_init_prof: No profile
[ 14.076396] dhd_attach(): thread:dhd_watchdog_thread:2cf started
[ 14.076531] dhd_attach(): thread:dhd_dpc:2d0 started
[ 14.076639] dhd_attach(): thread:dhd_rxf:2d1 started
[ 14.076666] dhd_deferred_work_init: work queue initialized
[ 14.076678] dhd_tcpack_suppress_set: TCP ACK Suppress mode 0 -> mode 2
[ 14.076715] dhd_bus_set_default_min_res_mask: Unhandled chip id
[ 14.077020] sdioh_cis_read: func_cis_ptr[0]=0x10ac
[ 14.086499] Dongle Host Driver, version 1.579.77.41.22 (r-20191105-2)(20191120-1)
[ 14.087282] Register interface [wlan0] MAC: d4:9c:dd:23:dc:e4
[ 14.087282]
[ 14.087394] dhd_tcpack_suppress_set: TCP ACK Suppress mode 2 -> mode 0
[ 14.087415] dhd_wl_ioctl: returning as busstate=0
[ 14.087427] dhd_dbg_detach_pkt_monitor, 2204
[ 14.087437] dhd_bus_devreset: == Power OFF ==
[ 14.087710] bcmsdh_oob_intr_unregister: Enter
[ 14.087723] bcmsdh_oob_intr_unregister: irq is not registered
[ 14.087738] dhd_txglom_enable: enable 0
[ 14.087747] dhd_bus_devreset: WLAN OFF DONE
[ 14.087798] wifi_platform_set_power = 0
[ 14.087811] ======== PULL WL_REG_ON(-1) LOW! ========
[ 14.087822] [WLAN_RFKILL]: rockchip_wifi_power: 0
[ 14.087840] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[ 14.087850] [WLAN_RFKILL]: wifi shut off power [GPIO-1-1]
[ 14.087860] dhdsdio_probe : the lock is released.
[ 14.088309] dhd_module_init: Exit err=0
[ 14.089291] dhd_ioctl_entry: Interface is down
[ 14.089316] [dhd] WEXT-ERROR) wl_iw_get_essid : Error getting the SSID -22
[ 14.109960] dhd_open: Enter 00000000e8c47884
[ 14.109987] dhd_open : no mutex held. set lock
[ 14.110002]
[ 14.110002] Dongle Host Driver, version 1.579.77.41.22 (r-20191105-2)(20191120-1)
[ 14.110021] [dhd-wlan0] wl_android_wifi_on : in g_wifi_on=0
[ 14.110030] wifi_platform_set_power = 1
[ 14.110040] ======== PULL WL_REG_ON(-1) HIGH! ========
[ 14.110049] [WLAN_RFKILL]: rockchip_wifi_power: 1
[ 14.110058] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[ 14.110067] [WLAN_RFKILL]: wifi turn on power [GPIO-1-0]
[ 14.436192] sdio_reset_comm():
[ 14.451491] mmc_host mmc3: Bus speed (slot 0) = 375000Hz (slot req 400000Hz, actual 375000HZ div = 0)
[ 14.468368] dwmmc_rockchip fe000000.dwmmc: failed to set rate 100000Hz
[ 14.468387] mmc_host mmc3: Bus speed (slot 0) = 375000Hz (slot req 100000Hz, actual 93750HZ div = 2)
[ 14.522770] mmc3: queuing unknown CIS tuple 0x80 (2 bytes)
[ 14.529588] mmc3: queuing unknown CIS tuple 0x80 (3 bytes)
[ 14.536495] mmc3: queuing unknown CIS tuple 0x80 (3 bytes)
[ 14.549329] mmc3: queuing unknown CIS tuple 0x80 (7 bytes)
[ 14.565034] mmc3: queuing unknown CIS tuple 0x81 (9 bytes)
[ 14.784621] dwmmc_rockchip fe000000.dwmmc: failed to set rate 100000Hz
[ 14.784782] mmc_host mmc3: Bus speed (slot 0) = 50000000Hz (slot req 50000000Hz, actual 50000000HZ div = 0)
[ 14.784933] sdioh_start: set sd_f2_blocksize 256
[ 14.785560]
[ 14.785560]
[ 14.785560] dhd_bus_devreset: == WLAN ON ==
[ 14.785793] F1 signature read @0x18000000=0x15294345
[ 14.791979] F1 signature OK, socitype:0x1 chip:0x4345 rev:0x9 pkg:0x2
[ 14.793292] DHD: dongle ram size is set to 819200(orig 819200) at 0x198000
[ 14.793477] dhd_bus_set_default_min_res_mask: Unhandled chip id
[ 14.797068] [dhd] dhd_conf_read_config : Ignore config file /vendor/etc/firmware/config.txt
[ 14.797158] [dhd] dhd_conf_set_path_params : Final fw_path=/vendor/etc/firmware/fw_bcm43456c5_ag.bin
[ 14.797204] [dhd] dhd_conf_set_path_params : Final nv_path=/vendor/etc/firmware/nvram_ap6256.txt
[ 14.797243] [dhd] dhd_conf_set_path_params : Final clm_path=/vendor/etc/firmware/clm_bcm43456c5_ag.blob
[ 14.797280] [dhd] dhd_conf_set_path_params : Final conf_path=/vendor/etc/firmware/config.txt
[ 14.798975] dhd_os_open_image: /vendor/etc/firmware/fw_bcm43456c5_ag.bin (612559 bytes) open success
[ 15.086703] dhd_os_open_image: /vendor/etc/firmware/nvram_ap6256.txt (2732 bytes) open success
[ 15.088667] NVRAM version: AP6256_NVRAM_V1.4_06112021
[ 15.091514] dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.
[ 15.182315] dhd_bus_init: enable 0x06, ready 0x06 (waited 0us)
[ 15.183212] bcmsdh_oob_intr_register: HW_OOB irq=101 flags=0x4
[ 15.183786] dhd_get_memdump_info: File [/data/misc/wifi/.memdump.info] doesn't exist
[ 15.183849] dhd_get_memdump_info: MEMDUMP ENABLED = 2
[ 15.188370] Disable tdls_auto_op failed. -1
[ 15.188431] dhd_tcpack_suppress_set: TCP ACK Suppress mode 0 -> mode 1
[ 15.189623] dhd_apply_default_clm: Ignore clm file /vendor/etc/firmware/clm_bcm43456c5_ag.blob
[ 15.194103] Firmware up: op_mode=0x0005, MAC=d4:9c:dd:23:dc:e4
[ 15.210297] Driver: 1.579.77.41.22 (r-20191105-2)(20191120-1)
[ 15.210297] Firmware: wl0: Jun 11 2021 13:06:16 version 7.45.96.91 (8d24bff@SYNA) (r745790) FWID 01-82a62ae es7.c5.n4.a3
[ 15.210297] CLM: 9.2.9 (2016-02-03 04:34:31)
[ 15.210751] dhd_txglom_enable: enable 1
[ 15.210771] [dhd] dhd_conf_set_txglom_params : txglom_mode=copy
[ 15.210781] [dhd] dhd_conf_set_txglom_params : txglomsize=36, deferred_tx_len=0
[ 15.210794] [dhd] dhd_conf_set_txglom_params : txinrx_thres=128, dhd_txminmax=-1
[ 15.210807] [dhd] dhd_conf_set_txglom_params : tx_max_offset=0, txctl_tmo_fix=300
[ 15.210824] [dhd] dhd_conf_get_disable_proptx : fw_proptx=1, disable_proptx=-1
[ 15.211894] dhd_wlfc_hostreorder_init(): successful bdcv2 tlv signaling, 64
[ 15.213700] dhd_pno_init: Support Android Location Service
[ 15.233986] [dhd] CFG80211-ERROR) wl_cfg80211_event : Event handler is not created
[ 15.234698] dhd_rtt_init : FTM is supported
[ 15.234717] dhd_preinit_ioctls: SensorHub diabled 0
[ 15.235545] dhd_preinit_ioctls failed to set ShubHub disable
[ 15.237655] [dhd] CFG80211-ERROR) wl_cfg80211_event : Event handler is not created
[ 15.237677] [dhd] dhd_conf_map_country_list : CN/38
[ 15.237686] [dhd] dhd_conf_set_country : set country CN, revision 38
[ 15.240675] [dhd] dhd_conf_set_country : Country code: CN (CN/38)
[ 15.245912] [dhd-wlan0] wl_android_wifi_on : Success
[ 15.301768] dhd_open : the lock is released.
[ 15.301835] dhd_open: Exit ret=0
查看是否有wlan节点
[root@RK356X:/]# ifconfig
eth0 Link encap:Ethernet HWaddr 06:51:A7:C1:B1:A4
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:35
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:84 errors:0 dropped:0 overruns:0 frame:0
TX packets:84 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5488 (5.3 KiB) TX bytes:5488 (5.3 KiB)
wlan0 Link encap:Ethernet HWaddr D4:9C:DD:23:DC:E4
inet addr:169.254.14.168 Bcast:169.254.255.255 Mask:255.255.0.0
inet6 addr: fe80::5340:dd3a:6601:58d7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:2681 (2.6 KiB)
如果在加载模块的时候报以下错误:
[root@RK356X:/]# insmod bcmdhd.ko
[ 17.552661] dhd_module_init: in Dongle Host Driver, version 1.57
9.77.41.22 (r-20191105-2)(20191120-1)
[ 17.552700] ======== dhd_wlan_init_plat_data ========
[ 17.552708] [WLAN_RFKILL]: rockchip_wifi_get_oob_irq: Enter
[ 17.552804] dhd_wlan_init_gpio: WL_HOST_WAKE=-1, oob_irq=101, oob_irq_flags=0x414
[ 17.552817] dhd_wlan_init_gpio: WL_REG_ON=-1
[ 17.552827] dhd_wifi_platform_load: Enter
[ 17.552840] Power-up adapter 'DHD generic adapter'
[ 17.552900] wifi_platform_set_power = 1
[ 17.552943] ======== PULL WL_REG_ON(-1) HIGH! ========
[ 17.552954] [WLAN_RFKILL]: rockchip_wifi_power: 1
[ 17.552975] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[ 17.552983] [WLAN_RFKILL]: wifi turn on power [GPIO-1-0]
[ 17.859951] wifi_platform_bus_enumerate device present 1
[ 17.860022] ======== Card detection to detect SDIO card! ========
[ 17.860047] mmc3:mmc host rescan start!
[ 19.876530] failed to power up DHD generic adapter, 1 retry left
[ 19.892724] wifi_platform_set_power = 0
[ 19.892744] ======== PULL WL_REG_ON(-1) LOW! ========
[ 19.892752] [WLAN_RFKILL]: rockchip_wifi_power: 0
[ 19.892766] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[ 19.892773] [WLAN_RFKILL]: wifi shut off power [GPIO-1-1]
[ 19.892779] wifi_platform_bus_enumerate device present 0
[ 19.892785] ======== Card detection to remove SDIO card! ========
[ 19.892791] mmc3:mmc host rescan start!
[ 19.892841] wifi_platform_set_power = 1
[ 19.892853] ======== PULL WL_REG_ON(-1) HIGH! ========
[ 19.892862] [WLAN_RFKILL]: rockchip_wifi_power: 1
[ 19.892871] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[ 19.892880] [WLAN_RFKILL]: wifi turn on power [GPIO-1-0]
[ 20.196502] wifi_platform_bus_enumerate device present 1
[ 20.196567] ======== Card detection to detect SDIO card! ========
[ 20.196594] mmc3:mmc host rescan start!
[ 22.223271] failed to power up DHD generic adapter, 0 retry left
[ 22.239490] wifi_platform_set_power = 0
[ 22.239511] ======== PULL WL_REG_ON(-1) LOW! ========
[ 22.239520] [WLAN_RFKILL]: rockchip_wifi_power: 0
[ 22.239536] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[ 22.239544] [WLAN_RFKILL]: wifi shut off power [GPIO-1-1]
[ 22.239550] wifi_platform_bus_enumerate device present 0
[ 22.239556] ======== Card detection to remove SDIO card! ========
[ 22.239563] mmc3:mmc host rescan start!
[ 22.239569] failed to power up DHD generic adapter, max retry reached**
[ 22.239608] unregister wifi platform drivers
[ 22.239620] wifi_platform_bus_enumerate device present 0
[ 22.239637] ======== Card detection to remove SDIO card! ========
[ 22.239654] mmc3:mmc host rescan start!
[ 22.239668] ======== dhd_wlan_deinit_plat_data ========
[ 22.239680] dhd_module_init: Failed to load the driver, try cnt 0
[ 22.239730] dhd_module_init: Failed to load driver max retry reached**
[ 22.239745] dhd_module_init: Exit err=-19
首先检查一下WL_REG_ON的引脚在设备树DTS中无有配置错误,有没有被拉高。在加载的WiFi模块的时候,用万用表测量一下WL_REG_ON引脚有拉高过没有。
你可以尝试屏蔽一下sdmmc2节点中的sd-uhs-sdr104;
如果重启后再次加载WIFI模块,报以下错误:
[root@RK356X:/]# insmod bcmdhd.ko
[ 10.928437] dhd_module_init: in Dongle Host Driver, version 1.579.77.41.2
2 (r-20191105-2)(20191120-1)
[ 10.928479] ======== dhd_wlan_init_plat_data ========
[ 10.928488] [WLAN_RFKILL]: rockchip_wifi_get_oob_irq: Enter
[ 10.928578] dhd_wlan_init_gpio: WL_HOST_WAKE=-1, oob_irq=101, oob_irq_flags=0x414
[ 10.928593] dhd_wlan_init_gpio: WL_REG_ON=-1
[ 10.928602] dhd_wifi_platform_load: Enter
[ 10.928617] Power-up adapter 'DHD generic adapter'
[ 10.930180] wifi_platform_set_power = 1
[ 10.930202] ======== PULL WL_REG_ON(-1) HIGH! ========
[ 10.930209] [WLAN_RFKILL]: rockchip_wifi_power: 1
[ 10.930216] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[ 10.930223] [WLAN_RFKILL]: wifi turn on power [GPIO-1-0]
[ 11.235616] wifi_platform_bus_enumerate device present 1
[ 11.235685] ======== Card detection to detect SDIO card! ========
[ 11.235711] mmc3:mmc host rescan start!
[ 11.251918] bcmsdh_register: register client driver
[ 11.252159] bcmsdh_sdmmc_probe: Enter num=1
[ 11.252732] bcmsdh_sdmmc_probe: Enter num=2
[ 11.252752] bus num (host idx)=3, slot num (rca)=1
[ 11.252761] found adapter info 'DHD generic adapter'
[ 11.252847] sdioh_attach: set sd_f2_blocksize 256
[ 11.252896] sdioh_attach: sd clock rate = 0
[ 11.253474] dhdsdio_probe : no mutex held. set lock
[ 11.253613] F1 signature read @0x18000000=0x19258389
[ 11.254260] bcmsdh_sdmmc: Failed to Read word F1:@0x0e000=ffffffff, Err: 0xffffffac
[ 11.254283] bcmsdh_reg_read: error reading addr 0xe000 size 4
[ 11.254352] bcmsdh_sdmmc: Failed to Read word F1:@0x0e004=ffffffff, Err: 0xffffffac
[ 11.254364] bcmsdh_reg_read: error reading addr 0xe004 size 4
[ 11.254449] bcmsdh_sdmmc: Failed to Read word F1:@0x0e008=ffffffff, Err: 0xffffffac
[ 11.254462] bcmsdh_reg_read: error reading addr 0xe008 size 4
[ 11.254528] bcmsdh_sdmmc: Failed to Read word F1:@0x0e00c=ffffffff, Err: 0xffffffac
[ 11.254541] bcmsdh_reg_read: error reading addr 0xe00c size 4
[ 11.254606] bcmsdh_sdmmc: Failed to Read word F1:@0x0e010=ffffffff, Err: 0xffffffac
[ 11.254618] bcmsdh_reg_read: error reading addr 0xe010 size 4
[ 11.254684] bcmsdh_sdmmc: Failed to Read word F1:@0x0e014=ffffffff, Err: 0xffffffac
[ 11.254696] bcmsdh_reg_read: error reading addr 0xe014 size 4
[ 11.288620] bcmsdh_sdmmc: Failed to Read word F1:@0x0e6c4=ffffffff, Err: 0xffffffac
[ 11.288634] bcmsdh_reg_read: error reading addr 0xe6c4 size 4
[ 11.288715] bcmsdh_sdmmc: Failed to Read word F1:@0x0e6c8=ffffffff, Err: 0xffffffac
[ 11.288732] bcmsdh_reg_read: error reading addr 0xe6c8 size 4
** 165 console messages dropped **
[ 23.502328] dhd_wifi_platform_load_sdio: sdio_register_driver timeout or error
[ 23.502577] wifi_platform_set_power = 0
[ 23.502598] ======== PULL WL_REG_ON(-1) LOW! ========
[ 23.502612] [WLAN_RFKILL]: rockchip_wifi_power: 0
[ 23.502637] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[ 23.502651] [WLAN_RFKILL]: wifi shut off power [GPIO-1-1]
[ 23.502662] wifi_platform_bus_enumerate device present 0
[ 23.502674] ======== Card detection to remove SDIO card! ========
[ 23.502687] mmc3:mmc host rescan start!
[ 23.502698] unregister wifi platform drivers
[ 23.502709] wifi_platform_bus_enumerate device present 0
[ 23.502720] ======== Card detection to remove SDIO card! ========
[ 23.502732] mmc3:mmc host rescan start!
[ 23.502744] ======== dhd_wlan_deinit_plat_data ========
[ 23.502753] dhd_module_init: Failed to load the driver, try cnt 0
[ 23.502803] dhd_module_init: Failed to load driver max retry reached**
[ 23.502817] dhd_module_init: Exit err=-62
[ 33.955649] vcc3v3_lcd1_n: disabling
这个错误大多原因是WiFi模块中SDIO接口有问题,导致通讯不了,识别不到。
这个你可以将sdmmc2节点中的bus-width = <4>改成bus-width = <1>,这样重新测试,如果成功了,证明是SDIO线序问题。
这次的WiFi模块调试相比上次ap6212WiFi驱动调试笔记又有不一样的收获,这次是纠结在bus-width=<4>为4线一直不行,当把bus-width改为1后(sdio单线模式)后,就能顺利加载模块了。电压不一样也会影响WIFI不能正常工作,如何去切换SDIO3.0和SDIO2.0模式。
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是
TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。三次握手TCP连接的建立—三次握手建立TCP连接①若主机A中运行了一个客户进程,当它需要主机B的服务时,就发起TCP连接请求,并在所发送的分段中用SYN=1表示连接请求,并产生一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x。主机B收到A的连接请求报文,就完成了第一次握手。客户端发送SYN=1表示连接请求客户端发送一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x②主机B如果同意建立连接,则向主机A发送确认报
VXLAN简介定义RFC定义了VLAN扩展方案VXLAN(VirtualeXtensibleLocalAreaNetwork,虚拟扩展局域网)。VXLAN采用MACinUDP(UserDatagramProtocol)封装方式,是NVO3(NetworkVirtualizationoverLayer3)中的一种网络虚拟化技术。目的随着网络技术的发展,云计算凭借其在系统利用率高、人力/管理成本低、灵活性/可扩展性强等方面表现出的优势,已经成为目前企业IT建设的新趋势。而服务器虚拟化作为云计算的核心技术之一,得到了越来越多的应用。服务器虚拟化技术的广泛部署,极大地增加了数据中心的计算密度;同时,为
目录一、原理部分1、什么是串行通信(1)并行通信与串行通信(2)串行通信的制式(3)串行通信的主要方式 2、配置串口(1)SCON和PCON:串行口1的控制寄存器(2)SBUF:串行口数据缓冲寄存器 (3)AUXR:辅助寄存器编辑(4)ES、PS:与串行口1中断相关的寄存器(5)波特率设置 3、串口框架编写二、程序案例一、原理部分1、什么是串行通信(1)并行通信与串行通信微控制器与外部设备的数据通信,根据连线结构和传送方式的不同,可以分为两种:并行通信和串行通信。并行通信:数据的各位同时发送与接收,每个数据位使用一条导线,这种方式传输快,但是需要多条导线进行信号传输。串行通信:数据一位一
这篇文章,主要介绍如何使用SpringCloud微服务组件从0到1搭建一个微服务工程。目录一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件(2)微服务依赖1.2、搭建注册中心(1)引入依赖(2)配置文件(3)启动类1.3、搭建配置中心(1)引入依赖(2)配置文件(3)启动类1.4、搭建API网关(1)引入依赖(2)配置文件(3)启动类1.5、搭建服务提供者(1)引入依赖(2)配置文件(3)启动类1.6、搭建服务消费者(1)引入依赖(2)配置文件(3)启动类1.7、运行测试一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件这里主要是使用的SpringCloudNetflix
目录文章信息写在前面Background&MotivationMethodDCNV2DCNV3模型架构Experiment分类检测文章信息Title:InternImage:ExploringLarge-ScaleVisionFoundationModelswithDeformableConvolutionsPaperLink:https://arxiv.org/abs/2211.05778CodeLink:https://github.com/OpenGVLab/InternImage写在前面拿到文章之后先看了一眼在ImageNet1k上的结果,确实很高,超越了同等大小下的VAN、RepLK
文章目录前言一、注册小程序二、项目创建三、运行项目四、其他配置最后前言此次项目开发使用uniapp和uview进行开发,需要用到的开发工具为HBuilderX和微信开发者工具,具体的安装方式见官网,小程序注册见微信公众平台。一、注册小程序注册在微信公众平台注册小程序,按照提示注册完后会发配一个appid和密钥,需要复制保存好。完善信息设置=>基本设置,填写小程序基本信息,包括名称、头像、介绍及服务范围等。第三方设置根据开发需求添加插件授权。成员管理管理=>成员管理,点击编辑或下拉选择添加成员,输入微信号添加新的项目成员,只有成员可以进行真机测试。体验成员可以使用发布的体验版。开发设置开发=>开
ESP32学习笔记(七)复位和时钟目录:ESP32学习笔记(一)芯片型号介绍ESP32学习笔记(二)开发环境搭建VSCode+platformioESP32学习笔记(三)硬件资源介绍ESP32学习笔记(四)串口通信ESP32学习笔记(五)外部中断ESP32学习笔记(六)定时器ESP32学习笔记(七)复位和时钟1.复位2.系统时钟2.1时钟树2.2时钟源从时钟树可以看出时钟源共七种ESP32的时钟源分别来自外部晶振、内部PLL或振荡电路具体地说,这些时钟源为:2.2.1快速时钟PLL_CLK320MHz或480MHz内部PLL时钟XTL_CLK2~40MHz外部晶振时钟,模组板载的是40MHz晶