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!