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.

AWR1843BOOST: Update dss's rxGainPhaseParam by using the data stored in Flash memory?

Expert 2050 points
Part Number: AWR1843BOOST
Other Parts Discussed in Thread: AWR1843

In automotive mrr demo, rxGainPhaseParam are hard coded in dss_main.c as below:

ToolboxAutomotive\mmwave_automotive_toolbox_3_2_0__win\mmwave_automotive_toolbox_3_2_0\labs\lab0007_medium_range_radar\src\dss\dss_main.c

void rxGainPhaseParam_Init(MmwDemo_DSS_DataPathObj* obj)
{
    int32_t indx = 0;
    if (obj->processingPath == MAX_VEL_ENH_PROCESSING)   /*Medium range */
    { 
        obj->rxChPhaseComp[indx].imag = 5863;
        obj->rxChPhaseComp[indx].real = 19158;indx++;

        obj->rxChPhaseComp[indx].imag = 2858;
        obj->rxChPhaseComp[indx].real = 23451;indx++;

        obj->rxChPhaseComp[indx].imag = 4569;
        obj->rxChPhaseComp[indx].real = 22093;indx++;

        obj->rxChPhaseComp[indx].imag = 0;
        obj->rxChPhaseComp[indx].real = 16399;indx++;
    }
    else if (obj->processingPath == POINT_CLOUD_PROCESSING)  /* Ultra short range */
    {
        obj->rxChPhaseComp[indx].imag = 21646;
        obj->rxChPhaseComp[indx].real = 7035;indx++;

        obj->rxChPhaseComp[indx].imag =  21172;
        obj->rxChPhaseComp[indx].real = 18420;indx++;

        obj->rxChPhaseComp[indx].imag = 15490;
        obj->rxChPhaseComp[indx].real = 21080;indx++;

        obj->rxChPhaseComp[indx].imag = -3905;
        obj->rxChPhaseComp[indx].real = 25130;indx++;


        obj->rxChPhaseComp[indx].imag = 0;
        obj->rxChPhaseComp[indx].real = 16399;indx++;

        obj->rxChPhaseComp[indx].imag = -7985;
        obj->rxChPhaseComp[indx].real = 18443;indx++;

        obj->rxChPhaseComp[indx].imag = -10962;
        obj->rxChPhaseComp[indx].real = 15291;indx++;

   
        obj->rxChPhaseComp[indx].imag =-17653;
        obj->rxChPhaseComp[indx].real = 3133;indx++;

        obj->rxChPhaseComp[indx].imag =  386;
        obj->rxChPhaseComp[indx].real = -17208;indx++;

        obj->rxChPhaseComp[indx].imag = 8587;
        obj->rxChPhaseComp[indx].real = -18744;indx++;
 
        obj->rxChPhaseComp[indx].imag = 11857;
        obj->rxChPhaseComp[indx].real =  -15772;indx++;

        obj->rxChPhaseComp[indx].imag = 18493;
        obj->rxChPhaseComp[indx].real = -2907;indx++;

    }
}

We want to use the calibrated data which stored in Flash memory or external EEPROM to replace above hard coded value. 

The flow is 1) after booting, mss reads the stored data from Flash or EEPROM, 2) then use mail_box to transfer the data to dss, 3) after received the data from mss, dss initializes the rxChPhase parameters.

Does the flow make sense? or if DSS can directly read these data from somewhere that MSS and DSS share?

Kind regards 

  • Hi,

    The MSS and DSS either of them can be used to read/write to the the external flash or EEPROM. You can read the flash to get the calibration data stored in the flash via the DSS and then initialize the parameters in the DSS. No need to involve the MSS altogether if that is your case in the application. 

    Thanks,

    Pradipta.

  • That is great! But the external flash is connected to MSS via SPI and the external EEPROM is connected to MSS via I2C. It is not able to access them directly from DSS.

    Thanks

  • Hi,

    The DSS L3 (0x8800 0000) memory can be accessed by both the MSS and DSS. You can store the data from MSS in the L3 memory and use the DSS to read the data from there and proceed further in your application code.

    Thanks,
    Pradipta

  • Thank you very much.

    Can you please explain what are L1, L2 and L3 memory? When I run demo in debug mode, I get below log:

    [Cortex_R4_0] SOFTSYSRST:
    [C674X_0] Heap L1 : size 16384 (0x4000), free 6144 (0x1800)
    Heap L3 : size 1048576 (0x100000), free 0 (0x0)
    [Cortex_R4_0] Address: ffffe11c
    [C674X_0] Heap L1 : size 16384 (0x4000), free 1000 (0x3e8)
    [Cortex_R4_0] Setting: 0
    [C674X_0] Heap L3 : size 1048576 (0x100000), free 262144 (0x40000)
    [Cortex_R4_0] Debug: Launched the Initialization Task
    [C674X_0] Heap L2 : size 102400 (0x19000), free 21488 (0x53f0)
    [Cortex_R4_0] mailbox read task priority: 1
    [C674X_0] Heap L2 : size 102400 (0x19000), free 14432 (0x3860)

    Are the Heap L1, L2, L3 the memory you mentioned? 

    For access L3 memory from MSS and DSS, are they any reference code in awr1843 demos I can use?

    Kind regards

  • Hi,

    Memory access to L3 (shared memory between the MSS and DSS) will be like any other memory access which you can achieve through pointers. Please refer to the TRM for 1843 device for the memory map of the device wherein you will find the appropriate memory locations. Also please refer to the user guide as below for more information on the L1 and L2 memories for the DSP subsystem.

    TMS320C674x DSP Cache User's Guide (Rev. A (ti.com)

    Thanks,

    Pradipta.