10 Replies Latest reply on Mar 9, 2020 12:49 AM by LeLi_3670906

    cyw43455 download firmware fail,cmd53 error

    LeLi_3670906

      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

        • 1. Re: cyw43455 download firmware fail,cmd53 error
          ZhengbaoZ_96

          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.

          • 2. Re: cyw43455 download firmware fail,cmd53 error
            LeLi_3670906

            Hi Zhengbao,

             

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

             

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

             

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

             

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

             

             

            Best Regards,

            Leo

            • 3. Re: cyw43455 download firmware fail,cmd53 error
              ZhengbaoZ_96

              所以在之前的设置都是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;
              • 4. Re: cyw43455 download firmware fail,cmd53 error
                LeLi_3670906

                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.

                • 5. Re: cyw43455 download firmware fail,cmd53 error
                  LeLi_3670906

                  Hi Zhengbao,

                   

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

                  • 6. Re: cyw43455 download firmware fail,cmd53 error
                    ZhengbaoZ_96

                    Hi Leo:

                     

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

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

                    GPIO_16, 拉高表示SDIO interface only。

                     

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

                    • 7. Re: cyw43455 download firmware fail,cmd53 error
                      LeLi_3670906

                      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

                      • 8. Re: cyw43455 download firmware fail,cmd53 error
                        LeLi_3670906

                        Hi Zhengbao,

                         

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

                        • 9. Re: cyw43455 download firmware fail,cmd53 error
                          ZhengbaoZ_96

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

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

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

                          • 10. Re: cyw43455 download firmware fail,cmd53 error
                            LeLi_3670906

                            Hi Zhengbao,

                             

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

                             

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

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