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!