AWR1843BOOST: Disable doppler processing

Part Number: AWR1843BOOST
Other Parts Discussed in Thread: AWR1843, SYSBIOS

Tool/software:

Hi
I am using the out of the box project and doing some modification on the code.
I am trying to disable all HWA steps and keep only the first FFT (I am then using the results set in the radarCube for further processing).

Once I am trying to place the relevant lines in the objectdetection.c I am getting exception on new frame start before previous frame processing is done.
Will appreciate help
Regards
Yaron

  • Hi Yaron,

    Are you running the AWR1843 SDK demo application? What are the high level changes you have made to perform Range Processing only?

    Regards,

    Samhitha

  • Hi Samhitha
    Yes, I am running the out-of-the-box demo, I made changes in the CLI (added some commands), changed the high speed UART frame structure, and made some calculations over the radarCube 1FFT results. This all works fine.
    Now I am facing two issues:
    - I would like to disable the processing done after the 1FFT (doppler, AoA) since I don't need it and would like to reduce the minimal frame rate
    - Find a way to get both 1FFT and log amplitude on 1FFT results (not on doppler) fron the HWA
    Any help will be appreciated
    Regards
    Yaron

  • Hi Yaron,

    I would like to disable the processing done after the 1FFT (doppler, AoA) since I don't need it and would like to reduce the minimal frame rate

    You can comment Dopper processing and AoA in DPC_ObjectDetection_execute of C:\ti\mmwave_sdk_03_06_02_00-LTS\packages\ti\datapath\dpc\objectdetection\objdethwa\src\objectdetection.c.

    Find a way to get both 1FFT and log amplitude on 1FFT results (not on doppler) fron the HWA

    Log-Magnitude processing block of FFT engine computes the log2 of the absolute value of its input. You can either get the 1D FFT result or the log2 of 1D FFT using a single paramset. If you want both the outputs, you can have an additional paramset which takes 1D FFT as the input and you can just enable the log2 computation in the paramset by setting LOG2EN and ABSEN.

    Check section 1.5.1.5 Core Computational Unit – Magnitude and Log-Magnitude Post-Processing of Radar Hardware Accelerator User's Guide (Rev. B)

    Regards,

    Samhitha

  • Hi Samhitha
    Thank you for your reply
    Your suggestion for the first question works fine.
    As to the second, I am still trying to figure out how to execute a second HWA process just after the 1st FFT so it can use the same ADC input and generate the log output in a different location in the memory. If you happen to have examples for that it will be helpful
    Best regards
    Yaron

  • Hi Yaron,

    It's not required to perform FFT again. Instead you can add another paramset which takes 1D FFT as the input and do not enable FFT or any other operations. You can just enable log2 computation in the additional paramset.

    hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.magLogEn HWA_FFT_MODE_MAGNITUDE_LOG2_ENABLED;

    rangeProcHWA_ConfigHWA function configures the HWA paramsets for range praocessing. Path: C:\ti\mmwave_sdk_03_06_02_00-LTS\packages\ti\datapath\dpu\rangeproc\src\rangeprochwa.c

    When you add additional paramset, ensure that you increase the hwaParamCfg array size by 2 as you are adding one paramset in ping and pong i.e update the value of DPU_RANGEPROCHWA_NUM_HWA_PARAM_SETS. After any change in rangeprochwa.c file, ensure that you rebuild the rangeproc library before building the demo.

    Refer to Radar Hardware Accelerator User's Guide (Rev. B) if you have any queries regarding configuration of HWA.

    Regards,

    Samhitha

  • Hi
    I followed the above instructions:
    Increased DPU_RANGEPROCHWA_NUM_HWA_PARAM_SETS to 6
    Added this code in rangeprochwa.c after the section that handles the ping (line 683) and similar (with the needed modifications) after the code that handles the pong :

    paramsetIdx++;
        hwParamsetIdx++;
        hwaParamCfg[paramsetIdx] = hwaParamCfg[pingParamSetIdx];
        hwaParamCfg[paramsetIdx].accelModeArgs.fftMode.magLogEn = HWA_FFT_MODE_MAGNITUDE_LOG2_ENABLED;
        hwaParamCfg[paramsetIdx].dest.dstAddr = hwaMemDestPongOffset;//+128*4;
        hwaParamCfg[paramsetIdx].triggerMode = HWA_TRIG_MODE_IMMEDIATE;

        errCode = HWA_configParamSet(hwaHandle,
            hwParamsetIdx,
            &hwaParamCfg[paramsetIdx], NULL);
        if (errCode != 0)
        {
            goto exit;
        }

    I understand that using hte same des address will make it override the fft data - but jest trying to see that it will run.

    I am getting exception on next frame processing -   DPC_Objdet_Assert(objDetObj->dpmHandle, (objDetObj->interSubFrameProcToken == 0));

    What am I doing wrong?
    Thanks
    Yaron

  • Hi Yaron,

    Let me check your response and get back to you by Wednesday.

    Regards,

    Samhitha

  • Hi Yaron,

    I suggest you to create a unit test and verify the paramsets and then integrate in the demo.

    I am getting exception on next frame processing -   DPC_Objdet_Assert(objDetObj->dpmHandle, (objDetObj->interSubFrameProcToken == 0));

    This error might be because the processing of previous frame might not be completed and the next frame is triggered. Can you increase the frame periodicity and check the behaviour?

    Regards,

    Samhitha

  • Hi Samhitha
    This is not the case, I am using a very long frame (40msec) during this development, and the chrips takes only 270usec in total, I am not getting this eror unless I try to add the two extra stages in the HWA (so I can get both the FFT1 and log magnitude
    Best regards
    Yaron

  • Hi Yaron,

    Can you trigger a single frame instead of infinite frames? This will help in understanding if the paramsets are executed successfully for the first frame or not. 

    I suggest you to create a unit test and verify the paramsets and then integrate in the demo.

    Did you create a unit test and verify if the paramsets are configured properly?

    Regards,

    Samhitha

  • Sure, can you please advise how to trigger a single frame?

  • Hi Yaron,

    Change number of frames parameter in frameCfg CLI command to 1.

    "frameCfg 0 1 32 1 100 1 0"

    Refer to "C:\ti\mmwave_sdk_03_06_02_00-LTS\docs\mmwave_sdk_user_guide.pdf" for detailed description of each CLI command.

    Regards,

    Samhitha

  • Hi
    Setting the frame parameter to 1 eliminated the exception but the application stooped responding to CLI (until power cycle).
    So:
    With the original code (4 steps in HWA) - works with single frame and multiple frames.
    With the additional two HWA sets (total of 6), if frame set to 1 - get stuck, if frame is continuous get an exception:

    Texas Instruments XDS110 USB Debug Probe_0/C674X_0 (Suspended)    
        abort() at exit.c:99 0x007FF160    
        xdc_runtime_Error_policyDefault__E(struct xdc_runtime_Error_Block , unsigned short, char , int, unsigned int, int, int)() at Gate.c:34 0x007EE34C    
        xdc_runtime_Assert_raise__I(unsigned short, char *, int, unsigned int)() at Error.c:119 0x007F9818    
        _DebugP_assert(int, char *, int)() at DebugP_tirtos.c:52 0x007FF076    
        DPC_ObjectDetection_frameStart(void *)() at objectdetection.c:435 0x007F8458    
        SOC_SystemISR(unsigned int)() at soc.c:426 0x007FA5F4    
        ti_sysbios_family_c64p_EventCombiner_dispatch__E(unsigned int)() at EventCombiner.c:202 0x007ECB74    
        ti_sysbios_family_c64p_Hwi_dispatchCore__I(int)() at Hwi.c:809 0x007F9150    
        ti_sysbios_family_c64p_Hwi_switchAndDispatch__I() at Hwi_asm_switch.s62:101 0x007FD314  (ti_sysbios_family_c64p_Hwi_switchAndDispatch__I does not contain frame information)   

    line 435 in objectdetection.c is :

     / Check if previous frame (sub-frame) processing has completed /
        DPC_Objdet_Assert(objDetObj->dpmHandle, (objDetObj->interSubFrameProcToken == 0));
        objDetObj->interSubFrameProcToken++;

  • Hi Yaron,

    With the additional two HWA sets (total of 6), if frame set to 1 - get stuck, if frame is continuous get an exception:

    This means there is some error in the changes made. As mentioned earlier, please create a unit test to verify if the additional two paramsets are correctly configured. Also check if you have chained the DMA channels appropriately (if you have configured the DMA to transfer the log mag output from MemBank to DSS_L3. 

    Did you update the dataInTrigger and dataOutTrigger as the number of paramsets are changed? - dpu\rangeproc\src\rangeprochwa.c

    There might be other dependencies when you add additional paramsets. Please make required changes to support the additional paramsets.

    Regards,

    Samhitha

  • Hi
    I didn't change the DMA settings since as a start all I want is for this not to crash so I don't mind that the additional stage will override the previous stage results
    If I got you right it should be:
        /* Prepare internal hardware resouces = trigger source matchs its  paramset index */
        rangeProcObj->dataInTrigger[0]      = 2U + pConfigIn->hwRes.hwaCfg.paramSetStartIdx;
        rangeProcObj->dataInTrigger[1]      = 5U + pConfigIn->hwRes.hwaCfg.paramSetStartIdx;
        rangeProcObj->dataOutTrigger[0]     = 0U + pConfigIn->hwRes.hwaCfg.paramSetStartIdx;
        rangeProcObj->dataOutTrigger[1]     = 3U + pConfigIn->hwRes.hwaCfg.paramSetStartIdx;
    (Since I added one step to Ping and one step to pong, overall 6 steps instead of 4)
    Same error - checking if previous frame processing has completed
    BTW - do you offer (or can endorse someone who does) - consultancy services for fixing a problem like this?
    Best regards
    Yaron

  • Hi Yaron,

    Please find the corrections in the below screenshot -

    BTW - do you offer (or can endorse someone who does) - consultancy services for fixing a problem like this?

    For queries related to the existing SW provided by TI, you can create an E2E ticket and an engineer will reply to you. We can provide some of our inputs but supporting custom changes is out of the scope of E2Es.

    Regards,

    Samhitha