CYW43012 firmware loading

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

cross mob
rvenkat
Level 1
Level 1
First like received First reply posted First question asked

I am trying to bring up MURATA-1LV (CYW43012) using the WHD (https://github.com/Infineon/wifi-host-driver). I have ported all the APIs to work with our RTOS. But the driver fails with the message "Timeout while waiting for high throughput clock\n".  from WiFi_Host_Driver/src/bus_protocols/whd_bus_sdio_protocol.c: whd_bus_sdio_download_firmware(). It downloads the firmware and nvram image to the module. Waits for the SBSDIO_HT_AVAIL bit in the SDIO_CHIP_CLOCK_CSR register to set. It is timing out waiting for this bit to set. The register SDIO_CHIP_CLOCK_CSR reads a value of 0x40. I am using a block size of 64 in the sdio_obj and the resource block size (BLOCK_BUFFER_SIZE ) for the firmware  is set to 1024. I am using the \\wifi-host-driver-master\WiFi_Host_Driver\resources\nvram\COMPONENT_43012\COMPONENT_MURATA-1LV\wifi_nvram_image.h and wifi-host-driver/WiFi_Host_Driver/resources/firmware/COMPONENT_43012/43012C0_bin.c files.  I also added whd_bus_transfer_backplane_bytes(whd_driver, BUS_READ, address, size_out, debug_image); inside the function whd_bus_sdio_download_resource() after  whd_bus_transfer_backplane_bytes(whd_driver, BUS_WRITE, address, size_out, &image[0]); to verify the writes and  it matches. Any ideas on how do I debug this issue? What are the reasons I would get this error?

 

 

 

/* Wait until the High Throughput clock is available */
    loop_count = 0;
    while ( ( (result = whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1,
                                                    &csr_val) ) == WHD_SUCCESS ) &&
            ( (csr_val & SBSDIO_HT_AVAIL) == 0 ) &&
            (loop_count < (uint32_t)HT_AVAIL_TIMEOUT_MS) )
    {
        (void)cy_rtos_delay_milliseconds( (uint32_t)1 );   /* Ignore return - nothing can be done if it fails */
        tprintf(DBG_DEBUG, "CSR %x\n", csr_val);
        loop_count++;
    }
    if (loop_count >= (uint32_t)HT_AVAIL_TIMEOUT_MS)
    {
        /* If your system times out here, it means that the WLAN firmware is not booting.
         * Check that your WLAN chip matches the 'wifi_image.c' being built - in GNU toolchain, $(CHIP)
         * makefile variable must be correct.
         */
        WPRINT_WHD_ERROR( ("Timeout while waiting for high throughput clock\n") );
        /* Reachable after hitting assert */
        return WHD_TIMEOUT;
    }

1 Solution
Aditi_B
Moderator
Moderator
Moderator
500 replies posted 5 questions asked 250 replies posted

The issue is resolved via mycase.

View solution in original post

0 Likes
3 Replies
Aditi_B
Moderator
Moderator
Moderator
500 replies posted 5 questions asked 250 replies posted

Hi,

Are you using an external LPO? 

Thanks

0 Likes
lock attach
Attachments are accessible only for community members.
rvenkat
Level 1
Level 1
First like received First reply posted First question asked

Yes, we are using an external LPO. Below is the waveform of the LPO signal.

tek00008.png

0 Likes
Aditi_B
Moderator
Moderator
Moderator
500 replies posted 5 questions asked 250 replies posted

The issue is resolved via mycase.

0 Likes