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.

TDA3LA: TDA3 Ethernet Output Framerate Doesn't Follow Specified FramePeriodicity

Part Number: TDA3LA
Other Parts Discussed in Thread: AWR1243

Hi Piyali/Stanley,

I am re-opening this issue which I worked with both of you 4 months ago regarding frame rate seen at Ethernet output. Back then, we got to a point where I am happy with what I've seen and closed the case. I used to have a single profile at that time and am able to get the frame rate very much followed that of the frameperiodicity specified in the rlFrameCfg_t data structure. Today, we now have 4 profiles and allow dynamically switch between them from network control on a Host. Attached is our AWR config c file that defines the 4 chirp configurations.

As you can see, I have 4 rlFrameCfg_t objects for the 4 corresponding profiles. FramePeriodicity is selected for each rlFrameCfg_t object after I thought I completely understood how much time it takes to acquire + processing + Ethernet download time based on experiments. The 4RX RDM size of 128x256 + PkDetect data would require FramePeriodicity = 14ms while 4 128x128 RDMs + PkDetect data would take 12ms. Please see attached Timing Diagram.

However, when running doing performance measurement from a Linux Host PC using the network monitoring tool, I observed that only profile 0 yields the accurate frame rate per the defined FramePerdiocity of 14ms or 71 fr/s. Profile 1-2, I got Ethernet frame rate 43 fr/s, Profile 3, I got 36 fr/s. I expect the Profile 1-2 to do even better at 83 fr/s and Profile 3 should be the same as Profile 0.

I then twiddle with the rampEndTime parameter in rlProfileCfg_t by setting rampEndTime in all Profiles to have the same value as Profile 0 (30.87). To my surprise, all Profile's frame rates are now running based on the defined FramePerdiocity for each profile. What does FramePerdiocity have to do with rampEndTime ? Why does rampEndTime also dictate the output frame rate?

Thanks,

--Khai

chains_common_LRR_ar12xx_config.c
/******************************************************************************
Copyright (c) [2012 - 2018] Texas Instruments Incorporated

All rights reserved not granted herein.

Limited License.

 Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
 license under copyrights and patents it now or hereafter owns or controls to
 make,  have made, use, import, offer to sell and sell ("Utilize") this software
 subject to the terms herein.  With respect to the foregoing patent license,
 such license is granted  solely to the extent that any such patent is necessary
 to Utilize the software alone.  The patent license shall not apply to any
 combinations which include this software, other than combinations with devices
 manufactured by or for TI ("TI Devices").  No hardware patent is licensed
 hereunder.

 Redistributions must preserve existing copyright notices and reproduce this
 license (including the above copyright notice and the disclaimer and
 (if applicable) source code license limitations below) in the documentation
 and/or other materials provided with the distribution

 Redistribution and use in binary form, without modification, are permitted
 provided that the following conditions are met:

 * No reverse engineering, decompilation, or disassembly of this software
   is permitted with respect to any software provided in binary form.

 * Any redistribution and use are licensed by TI for use only with TI Devices.

 * Nothing shall obligate TI to provide you with source code for the software
   licensed and provided to you in object code.

 If software source code is provided to you, modification and redistribution of
 the source code are permitted provided that the following conditions are met:

 * Any redistribution and use of the source code, including any resulting
   derivative works, are licensed by TI for use only with TI Devices.

 * Any redistribution and use of any object code compiled from the source code
   and any resulting derivative works, are licensed by TI for use only with TI
   Devices.

 Neither the name of Texas Instruments Incorporated nor the names of its
 suppliers may be used to endorse or promote products derived from this software
 without specific prior written permission.

 DISCLAIMER.

 THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS OR
 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/

/* Armin Volkel, 11/06/2018
 * Config file for LRR application
 * similar chirp sequence as Infineon board to enable the following radar parameters:
 * Rmax    = 330 m
 * deltaR  = 1.3 m
 * vmax    = 30 m/s
 * deltaV  = 0.5 m/s
 *
 * high level chirp parameters (board independent):
 * Nr      = 512
 * B       = 162 MHz
 * Tchirp  = 28.48 us
 * fsamp   = 25 MHz
 * NC      = 128
 * Trepeat = 32.85 us
 *
 * TI chirp parameters:
 * AR1243_PROFILE1_RADAR_WIDTH = 512      [Nr]
 * AR1243_RADAR_HEIGHT         = 128      [NC]
 * CHAINS_AR1243_NUM_SUBFRAMES =   1      [ 1 chirp in sequence ]
 * struct rlFrameCfg_t
 * numAdcSamples               = AR1243_PROFILE1_RADAR_WIDTH * 1 [ need to work with real only data ]
 * struct rlProfileCfg_t
 * startFreqConst              =  77 GHz
 * idleTimeConst               =   2 us
 * adcStartTimeConst           =   2.37 us
 * rampEndTime                 =  30.85 us
 * freqSlopeConst              =   5.688 MHz/us   [ B / Tchirp ]
 * digOutSampleRate            = 25000  kilo samples / s
 * Bsp_Ar12xxConfigObj.adcOutCfgArgs
 * b2AdcOutFmt                 = RL_ADC_FORMAT_REAL
 * Bsp_Ar12xxConfigObj.dataFmtCfgArgs
 * adcFmt                      = RL_ADC_FORMAT_REAL
 * Bsp_Ar12xxConfigObj.dataFmtCfgArgs
 * burstPeriodicity            = 66  ms [same time as chirp repeat time since we have only one burst]
 *
 */

/*******************************************************************************
 *  INCLUDE FILES
 *******************************************************************************
 */
#include <include/common/chains_radar.h>
#include <ti/drv/vps/examples/utility/bsputils_ub960.h>

/* ========================================================================== */
/*                           Macros & Typedefs                                */
/* ========================================================================== */
#define CHAINS_RADAR_NUM_RX_ANTENNA (4U)
#define CHAINS_RADAR_NUM_TX_ANTENNA (1U)

/** \brief Number of antennas Rx times tx*/
#define CHAINS_RADAR_NUM_ANTENNA    (CHAINS_RADAR_NUM_RX_ANTENNA * \
                                    CHAINS_RADAR_NUM_TX_ANTENNA)

/** \brief Radar Sensor Height */
#define AR1243_RADAR_HEIGHT_128     (128U)
#define AR1243_RADAR_HEIGHT_64      (64U)

/** \brief Radar Sensor width */
#define AR1243_RADAR_WIDTH_256      (256U)
#define AR1243_RADAR_WIDTH_128      (128U)    // Khai: NOt being used

/** \brief Name of the configuration used */
#define CHAINS_AR1243_CONFIG_NAME "CHAINS_CAPT_FFT_DISP"

/** \brief CSI Data Rate for data transfer from AR12xx
 *         Valid Values are
 *         150 (for 150 Mbps)
 *         300 (for 300 Mbps)
 *         400 (for 400 Mbps)
 *         450 (for 450 Mbps)
 *         600 (for 600 Mbps)
 */
#define CHAINS_AR1243_CSI_DATA_RATE (300U)
#define CHAINS_UB960_CSI_DATA_RATE (800U)

#if (CHAINS_AR1243_CSI_DATA_RATE == (150U))
    /** \brief CSI Data rate value set in the AR12 parameters */
    #define CHAINS_AR1243_CSI_DATA_RATE_VALUE (6)       /* 150 Mbps */
    /** \brief CSI High speed clock set in the AR12 parameters */
    #define CHAINS_AR1243_DDR_HSI_CLK         (0xB)     /* 150 Mbps */
    /** \brief ISS CSI clock paramter set */
    #define CHAINS_AR1243_ISS_CSI_CLK         (75U)     /* 150 Mbps */
#elif (CHAINS_AR1243_CSI_DATA_RATE == (300U))
    /** \brief CSI Data rate value set in the AR12 parameters */
    #define CHAINS_AR1243_CSI_DATA_RATE_VALUE (4)       /* 300 Mbps */
    /** \brief CSI High speed clock set in the AR12 parameters */
    #define CHAINS_AR1243_DDR_HSI_CLK         (0xA)     /* 300 Mbps */
    /** \brief ISS CSI clock paramter set */
    #define CHAINS_AR1243_ISS_CSI_CLK         (150U)    /* 300 Mbps */
#elif (CHAINS_AR1243_CSI_DATA_RATE == (400U))
    /** \brief CSI Data rate value set in the AR12 parameters */
    #define CHAINS_AR1243_CSI_DATA_RATE_VALUE (3)       /* 400 Mbps */
    /** \brief CSI High speed clock set in the AR12 parameters */
    #define CHAINS_AR1243_DDR_HSI_CLK         (0x1)     /* 400 Mbps */
    /** \brief ISS CSI clock paramter set */
    #define CHAINS_AR1243_ISS_CSI_CLK         (200U)    /* 400 Mbps */
#elif (CHAINS_AR1243_CSI_DATA_RATE == (450U))
    /** \brief CSI Data rate value set in the AR12 parameters */
    #define CHAINS_AR1243_CSI_DATA_RATE_VALUE (2)       /* 450 Mbps */
    /** \brief CSI High speed clock set in the AR12 parameters */
    #define CHAINS_AR1243_DDR_HSI_CLK         (0x5)     /* 450 Mbps */
    /** \brief ISS CSI clock paramter set */
    #define CHAINS_AR1243_ISS_CSI_CLK         (225U)    /* 450 Mbps */
#elif (CHAINS_AR1243_CSI_DATA_RATE == (600U))
    /** \brief CSI Data rate value set in the AR12 parameters */
    #define CHAINS_AR1243_CSI_DATA_RATE_VALUE (1)       /* 600 Mbps */
    /** \brief CSI High speed clock set in the AR12 parameters */
    #define CHAINS_AR1243_DDR_HSI_CLK         (0x9)     /* 600 Mbps */
    /** \brief ISS CSI clock paramter set */
    #define CHAINS_AR1243_ISS_CSI_CLK         (300U)    /* 600 Mbps */
#else
    #warn "CHAINS_AR1243: No valid data rate specified!!"
#endif

/** \brief ADC Data Format for AR12
 *         Valid Values are
 *         12  (for 12 bit ADC)
 *         14  (for 14 bit ADC)
 *         16  (for 16 bit ADC)
 */
#define CHAINS_AR1243_ADC_DATA_FORMAT (16U)

#if (CHAINS_AR1243_ADC_DATA_FORMAT == (12U))
    /** \brief AR12 data format value set in the configuration */
    #define CHAINS_AR1243_DATA_FORMAT_CONFIG (RL_ADC_DATA_12_BIT)       /* 12 bit */
#elif (CHAINS_AR1243_ADC_DATA_FORMAT == (14U))
    /** \brief AR12 data format value set in the configuration */
    #define CHAINS_AR1243_DATA_FORMAT_CONFIG (RL_ADC_DATA_14_BIT)       /* 14 bit */
#elif (CHAINS_AR1243_ADC_DATA_FORMAT == (16U))
    /** \brief AR12 data format value set in the configuration */
    #define CHAINS_AR1243_DATA_FORMAT_CONFIG (RL_ADC_DATA_16_BIT)       /* 16 bit */
#else
    #warn "CHAINS_AR1243: No valid ADC data format specified!!"
#endif

/** \brief Advanced Frame Configurations */
#define CHAINS_AR1243_NUM_SUBFRAMES    (1U)
#define CHAINS_AR1243_NUM_BURSTS       (1U)
#define CHAINS_AR1243_NUM_BURST_LOOPS  (1U)

/* ========================================================================== */
/*                           Globals                                          */
/* ========================================================================== */

static char gChains_numRadarsMenu[] = {
    "\r\n "
    "\r\n ======================="
    "\r\n Select Number of Radars"
    "\r\n ======================="
    "\r\n "
    "\r\n Enter Number of Radars are connected: (1-4)"
    "\r\n "
};

/* When Advanced frame configuration is set this is ignored */
/* Armin:  p. 386 in AWR1xx_Radar_Interface_Control.pdf */
rlFrameCfg_t   gAr1243FrmArgs_RadarMode1 =
{
    .chirpStartIdx      = (rlUInt16_t) 0,
    .chirpEndIdx        = (rlUInt16_t) CHAINS_RADAR_NUM_TX_ANTENNA - (rlUInt16_t)1, // 1
    .numLoops           = (rlUInt16_t) AR1243_RADAR_HEIGHT_128,                     // 128
    .numFrames          = (rlUInt16_t) 0,
    .numAdcSamples      = (rlUInt16_t) AR1243_RADAR_WIDTH_256 * (rlUInt16_t)2,      // 256 * 2
    .framePeriodicity   = (rlUInt32_t) CHAINS_AR1243_TIME_MS_TO_5NS(14),            // 14 - 4RDM@77 fr/s, 7 - 2RDM@142 fr/s
    .framePeriod        = (rlUInt32_t) 14,                                          // POC: use in AlgorithmFxn_RadarFftDynamicTxPowerBackOff()
    .triggerSelect      = (rlUInt16_t) RL_FRAMESTRT_API_TRIGGER,
    .reserved           = (rlUInt32_t) 0,
    .frameTriggerDelay  = (rlUInt32_t) 0
};
rlFrameCfg_t   gAr1243FrmArgs_RadarMode2 =
{
    .chirpStartIdx      = (rlUInt16_t) 0,
    .chirpEndIdx        = (rlUInt16_t) CHAINS_RADAR_NUM_TX_ANTENNA - (rlUInt16_t)1, // 1
    .numLoops           = (rlUInt16_t) AR1243_RADAR_HEIGHT_128,                     // 128
    .numFrames          = (rlUInt16_t) 0,
    .numAdcSamples      = (rlUInt16_t) AR1243_RADAR_WIDTH_128 * (rlUInt16_t)2,      // 128 * 2
    .framePeriodicity   = (rlUInt32_t) CHAINS_AR1243_TIME_MS_TO_5NS(12),            // 12 - 4RDM@83 fr/s, 9 - 2RDM@111 fr/s
    .framePeriod        = (rlUInt32_t) 12,                                          // POC: use in AlgorithmFxn_RadarFftDynamicTxPowerBackOff()
    .triggerSelect      = (rlUInt16_t) RL_FRAMESTRT_API_TRIGGER,
    .reserved           = (rlUInt32_t) 0,
    .frameTriggerDelay  = (rlUInt32_t) 0
};
rlFrameCfg_t   gAr1243FrmArgs_RadarMode4 =
{
    .chirpStartIdx      = (rlUInt16_t) 0,
    .chirpEndIdx        = (rlUInt16_t) CHAINS_RADAR_NUM_TX_ANTENNA - (rlUInt16_t)1, // 1
    .numLoops           = (rlUInt16_t) AR1243_RADAR_HEIGHT_128,                     // 128
    .numFrames          = (rlUInt16_t) 0,
    .numAdcSamples      = (rlUInt16_t) AR1243_RADAR_WIDTH_128 * (rlUInt16_t)2,      // 128 * 2
    .framePeriodicity   = (rlUInt32_t) CHAINS_AR1243_TIME_MS_TO_5NS(12),            // 12 - 4RDM@83 fr/s, 9 - 2RDM@111 fr/s
    .framePeriod        = (rlUInt32_t) 12,                                          // POC: use in AlgorithmFxn_RadarFftDynamicTxPowerBackOff()
    .triggerSelect      = (rlUInt16_t) RL_FRAMESTRT_API_TRIGGER,
    .reserved           = (rlUInt32_t) 0,
    .frameTriggerDelay  = (rlUInt32_t) 0
};
rlFrameCfg_t   gAr1243FrmArgs_RadarMode5 =
{
    .chirpStartIdx      = (rlUInt16_t) 0,
    .chirpEndIdx        = (rlUInt16_t) CHAINS_RADAR_NUM_TX_ANTENNA - (rlUInt16_t)1, // 1
    .numLoops           = (rlUInt16_t) AR1243_RADAR_HEIGHT_128,                     // 128
    .numFrames          = (rlUInt16_t) 0,
    .numAdcSamples      = (rlUInt16_t) AR1243_RADAR_WIDTH_256 * (rlUInt16_t)2,      // 256 * 2
    .framePeriodicity   = (rlUInt32_t) CHAINS_AR1243_TIME_MS_TO_5NS(14),            // 14 - 4RDM@77 fr/s, 7 - 2RDM@142 fr/s
    .framePeriod        = (rlUInt32_t) 14,                                          // POC: use in AlgorithmFxn_RadarFftDynamicTxPowerBackOff()
    .triggerSelect      = (rlUInt16_t) RL_FRAMESTRT_API_TRIGGER,
    .reserved           = (rlUInt32_t) 0,
    .frameTriggerDelay  = (rlUInt32_t) 0
};

