cyw43455 download firmware fail,cmd53 error

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Leo_liu1
Level 4
Level 4
50 replies posted 25 replies posted 10 replies posted

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

0 Likes
1 Solution

Hi Zhengbao,

目前43438已经可以跑起来了,似乎SDIO clk只有25M才可以跑起来,具体修改如下:

pastedImage_0.png

View solution in original post

0 Likes
10 Replies
Zhengbao_Zhang
Moderator
Moderator
Moderator
250 sign-ins First comment on KBA 10 questions asked

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.

0 Likes

Hi Zhengbao,

是用海华模组新打的板子。我们检查了VDDIO ,SDIO都是常供3.3,wl_reg_on先拉低再拉高,抓的波形如下,时序代码贴上。37.4M晶体是模组内置的,外接了32k。

pastedImage_0.png

pastedImage_1.png

但是WWD驱动里面又又对reg_on的控制,那么上面对reg_on的控制还需要吗

pastedImage_2.png

我们用LA抓了sdio的数据如下,固件可以对的上(LA设置的是电平触发,少抓了前两个字节,后面用串口打印前两个字节是有抓到的)

pastedImage_3.png

所以,我们现在也不确定是什么问题导致的了,这些信息,可以确定问题的方向吗

Best Regards,

Leo

0 Likes

所以在之前的设置都是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;
0 Likes

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.

0 Likes

Hi Zhengbao,

LA抓取了sdio的波形如下,发现data0的状态有问题,CLK也只是在有数据的时候才有,这样是否会影响SDIO的通讯:

pastedImage_0.png

0 Likes

Hi Leo:

    现在还无法判断, 请先检查下SDIO接口的上拉电阻(包含CMD,四根data线), spec要求10k-100k之间。

GPIO_7, 拉高表示SDIO VIO=1.8V,  0=3.3V

GPIO_16, 拉高表示SDIO interface only。

SDIO的时序图如果客户可以的话,请对比下可以工作的板子。

0 Likes

Hi Zhengbao,

目前用NXP RT1061的EVK通过SD转TF转接板接海华43438EVB调试,出现如下问题,请帮忙check。

SDIO接的47k上拉,VBAT,VIO,REG_ON等电压都正常。

(使用的代码是NXP提供的,在其他客户的43438上面是有跑起来的。)

pastedImage_0.png

目前FW,NVRAM有下载成功,但是仍有问题。查看代码,1022的error是SDIO bus failed to come up。

Thanks,

Leo

0 Likes

Hi Zhengbao,

目前43438已经可以跑起来了,似乎SDIO clk只有25M才可以跑起来,具体修改如下:

pastedImage_0.png

0 Likes

了解了, 感谢分享, 看上去有点像2.0,3.0的问题。

使用相同的firmware,你先前的module 可以使用更高的clock吗?

如果可以使用, 那么很有可能是layout的问题。

0 Likes

Hi Zhengbao,

使用相同的firmware,先前的module也不能使用更高的clock。

但是,使用当前的SDK,仅替换43455的FW,nvram,clm_blob,43455却起不来。

理论来说,43438与43455的driver应该是通用的,目前还在debug这个问题。

0 Likes