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.

AWR1642BOOST: High Accuracy /Fluid Sensing Porting to SDK 3.6

Part Number: AWR1642BOOST

Hello, Thanks for posting my question.

Let me go straight to question, How can I port High accuracy / Fluid Sensing to SDK 3.6 ?

The reason is, I want to add calibration compensation to High Accuracy /Fluid Sensing Application which is only applied in SDK 3.6 in mmw demo.

Thank you for your reply

  • Hi,

    There are two routes which you can go with this, each will have their own challenges, so I will give a quick overview of both and let you decide what works best for you.


    Option A. Merge SDK 3.6 changes into the High Accuracy Level Sensing Lab

    1. Update the two projectspec files to use SDK 3.6 rather than SDK 2.1

    2. Import the projects into CCS and resolve errors which arise until you are able to import and build the projects successfully. 

    3. Add necessary features from SDK 3.6 to the High Accuracy Lab


    Option B. Merge the High Accuracy Level Sensing lab into the SDK 3.6 version of the Out of Box Demo

    1. Diff the 1642 Level Sensing Demo against the corresponding Out of Box Demo from SDK 2.1 to determine the delta

    2. Apply this delta to the SDK 3.6 version of the 1642 Out of Box Demo

    Let me know if you have any specific questions about either of these strategies or if you face issues while attempting to accomplish them.


    Best Regards,
    Alec

  • Hi,
    I already done Option A. I work like this :

    1. Import Level sensing labs in CCS.  I got 2 folder : high_accuracy_16xx_dss & high_accuracy_16xx_mss

    2. Building setting set to SDK3.6 on both high_accuracy_16xx_dss & high_accuracy_16xx_mss.

    3. I got porting guidance (SDK 2.0 to SDK 3.6) from this forum , so I follow then

    Add 3 header file from mmw demo : mmw_config.h, mmw_outout.h, detection_object.h to MSS/common, DSS/common

    Change path mmw_config.h to common/ mmw_config.h

    4. Add compensation function in dss/mmw_cli.c
    Result :
    - with high accuracy visualizer 2.1 (support SDK 3.6)  > I got no point-cloud
    - with putty : I can type cli mmwave ex : sensorStart, and got response

    I already done Option B too.

    1. Import Out of box demo labs in CCS.  I got 2 folder created : out_of_box_1642_dss & out_of_box_1642_mss

    2. without doing any change, I compiled and flash out_of_box_1642_lab.bin.

    Result :

    - demo visualizer show nothing

    - with putty : no response

    that's interesting.

    Out of box demo bin result = mmw demo , correct ?
    If I flash mmw demo 16xx bin file, it worked normally as usual.

    Both on putty and mmwave demo visualize 3.6.

    To make more detail, which file I should post here ? .project file ?

  • Hi,

    You mention what you have working on Option A, although I see that the CLI banner mentions the TM demo, which I assume is from of one of our older Traffic Monitoring demos. Did you modify this banner? Or is this perhaps an indication that the proper code is not being loaded properly? Additionally, if you are not seeing any CLI input, you can debug in CCS to see where the error may potentially be.

    Best Regards,
    Alec

  • No , it come from mss/cli.c file of High Accuracy / Fluid Sensing 
    my path C:\ti\mmwave_industrial_toolbox_4_10_1\labs\Level_Sensing\src\16xx\radarDemo\chains\RadarReceiverHighAcc_mmSDK\mmw_HighAccDemo\mss

    1.  high_accuracy_16xx_mss : cli.c

    462 | void MmwDemo_CLIInit (void)
    463 | {
    464 | CLI_Cfg cliCfg;
    465 | char demoBanner[256];

    466 |

    467 | /* Create Demo Banner to be printed out by CLI */
    468 | sprintf(&demoBanner[0], "******************************************\n" \
    469 | "MMW TM Demo %s\n" \
    470 | "******************************************\n", MMW_VERSION);

    /*
     *   @file  cli.c
     *
     *   @brief
     *      Mmw (Milli-meter wave) DEMO CLI Implementation
     *
     *  Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/ 
     *
     *  Redistribution and use in source and binary forms, with or without
     *  modification, are permitted provided that the following conditions
     *  are met:
     *
     *    Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     *    Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the
     *    distribution.
     *
     *    Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     *  "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 THE COPYRIGHT
     *  OWNER OR CONTRIBUTORS 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.
     */
    
    /**************************************************************************
     *************************** Include Files ********************************
     **************************************************************************/
    
    /* Standard Include Files. */
    #include <stdint.h>
    #include <stdlib.h>
    #include <stddef.h>
    #include <string.h>
    #include <stdio.h>
    
    /* BIOS/XDC Include Files. */
    #include <xdc/std.h>
    #include <xdc/cfg/global.h>
    #include <xdc/runtime/IHeap.h>
    #include <xdc/runtime/System.h>
    #include <xdc/runtime/Error.h>
    #include <xdc/runtime/Memory.h>
    #include <ti/sysbios/BIOS.h>
    #include <ti/sysbios/knl/Task.h>
    #include <ti/sysbios/knl/Event.h>
    #include <ti/sysbios/knl/Semaphore.h>
    #include <ti/sysbios/knl/Clock.h>
    #include <ti/sysbios/heaps/HeapBuf.h>
    #include <ti/sysbios/heaps/HeapMem.h>
    #include <ti/sysbios/knl/Event.h>
    
    /* mmWave SDK Include Files: */
    #include <ti/common/sys_common.h>
    #include <ti/drivers/uart/UART.h>
    #include <ti/control/mmwavelink/mmwavelink.h>
    #include <ti/utils/cli/cli.h>
    #include <ti/utils/cli/include/cli_internal.h>
    
    /* Demo Include Files */
    #include "mss_mmw.h"
    /*#include <chains/RadarReceiverHighAcc_mmSDK/mmw_HighAccDemo/common/mmw_messages.h>*/
    #include "mmw_messages.h"
    
    /**************************************************************************
     *************************** Local Definitions ****************************
     **************************************************************************/
    
    /* CLI Extended Command Functions */
    static int32_t MmwDemo_CLIHighAccuCfg (int32_t argc, char* argv[]);
    static int32_t MmwDemo_CLISensorStart (int32_t argc, char* argv[]);
    static int32_t MmwDemo_CLIFrameStart (int32_t argc, char* argv[]);
    static int32_t MmwDemo_CLISensorStop (int32_t argc, char* argv[]);
    static int32_t MmwDemo_CLIGuiMonSel (int32_t argc, char* argv[]);
    static int32_t MmwDemo_CLISetDataLogger (int32_t argc, char* argv[]);
    static int32_t MmwDemo_CLIADCBufCfg (int32_t argc, char* argv[]);
    
    /**************************************************************************
     *************************** Extern Definitions *******************************
     **************************************************************************/
    
    extern MmwDemo_MCB    gMmwMssMCB;
    extern int32_t MmwDemo_mboxWrite(MmwDemo_message     * message);
    
    /**************************************************************************
     *************************** CLI  Function Definitions **************************
     **************************************************************************/
    
    /**
     *  @b Description
     *  @n
     *      This is the CLI Handler for the sensor start command
     *
     *  @param[in] argc
     *      Number of arguments
     *  @param[in] argv
     *      Arguments
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Error   -   <0
     */
    static int32_t MmwDemo_CLISensorStart (int32_t argc, char* argv[])
    {
        gMmwMssMCB.stats.cliSensorStartEvt ++;
    
        /* Get the configuration from the CLI mmWave Extension */
        CLI_getMMWaveExtensionConfig (&gMmwMssMCB.cfg.ctrlCfg);
    
        /* Get the open configuration from the CLI mmWave Extension */
        CLI_getMMWaveExtensionOpenConfig (&gMmwMssMCB.cfg.openCfg);
    
        /* Post sensorSTart event to notify configuration is done */
        Event_post(gMmwMssMCB.eventHandle, MMWDEMO_CLI_SENSORSTART_EVT);
    
        return 0;
    }
    
    /**
     *  @b Description
     *  @n
     *      This is the CLI Handler for the frame start command
     *
     *  @param[in] argc
     *      Number of arguments
     *  @param[in] argv
     *      Arguments
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Error   -   <0
     */
    static int32_t MmwDemo_CLIFrameStart (int32_t argc, char* argv[])
    {
        gMmwMssMCB.stats.cliFrameStartEvt ++;
    
        /* Post sensorSTart event to notify configuration is done */
        Event_post(gMmwMssMCB.eventHandle, MMWDEMO_CLI_FRAMESTART_EVT);
        return 0;
    }
    
    
    /**
     *  @b Description
     *  @n
     *      This is the CLI Handler for the sensor stop command
     *
     *  @param[in] argc
     *      Number of arguments
     *  @param[in] argv
     *      Arguments
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Error   -   <0
     */
    static int32_t MmwDemo_CLISensorStop (int32_t argc, char* argv[])
    {
        gMmwMssMCB.stats.cliSensorStopEvt ++;
    
        /* Post sensorSTOP event to notify sensor stop command */
        Event_post(gMmwMssMCB.eventHandle, MMWDEMO_CLI_SENSORSTOP_EVT);
    
        return 0;
    }
    
    /**
     *  @b Description
     *  @n
     *      This is the CLI Handler for gui monitoring configuration
     *
     *  @param[in] argc
     *      Number of arguments
     *  @param[in] argv
     *      Arguments
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Error   -   <0
     */
    static int32_t MmwDemo_CLIGuiMonSel (int32_t argc, char* argv[])
    {
        MmwDemo_GuiMonSel   guiMonSel;
        MmwDemo_message     message;
    
        /* Sanity Check: Minimum argument check */
        if (argc != 7)
        {
            CLI_write ("Error: Invalid usage of the CLI command\n");
            return -1;
        }
    
        /* Initialize the ADC Output configuration: */
        memset ((void *)&guiMonSel, 0, sizeof(MmwDemo_GuiMonSel));
    
        /* Populate configuration: */
        guiMonSel.detectedObjects           = atoi (argv[1]);
        guiMonSel.logRangeInput             = atoi (argv[2]);
        guiMonSel.dummy       				= atoi (argv[3]);
        guiMonSel.dummy       				= atoi (argv[4]);
        guiMonSel.dummy       				= atoi (argv[5]);
        guiMonSel.logStats       			= atoi (argv[6]);
    
        /* Save Configuration to use later */
        memcpy((void *)&gMmwMssMCB.cfg.guiMonSel, (void *)&guiMonSel, sizeof(MmwDemo_GuiMonSel));
        
        /* Send configuration to DSS */
        memset((void *)&message, 0, sizeof(MmwDemo_message));
    
        message.type = MMWDEMO_MSS2DSS_GUIMON_CFG;
        memcpy((void *)&message.body.guiMonSel, (void *)&guiMonSel, sizeof(MmwDemo_GuiMonSel));
    
        if (MmwDemo_mboxWrite(&message) == 0)
            return 0;
        else
            return -1;
    }
    /**
     *  @b Description
     *  @n
     *      This is the CLI Handler for data logger set command
     *
     *  @param[in] argc
     *      Number of arguments
     *  @param[in] argv
     *      Arguments
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Error   -   <0
     */
    static int32_t MmwDemo_CLIADCBufCfg (int32_t argc, char* argv[])
    {
        MmwDemo_ADCBufCfg   adcBufCfg;
        MmwDemo_message     message;
    
        /* Sanity Check: Minimum argument check */
        if (argc != 5)
        {
            CLI_write ("Error: Invalid usage of the CLI command\n");
            return -1;
        }
    
        /* Initialize the ADC Output configuration: */
        memset ((void *)&adcBufCfg, 0, sizeof(MmwDemo_ADCBufCfg));
    
        /* Populate configuration: */
        adcBufCfg.adcFmt          = (uint8_t) atoi (argv[1]);
        adcBufCfg.iqSwapSel       = (uint8_t) atoi (argv[2]);
        adcBufCfg.chInterleave    = (uint8_t) atoi (argv[3]);
        adcBufCfg.chirpThreshold  = (uint8_t) atoi (argv[4]);
    
        /* Save Configuration to use later */
        memcpy((void *)&gMmwMssMCB.cfg.adcBufCfg, (void *)&adcBufCfg, sizeof(MmwDemo_ADCBufCfg));
    
        /* Send configuration to DSS */
        memset((void *)&message, 0, sizeof(MmwDemo_message));
        message.type = MMWDEMO_MSS2DSS_ADCBUFCFG;
        memcpy((void *)&message.body.adcBufCfg, (void *)&adcBufCfg, sizeof(MmwDemo_ADCBufCfg));
    
        if (MmwDemo_mboxWrite(&message) == 0)
            return 0;
        else
            return -1;
    }
    
    /**
     *  @b Description
     *  @n
     *      This is the CLI Handler for CFAR configuration
     *
     *  @param[in] argc
     *      Number of arguments
     *  @param[in] argv
     *      Arguments
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Error   -   <0
     */
    static int32_t MmwDemo_CLIHighAccuCfg (int32_t argc, char* argv[])
    {
    	radarModuleHighAccuConfig     highAccuConfig;
        MmwDemo_message     message;
    
        /* Sanity Check: Minimum argument check */
        if (argc != 7)
        {
            CLI_write ("Error: Invalid usage of the CLI command\n");
            return -1;
        }
    
        /* Initialize the ADC Output configuration: */
        memset ((void *)&highAccuConfig, 0, sizeof(radarModuleHighAccuConfig));
    
    
    
        //System_printf("highAccuConfig config\n");
    
        //cliCfg.tableEntry[4].helpString     = "<numRangeBinZoomIn> <skipLeft> <skipRight> <enablePhaseEst> <enableLinearFit> <enableFilter>";
        /* Populate configuration: */
        highAccuConfig.numRangeBinZoomIn    = (uint16_t) atoi (argv[1]);
        highAccuConfig.skipLeft       		= (uint16_t) atoi (argv[2]);
        highAccuConfig.skipRight       		= (uint16_t) atoi (argv[3]);
        highAccuConfig.enablePhaseEst  		= (uint16_t) atoi (argv[4]);
        highAccuConfig.enableLinearFit 		= (uint16_t) atoi (argv[5]);
        highAccuConfig.enableFilter    		= (uint16_t) atoi (argv[6]);
    
        /* Save Configuration to use later */
        memcpy((void *)&gMmwMssMCB.cfg.highAccuRangeCfg, (void *)&highAccuConfig, sizeof(radarModuleHighAccuConfig));
    
        /* Send configuration to DSS */
        memset((void *)&message, 0, sizeof(MmwDemo_message));
    
        message.type = MMWDEMO_MSS2DSS_HIGHACCURANGE_CFG;
        memcpy((void *)&message.body.highAccuRangeCfg, (void *)&highAccuConfig, sizeof(radarModuleHighAccuConfig));
    
        if (MmwDemo_mboxWrite(&message) == 0)
            return 0;
        else
            return -1;    
    }
    
    /**
     *  @b Description
     *  @n
     *      This is the CLI Handler for range limited configuration
     *
     *  @param[in] argc
     *      Number of arguments
     *  @param[in] argv
     *      Arguments
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Error   -   <0
     */
    static int32_t MmwDemo_CLIRangeLimitCfg (int32_t argc, char* argv[])
    {
        radarModuleHighAccuConfig     highAccuConfig;
        MmwDemo_message     message;
    
        /* Sanity Check: Minimum argument check */
        if (argc != 5)
        {
            CLI_write ("Error: Invalid usage of the CLI command\n");
            return -1;
        }
    
        /* Initialize the ADC Output configuration: */
        memset ((void *)&highAccuConfig, 0, sizeof(radarModuleHighAccuConfig));
    
        /* Read Configuration */
        memcpy( (void *)&highAccuConfig, (void *)&gMmwMssMCB.cfg.highAccuRangeCfg, sizeof(radarModuleHighAccuConfig));
    
    
        //System_printf("highAccuConfig config\n");
    
        //"<numRangeBinZoomIn> <enabled> <min_range> <max_range> ";
        /* Populate configuration: */
        highAccuConfig.numRangeBinZoomIn    = (uint16_t) atoi (argv[1]);
        highAccuConfig.enableRangeLimit    = (uint8_t) atoi (argv[2]);
        highAccuConfig.skipMin              = (float) atof (argv[3]);
        highAccuConfig.skipMax              = (float) atof (argv[4]);
    
        printf("numRangeBinZoomIn=%d,left=%d,right=%d\n",highAccuConfig.numRangeBinZoomIn,highAccuConfig.skipLeft,highAccuConfig.skipRight);
        printf("enableRangeLimit=%d,skipMin=%f,skipMax=%f\n",highAccuConfig.enableRangeLimit,highAccuConfig.skipMin,highAccuConfig.skipMax);
    
        /* Save Configuration to use later */
        memcpy((void *)&gMmwMssMCB.cfg.highAccuRangeCfg, (void *)&highAccuConfig, sizeof(radarModuleHighAccuConfig));
    
        /* Send configuration to DSS */
        memset((void *)&message, 0, sizeof(MmwDemo_message));
    
        message.type = MMWDEMO_MSS2DSS_HIGHACCURANGE_CFG;
        memcpy((void *)&message.body.highAccuRangeCfg, (void *)&highAccuConfig, sizeof(radarModuleHighAccuConfig));
    
        if (MmwDemo_mboxWrite(&message) == 0)
            return 0;
        else
            return -1;
    }
    
    
    /**
     *  @b Description
     *  @n
     *      This is the CLI Handler for data logger set command
     *
     *  @param[in] argc
     *      Number of arguments
     *  @param[in] argv
     *      Arguments
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Error   -   <0
     */
    static int32_t MmwDemo_CLISetDataLogger (int32_t argc, char* argv[])
    {
        MmwDemo_message     message;
    
        /* Sanity Check: Minimum argument check */
        if (argc != 2)
        {
            CLI_write ("Error: Invalid usage of the CLI command\n");
            return -1;
        }
    
    
        /* Save Configuration to use later */
        if (strcmp(argv[1], "mssLogger") == 0)  
            gMmwMssMCB.cfg.dataLogger = 0;
        else if (strcmp(argv[1], "dssLogger") == 0)  
            gMmwMssMCB.cfg.dataLogger = 1;
        else
        {
            CLI_write ("Error: Invalid usage of the CLI command\n");
            return -1;
        }
           
        /* Send configuration to DSS */
        memset((void *)&message, 0, sizeof(MmwDemo_message));
    
        message.type = MMWDEMO_MSS2DSS_SET_DATALOGGER;
        message.body.dataLogger = gMmwMssMCB.cfg.dataLogger;
    
        if (MmwDemo_mboxWrite(&message) == 0)
            return 0;
        else
            return -1;
    }
    
    /**
     *  @b Description
     *  @n
     *      This is the CLI Execution Task
     *
     *  @retval
     *      Not Applicable.
     */
    void MmwDemo_CLIInit (void)
    {
        CLI_Cfg     cliCfg;
        char        demoBanner[256];
    
        /* Create Demo Banner to be printed out by CLI */
        sprintf(&demoBanner[0], "******************************************\n" \
                           "MMW TM Demo %s\n"  \
                           "******************************************\n", MMW_VERSION);
        
        /* Initialize the CLI configuration: */
        memset ((void *)&cliCfg, 0, sizeof(CLI_Cfg));
    
        /* Populate the CLI configuration: */
        cliCfg.cliPrompt                    = "mmwDemo:/>";
        cliCfg.cliBanner                    = demoBanner;
        cliCfg.cliUartHandle                = gMmwMssMCB.commandUartHandle;
        cliCfg.socHandle                    = gMmwMssMCB.socHandle;
        cliCfg.taskPriority                 = 3;
        cliCfg.mmWaveHandle                 = gMmwMssMCB.ctrlHandle;
        cliCfg.enableMMWaveExtension        = 1U;
        cliCfg.usePolledMode                = true;
        cliCfg.tableEntry[0].cmd            = "sensorStart";
        cliCfg.tableEntry[0].helpString     = "No arguments";
        cliCfg.tableEntry[0].cmdHandlerFxn  = MmwDemo_CLISensorStart;
        cliCfg.tableEntry[1].cmd            = "sensorStop";
        cliCfg.tableEntry[1].helpString     = "No arguments";
        cliCfg.tableEntry[1].cmdHandlerFxn  = MmwDemo_CLISensorStop;
        cliCfg.tableEntry[2].cmd            = "frameStart";
        cliCfg.tableEntry[2].helpString     = "No arguments";
        cliCfg.tableEntry[2].cmdHandlerFxn  = MmwDemo_CLIFrameStart;
        cliCfg.tableEntry[3].cmd            = "guiMonitor";
        cliCfg.tableEntry[3].helpString     = "<detectedObjects> <logMagRange> <rangeAzimuthHeatMap> <rangeDopplerHeatMap>";
        cliCfg.tableEntry[3].cmdHandlerFxn  = MmwDemo_CLIGuiMonSel;
        cliCfg.tableEntry[4].cmd            = "highAccCfg";
        cliCfg.tableEntry[4].helpString     = "<numRangeBinZoomIn> <skipLeft> <skipRight> <enablePhaseEst> <enableLinearFit> <enableFilter>";
        cliCfg.tableEntry[4].cmdHandlerFxn  = MmwDemo_CLIHighAccuCfg;
        cliCfg.tableEntry[5].cmd            = "dataLogger";
        cliCfg.tableEntry[5].helpString     = "<mssLogger | dssLogger>";
        cliCfg.tableEntry[5].cmdHandlerFxn  = MmwDemo_CLISetDataLogger;
        cliCfg.tableEntry[6].cmd            = "adcbufCfg";
        cliCfg.tableEntry[6].helpString     = "<adcOutputFmt> <SampleSwap> <ChanInterleave> <ChirpThreshold>";
        cliCfg.tableEntry[6].cmdHandlerFxn  = MmwDemo_CLIADCBufCfg;
        cliCfg.tableEntry[7].cmd            = "RangeLimitCfg";
        cliCfg.tableEntry[7].helpString     = "<numRangeBinZoomIn> <enabled> <min_range> <max_range> "; //"<numRangeBinZoomIn> <enabled> <min_range> <max_range> ";
        cliCfg.tableEntry[7].cmdHandlerFxn  = MmwDemo_CLIRangeLimitCfg;
    
        /* Open the CLI: */
        if (CLI_open (&cliCfg) < 0)
        {
            System_printf ("Error: Unable to open the CLI\n");
            return;
        }
        System_printf ("Debug: CLI is operational\n");
        return;
    }
    
    
    

    2. high_accuracy_16xx_mss : mss_mmw.h

    /*! @brief Version of the MMW Demo. */
    #define MMW_VERSION "0.0.0.2"

  • Hi,

    Understood, I will get that typo corrected on our side, my apologies for the confusion. It is certainly odd that the 1642 OOB demo is not working for you when being built in CCS without modifications, as this is not the behavior I have seen on my side. Could you try that again with the mmWave industrial Toolbox version 4.12.0? In addition to hopefully fixing your issue, the 1642 OOB was updated to use mmWave SDK 3.6 in the Toolbox release 4.12.0 

    Best Regards,
    Alec

  • Thank you for your confirmation.
    Let me update my finding, I already tried fresh import Out of Box dss mss. Without any modification , I compiled. And it Worked normally. It seems I made configuration change on previous compilation.

    Sorry for confusion.

  • After deep comparison to SDK 3.6 demo source code and SDK 2.1 demo source. I have question,

    SDK 3.6, in DSS mmw \ dss_main.c : DPC_ObjectDetection_chirpEvent is callback for Chirp event in below flow chart.

    My question , compare to SDK 2.1, DSS mmw \ dss_main.c :

    this call back similar with MMWDEMO_CHIRP_EVT in MmwDemo_dssDataPathProcessEvents() correct ?

    .....

    static int32_t MmwDemo_dssDataPathProcessEvents(UInt event)
    {
        MmwDemo_DSS_DataPathObj *dataPathObj;
        volatile uint32_t startTime;

        dataPathObj = &gMmwDssMCB.dataPathObj;

        /* Handle dataPath events */
        switch(event)
        {
            case MMWDEMO_CHIRP_EVT:

    .....

    Below is SDK 2.1 chirp event flow chart :

    I still work on porting High Accuracy SDK 2.1 to SDK 3.6. I want to add

    High accuracy \ dss_data_path.c : MmwDemo_processChirp()

    High accuracy \ dss_data_path.c : MmwDemo_interFrameProcessing()

    to Out of Box \ dss \ objectdetection.c : DPC_ObjectDetection_chirpEvent ().

    Any opinion about this ?

    my plan is to add Zoom FFT on that Chirp Event arise in SDK 3.6

  • Hi,

    This seems like the correct approach. Let me know if you have any questions. 

    Best Regards,
    Alec

  • Thank you for your reply.
    as I researched High Accuracy Lab implementation into MMW Demo SDK 2.1 , I make summary like below

    Each time Chirp Event arise, it will invoke above RADARDEMO_highAccuRangeProc_run() and ADCBuf input will be processed with Zoom-FFT.

    Is that correct ?

    ===========================================

    Then, I plan to port this High Accuracy Block RADARDEMO_highAccuRangeProc_run() to MMW Demo SDK 3.6 at Chirp Event DPC as below :

    Best way to port RADARDEMO_highAccuRangeProc_run() is inside mmw demo rangeProcDSP block (between adcDatain and fftOut1D).

    it's located on file dss/objectdetection.c , function : DPC_ObjDetDSP_rangeConfig() Line 572

        /* hwres - adcDataInSize */
        hwRes->adcDataInSize = 2U * staticCfg->numRangeBins * sizeof(cmplx16ImRe_t);
        hwRes->adcDataIn = (cmplx16ImRe_t *)DPC_ObjDetDSP_MemPoolAlloc(CoreL1RamObj,
                                                      hwRes->adcDataInSize,
                                                      DPU_RANGEPROCDSP_ADCDATAIN_BYTE_ALIGNMENT_DSP);
     

    Is this correct approach ?

    But I found something mismatch : RADARDEMO_highAccuRangeProc_run(input_signal , output_signal) input_signal is cplx16_t.

    Can I made hwRes->adcDataIn with data_type cmplx16ImRe_t as input_signal to RADARDEMO_highAccuRangeProc_run() ?

  • Hi,

    It is a bit challenging to give guidance on very specific changes such as this, without trying it myself. However ,at a high level, your approach still makes sense. I would recommend that you continue to try to implement this, and if you encounter any specific issues, we can discuss further and I can provide guidance.

    Best Regards,
    Alec

  • I see,

    so is there any doxigen document about current High accuracy labs ?

  • There is not. I would recommend you take some time to go through and understand the code which is included in the lab.

    Best Regards,

    Alec