/* Armin:  p. 383 in AWR1xx_Radar_Interface_Control.pdf */
static rlProfileCfg_t gAr1243ProfileArgs_RadarMode1[] = {
      // POC: radar mode 1 - Vmax = 37, Vres = .58, Rmax = 330, Rres = 1.29
      {
          .profileId             = (rlUInt16_t) 0,
          .pfVcoSelect           = (rlUInt8_t) 0,
          .pfCalLutUpdate        = (rlUInt8_t) 0,
          .frequency             = 765,
          .startFreqConst        = (rlUInt32_t) CHAINS_AR1243_FREQ_GHZ_CONV(76.5),
          .idleTimeConst         = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(2),
          .adcStartTimeConst     = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(6),
          .rampEndTime           = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(30.87),
          .txOutPowerBackoffCode = (rlUInt32_t) 0,
          .txPhaseShifter        = (rlUInt32_t) 0,
          .freqSlopeConst        = (rlInt16_t) CHAINS_AR1243_FREQ_MHZ_PER_MICRO_S_SLOPE_CONV(8.52),
          .txStartTime           = (rlInt16_t) CHAINS_AR1243_TIME_US_TO_10NS(1U),
          .numAdcSamples         = (rlUInt16_t) AR1243_RADAR_WIDTH_256,
          .digOutSampleRate      = (rlUInt16_t) 18750, // Kilo Samples per second
          .hpfCornerFreq1        = (rlUInt8_t) RL_RX_HPF1_175_KHz,  // Khai: change this to eliminate the range wrap around
          .hpfCornerFreq2        = (rlUInt8_t) RL_RX_HPF2_350_KHz,  // Khai: change this to eliminate the range wrap around
          .rxGain                = (rlUInt16_t) 38                  // Khai: This is same as 9dB VGA gain
      },
      // POC: radar mode 2 - Vmax = 60, Vres = .94, Rmax = 330, Rres = 2.58
      {
          .profileId             = (rlUInt16_t) 1,
          .pfVcoSelect           = (rlUInt8_t) 0,
          .pfCalLutUpdate        = (rlUInt8_t) 0,
          // POC: center frequency for beam steer initialization
          .frequency             = 770,
          .startFreqConst        = (rlUInt32_t) CHAINS_AR1243_FREQ_GHZ_CONV(77),
          .idleTimeConst         = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(2),
          .adcStartTimeConst     = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(4),
          .rampEndTime           = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(14.22),
          .txOutPowerBackoffCode = (rlUInt32_t) 0,
          .txPhaseShifter        = (rlUInt32_t) 0,
          .freqSlopeConst        = (rlInt16_t) CHAINS_AR1243_FREQ_MHZ_PER_MICRO_S_SLOPE_CONV(8.52),
          .txStartTime           = (rlInt16_t) CHAINS_AR1243_TIME_US_TO_10NS(1U),
          .numAdcSamples         = (rlUInt16_t) AR1243_RADAR_WIDTH_128,
          .digOutSampleRate      = (rlUInt16_t) 18750,              // Kilo Samples per second
          .hpfCornerFreq1        = (rlUInt8_t) RL_RX_HPF1_175_KHz,  // Khai: change this to eliminate the range wrap around
          .hpfCornerFreq2        = (rlUInt8_t) RL_RX_HPF2_350_KHz,  // Khai: change this to eliminate the range wrap around
          .rxGain                = (rlUInt16_t) 38,                 // Khai: This is same as 9dB VGA gain
      },
      // POC: radar mode 4 - Vmax = 60, Vres = .94, Rmax = 250, Rres = 1.95
      {
          .profileId             = (rlUInt16_t) 2,
          .pfVcoSelect           = (rlUInt8_t) 0,
          .pfCalLutUpdate        = (rlUInt8_t) 0,
          .frequency             = 765,
          .startFreqConst        = (rlUInt32_t) CHAINS_AR1243_FREQ_GHZ_CONV(77),
          .idleTimeConst         = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(2),
          .adcStartTimeConst     = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(4),
          .rampEndTime           = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(14.22),
          .txOutPowerBackoffCode = (rlUInt32_t) 0,
          .txPhaseShifter        = (rlUInt32_t) 0,
          .freqSlopeConst        = (rlInt16_t) CHAINS_AR1243_FREQ_MHZ_PER_MICRO_S_SLOPE_CONV(11.27),
          .txStartTime           = (rlInt16_t) CHAINS_AR1243_TIME_US_TO_10NS(1U),
          .numAdcSamples         = (rlUInt16_t) AR1243_RADAR_WIDTH_128,
          .digOutSampleRate      = (rlUInt16_t) 18750, // Kilo Samples per second
          .hpfCornerFreq1        = (rlUInt8_t) RL_RX_HPF1_175_KHz,  // Khai: change this to eliminate the range wrap around
          .hpfCornerFreq2        = (rlUInt8_t) RL_RX_HPF2_350_KHz,  // Khai: change this to eliminate the range wrap around
          .rxGain                = (rlUInt16_t) 38                  // Khai: This is same as 9dB VGA gain
      },
      // POC: radar mode 5 - Vmax = 37 m/s, Vres = .6 m/s, Rmax = 100, Rres = .8 m
      {
          .profileId             = (rlUInt16_t) 3,
          .pfVcoSelect           = (rlUInt8_t) 0,
          .pfCalLutUpdate        = (rlUInt8_t) 0,
          .frequency             = 765,
          .startFreqConst        = (rlUInt32_t) CHAINS_AR1243_FREQ_GHZ_CONV(77),
          .idleTimeConst         = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(2),
          .adcStartTimeConst     = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(4),
          .rampEndTime           = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(24.22),
          .txOutPowerBackoffCode = (rlUInt32_t) 0,
          .txPhaseShifter        = (rlUInt32_t) 0,
          .freqSlopeConst        = (rlInt16_t) CHAINS_AR1243_FREQ_MHZ_PER_MICRO_S_SLOPE_CONV(28.16),
          .txStartTime           = (rlInt16_t) CHAINS_AR1243_TIME_US_TO_10NS(1U),
          .numAdcSamples         = (rlUInt16_t) AR1243_RADAR_WIDTH_256,
          .digOutSampleRate      = (rlUInt16_t) 18750, // Kilo Samples per second
          .hpfCornerFreq1        = (rlUInt8_t) RL_RX_HPF1_175_KHz,  // Khai: change this to eliminate the range wrap around
          .hpfCornerFreq2        = (rlUInt8_t) RL_RX_HPF2_350_KHz,  // Khai: change this to eliminate the range wrap around
          .rxGain                = (rlUInt16_t) 38                  // Khai: This is same as 9dB VGA gain
      }
};

static rlChirpCfg_t   gAr1243ChirpCfgArgs_RadarMode1[] =
{
    {
        .chirpStartIdx   = (rlUInt16_t) 0x0,
        .chirpEndIdx     = (rlUInt16_t) 0x0,
        .profileId       = (rlUInt16_t) 0x0, /* Mode 1 profile */
        .startFreqVar    = (rlUInt32_t) 0x0,
        .freqSlopeVar    = (rlInt16_t) 0x0,
        .idleTimeVar     = (rlUInt16_t) 0x0,
        .adcStartTimeVar = (rlUInt16_t) 0x0,
        .txEnable        = (rlUInt16_t) 0x1, /* TX1 */
        .reserved        = (rlUInt16_t) 0x0
    },
#if (CHAINS_RADAR_NUM_TX_ANTENNA > 1)
    {
        .chirpStartIdx   = (rlUInt16_t) 0x1,
        .chirpEndIdx     = (rlUInt16_t) 0x1,
        .profileId       = (rlUInt16_t) 0x0, /* First profile */
        .startFreqVar    = (rlUInt32_t) 0x0,
        .freqSlopeVar    = (rlInt16_t) 0x0,
        .idleTimeVar     = (rlUInt16_t) 0x0,
        .adcStartTimeVar = (rlUInt16_t) 0x0,
        .txEnable        = (rlUInt16_t) 0x2, /* TX2 */
        .reserved        = (rlUInt16_t) 0x0
    },
#endif
#if (CHAINS_RADAR_NUM_TX_ANTENNA > 2)
    {
        .chirpStartIdx   = (rlUInt16_t) 0x2,
        .chirpEndIdx     = (rlUInt16_t) 0x2,
        .profileId       = (rlUInt16_t) 0x0, /* First profile */
        .startFreqVar    = (rlUInt32_t) 0x0,
        .freqSlopeVar    = (rlInt16_t) 0x0,
        .idleTimeVar     = (rlUInt16_t) 0x0,
        .adcStartTimeVar = (rlUInt16_t) 0x0,
        .txEnable        = (rlUInt16_t) 0x4, /* TX2 */
        .reserved        = (rlUInt16_t) 0x0
    },
#endif
};
static rlChirpCfg_t   gAr1243ChirpCfgArgs_RadarMode2[] =
{
    {
        .chirpStartIdx   = (rlUInt16_t) 0x0,
        .chirpEndIdx     = (rlUInt16_t) 0x0,
        .profileId       = (rlUInt16_t) 0x1, /* Mode 2 profile */
        .startFreqVar    = (rlUInt32_t) 0x0,
        .freqSlopeVar    = (rlInt16_t) 0x0,
        .idleTimeVar     = (rlUInt16_t) 0x0,
        .adcStartTimeVar = (rlUInt16_t) 0x0,
        .txEnable        = (rlUInt16_t) 0x1, /* TX1 */
        .reserved        = (rlUInt16_t) 0x0
    }
};

static rlChirpCfg_t   gAr1243ChirpCfgArgs_RadarMode4[] =
{
    {
        .chirpStartIdx   = (rlUInt16_t) 0x0,
        .chirpEndIdx     = (rlUInt16_t) 0x0,
        .profileId       = (rlUInt16_t) 0x2, /* Mode 4 profile */
        .startFreqVar    = (rlUInt32_t) 0x0,
        .freqSlopeVar    = (rlInt16_t) 0x0,
        .idleTimeVar     = (rlUInt16_t) 0x0,
        .adcStartTimeVar = (rlUInt16_t) 0x0,
        .txEnable        = (rlUInt16_t) 0x1, /* TX1 */
        .reserved        = (rlUInt16_t) 0x0
    }
};

static rlChirpCfg_t   gAr1243ChirpCfgArgs_RadarMode5[] =
{
    {
        .chirpStartIdx   = (rlUInt16_t) 0x0,
        .chirpEndIdx     = (rlUInt16_t) 0x0,
        .profileId       = (rlUInt16_t) 0x3, /* Mode 5 profile */
        .startFreqVar    = (rlUInt32_t) 0x0,
        .freqSlopeVar    = (rlInt16_t) 0x0,
        .idleTimeVar     = (rlUInt16_t) 0x0,
        .adcStartTimeVar = (rlUInt16_t) 0x0,
        .txEnable        = (rlUInt16_t) 0x1, /* TX1 */
        .reserved        = (rlUInt16_t) 0x0
    }
};

static rlBpmChirpCfg_t   gAr1243BpmChirpCfgArgs[] =
{
    {
        .chirpStartIdx = (rlUInt16_t) 0x0,
        .chirpEndIdx   = (rlUInt16_t) 0x0,
        .constBpmVal   = (rlUInt16_t) 0x0,
        .reserved      = (rlUInt16_t) 0x0
    },
#if (CHAINS_RADAR_NUM_TX_ANTENNA > 1)
    {
        .chirpStartIdx = (rlUInt16_t) 0x1,
        .chirpEndIdx   = (rlUInt16_t) 0x1,
        .constBpmVal   = (rlUInt16_t) 0x0,
        .reserved      = (rlUInt16_t) 0x0
    },
#endif
#if (CHAINS_RADAR_NUM_TX_ANTENNA > 2)
    {
        .chirpStartIdx = (rlUInt16_t) 0x2,
        .chirpEndIdx   = (rlUInt16_t) 0x2,
        .constBpmVal   = (rlUInt16_t) 0x0,
        .reserved      = (rlUInt16_t) 0x0
    }
#endif
};

#define CHAINS_AR1243_CHIRPROW_SIZE         (sizeof(gAr1243ChirpCfgArgs_RadarMode1)/sizeof(rlChirpCfg_t)) * \
                                            (sizeof(gAr1243ProfileArgs_RadarMode1)/sizeof(rlProfileCfg_t)) * 16U
rlChirpRow_t      gAr1243ChirpRowArgs[CHAINS_MAX_NUM_RADARS][CHAINS_AR1243_CHIRPROW_SIZE] = {0};

