2 Replies Latest reply on Apr 6, 2016 9:30 PM by nunokawa

    BCM4343W : Downloading firmware via SDIO

    nunokawa

      Hello.

      I'm trying to port WICED framework onto a custom board.

      MCU is ARM (not CM3 nor CM4), and WiFi module is murata Type 1DX (BCM4343W).

       

      Now I have a problem in downloading firmware via SDIO.

       

      In function wwd_bus_write_wifi_firmware_image(), the first 64 byte is

      transferred successfully , but the next transfer command failes with

      ILLEGAL_COMMAND response.

       

      Following is a SDIO command log. It seems CMD53 works correctly, but

      Type-1DX seems couldn't receive the command properly.

       

      Does anyone have any ideas to fix this?

       

      // wwd_bus_sdio_download_firmware

       

      // wwd_disable_device_core( WLAN_ARM_CORE, WLAN_CORE_FLAG_NONE )

      [CMD52] write, function=1, address=0x1000C, length=1, data=0x18

      [CMD52] write, function=1, address=0x1000B, length=1, data=0x10

      [CMD52] read,  function=1, address=0x3800,  length=1             -> 0x01

      [CMD52] read,  function=1, address=0x3800,  length=1             -> 0x01

       

      // wwd_disable_device_core( SOCRAM_CORE, WLAN_CORE_FLAG_NONE )

      [CMD52] read,  function=1, address=0x4800,  length=1             -> 0x01

      [CMD52] read,  function=1, address=0x4800,  length=1             -> 0x01

       

      // wwd_reset_device_core( SOCRAM_CORE, WLAN_CORE_FLAG_NONE )

      [CMD52] read,  function=1, address=0x4800,  length=1             -> 0x01

      [CMD52] read,  function=1, address=0x4800,  length=1             -> 0x01

      [CMD52] write, function=1, address=0x4408,  length=1, data=0x03  -> 0x03

      [CMD52] read,  function=1, address=0x4800,  length=1             -> 0x03

      [CMD52] write, function=1, address=0x4800,  length=1, data=0x03  -> 0x00

      [CMD52] write, function=1, address=0x4408,  length=1, data=0x01  -> 0x01

      [CMD52] read,  function=1, address=0x4408,  length=1             -> 0x01

       

      // wwd_bus_write_wifi_firmware_image

      [CMD52] write, function=1, address=0x1000C,  length=1, data=0x01

      [CMD52] write, function=1, address=0x1000B,  length=1, data=0x00

       

      [CMD53] write, function=1, address=0,  data_size=64, data=*

         argument=0x9C000001

         resp -> 0x10 → SUCCESS

       

      [CMD53] write, function=1, address=64,  data_size=64, data=*

         argument=0x9C008001

         resp -> 0x50 (ILLEGAL_COMMAND) → FAILED