Other Parts Discussed in Thread: UNIFLASH
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.
Hi Alan,
I have not seen this kind of issue before but I will be happy to help you debug the issue. I have some questions below which will help me better support you.
Best Regards,
Josh
Hi Josh, thank you for your reply!
1. I use mmWaveSDK-3.6.0.00, SYS/BIOS-6.73.1.01, XDCtools-3.50.8.24.
2. I only followed the "how to bypass CLI" section in the main file and made modifications accordingly, and in the end, the entire program was able to run successfully.
3. Yes, I use the default configuration file.
4. When I didn't modify any sample code, I encountered the same issue. When I used the sample code in debug mode and sent "sensorStop," the program didn't respond. However, when I flashed this code using UNIFLASH and repeated the same action, the program responded with "sensorStop."
Thanks,
Alan
Hi Alan,
Thank you.
When I didn't modify any sample code, I encountered the same issue.
If you are seeing the same issue with the unmodified out-of-box demo then I would recommend confirming your hw setup and the steps used while debugging matches that which is described in the CCS debug guide.
Please allow me a day to attempt to replicate this behavior on my end.
Best Regards,
Josh
Hi Josh,
I just resolved this issue. The solution was to switch off S1.1 on the AOP Board.
By doing this, I was able to use the Debug mode while in BOOST state, and the program returned the expected response.
I just realized that there might be an issue with the way I bypassed the CLI. Can you please help me check if there are any missing parameters that need to be set? Under this configuration, the program can run properly, but the numDetectedObj value remains 0.void MmwDemo_Parameter_Init(void){
MMWave_ChirpHandle ChirpHandle;
rlProfileCfg_t ptrProfileCfg;
rlChirpCfg_t ptrChirpCfg;
int32_t errCode;
MMWave_flushCfg(gMmwMCB.ctrlHandle, &errCode);
gMmwMCB.cfg.ctrlCfg.dfeDataOutputMode = MMWave_DFEDataOutputMode_FRAME;
gMmwMCB.cfg.openCfg.chCfg.rxChannelEn = 15;
gMmwMCB.cfg.openCfg.chCfg.txChannelEn = 7;
gMmwMCB.cfg.openCfg.chCfg.cascading = 0;
gMmwMCB.cfg.openCfg.adcOutCfg.fmt.b2AdcBits = 2;
gMmwMCB.cfg.openCfg.adcOutCfg.fmt.b2AdcOutFmt = 1;
gMmwMCB.cfg.openCfg.adcOutCfg.fmt.b8FullScaleReducFctr = 0;
gMmwMCB.cfg.openCfg.lowPowerMode.lpAdcMode = 0;
gMmwMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.chirpStartIdx = 0;
gMmwMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.chirpEndIdx = 2;
gMmwMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.numLoops = 32;
gMmwMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.numFrames = 0;
gMmwMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.framePeriodicity = 50*200000;
gMmwMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.triggerSelect = 0x0001;
gMmwMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.frameTriggerDelay = 0;
gMmwMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.numAdcSamples = 0;
gMmwMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.numDummyChirpsAtEnd = 0;
gMmwMCB.cfg.ctrlCfg.u.continuousModeCfg.cfg.startFreqConst = 134247856;
gMmwMCB.cfg.ctrlCfg.u.continuousModeCfg.dataTransSize = 2;
Mmwave_populateDefaultAdvancedFrameProfileCfg (0U, &ptrProfileCfg);
ptrProfileCfg.profileId = 0;
ptrProfileCfg.pfCalLutUpdate = 0;
ptrProfileCfg.startFreqConst = 0x58E38E38;
ptrProfileCfg.idleTimeConst = 5 * 100; // 1 LSB = 10 ns
ptrProfileCfg.adcStartTimeConst = 15 * 100; // 1 LSB = 10 ns
ptrProfileCfg.rampEndTime = 60 * 100; // 1 LSB = 10 ns
ptrProfileCfg.txOutPowerBackoffCode = 0;
ptrProfileCfg.txPhaseShifter = 0;
ptrProfileCfg.freqSlopeConst = 1388;
ptrProfileCfg.txStartTime = 1 * 100;
ptrProfileCfg.numAdcSamples = 256;
ptrProfileCfg.digOutSampleRate = 6000;
ptrProfileCfg.hpfCornerFreq1 = 0x00;
ptrProfileCfg.hpfCornerFreq2 = 0x00;
ptrProfileCfg.rxGain = 0x1E;
gMmwMCB.cfg.ctrlCfg.u.frameCfg.profileHandle[0] = MMWave_addProfile(gMmwMCB.ctrlHandle, &ptrProfileCfg, &errCode);
if(gMmwMCB.cfg.ctrlCfg.u.frameCfg.profileHandle[0] == NULL)
{
System_printf("Error: set profile 0 fail \n");
MmwDemo_debugAssert (0);
}
Mmwave_populateDefaultAdvancedFrameChirpCfg (0U, &ptrChirpCfg);
ptrChirpCfg.chirpStartIdx = 0;
ptrChirpCfg.chirpEndIdx = 0;
ptrChirpCfg.profileId = 0;
ptrChirpCfg.startFreqVar = 0;
ptrChirpCfg.freqSlopeVar = 0;
ptrChirpCfg.idleTimeVar = 0;
ptrChirpCfg.adcStartTimeVar = 0;
ptrChirpCfg.txEnable = 1;
ChirpHandle = MMWave_addChirp(gMmwMCB.cfg.ctrlCfg.u.frameCfg.profileHandle[0], &ptrChirpCfg, &errCode);
if(ChirpHandle == NULL)
{
System_printf("Error: set Chirp 0 fail \n");
MmwDemo_debugAssert (0);
}
ptrChirpCfg.chirpStartIdx = 1;
ptrChirpCfg.chirpEndIdx = 1;
ptrChirpCfg.profileId = 0;
ptrChirpCfg.startFreqVar = 0;
ptrChirpCfg.freqSlopeVar = 0;
ptrChirpCfg.idleTimeVar = 0;
ptrChirpCfg.adcStartTimeVar = 0;
ptrChirpCfg.txEnable = 2;
ChirpHandle = MMWave_addChirp(gMmwMCB.cfg.ctrlCfg.u.frameCfg.profileHandle[0], &ptrChirpCfg, &errCode);
//
ptrChirpCfg.chirpStartIdx = 2;
ptrChirpCfg.chirpEndIdx = 2;
ptrChirpCfg.profileId = 0;
ptrChirpCfg.startFreqVar = 0;
ptrChirpCfg.freqSlopeVar = 0;
ptrChirpCfg.idleTimeVar = 0;
ptrChirpCfg.adcStartTimeVar = 0;
ptrChirpCfg.txEnable = 4;
ChirpHandle = MMWave_addChirp(gMmwMCB.cfg.ctrlCfg.u.frameCfg.profileHandle[0], &ptrChirpCfg, &errCode);
MmwDemo_CLIGuiMonSel ();
MmwDemo_CLICfarCfg ();
MmwDemo_CLICfarFovCfg ();
MmwDemo_CLIMultiObjBeamForming ();
MmwDemo_CLICalibDcRangeSig ();
MmwDemo_CLIClutterRemoval ();
MmwDemo_CLIADCBufCfg ();
MmwDemo_CLIAoAFovCfg ();
MmwDemo_CLIExtendedMaxVelocity ();
MmwDemo_CLILvdsStreamCfg ();
MmwDemo_CLIChirpQualityRxSatMonCfg (); //CQRxSatMonitor
MmwDemo_CLIChirpQualitySigImgMonCfg (); //CQSigImgMonitor
MmwDemo_CLIAnalogMonitorCfg ();
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.numSubFrames = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.measureRxChannelBiasCfg.enabled = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.measureRxChannelBiasCfg.targetDistance = 1.5;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.measureRxChannelBiasCfg.searchWinSize = 0.2;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rangeBias = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[0].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[0].real = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[1].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[1].real = -1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[2].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[2].real = -1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[3].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[3].real = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[4].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[4].real = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[5].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[5].real = -1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[6].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[6].real = -1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[7].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[7].real = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[8].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[8].real = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[9].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[9].real = -1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[10].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[10].real = -1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[11].imag = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.compRxChanCfg.rxChPhaseComp[11].real = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.txAnt[0].azimuthOffset = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.txAnt[0].elevationOffset = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.txAnt[1].azimuthOffset = 2;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.txAnt[1].elevationOffset = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.txAnt[2].azimuthOffset = 2;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.txAnt[2].elevationOffset = 2;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.rxAnt[0].azimuthOffset = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.rxAnt[0].elevationOffset = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.rxAnt[1].azimuthOffset = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.rxAnt[1].elevationOffset = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.rxAnt[2].azimuthOffset = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.rxAnt[2].elevationOffset = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.rxAnt[3].azimuthOffset = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.preStartCommonCfg.antDef.rxAnt[3].elevationOffset = 0;
gMmwMCB.dataPathObj.objDetCommonCfg.isCompRxChannelBiasCfgPending = 1;
gMmwMCB.dataPathObj.objDetCommonCfg.isMeasureRxChannelBiasCfgPending = 1;
MmwDemo_openSensor(1);
MmwDemo_configSensor();
MmwDemo_startSensor();
return;
}
Thanks,
Alan
Hi Alan,
Sorry for the delayed response here. I am glad to hear your issue is resolved!
I would ask that you please create a new post for you question about bypassing CLI. This makes it easier for others with similar questions to find the answers they are looking for.
Best Regards,
Josh