/**< \brief Sensor configuration for the AR1243 Radar Sensor  */
Bsp_Ar12xxConfigObj   gAr12xx_config_RadarMode1 =
{
    .rfChanCfgArgs            = {
        .rxChannelEn = (rlUInt16_t) (1<<CHAINS_RADAR_NUM_RX_ANTENNA) -1,
        .txChannelEn = (rlUInt16_t) (1<<CHAINS_RADAR_NUM_TX_ANTENNA) - 1,
        .cascading   = (rlUInt16_t) 0x0,
        .bReserved   = (rlUInt16_t) 0x0
    },
    .adcOutCfgArgs            = {
        .fmt                  = {
            .b2AdcBits    = CHAINS_AR1243_DATA_FORMAT_CONFIG,
            .b6Reserved1 = (rlUInt32_t) 0x0,
            .b8FullScaleReducFctr = (rlUInt32_t) 0x0,
            .b2AdcOutFmt  = RL_ADC_FORMAT_COMPLEX_1X,
            .b14Reserved2 = (rlUInt32_t) 0x0
        },
        .reserved      = (rlUInt16_t) 0x0
    },
    .dataFmtCfgArgs           = {
        .rxChannelEn  = (rlUInt16_t) (1<<CHAINS_RADAR_NUM_RX_ANTENNA) - 1,
        .adcBits      = (rlUInt16_t) CHAINS_AR1243_DATA_FORMAT_CONFIG,
        .adcFmt       = (rlUInt16_t) RL_ADC_FORMAT_COMPLEX_1X,
        .iqSwapSel    = (rlUInt8_t) RL_DEV_I_FIRST,
        .chInterleave = (rlUInt8_t) RL_DEV_CH_NON_INTERLEAVED,
        .reserved     = (rlUInt32_t) 0x0
    },
    .rfLpModeCfgArgs          = {
        .reserved0     = (rlUInt16_t) 0,
        .lpAdcMode     = (rlUInt16_t) RL_ADC_MODE_REGULAR
    },
    .chirpCfgArgs      = gAr1243ChirpCfgArgs_RadarMode1,
    .numChirpCfgArgs   = sizeof(gAr1243ChirpCfgArgs_RadarMode1)/sizeof(rlChirpCfg_t),
    .profileCfgArgs    = gAr1243ProfileArgs_RadarMode1,
    .numProfileCfgArgs = sizeof(gAr1243ProfileArgs_RadarMode1)/sizeof(rlProfileCfg_t),
    .frameCfgArgs      = &gAr1243FrmArgs_RadarMode1,
    .numFrameCfgArgs   = sizeof(gAr1243FrmArgs_RadarMode1)/sizeof(rlFrameCfg_t),
    .dataPathCfgArgs   = {
        .intfSel         = (rlUInt8_t) 0,
        .transferFmtPkt0 = (rlUInt8_t) 6, /**< Data out Format, \n
                                      b5:0 Packet 0 content selection\n
                                      000001 - ADC_DATA_ONLY \n
                                      000110 - CP_ADC_DATA \n
                                      001001 - ADC_CP_DATA \n
                                      110110 - CP_ADC_CQ_DATA
                                      b7:6 Packet 0 virtual channel number (valid only for CSI2)\n
                                      00 Virtual channel number 0 (Default)\n
                                      01 Virtual channel number 1\n
                                      02 Virtual channel number 2\n
                                      03 Virtual channel number 3 \n*/
        .transferFmtPkt1 = (rlUInt8_t) 0,/**< Data out Format, \n
                                      b5:0 Packet 0 content selection\n
                                      000000 - Suppress Packet 1 \n
                                      001110 - CP_CQ_DATA \n
                                      001011 - CQ_CP_DATA \n
                                      b7:6 Packet 1 virtual channel number (valid only for CSI2)\n
                                      00 Virtual channel number 0 (Default)\n
                                      01 Virtual channel number 1\n
                                      02 Virtual channel number 2\n
                                      03 Virtual channel number 3\n*/
        .cqConfig        = (rlUInt8_t) 2,

/* Armin: not sure whether we need to change these numbers??? */
        .cq0TransSize    = (rlUInt8_t) 64,
        .cq1TransSize    = (rlUInt8_t) 64,
        .cq2TransSize    = (rlUInt8_t) 64,
        .reserved        = (rlUInt8_t) 0
    },
    .dataPathClkCfgArgs           = {
        .laneClkCfg = (rlUInt8_t) 1,
        .dataRate   = (rlUInt8_t) CHAINS_AR1243_CSI_DATA_RATE_VALUE,
        .reserved   = (rlUInt16_t) 0
    },
    .hsiClkgs                 = {
        .hsiClk   = (rlUInt16_t) CHAINS_AR1243_DDR_HSI_CLK,
        .reserved = (rlUInt16_t) 0x0
    },
    .laneEnCfgArgs            = {
        .laneEn   = (rlUInt16_t)
            #if CHAINS_AR1243_CSI_DATA1LANE_POS
                ((rlUInt16_t) 0x1) |
            #endif
            #if CHAINS_AR1243_CSI_DATA2LANE_POS
                ((rlUInt16_t) 0x2) |
            #endif
            #if CHAINS_AR1243_CSI_DATA3LANE_POS
                ((rlUInt16_t) 0x4) |
            #endif
            #if CHAINS_AR1243_CSI_DATA4LANE_POS
                ((rlUInt16_t) 0x8) |
            #endif
                ((rlUInt16_t) 0x0),
        .reserved = (rlUInt16_t) 0x0
    },
    .bpmCommnCfgArgs = {
        .mode.b2SrcSel    = 0,
        .mode.b1Reserved1  = 0,
        .mode.b13Reserved2 = 0,
        .reserved0        = (rlUInt16_t) 0,
        .reserved1        = (rlUInt16_t) 0,
        .reserved2        = (rlUInt16_t) 0,
        .reserved3        = (rlUInt32_t) 0,
        .reserved4        = (rlUInt32_t) 0
    },
    .bpmChirpCfgArgs = gAr1243BpmChirpCfgArgs,
    .numBpmChirpCfgArgs = sizeof(gAr1243BpmChirpCfgArgs)/sizeof(rlBpmChirpCfg_t),
    .csiConfigArgs = {
        .lanePosPolSel = ((CHAINS_AR1243_CSI_CLOCKLANE_POS << 16U) | /* Polarity Always */
                         (CHAINS_AR1243_CSI_DATA4LANE_POS << 12U) | /* assumed to be 0 */
                         (CHAINS_AR1243_CSI_DATA3LANE_POS << 8U) |
                         (CHAINS_AR1243_CSI_DATA2LANE_POS << 4U) |
                         (CHAINS_AR1243_CSI_DATA1LANE_POS)),
        .reserved1 = (rlUInt32_t) 0U,
    },
    // Khai: Do we want to use Advanced Cfg Frame?
    .advFrameCfgArgs = {
        .frameSeq = {
            .numOfSubFrames = (rlUInt8_t) CHAINS_AR1243_NUM_SUBFRAMES,
            .forceProfile   = (rlUInt8_t) 1,
            .loopBackCfg    = (rlUInt8_t) 0,
            .subFrameTrigger = (rlUInt8_t) 0,
            .subFrameCfg = {
                {
                    .forceProfileIdx     = (rlUInt16_t) 0,
                    .chirpStartIdx       = (rlUInt16_t) 0,
                    .numOfChirps         = (rlUInt16_t) CHAINS_RADAR_NUM_TX_ANTENNA,
                    .numLoops            = (rlUInt16_t) AR1243_RADAR_HEIGHT_128,
                    .burstPeriodicity    = (rlUInt32_t) CHAINS_AR1243_TIME_MS_TO_5NS(66U),
                    /* burstPeriodicity >=
                     * (numLoops)* (numOfChirps) * chirpTime + InterBurstBlankTime,
                     * where InterBurstBlankTime is primarily for sensor
                     * calibration / monitoring, thermal control, and some minimum
                     * time needed for triggering next burst.
                     * NOTE: Across bursts, if the value numOfChirps, is not a
                     * constant, then the actual available blank time can vary and
                     * needs to be accounted for 1 LSB = 5 ns
                     */
                    .chirpStartIdxOffset = (rlUInt16_t) 0,
                    .numOfBurst          = (rlUInt16_t) CHAINS_AR1243_NUM_BURSTS,
                    .numOfBurstLoops     = (rlUInt16_t) CHAINS_AR1243_NUM_BURST_LOOPS,
                    .reserved1           = (rlUInt16_t) 0,
                    .subFramePeriodicity = (rlUInt32_t) CHAINS_AR1243_TIME_MS_TO_5NS(66U),
                    .reserved2           = (rlUInt32_t) 0,
                    .reserved3           = (rlUInt32_t) 0
                },
/* Armin: replaced subFrameCfg[2] with empty place holder */
				/*
                {
                    .forceProfileIdx     = (rlUInt16_t) 1,
                    .chirpStartIdx       = (rlUInt16_t) 0,
                    .numOfChirps         = (rlUInt16_t) 1,
                    .numLoops            = (rlUInt16_t) AR1243_RADAR_HEIGHT,
                    .burstPeriodicity    = (rlUInt32_t) CHAINS_AR1243_TIME_MS_TO_5NS(33U),
                    .chirpStartIdxOffset = (rlUInt16_t) 0,
                    .numOfBurst          = (rlUInt16_t) CHAINS_AR1243_NUM_BURSTS,
                    .numOfBurstLoops     = (rlUInt16_t) CHAINS_AR1243_NUM_BURST_LOOPS,
                    .reserved1           = (rlUInt16_t) 0,
                    .subFramePeriodicity = (rlUInt32_t) CHAINS_AR1243_TIME_MS_TO_5NS(66U),
                    .reserved2           = (rlUInt32_t) 0,
                    .reserved3           = (rlUInt32_t) 0
                },
                */
                {
                    .forceProfileIdx     = (rlUInt16_t) 0,
                    .chirpStartIdx       = (rlUInt16_t) 0,
                    .numOfChirps         = (rlUInt16_t) 0,
                    .numLoops            = (rlUInt16_t) 0,
                    .burstPeriodicity    = (rlUInt32_t) 0,
                    .chirpStartIdxOffset = (rlUInt16_t) 0,
                    .numOfBurst          = (rlUInt16_t) 0,
                    .numOfBurstLoops     = (rlUInt16_t) 0,
                    .reserved1           = (rlUInt16_t) 0,
                    .subFramePeriodicity = (rlUInt32_t) 0,
                    .reserved2           = (rlUInt32_t) 0,
                    .reserved3           = (rlUInt32_t) 0
                },
/* Armin: end replacement */
                {
                    .forceProfileIdx     = (rlUInt16_t) 0,
                    .chirpStartIdx       = (rlUInt16_t) 0,
                    .numOfChirps         = (rlUInt16_t) 0,
                    .numLoops            = (rlUInt16_t) 0,
                    .burstPeriodicity    = (rlUInt32_t) 0,
                    .chirpStartIdxOffset = (rlUInt16_t) 0,
                    .numOfBurst          = (rlUInt16_t) 0,
                    .numOfBurstLoops     = (rlUInt16_t) 0,
                    .reserved1           = (rlUInt16_t) 0,
                    .subFramePeriodicity = (rlUInt32_t) 0,
                    .reserved2           = (rlUInt32_t) 0,
                    .reserved3           = (rlUInt32_t) 0
                },
                {
                    .forceProfileIdx     = (rlUInt16_t) 0,
                    .chirpStartIdx       = (rlUInt16_t) 0,
                    .numOfChirps         = (rlUInt16_t) 0,
                    .numLoops            = (rlUInt16_t) 0,
                    .burstPeriodicity    = (rlUInt32_t) 0,
                    .chirpStartIdxOffset = (rlUInt16_t) 0,
                    .numOfBurst          = (rlUInt16_t) 0,
                    .numOfBurstLoops     = (rlUInt16_t) 0,
                    .reserved1           = (rlUInt16_t) 0,
                    .subFramePeriodicity = (rlUInt32_t) 0,
                    .reserved2           = (rlUInt32_t) 0,
                    .reserved3           = (rlUInt32_t) 0
                }
            },
            .numFrames      = (rlUInt16_t) 0,
            .triggerSelect  = (rlUInt16_t) RL_FRAMESTRT_API_TRIGGER,
            .frameTrigDelay = (rlUInt32_t) 0,
            .reserved1      = (rlUInt32_t) 0,
            .reserved2      = (rlUInt32_t) 0
        },
        .frameData = {
            .numSubFrames = (rlUInt8_t) CHAINS_AR1243_NUM_SUBFRAMES,
            .reserved1    = (rlUInt8_t) 0,
            .reserved2    = (rlUInt16_t) 0,
            .subframeDataCfg = {
                {
                    .totalChirps =
                        (rlUInt32_t) CHAINS_RADAR_NUM_TX_ANTENNA * AR1243_RADAR_HEIGHT_128 * CHAINS_AR1243_NUM_BURSTS,
                    /* Number of Chirps in Sub-Frame =
                     *                     numOfChirps * numLoops * numOfBurst
                     */
                    .numAdcSamples = (rlUInt16_t) AR1243_RADAR_WIDTH_256 * (rlUInt16_t) 2,
                    .numChirpsInDataPacket = (rlUInt8_t) 1,
                    /* In AR12xx: Program this as 1 */
                    .reserved1 = (rlUInt8_t) 0,
                },
//                {
//                    .totalChirps =
//                        (rlUInt32_t) AR1243_RADAR_HEIGHT * CHAINS_AR1243_NUM_BURSTS,
//                    .numAdcSamples = (rlUInt16_t) AR1243_PROFILE1_RADAR_WIDTH * (rlUInt16_t) 2,
//                    .numChirpsInDataPacket = (rlUInt8_t) 1,
//                    .reserved1 = (rlUInt8_t) 0,
//                },
                {
                    .totalChirps = (rlUInt32_t) 0,
                    .numAdcSamples = (rlUInt16_t) 0,
                    .numChirpsInDataPacket = (rlUInt8_t) 1,
                    .reserved1 = (rlUInt8_t) 0,
                },
                {
                    .totalChirps = (rlUInt32_t) 0,
                    .numAdcSamples = (rlUInt16_t) 0,
                    .numChirpsInDataPacket = (rlUInt8_t) 1,
                    .reserved1 = (rlUInt8_t) 0,
                }
            }
        }
    },
    // Khai: enable TX Power Backoff and RX Gain Calibration bits
    .calibEnArgs = {
        .calibEnMask   = (rlUInt32_t) 0x17f0,   //  600 - enable tx rx,  //200 - enable tx bk only, //0x17f0,
        .reserved0     = (rlUInt8_t) 0x0,
        .reserved1     = (rlUInt8_t) 0x0,
        .reserved2     = (rlUInt16_t) 0x0,
        .reserved3     = (rlUInt32_t) 0x0
    }
};

// POC: Radar Mode Configurations
Bsp_Ar12xxConfigObj   gAr12xx_config_RadarMode2;
Bsp_Ar12xxConfigObj   gAr12xx_config_RadarMode4;
Bsp_Ar12xxConfigObj   gAr12xx_config_RadarMode5;

