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.

IWR6843AOP: CLI task in Out-of-the-box demo cannot be triggered in debug mode

Part Number: IWR6843AOP
Other Parts Discussed in Thread: UNIFLASH
Hi,
Our application requires a customized CLI task, and I am modifying it from the Out-of-the-box demo in debug mode (I am using mmwWave BOOST with the XDS110 USB debug probe) The issue is that the CLI task will never be triggered during the debug session, but it will be triggered if we flash the .bin file into the IRW6843AOP using Uniflash. We would like to know what went wrong and how we could fix it. Here are some more details: 1. The debug session works fine except for the CLI task; we can set and enter breakpoints, and check expressions in real-time for other tasks. 2. We know that the CLI task wasn't triggered because it does echo the command when it received it as we designed. The status of the task is also always blocked; looks like the UART interrupt was never triggered. 3. It should not be a wiring or USB port issue because the CLI task does echo the command when we flash the .bin file with exactly the same setup.
Thanks in advance!
Best wishes,
Alan
  • 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.

    1. Which software versions are you using (SDK, Toolbox, etc...)?
    2. You mention you are modifying the Out-of-box demo and customizing the CLI task. Is there any other sections of the code that you have modified?
    3. Are you using the default configuration file (.cfg) provided with the Out-of-Box demo or are you using a custom .cfg file?
    4. Can you please confirm that you are following this procedure for debug mode with CCS and TI mmWave devices? (Link)
      1. If so, can you please confirm that you do not face the same issue when running the debug procedure for the Out of Box demo without any modifications?

    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