This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWR2243: AWR2243: Firmware Download Problem

Part Number: AWR2243

Hello,

We design our own board with 4 AWR2243 (ES1.0) chips in cascade. We include in our host processor the mmwavelink API and use the "C:\ti\mmwave_dfp_02_02_00_03\ti\example\mmWaveLink_Cascade_Example" example as template but in a non-OS environment. We do not use a external Flash.

We do the following steps:

1. Set SOP Mode 4 to Functional SPI (SOP2=0; SOP1=0; SOP0=1)

2. Hold all AWR2243s in Reset

3. Call porting steps

4. Call "rlDevicePowerOn(Master)"

5. Receive async message RL_DEV_AE_MSSPOWERUPDONE_SB and RL_DEV_AE_MSS_CPUFAULT_SB

Console output:

MSS Power Up Done

MSS CPU Fault

6. Download metaImage from "C:\ti\mmwave_dfp_02_02_00_03\firmware\xwr22xx_metaImage.h". The return value is 0 (Success)

7. During firmware download, we receive the async message "RL_DEV_AE_MSS_ESMFAULT_SB" which should be ok. 

We get the following console output from the firmware update:

Download in Progress: 0%..10%..20%..30%..40%..50%..MSS ESM Error

60%..70%..80%..90%..Done!

8. We do not receive the async message "RL_DEV_AE_MSS_BOOTERRSTATUS_SB". In the example this message should be received. Why we do not receive this message? We checked the HOST_IRQ line with Oszilloscop and see only one async message.

9. We also call the MMWL_SwapResetAndPowerOn function. Does this make sense, because we do not receive the async message "RL_DEV_AE_MSS_BOOTERRSTATUS_SB"? We do not receive the async message "RL_DEV_AE_MSSPOWERUPDONE_SB" after SwapResetAndPowerOn function.

10. We also call the rfDeviceStart() function, but do not receive the async message "RL_DEV_AE_RFPOWERUPDONE_SB".

So although it says that the firmware was updated correctly (also with return code 0), it doesn't seem to respond to any more commands afterwards.

  • How can we check, that the firmware download process works successfully?
  • What influence does "clientCtx.crcCb.rlComputeCRC" and "clientCtx.crcType" have on the firmware download?
  • Can we check MSS and BSS seperatly?
  • Where is the documentation about the "SwapResetAndPowerOn" function?
/* Upload the firmware file to the device */
retVal = firmwareDownload(deviceMap); // returns 0!

/* Wait for the below async events only when firmware download over SPI is done.
When booting from sFlash, it is not required to wait for below async events */
timeOutCnt = 0;
    while ((mmwl_bMssEsmFault == 0U) || (mmwl_bMssBootErrStatus == 0U))// mmwl_bMssBootErrStatus never happens!
    {
        rlNonOsMainLoopTask();
        usleep(5000);
        timeOutCnt++;
        if (timeOutCnt > MMWL_API_START_TIMEOUT)
        {
            break;
        }
    }
    mmwl_bMssEsmFault = 0U;  

/* Disable MSS Watchdog */
retVal = rlDeviceSetInternalConf(deviceMap, 0xFFFFFF0C, 0x000000AD);

    /* Swap RAM memory map with ROM memory map  */
    retVal = rlDeviceSetInternalConf(deviceMap, 0xFFFFFF20, 0x00ADAD00);

    /* Disable the Ack*/
    rlDeviceConfigureAckTimeout(0);

    /* reset the core */
    retVal = rlDeviceSetInternalConf(deviceMap, 0xFFFFFF04, 0x000000AD);

    /* Enable the Ack*/
    rlDeviceConfigureAckTimeout(50000);

    /* Wait for Power ON complete */
    timeOutCnt = 0;
    while (mmwl_bInitComp == 0U) // Also never happens!
    {
        rlNonOsMainLoopTask();
        usleep(1000);
        timeOutCnt++;
        if (timeOutCnt > MMWL_API_INIT_TIMEOUT)
        {
            break;
        }
    }
    mmwl_bInitComp = 0U;

Thank you very much in advance!

  • Hi,

    The firmware team will review this request and get back to you in the next days

    thank you

    Cesar

  • Hi,

    we have found our issue. We have implemented a bug during porting the example code to our host processor. We use a "uint16_t" as imgLen variable. So the size of the firmware was wrong and only the first part of firmware was downloaded.

    So it is clear, why we do not receive the async message "RL_DEV_AE_MSS_BOOTERRSTATUS_SB".

    Now it works fine. Thanks for your help.