// POC: There will be equal number of chirp config objects as radar modes.
// When a radar is selected, this function will be called and return the
// corresponding chirp config for that radar mode.
Bsp_Ar12xxConfigObj *getChirpConfig(UInt32 radarMode) {

    Bsp_Ar12xxConfigObj *ptr = NULL;
    if(radarMode == 1) {
        ptr = &gAr12xx_config_RadarMode1;
    }
    else if (radarMode == 2) {
        gAr12xx_config_RadarMode2 = gAr12xx_config_RadarMode1;
        ptr = &gAr12xx_config_RadarMode2;
        ptr->chirpCfgArgs      = gAr1243ChirpCfgArgs_RadarMode2;
        ptr->numChirpCfgArgs   = sizeof(gAr1243ChirpCfgArgs_RadarMode2)/sizeof(rlChirpCfg_t);
        ptr->frameCfgArgs      = &gAr1243FrmArgs_RadarMode2;
        ptr->numFrameCfgArgs   = sizeof(gAr1243FrmArgs_RadarMode2)/sizeof(rlFrameCfg_t);
    }
    else if (radarMode == 4) {
        gAr12xx_config_RadarMode4 = gAr12xx_config_RadarMode1;
        ptr = &gAr12xx_config_RadarMode4;
        ptr->chirpCfgArgs      = gAr1243ChirpCfgArgs_RadarMode4;
        ptr->numChirpCfgArgs   = sizeof(gAr1243ChirpCfgArgs_RadarMode4)/sizeof(rlChirpCfg_t);
        ptr->frameCfgArgs      = &gAr1243FrmArgs_RadarMode4;
        ptr->numFrameCfgArgs   = sizeof(gAr1243FrmArgs_RadarMode4)/sizeof(rlFrameCfg_t);
    }
    else if (radarMode == 5) {
        gAr12xx_config_RadarMode5 = gAr12xx_config_RadarMode1;
        ptr = &gAr12xx_config_RadarMode5;
        ptr->chirpCfgArgs      = gAr1243ChirpCfgArgs_RadarMode5;
        ptr->numChirpCfgArgs   = sizeof(gAr1243ChirpCfgArgs_RadarMode5)/sizeof(rlChirpCfg_t);
        ptr->frameCfgArgs      = &gAr1243FrmArgs_RadarMode5;
        ptr->numFrameCfgArgs   = sizeof(gAr1243FrmArgs_RadarMode5)/sizeof(rlFrameCfg_t);
    }
    else {
        Vps_printf("\nRadar Mode '%d' - Unsupported\n", radarMode);
    }
    return ptr;
}

