- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Sir,
现在遇到的问题是NXP单片机下载wifi固件到43455时候发生CRC错误。下载的块传输指令时CMD53,应该是下载1K之后,每次在第二次发生.
平台:NXP IM.RT1061 WIFI模块 CYW43455。
log如下:
CPU: 528000000 Hz
AHB: 528000000 Hz
SEMC: 198000000 Hz
SYSPLL: 528000000 Hz
SYSPLLPFD0: 396000000 Hz
SYSPLLPFD1: 0 Hz
SYSPLLPFD2: 396000000 Hz
SYSPLLPFD3: 0 Hz
************************************************
IPERF example
************************************************
Please select WiFi operation mode:
a: Access point mode
c: Client mode
Enter mode: Initializing WiFi connection...
Source Clk: 396000000
Bus Clock Max 386718 block length 4096
Sent CMD0
Sent CMD5
Sent CMD3
Sent CMD7
WWD : Enumeration Complete
wwd_bus_sdio_transfer: direction=1 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=0 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=0 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=0 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=0 function=0 response_expected=0 data_size=1
Reading card capability : 2wwd_bus_sdio_transfer: direction=1 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=0 response_expected=0 data_size=1
Switched to Highspeed with freq 951923
wwd_bus_sdio_transfer: direction=0 function=0 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=1 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=0 function=1 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=1 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=1 response_expected=0 data_size=1
response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=0 function=1 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=1 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=1 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=0 function=1 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=1 response_expected=0 data_size=1
wwd_bus_sdio_transfer: direction=1 function=1 response_expected=0 data_size=1024
wwd_bus_sdio_transfer: direction=1 function=1 response_expected=0 data_size=1024
this is a errpr 1967
Could not initialize bus
Could not initialize wifi platform
Could not initialize WiFi module 1801
No connectivity.
看起来sdio枚举都已经成功了,sdio通讯应该没有问题了。
WWD都是平台porting好的,理论来说软件不会出现问题的,不过NXP公版贴的好像是murata的模组,我们用的是海华的模组。
请帮忙check下,可能是哪些原因导致的,谢谢~
Best Regards,
Leo
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Leo:
Are you using the board with a fly-wire to the new module ? Do you have checking the power supply, external clock , and 32k supply ? and it is better to check the SDIO connections with an oscilloscope.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Zhengbao,
是用海华模组新打的板子。我们检查了VDDIO ,SDIO都是常供3.3,wl_reg_on先拉低再拉高,抓的波形如下,时序代码贴上。37.4M晶体是模组内置的,外接了32k。
但是WWD驱动里面又又对reg_on的控制,那么上面对reg_on的控制还需要吗
我们用LA抓了sdio的数据如下,固件可以对的上(LA设置的是电平触发,少抓了前两个字节,后面用串口打印前两个字节是有抓到的)
所以,我们现在也不确定是什么问题导致的了,这些信息,可以确定问题的方向吗
Best Regards,
Leo
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
所以在之前的设置都是ok的, 有没有比对过中断的方式, 是用的oob还是in-band的方式。
如果是OOB的话,需要define WICED_DISABLE_MCU_POWERSAVE
#ifndef WICED_DISABLE_MCU_POWERSAVE
/* Enable out-of-band interrupt */
VERIFY_RESULT( wwd_bus_write_register_value( BUS_FUNCTION, SDIOD_SEP_INT_CTL, (uint8_t) 1, SEP_INTR_CTL_MASK | SEP_INTR_CTL_EN | SEP_INTR_CTL_POL ) );
/* Set OOB interrupt to the correct WLAN GPIO pin */
VERIFY_RESULT( wwd_bus_sdio_set_oob_interrupt( host_platform_get_oob_interrupt_pin( ) ) );
VERIFY_RESULT( host_enable_oob_interrupt( ) );
#endif /* ifndef WICED_DISABLE_MCU_POWERSAVE */
elapsed_time = host_rtos_get_time( ); | |
result = wwd_bus_sdio_download_firmware( ); | |
elapsed_time = host_rtos_get_time( ) - elapsed_time; |
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Zhengbao,
使用的是in-band中断方式,宏WICED_DISABLE_MCU_POWERSAVE是关闭的。
加了wwd_print_stats()打印debug log如下,发现cmd53_write以及cmd53_write_fail都是0,
但是从log上看cmd53是有执行的。
sdio_arg:92001800
wwd_bus_sdio_transfer: direction=1 function=1 response_expected=0 data_size=1024
wwd_bus_sdio_cmd53: arg.cmd53.function_number=1
wwd_bus_sdio_cmd53: arg.cmd53.register_address=0
wwd_bus_sdio_cmd53: arg.cmd53.op_code=1
wwd_bus_sdio_cmd53: arg.cmd53.rw_flag=1
sdio_cmd:53
sdio_arg:9c000010
download_resource :count=1
wwd_bus_sdio_transfer: direction=1 function=1 response_expected=0 data_size=1024
wwd_bus_sdio_cmd53: arg.cmd53.function_number=1
wwd_bus_sdio_cmd53: arg.cmd53.register_address=1024
wwd_bus_sdio_cmd53: arg.cmd53.op_code=1
wwd_bus_sdio_cmd53: arg.cmd53.rw_flag=1
sdio_cmd:53
sdio_arg:9c080010
SDMMCHOST_TransferCompleteCallback:s_usdhcTransferStatus= 1967
WWD Stats..
tx_total:0, rx_total:0, tx_no_mem:0, rx_no_mem:0
tx_fail:0, no_credit:0, flow_control:0
Bus Stats..
cmd52:0, cmd53_read:0, cmd53_write:0
cmd52_fail:0, cmd53_read_fail:0, cmd53_write_fail:0
oob_intrs:0, sdio_intrs:0, error_intrs:0, read_aborts:0
Could not initialize bus
Could not initialize wifi platform
Could not initialize WiFi module 1801
No connectivity.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Zhengbao,
LA抓取了sdio的波形如下,发现data0的状态有问题,CLK也只是在有数据的时候才有,这样是否会影响SDIO的通讯:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Leo:
现在还无法判断, 请先检查下SDIO接口的上拉电阻(包含CMD,四根data线), spec要求10k-100k之间。
GPIO_7, 拉高表示SDIO VIO=1.8V, 0=3.3V
GPIO_16, 拉高表示SDIO interface only。
SDIO的时序图如果客户可以的话,请对比下可以工作的板子。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Zhengbao,
目前用NXP RT1061的EVK通过SD转TF转接板接海华43438EVB调试,出现如下问题,请帮忙check。
SDIO接的47k上拉,VBAT,VIO,REG_ON等电压都正常。
(使用的代码是NXP提供的,在其他客户的43438上面是有跑起来的。)
目前FW,NVRAM有下载成功,但是仍有问题。查看代码,1022的error是SDIO bus failed to come up。
Thanks,
Leo
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Zhengbao,
目前43438已经可以跑起来了,似乎SDIO clk只有25M才可以跑起来,具体修改如下:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
了解了, 感谢分享, 看上去有点像2.0,3.0的问题。
使用相同的firmware,你先前的module 可以使用更高的clock吗?
如果可以使用, 那么很有可能是layout的问题。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Zhengbao,
使用相同的firmware,先前的module也不能使用更高的clock。
但是,使用当前的SDK,仅替换43455的FW,nvram,clm_blob,43455却起不来。
理论来说,43438与43455的driver应该是通用的,目前还在debug这个问题。