// Khai: Selecting number of Radars menu (1 -4)
Int32 Chains_ar12xxGetSampleConfig(ChainsCommon_Ar12xxConfigOut *pCfgOut, UInt32 fusionEnabled)
{
    UInt32 i = 0U;
    UInt32 done = FALSE;
    char ch;
    if (Bsp_ar12xxGetConnType() == BSP_AR12XX_CONN_TYPE_FPDLINK)
    {
        if (fusionEnabled == 0U)
        {
            // If network control specifies radar mode
            if(pCfgOut->radarMode != 0)
                pCfgOut->numRadars = 1;
            else {
                while(!done)
                {
                    ch = ChainsCommon_ar12xxRunTimeMenu(gChains_numRadarsMenu);
                    switch(ch)
                    {
                        case '1':
                            pCfgOut->numRadars = 1;
                            done = TRUE;
                            break;
                        case '2':
                            pCfgOut->numRadars = 2;
                            done = TRUE;
                            break;
                        case '3':
                            pCfgOut->numRadars = 3;
                            done = TRUE;
                            break;
                        case '4':
                            pCfgOut->numRadars = 4;
                            done = TRUE;
                            break;
                        default:
                            Vps_printf("\nUnsupported option '%c'. Please try again\n", ch);
                            break;
                    }
                }
            }
        }
        else
        {
            pCfgOut->numRadars = 1;
        }
        Vps_printf(" CHAINS: %d AR12xx connected via FPD-Link... \n\r", pCfgOut->numRadars);
        done = FALSE;
    }
    else
    {
        pCfgOut->numRadars = 1;
    }
    pCfgOut->fusionEnabled = fusionEnabled;
    /* Check for certain size limitations. This will show up as compile time
     * issues.
     */
    COMPILE_TIME_ASSERT(sizeof(gAr1243ChirpCfgArgs_RadarMode1)/sizeof(rlChirpCfg_t) > 512);
    COMPILE_TIME_ASSERT(
        sizeof(gAr1243ProfileArgs_RadarMode1)/sizeof(rlProfileCfg_t) >
        CHAINS_AR1243_MAX_PROFILES);
    for (i = 0; i < pCfgOut->numRadars; i++)
    {
        /* Defaulting to macro as this not captured in the ar12xxConfig parameter */
        pCfgOut->radarParams[i].numValidBits = CHAINS_AR1243_ADC_DATA_FORMAT;
        pCfgOut->radarParams[i].bpmEnabled = 0U;
        pCfgOut->radarParams[i].numProfiles = sizeof(gAr1243ProfileArgs_RadarMode1)/sizeof(rlProfileCfg_t);
    }

    for (i=0; i<CHAINS_MAX_NUM_RADARS; i++)
    {
        // Khai: This is where we provide the different chirp config based on the radar mode
        // request from external controller in getChirpConfig(1)
        memcpy(&pCfgOut->radarParams[i].ar12xxConfig, getChirpConfig(pCfgOut->radarMode), sizeof (gAr12xx_config_RadarMode1));
        sprintf(pCfgOut->radarParams[i].configName, "%s_%d", CHAINS_AR1243_CONFIG_NAME, i);
        pCfgOut->radarParams[i].chirpRow = &gAr1243ChirpRowArgs[i][0];
        pCfgOut->radarParams[i].numChirpRow = CHAINS_AR1243_CHIRPROW_SIZE;
    }

    /* Default to normal frame */
    pCfgOut->frameType = 0U;
    return SYSTEM_LINK_STATUS_SOK;
}

  • Hi Khai

    (Ramp end time + Idle time) * number of chirps in a frame determines the minimum time required for the frame.

    Can you please help us understand the ramp time, idle time for each profile explicitly? I did not quite follow which profile was 12 ms and which profile was 14 ms.

    Thanks and Regards,

    Piyali

  • Hi Piyali,

    Thanks for taking my inquiry. If you open the attached c file chains_common_LRR_ar12xx_config.c, you will notice that I have 4 rlFrameCfg_t instances from gAr1243FrmArgs_RadarMode1,2,4,5. These are my radar modes with different chirp specs. The framePeriodicity was defined for each mode. Mode1 has 14ms, Mode2 has 12ms, Mode4 has 12ms and Mode5 has 14ms.

    So in the timing diagram, I have 4.3ms allocated for chirp ramp in Mode1 and Mode5 while 2.3ms allocated for chirp ramp in Mode2 and Mode4. Notice that Mode1 and Mode5 chirp ramp doesn't require a whole 4.3ms based on the formula you indicated. But it doesn't hurt.

    The reason I have 12ms and 14ms Ethernet download time is because that's how long it takes to download in 4 RX cube size. This download timing also includes PkDetect target list.

    Regards,

    --Khai

  • Hi Khai,

    just to update you - Piyali is currently out of office and will be back next week.

    Regards,

    Yortdan

  • Hi Khai,

    As Piyali mentioned earlier, (Ramp end time + Idle time) * number of chirps in a frame determines the minimum time required for the frame.

    The frame rate is determined by FramePerdiocity.

    Please list the frame time, number of samples per frame, and frame rate of each profile. 

    Network throughput can be affected by the frame time which is determined largely by Ramp End time and number of ADC samples.

    Regards,

    Stanley

  • All profiles have numChirps = 128;

    Profile1:

    rampEndTime = 24.29;

    idleTimeConst = 2;

    frame time = 2.8 ms

    framePeriodicity = 14 ms

    Profile2:

    rampEndTime = 14.22;

    idleTimeConst = 2;

    frame time = 1.56 ms

    framePeriodicity = 12 ms

    Profile3:

    rampEndTime = 14.22;

    idleTimeConst = 2;

    frame time = 1.56 ms

    framePeriodicity = 12 ms

    Profile4:

    rampEndTime = 24.29;

    idleTimeConst = 2;

    frame time = 2.8 ms

    framePeriodicity = 14 ms

  • Stanley/Piyali,

    You mentioned "Network throughput can be affected by the frame time which is determined largely by Ramp End time and number of ADC samples"

    ADC sample size is fixed across all 4 modes. So, changing Ramp End Time can change network throughput. What's the relationship? I have always thought framePeriodicity is the only parameter determines the frame throughput.

    Thanks,

    --Khai

  • Please check the output frame rate of each link.

    The use case output frame rate will be equal to the slowest link in the chain.

    Even though capture link can be outputting the radar frames matching the radar configuration (determined by FramePerdiocity), the frame rate could drop due to other links in the chain.

  • Hi Stanley,

    Yes, I do use the p option to look at frame rate output at each Link. Here is my situation with frame rate or network throughput maybe you will understand now that you worked with me for 2 hours the other day.

    Please help look at these two statistic dumps attached from 2 runs. The only parameter I changed here for the two runs is the rampEndTime.

    File stat30-87.txt:

    {
    .profileId = (rlUInt16_t) 0,
    .pfVcoSelect = (rlUInt8_t) 0,
    .pfCalLutUpdate = (rlUInt8_t) 0,
    .frequency = (77 << 8) | 0, // POC: 8-bit MSB: Whole Part. 8-bit LSB: decimal part
    .startFreqConst = (rlUInt32_t) CHAINS_AR1243_FREQ_GHZ_CONV(77),
    .idleTimeConst = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(2),
    .adcStartTimeConst = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(4),
    .rampEndTime = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(30.87), // 24.39
    .txOutPowerBackoffCode = (rlUInt32_t) 0,
    .txPhaseShifter = (rlUInt32_t) 0,
    .freqSlopeConst = (rlInt16_t) CHAINS_AR1243_FREQ_MHZ_PER_MICRO_S_SLOPE_CONV(8.52),
    .txStartTime = (rlInt16_t) CHAINS_AR1243_TIME_US_TO_10NS(1U),
    .numAdcSamples = (rlUInt16_t) AR1243_RADAR_WIDTH_256,
    .digOutSampleRate = (rlUInt16_t) 18750, // Kilo Samples per second
    .hpfCornerFreq1 = (rlUInt8_t) RL_RX_HPF1_175_KHz, // Khai: change this to eliminate the range wrap around
    .hpfCornerFreq2 = (rlUInt8_t) RL_RX_HPF2_350_KHz, // Khai: change this to eliminate the range wrap around
    .rxGain = (rlUInt16_t) 38 // Khai: This is same as 9dB VGA gain
    },

    File  stat24-29.txt:

    .rampEndTime = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(24.39),

    Everything else remains the same. framePeriodicity = 14ms for both runs. This is what I was chasing after in this E2E ticket. In the first run, with rampEndTime = 30.87us, I was able to obtain the framerate set in framePeriodicity. But when rampEndTime = 24.39us,

    the throughput was cut in half right at the beginning of IssCapture. It simply doesn't make any sense to me. Hope you have a clue as to why it's behaving as such.

    Thanks,

    --Khai

    stat30-87.txt
    [IPU1-0]     14.407796 s:
    [IPU1-0]     14.407887 s:  CPU [IPU1-0 ] Statistics,
    [IPU1-0]     14.407948 s:  *************************
    [IPU1-0]     14.408009 s:
    [IPU1-0]     14.408040 s:  LOAD: CPU: 7.9% HWI: 2.1%, SWI:0.6%, Low Power: 0.0%
    [IPU1-0]     14.408192 s:
    [IPU1-0]     14.408253 s:  LOAD: TSK: IPC_OUT_0           : 1.5%
    [IPU1-0]     14.408406 s:  LOAD: TSK: ISSCAPTURE          : 0.6%
    [IPU1-0]     14.408497 s:  LOAD: TSK: STAT_COLL           : 2.0%
    [IPU1-0]     14.408619 s:  LOAD: TSK: MISC                : 1.1%
    [IPU1-0]     14.408680 s:
    [IPU1-0]     14.408711 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-0]     14.408833 s:
    [IPU1-0]     14.408863 s:  SYSTEM: Sempahores Objects,  271 of 1050 free
    [IPU1-0]     14.408955 s:  SYSTEM: Task Objects      ,   24 of  100 free
    [IPU1-0]     14.409046 s:  SYSTEM: Clock Objects     ,   97 of  100 free
    [IPU1-0]     14.409138 s:  SYSTEM: Hwi Objects       ,   84 of  100 free
    [IPU1-0]     14.409199 s:
    [IPU1-0]     14.409260 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 258680 B (252 KB)
    [IPU1-0]     14.409412 s:  SYSTEM: Heap = SR_OCMC              @ 0x00000000, Total size = 0 B (0 KB), Free size = 0 B (0 KB)
    [IPU1-0]     14.409534 s:  SYSTEM: Heap = SR_DDR_CACHED        @ 0x85703000, Total size = 369086464 B (351 MB), Free size = 358363136 B (341 MB)
    [IPU1-0]     14.409717 s:  SYSTEM: Heap = SR_DDR_NON_CACHED    @ 0x00000000, Total size = 0 B (0 MB), Free size = 0 B (0 MB)
    [IPU1-0]     14.409992 s:
    [IPU1-0]     14.410022 s:
    [IPU1-0]     14.410083 s:  CPU [IPU1-1 ] Statistics,
    [IPU1-0]     14.410144 s:  *************************
    [IPU1-0]     14.410175 s:
    [IPU1-0]     14.410236 s:  LOAD: CPU: 4.8% HWI: 1.1%, SWI:0.5%, Low Power: 0.0%
    [IPU1-0]     14.410358 s:
    [IPU1-0]     14.410419 s:  LOAD: TSK: IPC_IN_0            : 1.0%
    [IPU1-0]     14.410541 s:  LOAD: TSK: NETWORK TX0         : 1.4%
    [IPU1-0]     14.410663 s:  LOAD: TSK: MISC                : 0.8%
    [IPU1-0]     14.410754 s:
    [IPU1-0]     14.410815 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-0]     14.410907 s:
    [IPU1-0]     14.410937 s:  SYSTEM: Sempahores Objects,  428 of 1050 free
    [IPU1-0]     14.411029 s:  SYSTEM: Task Objects      ,   36 of  100 free
    [IPU1-0]     14.411151 s:  SYSTEM: Clock Objects     ,   99 of  100 free
    [IPU1-0]     14.411242 s:  SYSTEM: Hwi Objects       ,   97 of  100 free
    [IPU1-0]     14.411334 s:
    [IPU1-0]     14.411364 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 246224 B (240 KB)
    [IPU1-0]     14.411517 s:
    [IPU1-0]     14.411578 s:
    [IPU1-0]     14.411608 s:  CPU [DSP1   ] Statistics,
    [IPU1-0]     14.411669 s:  *************************
    [IPU1-0]     14.411730 s:
    [IPU1-0]     14.411761 s:  LOAD: CPU: 4.4% HWI: 0.8%, SWI:0.1%, Low Power: 0.0%
    [IPU1-0]     14.411944 s:
    [IPU1-0]     14.412005 s:  LOAD: TSK: MISC                : 3.5%
    [IPU1-0]     14.412096 s:
    [IPU1-0]     14.412127 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-0]     14.412218 s:
    [IPU1-0]     14.412249 s:  SYSTEM: Sempahores Objects,  444 of 1050 free
    [IPU1-0]     14.412340 s:  SYSTEM: Task Objects      ,   91 of  100 free
    [IPU1-0]     14.412432 s:  SYSTEM: Clock Objects     ,   97 of  100 free
    [IPU1-0]     14.412523 s:  SYSTEM: Hwi Objects       ,   98 of  100 free
    [IPU1-0]     14.412584 s:
    [IPU1-0]     14.412645 s:  SYSTEM: Heap = LOCAL_L2             @ 0x00800000, Total size = 227264 B (221 KB), Free size = 227264 B (221 KB)
    [IPU1-0]     14.412798 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 524288 B (512 KB), Free size = 479152 B (467 KB)
    [IPU1-0]     14.412981 s:
    [IPU1-0]     14.413011 s:
    [IPU1-0]     14.413042 s:  CPU [EVE1   ] Statistics,
    [IPU1-0]     14.413103 s:  *************************
    [IPU1-0]     14.413164 s:
    [IPU1-0]     14.413225 s:  LOAD: CPU: 40.7% HWI: 1.4%, SWI:0.1%, Low Power: 0.0%
    [IPU1-0]     14.413347 s:
    [IPU1-0]     14.413408 s:  LOAD: TSK: MISC                : 39.2%
    [IPU1-0]     14.413499 s:
    [IPU1-0]     14.413530 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-0]     14.413621 s:
    [IPU1-0]     14.413652 s:  SYSTEM: Sempahores Objects,  454 of 1050 free
    [IPU1-0]     14.413743 s:  SYSTEM: Task Objects      ,   92 of  100 free
    [IPU1-0]     14.413835 s:  SYSTEM: Clock Objects     ,   99 of  100 free
    [IPU1-0]     14.413926 s:  SYSTEM: Hwi Objects       ,   97 of  100 free
    [IPU1-0]     14.414018 s:
    [IPU1-0]     14.414048 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 22528 B (22 KB), Free size = 8884 B (8 KB)
    [IPU1-0]     14.414201 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 261008 B (254 KB)
    [IPU1-0]     14.414353 s:
    [IPU1-0]     14.414689 s:
    [IPU1-0]     14.414750 s:  UTILS_PRCM_STATS:  Current Temperature,
    [IPU1-0]     14.414933 s:
    [IPU1-0]     14.414994 s:   Voltage Rail         ||   Curr Temp Min - Max
    [IPU1-0]     14.415055 s:  ---------------------------------------------------------
    [IPU1-0]     14.415146 s:     PMHAL_PRCM_VD_CORE ||     [46.800 , 47.200]
    [IPU1-0]     14.415268 s:
    [IPU1-0]     14.415360 s:
    [IPU1-0]     14.415390 s:  Statistics Collector,
    [IPU1-0]     14.415451 s:
    [IPU1-0]     14.415482 s:        STATISTIC          Avg Data        Peak Data
    [IPU1-0]     14.415573 s:        COLLECTOR          MB/s            MB/s
    [IPU1-0]     14.415634 s:  --------------------------------------------------
    [IPU1-0]     14.415726 s:  SCI_EMIF_SYS         |     33.209566    829.246983
    [IPU1-0]     14.415878 s:  SCI_IPU              |      9.116983    160.243531
    [IPU1-0]     14.415970 s:  SCI_DSP1_MDMA        |      5.512148    790.078037
    [IPU1-0]     14.416092 s:  SCI_DSP2_MDMA        |      0.000000      0.000000
    [IPU1-0]     14.416183 s:  SCI_DSS              |      0.000000      0.000000
    [IPU1-0]     14.416275 s:  SCI_MMU              |      0.000000      0.000000
    [IPU1-0]     14.416488 s:  SCI_EDMA_TC0_RD      |      0.000000      0.000000
    [IPU1-0]     14.416580 s:  SCI_EDMA_TC0_WR      |      0.000000      0.000000
    [IPU1-0]     14.416671 s:  SCI_VIP_P1           |      0.000000      0.000000
    [IPU1-0]     14.416793 s:  SCI_VIP_P2           |      0.000000      0.000000
    [IPU1-0]     14.416915 s:  SCI_ISS_RT           |      0.000000      0.000000
    [IPU1-0]     14.417007 s:  SCI_ISS_NRT2         |      0.000000      0.000000
    [IPU1-0]     14.417129 s:  SCI_EVE_P1           |     27.783062    402.654938
    [IPU1-0]     14.417220 s:  SCI_EVE_P2           |      0.000000      0.000000
    [IPU1-0]     14.417312 s:  SCI_GMAC_SW          |      0.000000      0.000000
    [IPU1-0]     14.417403 s:  SCI_ISS_NRT1         |      0.000000      0.000000
    [IPU1-0]     14.417525 s:  SCI_DSP2_CFG         |      0.000000      0.000000
    [IPU1-0]     14.417617 s:  SCI_DSP2_EDMA        |      0.000000      0.000000
    [IPU1-0]     14.417708 s:  SCI_OCMC_RAM         |      0.000000      0.000000
    [IPU1-0]     14.418196 s:  SCI_DSP1_CFG         |      0.000000      0.000000
    [IPU1-0]     14.418349 s:  SCI_DSP1_EDMA        |      0.000000      0.000000
    [IPU1-0]     14.418440 s:  SCI_GPMC             |      0.000000      0.000000
    [IPU1-0]     14.418532 s:  SCI_MCASP            |      0.000000      0.000000
    [IPU1-0]     14.418654 s:  SCI_EDMA_TC1_RD      |      0.000000      0.000000
    [IPU1-0]     14.418745 s:  SCI_EDMA_TC1_WR      |      0.000000      0.000000
    [IPU1-0]     14.518819 s:
    [IPU1-0]     14.518910 s:
    [IPU1-0]     14.519032 s:
    [IPU1-0]     14.519093 s:  ### CPU [IPU1-0], LinkID [ 81],
    [IPU1-0]     14.519154 s:
    [IPU1-0]     14.519215 s:  [ ISSCAPTURE ] Link Statistics,
    [IPU1-0]     14.519276 s:  ******************************
    [IPU1-0]     14.519337 s:
    [IPU1-0]     14.519368 s:  Elapsed time       = 1796 msec
    [IPU1-0]     14.519429 s:
    [IPU1-0]     14.519490 s:  Get Full Buf Cb    =  71.82 fps
    [IPU1-0]     14.519551 s:  Put Empty Buf Cb   =  71.82 fps
    [IPU1-0]     14.519734 s:  Driver/Notify Cb   =  71.26 fps
    [IPU1-0]     14.519947 s:
    [IPU1-0]     14.519978 s:  Input Statistics,
    [IPU1-0]     14.520039 s:
    [IPU1-0]     14.520069 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     14.520161 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     14.520222 s:  --------------------------------------------------
    [IPU1-0]     14.520313 s:   0 |  71.82      0. 0      0. 0          71.82
    [IPU1-0]     14.520466 s:
    [IPU1-0]     14.520496 s:  Output Statistics,
    [IPU1-0]     14.520527 s:
    [IPU1-0]     14.520588 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     14.520649 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     14.520740 s:  ---------------------------------------------
    [IPU1-0]     14.520832 s:   0 |  0     71.82     0. 0      0. 0
    [IPU1-0]     14.520954 s:
    [IPU1-0]     14.520984 s:  [ ISSCAPTURE ] LATENCY,
    [IPU1-0]     14.521045 s:  ********************
    [IPU1-0]     14.521106 s:
    [IPU1-0]     14.521228 s:
    [IPU1-0]     14.521259 s:  ### CPU [IPU1-0], LinkID [  0],
    [IPU1-0]     14.521350 s:
    [IPU1-0]     14.521381 s:  [ IPC_OUT_0 ] Link Statistics,
    [IPU1-0]     14.521442 s:  ******************************
    [IPU1-0]     14.521503 s:
    [IPU1-0]     14.521533 s:  Elapsed time       = 1798 msec
    [IPU1-0]     14.521625 s:
    [IPU1-0]     14.521655 s:  New data Recv      =  71.74 fps
    [IPU1-0]     14.521716 s:  Release data Recv  =  71.74 fps
    [IPU1-0]     14.521838 s:  Driver/Notify Cb   = 171.85 fps
    [IPU1-0]     14.521930 s:
    [IPU1-0]     14.521960 s:  Input Statistics,
    [IPU1-0]     14.522021 s:
    [IPU1-0]     14.522052 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     14.522113 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     14.522204 s:  --------------------------------------------------
    [IPU1-0]     14.522296 s:   0 |  71.74      0. 0      0. 0          71.74
    [IPU1-0]     14.522448 s:
    [IPU1-0]     14.522509 s:  Output Statistics,
    [IPU1-0]     14.522570 s:
    [IPU1-0]     14.522601 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     14.522662 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     14.522753 s:  ---------------------------------------------
    [IPU1-0]     14.522875 s:   0 |  0     71.74     0. 0      0. 0
    [IPU1-0]     14.522997 s:
    [IPU1-0]     14.523028 s:  [ IPC_OUT_0 ] LATENCY,
    [IPU1-0]     14.523089 s:  ********************
    [IPU1-0]     14.523150 s:  Local Link Latency     : Avg =      7 us, Min =      0 us, Max =     31 us,
    [IPU1-0]     14.523272 s:  Source to Link Latency : Avg =     92 us, Min =     61 us, Max =    122 us,
    [IPU1-0]     14.523394 s:
    [IPU1-0]     15.022906 s:
    [IPU1-0]     15.023028 s:  ### CPU [  DSP1], LinkID [ 10],
    [IPU1-0]     15.023089 s:
    [IPU1-0]     15.023150 s:  [ IPC_IN_0 ] Link Statistics,
    [IPU1-0]     15.023211 s:  ******************************
    [IPU1-0]     15.023272 s:
    [IPU1-0]     15.023302 s:  Elapsed time       = 2299 msec
    [IPU1-0]     15.023363 s:
    [IPU1-0]     15.023424 s:  Get Full Buf Cb    =  71.77 fps
    [IPU1-0]     15.023485 s:  Put Empty Buf Cb   =  71.77 fps
    [IPU1-0]     15.023577 s:  Driver/Notify Cb   =  71.33 fps
    [IPU1-0]     15.023638 s:
    [IPU1-0]     15.023699 s:  Input Statistics,
    [IPU1-0]     15.023729 s:
    [IPU1-0]     15.023790 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     15.023882 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     15.023973 s:  --------------------------------------------------
    [IPU1-0]     15.024034 s:   0 |  71.77      0. 0      0. 0          71.77
    [IPU1-0]     15.024187 s:
    [IPU1-0]     15.024217 s:  Output Statistics,
    [IPU1-0]     15.024278 s:
    [IPU1-0]     15.024309 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     15.024370 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     15.024461 s:  ---------------------------------------------
    [IPU1-0]     15.024522 s:   0 |  0     71.77     0. 0      0. 0
    [IPU1-0]     15.024644 s:
    [IPU1-0]     15.024705 s:  [ IPC_IN_0 ] LATENCY,
    [IPU1-0]     15.024736 s:  ********************
    [IPU1-0]     15.024919 s:  Local Link Latency     : Avg =      8 us, Min =      0 us, Max =     31 us,
    [IPU1-0]     15.025071 s:  Source to Link Latency : Avg =    199 us, Min =    183 us, Max =    305 us,
    [IPU1-0]     15.025193 s:
    [IPU1-0]     15.025285 s:
    [IPU1-0]     15.025315 s:  ### CPU [  DSP1], LinkID [ 49],
    [IPU1-0]     15.025407 s:
    [IPU1-0]     15.025437 s:  [ ti.radar.fft ] Link Statistics,
    [IPU1-0]     15.025498 s:  ******************************
    [IPU1-0]     15.025559 s:
    [IPU1-0]     15.025620 s:  Elapsed time       = 2301 msec
    [IPU1-0]     15.025681 s:
    [IPU1-0]     15.025712 s:  New data Recv      =  71.70 fps
    [IPU1-0]     15.025834 s:
    [IPU1-0]     15.025864 s:  Input Statistics,
    [IPU1-0]     15.026017 s:
    [IPU1-0]     15.026047 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     15.026139 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     15.026230 s:  --------------------------------------------------
    [IPU1-0]     15.026322 s:   0 |  71.70      0. 0      0. 0          71.70
    [IPU1-0]     15.026474 s:
    [IPU1-0]     15.026505 s:  Output Statistics,
    [IPU1-0]     15.026566 s:
    [IPU1-0]     15.026596 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     15.026688 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     15.026749 s:  ---------------------------------------------
    [IPU1-0]     15.026871 s:   0 |  0     71.70     0. 0      0. 0
    [IPU1-0]     15.027023 s:
    [IPU1-0]     15.027054 s:  [ ti.radar.fft ] LATENCY,
    [IPU1-0]     15.027115 s:  ********************
    [IPU1-0]     15.027176 s:  Local Link Latency     : Avg =   2253 us, Min =   2226 us, Max =   2319 us,
    [IPU1-0]     15.027298 s:  Source to Link Latency : Avg =   2493 us, Min =   2470 us, Max =   2563 us,
    [IPU1-0]     15.027420 s:
    [IPU1-0]     15.027481 s:  CPU [    DSP1], LinkID [ 25], Link Statistics not available !
    [IPU1-0]     15.027603 s:
    [IPU1-0]     15.027664 s:  ### CPU [  DSP1], LinkID [ 50],
    [IPU1-0]     15.027725 s:
    [IPU1-0]     15.027786 s:  [ ti.radar.pkDetect ] Link Statistics,
    [IPU1-0]     15.027877 s:  ******************************
    [IPU1-0]     15.027938 s:
    [IPU1-0]     15.027999 s:  Elapsed time       = 2301 msec
    [IPU1-0]     15.028060 s:
    [IPU1-0]     15.028091 s:  New data Recv      =  71.70 fps
    [IPU1-0]     15.028182 s:
    [IPU1-0]     15.028213 s:  Input Statistics,
    [IPU1-0]     15.028274 s:
    [IPU1-0]     15.028304 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     15.028365 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     15.028457 s:  --------------------------------------------------
    [IPU1-0]     15.028548 s:   0 |  71.70      0. 0      0. 0          71.70
    [IPU1-0]     15.028670 s:
    [IPU1-0]     15.028701 s:  Output Statistics,
    [IPU1-0]     15.028762 s:
    [IPU1-0]     15.028823 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     15.028914 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     15.028975 s:  ---------------------------------------------
    [IPU1-0]     15.029036 s:   0 |  0     71.70     0. 0      0. 0
    [IPU1-0]     15.029158 s:
    [IPU1-0]     15.029219 s:  [ ti.radar.pkDetect ] LATENCY,
    [IPU1-0]     15.029280 s:  ********************
    [IPU1-0]     15.029341 s:  Local Link Latency     : Avg =   3468 us, Min =   2745 us, Max =   4209 us,
    [IPU1-0]     15.029463 s:  Source to Link Latency : Avg =   6113 us, Min =   5338 us, Max =   6893 us,
    [IPU1-0]     15.029585 s:
    [IPU1-0]     15.029616 s:  CPU [    DSP1], LinkID [ 38], Link Statistics not available !
    [IPU1-0]     15.029768 s:
    [IPU1-0]     15.029951 s:  ### CPU [  DSP1], LinkID [ 34],
    [IPU1-0]     15.030043 s:
    [IPU1-0]     15.030073 s:  [ SYNC_0 ] Link Statistics,
    [IPU1-0]     15.030134 s:  ******************************
    [IPU1-0]     15.030195 s:
    [IPU1-0]     15.030256 s:  Elapsed time       = 2471 msec
    [IPU1-0]     15.030317 s:
    [IPU1-0]     15.030348 s:  New data Recv      = 163.49 fps
    [IPU1-0]     15.030439 s:  Get Full Buf Cb    =  66.77 fps
    [IPU1-0]     15.030500 s:  Put Empty Buf Cb   =  66.36 fps
    [IPU1-0]     15.030592 s:  Driver/Notify Cb   =  29.94 fps
    [IPU1-0]     15.030653 s:
    [IPU1-0]     15.030714 s:  Input Statistics,
    [IPU1-0]     15.030775 s:
    [IPU1-0]     15.030836 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     15.030897 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     15.030988 s:  --------------------------------------------------
    [IPU1-0]     15.031080 s:   0 |  66.77      0. 0      0. 0          66.77
    [IPU1-0]     15.031202 s:   1 |  66.77      0. 0      0. 0          66.77
    [IPU1-0]     15.031354 s:
    [IPU1-0]     15.031385 s:  Output Statistics,
    [IPU1-0]     15.031446 s:
    [IPU1-0]     15.031476 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     15.031537 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     15.031629 s:  ---------------------------------------------
    [IPU1-0]     15.031690 s:   0 |  0     66.77     0. 0      0. 0
    [IPU1-0]     15.031842 s:
    [IPU1-0]     15.031903 s:  [ SYNC_0 ] LATENCY,
    [IPU1-0]     15.031934 s:  ********************
    [IPU1-0]     15.031995 s:  Local Link Latency     : Avg =   1801 us, Min =      0 us, Max =   4331 us,
    [IPU1-0]     15.032117 s:  Source to Link Latency : Avg =   6212 us, Min =   5460 us, Max =   6985 us,
    [IPU1-0]     15.032239 s:
    [IPU1-0]     15.032361 s:
    [IPU1-0]     15.032391 s:  ### CPU [  DSP1], LinkID [  0],
    [IPU1-0]     15.032452 s:
    [IPU1-0]     15.032513 s:  [ IPC_OUT_0 ] Link Statistics,
    [IPU1-0]     15.032574 s:  ******************************
    [IPU1-0]     15.032635 s:
    [IPU1-0]     15.032666 s:  Elapsed time       = 2302 msec
    [IPU1-0]     15.032727 s:
    [IPU1-0]     15.032788 s:  New data Recv      =  71.67 fps
    [IPU1-0]     15.032879 s:  Release data Recv  =  71.24 fps
    [IPU1-0]     15.032971 s:  Driver/Notify Cb   = 171.15 fps
    [IPU1-0]     15.033032 s:
    [IPU1-0]     15.033093 s:  Input Statistics,
    [IPU1-0]     15.033123 s:
    [IPU1-0]     15.033184 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     15.033245 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     15.033337 s:  --------------------------------------------------
    [IPU1-0]     15.033398 s:   0 |  71.67      0. 0      0. 0          71.67
    [IPU1-0]     15.033550 s:
    [IPU1-0]     15.033581 s:  Output Statistics,
    [IPU1-0]     15.033642 s:
    [IPU1-0]     15.033672 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     15.033764 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     15.034221 s:  ---------------------------------------------
    [IPU1-0]     15.034343 s:   0 |  0     71.67     0. 0      0. 0
    [IPU1-0]     15.034465 s:
    [IPU1-0]     15.034496 s:  [ IPC_OUT_0 ] LATENCY,
    [IPU1-0]     15.034557 s:  ********************
    [IPU1-0]     15.034618 s:  Local Link Latency     : Avg =      4 us, Min =      0 us, Max =     31 us,
    [IPU1-0]     15.034740 s:  Source to Link Latency : Avg =   6244 us, Min =   5490 us, Max =   7015 us,
    [IPU1-0]     15.035045 s:
    [IPU1-0]     15.534984 s:
    [IPU1-0]     15.535045 s:  ### CPU [IPU1-1], LinkID [ 10],
    [IPU1-0]     15.535136 s:
    [IPU1-0]     15.535167 s:  [ IPC_IN_0 ] Link Statistics,
    [IPU1-0]     15.535258 s:  ******************************
    [IPU1-0]     15.535319 s:
    [IPU1-0]     15.535350 s:  Elapsed time       = 2805 msec
    [IPU1-0]     15.535411 s:
    [IPU1-0]     15.535441 s:  Get Full Buf Cb    =  71.65 fps
    [IPU1-0]     15.535533 s:  Put Empty Buf Cb   =  71.30 fps
    [IPU1-0]     15.535624 s:  Driver/Notify Cb   =  71.30 fps
    [IPU1-0]     15.535685 s:
    [IPU1-0]     15.535716 s:  Input Statistics,
    [IPU1-0]     15.535777 s:
    [IPU1-0]     15.535838 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     15.536021 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     15.536112 s:  --------------------------------------------------
    [IPU1-0]     15.536173 s:   0 |  71.65      0. 0      0. 0          71.65
    [IPU1-0]     15.536326 s:
    [IPU1-0]     15.536356 s:  Output Statistics,
    [IPU1-0]     15.536417 s:
    [IPU1-0]     15.536448 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     15.536539 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     15.536600 s:  ---------------------------------------------
    [IPU1-0]     15.536692 s:   0 |  0     71.65     0. 0      0. 0
    [IPU1-0]     15.536814 s:
    [IPU1-0]     15.536875 s:  [ IPC_IN_0 ] LATENCY,
    [IPU1-0]     15.536936 s:  ********************
    [IPU1-0]     15.536997 s:  Local Link Latency     : Avg =     33 us, Min =     30 us, Max =     61 us,
    [IPU1-0]     15.537119 s:  Source to Link Latency : Avg =   6407 us, Min =   5551 us, Max =   7198 us,
    [IPU1-0]     15.537241 s:
    [IPU1-0]     15.537333 s:
    [IPU1-0]     15.537363 s:  ### CPU [IPU1-1], LinkID [ 63],
    [IPU1-0]     15.537455 s:
    [IPU1-0]     15.537485 s:  [ NETWORK TX ] Link Statistics,
    [IPU1-0]     15.537546 s:  ******************************
    [IPU1-0]     15.537607 s:
    [IPU1-0]     15.537638 s:  Elapsed time       = 2807 msec
    [IPU1-0]     15.537729 s:
    [IPU1-0]     15.537760 s:  New data Recv      =  71.25 fps
    [IPU1-0]     15.538248 s:
    [IPU1-0]     15.538309 s:  Input Statistics,
    [IPU1-0]     15.538370 s:
    [IPU1-0]     15.538400 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     15.538492 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     15.538553 s:  --------------------------------------------------
    [IPU1-0]     15.538644 s:   0 |  71.60      0. 0      0. 0          71.60
    [IPU1-0]     15.538797 s:
    [IPU1-0]     15.538888 s:  [ NETWORK TX ] LATENCY,
    [IPU1-0]     15.538980 s:  ********************
    [IPU1-0]     15.539041 s:  Local Link Latency     : Avg =    132 us, Min =    122 us, Max =    183 us,
    [IPU1-0]     15.539163 s:  Source to Link Latency : Avg =   6505 us, Min =   5643 us, Max =   7290 us,
    [IPU1-0]     15.539315 s

    stat24-29.txt
    [IPU1-0]     30.629659 s:
    [IPU1-0]     30.629720 s:  CPU [IPU1-0 ] Statistics,
    [IPU1-0]     30.629750 s:  *************************
    [IPU1-0]     30.629811 s:
    [IPU1-0]     30.629872 s:  LOAD: CPU: 5.4% HWI: 1.1%, SWI:0.4%, Low Power: 0.0%
    [IPU1-0]     30.630025 s:
    [IPU1-0]     30.630086 s:  LOAD: TSK: IPC_OUT_0           : 0.7%
    [IPU1-0]     30.630238 s:  LOAD: TSK: ISSCAPTURE          : 0.3%
    [IPU1-0]     30.630330 s:  LOAD: TSK: STAT_COLL           : 2.0%
    [IPU1-0]     30.630452 s:  LOAD: TSK: MISC                : 0.9%
    [IPU1-0]     30.630513 s:
    [IPU1-0]     30.630574 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-0]     30.630665 s:
    [IPU1-0]     30.630726 s:  SYSTEM: Sempahores Objects,  271 of 1050 free
    [IPU1-0]     30.630818 s:  SYSTEM: Task Objects      ,   24 of  100 free
    [IPU1-0]     30.630879 s:  SYSTEM: Clock Objects     ,   97 of  100 free
    [IPU1-0]     30.630970 s:  SYSTEM: Hwi Objects       ,   84 of  100 free
    [IPU1-0]     30.631062 s:
    [IPU1-0]     30.631092 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 258680 B (252 KB)
    [IPU1-0]     30.631275 s:  SYSTEM: Heap = SR_OCMC              @ 0x00000000, Total size = 0 B (0 KB), Free size = 0 B (0 KB)
    [IPU1-0]     30.631397 s:  SYSTEM: Heap = SR_DDR_CACHED        @ 0x85703000, Total size = 369086464 B (351 MB), Free size = 358473728 B (341 MB)
    [IPU1-0]     30.631580 s:  SYSTEM: Heap = SR_DDR_NON_CACHED    @ 0x00000000, Total size = 0 B (0 MB), Free size = 0 B (0 MB)
    [IPU1-0]     30.631763 s:
    [IPU1-0]     30.631794 s:
    [IPU1-0]     30.631824 s:  CPU [IPU1-1 ] Statistics,
    [IPU1-0]     30.631885 s:  *************************
    [IPU1-0]     30.631946 s:
    [IPU1-0]     30.632007 s:  LOAD: CPU: 2.8% HWI: 0.7%, SWI:0.3%, Low Power: 0.0%
    [IPU1-0]     30.632129 s:
    [IPU1-0]     30.632190 s:  LOAD: TSK: IPC_IN_0            : 0.5%
    [IPU1-0]     30.632312 s:  LOAD: TSK: NETWORK TX0         : 0.5%
    [IPU1-0]     30.632434 s:  LOAD: TSK: MISC                : 0.8%
    [IPU1-0]     30.632526 s:
    [IPU1-0]     30.632556 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-0]     30.632648 s:
    [IPU1-0]     30.632709 s:  SYSTEM: Sempahores Objects,  428 of 1050 free
    [IPU1-0]     30.632770 s:  SYSTEM: Task Objects      ,   36 of  100 free
    [IPU1-0]     30.632861 s:  SYSTEM: Clock Objects     ,   99 of  100 free
    [IPU1-0]     30.632953 s:  SYSTEM: Hwi Objects       ,   97 of  100 free
    [IPU1-0]     30.633044 s:
    [IPU1-0]     30.633075 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 246224 B (240 KB)
    [IPU1-0]     30.633227 s:
    [IPU1-0]     30.633288 s:
    [IPU1-0]     30.633319 s:  CPU [DSP1   ] Statistics,
    [IPU1-0]     30.633380 s:  *************************
    [IPU1-0]     30.633959 s:
    [IPU1-0]     30.634051 s:  LOAD: CPU: 2.4% HWI: 0.4%, SWI:0.1%, Low Power: 0.0%
    [IPU1-0]     30.634203 s:
    [IPU1-0]     30.634234 s:  LOAD: TSK: MISC                : 1.9%
    [IPU1-0]     30.634325 s:
    [IPU1-0]     30.634386 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-0]     30.634478 s:
    [IPU1-0]     30.634508 s:  SYSTEM: Sempahores Objects,  444 of 1050 free
    [IPU1-0]     30.634600 s:  SYSTEM: Task Objects      ,   91 of  100 free
    [IPU1-0]     30.634752 s:  SYSTEM: Clock Objects     ,   97 of  100 free
    [IPU1-0]     30.634844 s:  SYSTEM: Hwi Objects       ,   98 of  100 free
    [IPU1-0]     30.634935 s:
    [IPU1-0]     30.634966 s:  SYSTEM: Heap = LOCAL_L2             @ 0x00800000, Total size = 227264 B (221 KB), Free size = 227264 B (221 KB)
    [IPU1-0]     30.635118 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 524288 B (512 KB), Free size = 479136 B (467 KB)
    [IPU1-0]     30.635301 s:
    [IPU1-0]     30.635332 s:
    [IPU1-0]     30.635393 s:  CPU [EVE1   ] Statistics,
    [IPU1-0]     30.635454 s:  *************************
    [IPU1-0]     30.635515 s:
    [IPU1-0]     30.635576 s:  LOAD: CPU: 11.6% HWI: 0.8%, SWI:0.1%, Low Power: 0.0%
    [IPU1-0]     30.635728 s:
    [IPU1-0]     30.635789 s:  LOAD: TSK: MISC                : 10.7%
    [IPU1-0]     30.635881 s:
    [IPU1-0]     30.635911 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-0]     30.636003 s:
    [IPU1-0]     30.636064 s:  SYSTEM: Sempahores Objects,  454 of 1050 free
    [IPU1-0]     30.636155 s:  SYSTEM: Task Objects      ,   92 of  100 free
    [IPU1-0]     30.636369 s:  SYSTEM: Clock Objects     ,   99 of  100 free
    [IPU1-0]     30.636491 s:  SYSTEM: Hwi Objects       ,   97 of  100 free
    [IPU1-0]     30.636582 s:
    [IPU1-0]     30.636674 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 22528 B (22 KB), Free size = 8884 B (8 KB)
    [IPU1-0]     30.636826 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 261008 B (254 KB)
    [IPU1-0]     30.637009 s:
    [IPU1-0]     30.637314 s:
    [IPU1-0]     30.637375 s:  UTILS_PRCM_STATS:  Current Temperature,
    [IPU1-0]     30.637436 s:
    [IPU1-0]     30.637497 s:   Voltage Rail         ||   Curr Temp Min - Max
    [IPU1-0]     30.637558 s:  ---------------------------------------------------------
    [IPU1-0]     30.637741 s:     PMHAL_PRCM_VD_CORE ||     [46.800 , 47.200]
    [IPU1-0]     30.637833 s:
    [IPU1-0]     30.637924 s:
    [IPU1-0]     30.637985 s:  Statistics Collector,
    [IPU1-0]     30.638046 s:
    [IPU1-0]     30.638077 s:        STATISTIC          Avg Data        Peak Data
    [IPU1-0]     30.638168 s:        COLLECTOR          MB/s            MB/s
    [IPU1-0]     30.638229 s:  --------------------------------------------------
    [IPU1-0]     30.638321 s:  SCI_EMIF_SYS         |     32.217726    789.165133
    [IPU1-0]     30.638443 s:  SCI_IPU              |      7.817390    168.442585
    [IPU1-0]     30.638534 s:  SCI_DSP1_MDMA        |      5.630239    748.874050
    [IPU1-0]     30.638809 s:  SCI_DSP2_MDMA        |      0.000000      0.000000
    [IPU1-0]     30.639022 s:  SCI_DSS              |      0.000000      0.000000
    [IPU1-0]     30.639144 s:  SCI_MMU              |      0.000000      0.000000
    [IPU1-0]     30.639236 s:  SCI_EDMA_TC0_RD      |      0.000000      0.000000
    [IPU1-0]     30.639327 s:  SCI_EDMA_TC0_WR      |      0.000000      0.000000
    [IPU1-0]     30.639419 s:  SCI_VIP_P1           |      0.000000      0.000000
    [IPU1-0]     30.639510 s:  SCI_VIP_P2           |      0.000000      0.000000
    [IPU1-0]     30.639663 s:  SCI_ISS_RT           |      0.000000      0.000000
    [IPU1-0]     30.639754 s:  SCI_ISS_NRT2         |      0.000000      0.000000
    [IPU1-0]     30.639846 s:  SCI_EVE_P1           |     28.066551    423.518101
    [IPU1-0]     30.639968 s:  SCI_EVE_P2           |      0.000000      0.000000
    [IPU1-0]     30.640059 s:  SCI_GMAC_SW          |      0.000209      0.162335
    [IPU1-0]     30.640151 s:  SCI_ISS_NRT1         |      0.000000      0.000000
    [IPU1-0]     30.640273 s:  SCI_DSP2_CFG         |      0.000000      0.000000
    [IPU1-0]     30.640364 s:  SCI_DSP2_EDMA        |      0.000000      0.000000
    [IPU1-0]     30.640456 s:  SCI_OCMC_RAM         |      0.000000      0.000000
    [IPU1-0]     30.640547 s:  SCI_DSP1_CFG         |      0.003957      0.024158
    [IPU1-0]     30.640669 s:  SCI_DSP1_EDMA        |      0.000000      0.000000
    [IPU1-0]     30.640791 s:  SCI_GPMC             |      0.000000      0.000000
    [IPU1-0]     30.640883 s:  SCI_MCASP            |      0.000000      0.000000
    [IPU1-0]     30.640974 s:  SCI_EDMA_TC1_RD      |      0.000000      0.000000
    [IPU1-0]     30.641066 s:  SCI_EDMA_TC1_WR      |      0.000000      0.000000
    [IPU1-0]     30.740651 s:
    [IPU1-0]     30.740712 s:
    [IPU1-0]     30.740804 s:
    [IPU1-0]     30.740834 s:  ### CPU [IPU1-0], LinkID [ 81],
    [IPU1-0]     30.740926 s:
    [IPU1-0]     30.740956 s:  [ ISSCAPTURE ] Link Statistics,
    [IPU1-0]     30.741017 s:  ******************************
    [IPU1-0]     30.741078 s:
    [IPU1-0]     30.741109 s:  Elapsed time       = 18112 msec
    [IPU1-0]     30.741200 s:
    [IPU1-0]     30.741231 s:  Get Full Buf Cb    =  35.72 fps
    [IPU1-0]     30.741292 s:  Put Empty Buf Cb   =  35.72 fps
    [IPU1-0]     30.741383 s:  Driver/Notify Cb   =  35.66 fps
    [IPU1-0]     30.741444 s:
    [IPU1-0]     30.741475 s:  Input Statistics,
    [IPU1-0]     30.741536 s:
    [IPU1-0]     30.741566 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     30.741688 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     30.741780 s:  --------------------------------------------------
    [IPU1-0]     30.741841 s:   0 |  35.72      0. 0      0. 0          35.72
    [IPU1-0]     30.741963 s:
    [IPU1-0]     30.742024 s:  Output Statistics,
    [IPU1-0]     30.742054 s:
    [IPU1-0]     30.742115 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     30.742176 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     30.742237 s:  ---------------------------------------------
    [IPU1-0]     30.742420 s:   0 |  0     35.72     0. 0      0. 0
    [IPU1-0]     30.742512 s:
    [IPU1-0]     30.742573 s:  [ ISSCAPTURE ] LATENCY,
    [IPU1-0]     30.742634 s:  ********************
    [IPU1-0]     30.742695 s:
    [IPU1-0]     30.742817 s:
    [IPU1-0]     30.742847 s:  ### CPU [IPU1-0], LinkID [  0],
    [IPU1-0]     30.742908 s:
    [IPU1-0]     30.742969 s:  [ IPC_OUT_0 ] Link Statistics,
    [IPU1-0]     30.743030 s:  ******************************
    [IPU1-0]     30.743091 s:
    [IPU1-0]     30.743122 s:  Elapsed time       = 18114 msec
    [IPU1-0]     30.743183 s:
    [IPU1-0]     30.743244 s:  New data Recv      =  35.71 fps
    [IPU1-0]     30.743305 s:  Release data Recv  =  35.71 fps
    [IPU1-0]     30.743396 s:  Driver/Notify Cb   = 135.75 fps
    [IPU1-0]     30.743457 s:
    [IPU1-0]     30.743518 s:  Input Statistics,
    [IPU1-0]     30.743549 s:
    [IPU1-0]     30.743579 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     30.743823 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     30.743915 s:  --------------------------------------------------
    [IPU1-0]     30.744006 s:   0 |  35.71      0. 0      0. 0          35.71
    [IPU1-0]     30.744128 s:
    [IPU1-0]     30.744159 s:  Output Statistics,
    [IPU1-0]     30.744220 s:
    [IPU1-0]     30.744250 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     30.744311 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     30.744403 s:  ---------------------------------------------
    [IPU1-0]     30.744464 s:   0 |  0     35.71     0. 0      0. 0
    [IPU1-0]     30.744586 s:
    [IPU1-0]     30.744647 s:  [ IPC_OUT_0 ] LATENCY,
    [IPU1-0]     30.744708 s:  ********************
    [IPU1-0]     30.744769 s:  Local Link Latency     : Avg =      9 us, Min =      0 us, Max =     31 us,
    [IPU1-0]     30.744891 s:  Source to Link Latency : Avg =     95 us, Min =     61 us, Max =    153 us,
    [IPU1-0]     30.744982 s:
    [IPU1-0]     31.244708 s:
    [IPU1-0]     31.244799 s:  ### CPU [  DSP1], LinkID [ 10],
    [IPU1-0]     31.244860 s:
    [IPU1-0]     31.244891 s:  [ IPC_IN_0 ] Link Statistics,
    [IPU1-0]     31.244982 s:  ******************************
    [IPU1-0]     31.245043 s:
    [IPU1-0]     31.245074 s:  Elapsed time       = 18616 msec
    [IPU1-0]     31.245135 s:
    [IPU1-0]     31.245165 s:  Get Full Buf Cb    =  35.72 fps
    [IPU1-0]     31.245257 s:  Put Empty Buf Cb   =  35.72 fps
    [IPU1-0]     31.245318 s:  Driver/Notify Cb   =  35.66 fps
    [IPU1-0]     31.245409 s:
    [IPU1-0]     31.245440 s:  Input Statistics,
    [IPU1-0]     31.245501 s:
    [IPU1-0]     31.245531 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     31.245592 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     31.245714 s:  --------------------------------------------------
    [IPU1-0]     31.245775 s:   0 |  35.72      0. 0      0. 0          35.72
    [IPU1-0]     31.245928 s:
    [IPU1-0]     31.245958 s:  Output Statistics,
    [IPU1-0]     31.245989 s:
    [IPU1-0]     31.246050 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     31.246111 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     31.246172 s:  ---------------------------------------------
    [IPU1-0]     31.246263 s:   0 |  0     35.72     0. 0      0. 0
    [IPU1-0]     31.246385 s:
    [IPU1-0]     31.246416 s:  [ IPC_IN_0 ] LATENCY,
    [IPU1-0]     31.246477 s:  ********************
    [IPU1-0]     31.246538 s:  Local Link Latency     : Avg =      8 us, Min =      0 us, Max =     31 us,
    [IPU1-0]     31.246660 s:  Source to Link Latency : Avg =    201 us, Min =    183 us, Max =    244 us,
    [IPU1-0]     31.246782 s:
    [IPU1-0]     31.246873 s:
    [IPU1-0]     31.246904 s:  ### CPU [  DSP1], LinkID [ 49],
    [IPU1-0]     31.246965 s:
    [IPU1-0]     31.247026 s:  [ ti.radar.fft ] Link Statistics,
    [IPU1-0]     31.247087 s:  ******************************
    [IPU1-0]     31.247148 s:
    [IPU1-0]     31.247178 s:  Elapsed time       = 18618 msec
    [IPU1-0]     31.247239 s:
    [IPU1-0]     31.247300 s:  New data Recv      =  35.71 fps
    [IPU1-0]     31.247361 s:
    [IPU1-0]     31.247392 s:  Input Statistics,
    [IPU1-0]     31.247453 s:
    [IPU1-0]     31.247483 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     31.247575 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     31.247666 s:  --------------------------------------------------
    [IPU1-0]     31.247727 s:   0 |  35.71      0. 0      0. 0          35.71
    [IPU1-0]     31.247880 s:
    [IPU1-0]     31.247910 s:  Output Statistics,
    [IPU1-0]     31.247941 s:
    [IPU1-0]     31.248002 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     31.248063 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     31.248124 s:  ---------------------------------------------
    [IPU1-0]     31.248215 s:   0 |  0     35.71     0. 0      0. 0
    [IPU1-0]     31.248337 s:
    [IPU1-0]     31.248368 s:  [ ti.radar.fft ] LATENCY,
    [IPU1-0]     31.248429 s:  ********************
    [IPU1-0]     31.248490 s:  Local Link Latency     : Avg =   2296 us, Min =   2257 us, Max =   2379 us,
    [IPU1-0]     31.248795 s:  Source to Link Latency : Avg =   2538 us, Min =   2501 us, Max =   2624 us,
    [IPU1-0]     31.248917 s:
    [IPU1-0]     31.248978 s:  CPU [    DSP1], LinkID [ 25], Link Statistics not available !
    [IPU1-0]     31.249130 s:
    [IPU1-0]     31.249161 s:  ### CPU [  DSP1], LinkID [ 50],
    [IPU1-0]     31.249252 s:
    [IPU1-0]     31.249283 s:  [ ti.radar.pkDetect ] Link Statistics,
    [IPU1-0]     31.249344 s:  ******************************
    [IPU1-0]     31.249405 s:
    [IPU1-0]     31.249466 s:  Elapsed time       = 18618 msec
    [IPU1-0]     31.249954 s:
    [IPU1-0]     31.250015 s:  New data Recv      =  35.71 fps
    [IPU1-0]     31.250076 s:
    [IPU1-0]     31.250137 s:  Input Statistics,
    [IPU1-0]     31.250167 s:
    [IPU1-0]     31.250198 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     31.250289 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     31.250381 s:  --------------------------------------------------
    [IPU1-0]     31.250472 s:   0 |  35.71      0. 0      0. 0          35.71
    [IPU1-0]     31.250594 s:
    [IPU1-0]     31.250686 s:  Output Statistics,
    [IPU1-0]     31.250747 s:
    [IPU1-0]     31.250777 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     31.250869 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     31.250930 s:  ---------------------------------------------
    [IPU1-0]     31.251021 s:   0 |  0     35.71     0. 0      0. 0
    [IPU1-0]     31.251143 s:
    [IPU1-0]     31.251174 s:  [ ti.radar.pkDetect ] LATENCY,
    [IPU1-0]     31.251265 s:  ********************
    [IPU1-0]     31.251296 s:  Local Link Latency     : Avg =    889 us, Min =    854 us, Max =    976 us,
    [IPU1-0]     31.251448 s:  Source to Link Latency : Avg =   3546 us, Min =   3477 us, Max =   3630 us,
    [IPU1-0]     31.251570 s:
    [IPU1-0]     31.251631 s:  CPU [    DSP1], LinkID [ 38], Link Statistics not available !
    [IPU1-0]     31.251814 s:
    [IPU1-0]     31.251875 s:  ### CPU [  DSP1], LinkID [ 34],
    [IPU1-0]     31.251967 s:
    [IPU1-0]     31.251997 s:  [ SYNC_0 ] Link Statistics,
    [IPU1-0]     31.252058 s:  ******************************
    [IPU1-0]     31.252119 s:
    [IPU1-0]     31.252180 s:  Elapsed time       = 18830 msec
    [IPU1-0]     31.252241 s:
    [IPU1-0]     31.252272 s:  New data Recv      = 100.79 fps
    [IPU1-0]     31.252485 s:  Get Full Buf Cb    =  35.31 fps
    [IPU1-0]     31.252607 s:  Put Empty Buf Cb   =  35.31 fps
    [IPU1-0]     31.252699 s:  Driver/Notify Cb   =  30.27 fps
    [IPU1-0]     31.252790 s:
    [IPU1-0]     31.252821 s:  Input Statistics,
    [IPU1-0]     31.252882 s:
    [IPU1-0]     31.252943 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     31.253004 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     31.253065 s:  --------------------------------------------------
    [IPU1-0]     31.253156 s:   0 |  35.31      0. 0      0. 0          35.31
    [IPU1-0]     31.253278 s:   1 |  35.31      0. 0      0. 0          35.31
    [IPU1-0]     31.253431 s:
    [IPU1-0]     31.253461 s:  Output Statistics,
    [IPU1-0]     31.253522 s:
    [IPU1-0]     31.253553 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     31.253827 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     31.253919 s:  ---------------------------------------------
    [IPU1-0]     31.254010 s:   0 |  0     35.31     0. 0      0. 0
    [IPU1-0]     31.254132 s:
    [IPU1-0]     31.254163 s:  [ SYNC_0 ] LATENCY,
    [IPU1-0]     31.254224 s:  ********************
    [IPU1-0]     31.254285 s:  Local Link Latency     : Avg =    506 us, Min =      0 us, Max =   1068 us,
    [IPU1-0]     31.254376 s:  Source to Link Latency : Avg =   3635 us, Min =   3568 us, Max =   3722 us,
    [IPU1-0]     31.254498 s:
    [IPU1-0]     31.254620 s:
    [IPU1-0]     31.254681 s:  ### CPU [  DSP1], LinkID [  0],
    [IPU1-0]     31.254773 s:
    [IPU1-0]     31.254803 s:  [ IPC_OUT_0 ] Link Statistics,
    [IPU1-0]     31.254864 s:  ******************************
    [IPU1-0]     31.254925 s:
    [IPU1-0]     31.254956 s:  Elapsed time       = 18622 msec
    [IPU1-0]     31.255017 s:
    [IPU1-0]     31.255078 s:  New data Recv      =  35.76 fps
    [IPU1-0]     31.255139 s:  Release data Recv  =  35.71 fps
    [IPU1-0]     31.255230 s:  Driver/Notify Cb   = 135.69 fps
    [IPU1-0]     31.255291 s:
    [IPU1-0]     31.255322 s:  Input Statistics,
    [IPU1-0]     31.255383 s:
    [IPU1-0]     31.255413 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     31.255505 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     31.255566 s:  --------------------------------------------------
    [IPU1-0]     31.255657 s:   0 |  35.76      0. 0      0. 0          35.76
    [IPU1-0]     31.255810 s:
    [IPU1-0]     31.255840 s:  Output Statistics,
    [IPU1-0]     31.255901 s:
    [IPU1-0]     31.255932 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     31.255993 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     31.256084 s:  ---------------------------------------------
    [IPU1-0]     31.256145 s:   0 |  0     35.76     0. 0      0. 0
    [IPU1-0]     31.256267 s:
    [IPU1-0]     31.256298 s:  [ IPC_OUT_0 ] LATENCY,
    [IPU1-0]     31.256359 s:  ********************
    [IPU1-0]     31.256420 s:  Local Link Latency     : Avg =      3 us, Min =      0 us, Max =     31 us,
    [IPU1-0]     31.256542 s:  Source to Link Latency : Avg =   3666 us, Min =   3599 us, Max =   3752 us,
    [IPU1-0]     31.256664 s:
    [IPU1-0]     31.756786 s:
    [IPU1-0]     31.756877 s:  ### CPU [IPU1-1], LinkID [ 10],
    [IPU1-0]     31.756969 s:
    [IPU1-0]     31.756999 s:  [ IPC_IN_0 ] Link Statistics,
    [IPU1-0]     31.757060 s:  ******************************
    [IPU1-0]     31.757121 s:
    [IPU1-0]     31.757152 s:  Elapsed time       = 19124 msec
    [IPU1-0]     31.757213 s:
    [IPU1-0]     31.757274 s:  Get Full Buf Cb    =  35.71 fps
    [IPU1-0]     31.757335 s:  Put Empty Buf Cb   =  35.71 fps
    [IPU1-0]     31.757426 s:  Driver/Notify Cb   =  35.66 fps
    [IPU1-0]     31.757487 s:
    [IPU1-0]     31.757548 s:  Input Statistics,
    [IPU1-0]     31.757609 s:
    [IPU1-0]     31.757670 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     31.757884 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     31.757945 s:  --------------------------------------------------
    [IPU1-0]     31.758036 s:   0 |  35.71      0. 0      0. 0          35.71
    [IPU1-0]     31.758158 s:
    [IPU1-0]     31.758219 s:  Output Statistics,
    [IPU1-0]     31.758250 s:
    [IPU1-0]     31.758280 s:  CH | Out | Out     | Out Drop | Out User Drop
    [IPU1-0]     31.758372 s:     | ID  | FPS     | FPS      | FPS
    [IPU1-0]     31.758433 s:  ---------------------------------------------
    [IPU1-0]     31.758524 s:   0 |  0     35.71     0. 0      0. 0
    [IPU1-0]     31.758646 s:
    [IPU1-0]     31.758829 s:  [ IPC_IN_0 ] LATENCY,
    [IPU1-0]     31.758921 s:  ********************
    [IPU1-0]     31.758951 s:  Local Link Latency     : Avg =     31 us, Min =      0 us, Max =     61 us,
    [IPU1-0]     31.759073 s:  Source to Link Latency : Avg =   3853 us, Min =   3782 us, Max =   3996 us,
    [IPU1-0]     31.759195 s:
    [IPU1-0]     31.759287 s:
    [IPU1-0]     31.759348 s:  ### CPU [IPU1-1], LinkID [ 63],
    [IPU1-0]     31.759409 s:
    [IPU1-0]     31.759440 s:  [ NETWORK TX ] Link Statistics,
    [IPU1-0]     31.759531 s:  ******************************
    [IPU1-0]     31.759592 s:
    [IPU1-0]     31.759623 s:  Elapsed time       = 19127 msec
    [IPU1-0]     31.759714 s:
    [IPU1-0]     31.759775 s:  New data Recv      =  35.70 fps
    [IPU1-0]     31.759836 s:
    [IPU1-0]     31.759867 s:  Input Statistics,
    [IPU1-0]     31.759928 s:
    [IPU1-0]     31.759958 s:  CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0]     31.760050 s:     | FPS     | FPS     | FPS          | FPS
    [IPU1-0]     31.760111 s:  --------------------------------------------------
    [IPU1-0]     31.760202 s:   0 |  35.76      0. 0      0. 0          35.76
    [IPU1-0]     31.760324 s:
    [IPU1-0]     31.760355 s:  [ NETWORK TX ] LATENCY,
    [IPU1-0]     31.760416 s:  ********************
    [IPU1-0]     31.760477 s:  Local Link Latency     : Avg =    128 us, Min =    122 us, Max =    183 us,
    [IPU1-0]     31.760599 s:  Source to Link Latency : Avg =   3950 us, Min =   3873 us, Max =   4118 us,
    [IPU1-0]     31.760721 s:
    

  • Hi Stanley,

    I also notice in the statistic dumps,

    for stat24-29.txt,

    [IPU1-0] 30.740956 s: [ ISSCAPTURE ] Link Statistics,
    [IPU1-0] 30.741017 s: ******************************
    [IPU1-0] 30.741078 s:
    [IPU1-0] 30.741109 s: Elapsed time = 18112 msec

    for stat30-87.txt,

    [IPU1-0] 14.519215 s: [ ISSCAPTURE ] Link Statistics,
    [IPU1-0] 14.519276 s: ******************************
    [IPU1-0] 14.519337 s:
    [IPU1-0] 14.519368 s: Elapsed time = 1796 msec

    What does that really mean? That's pretty much a 16ms difference wasted and that could be why I am seeing only half the fps coming out of 

    stat24-29.txt compare to stat30-87.txt. But the question is WHY does it behave as such simply by changing the RampEndTime?

    Thanks,

    --Khai

  • Khai,

    Based on the statistics you provided, Radar side seems to the one changing output frame rate.

    TDA3 side doesn't have any drop frame.

    We will need Radar team to comment on why RampEndTime configuration changes the output frame rate from Radar.

    Regards,
    Stanley

  • Stanley,

    Are they aware of this E2E ticket? If not, how can we get them onboard to look into this?

    Thanks,

    --Khai

  • Move to Radar forum...

    Radar team,

    Please comment on why the radar output frame rate changes if rampEndTime value is changed with the same famePeriodicity value.

  • Hi

    From.radar perspective the radar frame rate can't change.

    The configuration is static.

    Do you have an example?

    Thank you

    Cesar

  • Hi Cesar,

    What kind of information (example) do you need from me? I have pretty much provided everything you need.

    If you need to run the scenario that I have, I can provide the code base.

    You need the D3 RVP controller and the AWR1243 (or something similar in that combo). I can provide the Chirp config parameters for you to try. Please see below:

    If you have the hardware and VisionSDK, you can replace your chirp config with this one. Run it once with rampEndTime = 30.87 and the rampEndTime = 24.29. You will see the result I saw here.

    rlFrameCfg_t gAr1243FrmArgs_RadarMode1 =
    {
    .chirpStartIdx = (rlUInt16_t) 0,
    .chirpEndIdx = (rlUInt16_t) CHAINS_RADAR_NUM_TX_ANTENNA - (rlUInt16_t)1, // 1
    .numLoops = (rlUInt16_t) AR1243_RADAR_HEIGHT_128, // 128
    .numFrames = (rlUInt16_t) 0,
    .numAdcSamples = (rlUInt16_t) AR1243_RADAR_WIDTH_256 * (rlUInt16_t)2, // 256 * 2
    .framePeriodicity = (rlUInt32_t) CHAINS_AR1243_TIME_MS_TO_5NS(14), // 14 - 4RDM@77 fr/s, 7 - 2RDM@142 fr/s
    .framePeriod = (rlUInt32_t) 14, // POC: use in AlgorithmFxn_RadarFftDynamicTxPowerBackOff()
    .triggerSelect = (rlUInt16_t) RL_FRAMESTRT_API_TRIGGER,
    .reserved = (rlUInt32_t) 0,
    .frameTriggerDelay = (rlUInt32_t) 0
    };

    static rlProfileCfg_t gAr1243ProfileArgs_RadarMode1[] = {
    // POC: radar mode 1 - Vmax = 37, Vres = .58 m/s, Rmax = 330, Rres = 1.29 m
    {
    .profileId = (rlUInt16_t) 0,
    .pfVcoSelect = (rlUInt8_t) 0,
    .pfCalLutUpdate = (rlUInt8_t) 0,
    .frequency = 782,
    .startFreqConst = (rlUInt32_t) CHAINS_AR1243_FREQ_GHZ_CONV(78.2),
    .idleTimeConst = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(2),
    .adcStartTimeConst = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(4),
    .rampEndTime = (rlUInt32_t) CHAINS_AR1243_TIME_US_TO_10NS(30.87),
    .txOutPowerBackoffCode = (rlUInt32_t) 0,
    .txPhaseShifter = (rlUInt32_t) 0,
    .freqSlopeConst = (rlInt16_t) CHAINS_AR1243_FREQ_MHZ_PER_MICRO_S_SLOPE_CONV(8.52),
    .txStartTime = (rlInt16_t) CHAINS_AR1243_TIME_US_TO_10NS(1U),
    .numAdcSamples = (rlUInt16_t) AR1243_RADAR_WIDTH_256,
    .digOutSampleRate = (rlUInt16_t) 18750, // Kilo Samples per second
    .hpfCornerFreq1 = (rlUInt8_t) RL_RX_HPF1_175_KHz, // Khai: change this to eliminate the range wrap around
    .hpfCornerFreq2 = (rlUInt8_t) RL_RX_HPF2_350_KHz, // Khai: change this to eliminate the range wrap around
    .rxGain = (rlUInt16_t) 38 // Khai: This is same as 9dB VGA gain
    }

    }

     

    static rlChirpCfg_t gAr1243ChirpCfgArgs_RadarMode1[] =
    {
    {
    .chirpStartIdx = (rlUInt16_t) 0x0,
    .chirpEndIdx = (rlUInt16_t) 0x0,
    .profileId = (rlUInt16_t) 0x0, /* Mode 1 profile */
    .startFreqVar = (rlUInt32_t) 0x0,
    .freqSlopeVar = (rlInt16_t) 0x0,
    .idleTimeVar = (rlUInt16_t) 0x0,
    .adcStartTimeVar = (rlUInt16_t) 0x0,
    .txEnable = (rlUInt16_t) 0x1, /* TX1 */
    .reserved = (rlUInt16_t) 0x0
    }

    }

    Thanks,

    --Khai

  • Hi

    Thank you for the information.

    I will review the chirp configuration on Monday.

    I will let you know if it is valid.

    Thank you

    Cesar

  •  Hi

    I checked the profile config with mmWave Studio.

    It does not seem to be valid. See attached snapshot

    Thank you

    Cesar

  • HI Cesar,

    numAdcSamples         = (rlUInt16_t) AR1243_RADAR_WIDTH_256

    not 512.

    Thanks,

    --Khai

  • Hi Cesar,

    Do you have any updates on this issue?

    As I stated, when using the chirp param with rampEndTime=30.87, the frame throughput follows that of framePerdiocity set in rlFrameCfg_t. But when use rampEndTime=24.29, the frame throughput slows down by a factor of 2 as if the framePerdiocity was set to 2x of whatever value specified, in our case it was set to 28ms.

    Thanks,

    --Khai

  • Hi,

    From configuration perspective there is no logical reason why the frame rate would be 2x lower. The rampEndTime is independent of the framePeriodicity.

    One thing I am not clear is why there is numAdcSamples information in structure below. This structure should map to the FrameCfg information which does not include AdcSamples information. Not sure why it is there.

    rlFrameCfg_t gAr1243FrmArgs_RadarMode1 =
    {
    .chirpStartIdx = (rlUInt16_t) 0,
    .chirpEndIdx = (rlUInt16_t) CHAINS_RADAR_NUM_TX_ANTENNA - (rlUInt16_t)1, // 1
    .numLoops = (rlUInt16_t) AR1243_RADAR_HEIGHT_128, // 128
    .numFrames = (rlUInt16_t) 0,
    .numAdcSamples = (rlUInt16_t) AR1243_RADAR_WIDTH_256 * (rlUInt16_t)2, // 256 * 2
    .framePeriodicity = (rlUInt32_t) CHAINS_AR1243_TIME_MS_TO_5NS(14), // 14 - 4RDM@77 fr/s, 7 - 2RDM@142 fr/s
    .framePeriod = (rlUInt32_t) 14, // POC: use in AlgorithmFxn_RadarFftDynamicTxPowerBackOff()
    .triggerSelect = (rlUInt16_t) RL_FRAMESTRT_API_TRIGGER,
    .reserved = (rlUInt32_t) 0,
    .frameTriggerDelay = (rlUInt32_t) 0
    };

    So, in conclusion, the fact that frame rate is 1/2 when decreasing rampEndTime does not make sense from radar sensor configuration perspective.

    It is very puzzing that this is the only variable that is updated in the system and the behavior changes in this way. I think we are missing something

    Did you try to decreas the rampEndTime just a little bit see if anything strange happens?

    Do you have any visibility into the generated frame start interrupts. We need some way to count the generated frame rates.

  • Hi Cesar,

    Thanks for the analysis. As for the numAdcSamples in the frameCfg data structure, below is the rl_sensor.h description:

    /**
    * @brief Number of ADC samples to capture This parameter is required only for AWR1243 and \n
    configures the size of ADC samples per chirp to be sent on LVDS/CSI2 \n
    interface.\n
    It should be configured as:
    For real/pseudo real ADC data - numADCSamples = rlProfileCfg_t.numAdcSamples \n
    For complex1x/complex2x ADC data - \n
    numADCSamples = (rlProfileCfg_t.numAdcSamples ) * 2 \n
    */
    rlUInt16_t numAdcSamples;

    I agreed completely with you. This is something I didn't expect happened simply changing the ramp end time. My first reaction was what was ramp end time have to do with frame throughout right at the beginning of the thread. This is a BIG problem as we need to have different ramEndTime values configured for different radar modes with different range/doppler specs with good frame throughout. 

    I don't have/know how to get to see frame start interrupts. How do I get a hold of the screenshot tool you have above to trigger a test on my AER1243 HW?

    Let me try run several different smaller change in rampEndTime and report back.

    Thanks,

    --Khai

  • Hi Cesar,

    Just ran the rampEndTime test. It can go down as low as 29 to keep the frame rate. Anything lower than that will be 2x slower.

    I took that you verified the chirp params to make sure they are valid based on what I sent you.

    Thanks,

    --Khai

  • Hi Cesar,

    Can you work with the Framework team to look into this issue? You can simply use our chirp params to try it on your side and switch out the rampEndTime between 30.52 and 24.29. To me, this is a hidden BUG in the framework or the AWR firmware code slowing down the frame rate.

    I searched the framework code for framePeriodicity to see which piece of code consumes this parameter. No where really in the framework code using this param other than setting it and send the structure over to the AWR during chirp param config. AWR firmware code is a black box to me as I don't have source code for it. So that tells me the AWR firmware is the one consuming this param and could also potentially altering it if it didn't like the setting for some reason. It's just my logical guess at this point.

    So I need you help to investigate.

    Thanks,

    --Khai

  • Hi Khai,

    I checked with our extended team and we have never seen this type of issue before. This gives me some confidence to say that it does not seem to me possible that changing only the rampEndTime produces half frame rate.

    I think there are several possible explanations. However more debugging is needed in order to root cause this behavior:

    Explanation #1

    When the rampEndTime is changed, it is possible that the frame rate is also re-programmed inadvertently. This can be checked by counting the number of raw data frames received by the TDA device through CSI2. Do you have visibility into the CSI2 driver. There must be some register that counts received frames. In my opinion this is the most likely explanation

    Explanation #2

    When the rampEndTIme is changed, something in the system causes half the frames to drop. In my opinion this is more unlikely because it is highly unlikely that exactly half rate are dropped.

    Thank you

    Cesar

  • Hi Cesar,

    Thanks for confirming the issue with your team.

    As far as the frame rate being exactly half of that of the specified frame period, the TDA code gets notified as when the frame is available and it was notified 2x slower for any specified frame period. That's the level of visibility I know in the vision SDK framework.

    If you have internal access to Vision SDK framework engineers, would you mind ask them if the framework has visibility into the CSI2 driver register? If so, how?

    Thanks,

    --Khai