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: Sending distance data across i2c

Part Number: AWR1642BOOST
Other Parts Discussed in Thread: AWR1642, SYSBIOS, UNIFLASH

Tool/software:

Hi, so I'm trying to connect the AWR1642 board to a raspberry pi over i2c so that i can control other hardware. I've loaded the Short-Range Radar demo onto the board successfully and I was hoping I could just piggy back that project and send the data via i2c rather than uart, however I've encountered issues in trying to initialise the i2c drivers in the project. If there is a way to do this then that would be very helpful. 

This is the specific error message I get, but I dont understand why the same issue doesnt arise with the GPIO_init (which come with the project as default) which leads me to believe that theres more to the setup than just including the header file <ti/drivers/i2c/I2C.h> in the mss_main.c file

I2C_init ./mss_main.obj

error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "srrdemo_16xx_mss.xer4f" not built

  • Hello Rhys,

    Can you check if you have included the library for the I2C?
    You can check the makefile for the I2C example and check how they are calling the init.
    Looks like your library dependencies are not taken care of so the linking is not happening properly.

    Regards,
    Saswat Kumar

  • Hi Saswat,
    Yh so i managed to figure out some bits by comparing the build configurations to a demo project and as such copied .cfg file across as it was struggling to build with the HwiP and PDebug. However I now have the following issue:
    Building target: "Radar.out"
    Invoking: Arm Linker
    "C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl" -mv7R4 --code_state=16 --float_support=VFPv3D16 -me --define=SOC_XWR16XX --define=SUBSYS_MSS -g --diag_warning=225 --diag_wrap=off --display_error_number --enum_type=int --abi=eabi -z -m"Radar.map" --heap_size=0x800 --stack_size=0x800 -i"C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/lib" -i"C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/control/mmwave/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/osal/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/gpio/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/control/mmwavelink/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/crc/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/esm/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/i2c/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/pinmux/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/mailbox/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/dma/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/soc/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/uart/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/utils/cli/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/cbuff/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/edma/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/adcbuf/lib" --reread_libs --disable_auto_rts --diag_warning=225 --diag_wrap=off --display_error_number --warn_sections --xml_link_info="Radar.xml" --rom_model --unused_section_elimination=on -o "Radar.out" "./hello.obj" "../xwr1642_r4f.cmd" -l"configPkg/linker.cmd" -llibosal_xwr16xx.aer4f -llibesm_xwr16xx.aer4f -llibgpio_xwr16xx.aer4f -llibi2c_xwr16xx.aer4f -llibsoc_xwr16xx.aer4f -llibmailbox_xwr16xx.aer4f -llibpinmux_xwr16xx.aer4f -llibcrc_xwr16xx.aer4f -llibDMA_xwr16xx.aer4f -llibuart_xwr16xx.aer4f -llibmmwavelink_xwr16xx.aer4f -llibmmwave_xwr16xx.aer4f -llibcli_xwr16xx.aer4f -llibcbuff_xwr16xx.aer4f -llibedma_xwr16xx.aer4f -llibadcbuf_xwr16xx.aer4f -lrtsv7R4_T_le_v3D16_eabi.lib -llibc.a
    <Linking>
    "C:/ti/bios_6_73_01_01/packages/ti/platforms/cortexR//include/AWR14XX.cmd", line 18: error #10263: VECTORS memory range has already been specified
    "C:/ti/bios_6_73_01_01/packages/ti/platforms/cortexR//include/AWR14XX.cmd", line 18: error #10264: VECTORS memory range overlaps existing memory range VECTORS
    "C:/ti/bios_6_73_01_01/packages/ti/platforms/cortexR//include/AWR14XX.cmd", line 19: error #10263: PROG_RAM memory range has already been specified
    "C:/ti/bios_6_73_01_01/packages/ti/platforms/cortexR//include/AWR14XX.cmd", line 19: error #10264: PROG_RAM memory range overlaps existing memory range PROG_RAM
    "C:/ti/bios_6_73_01_01/packages/ti/platforms/cortexR//include/AWR14XX.cmd", line 20: error #10263: DATA_RAM memory range has already been specified
    "C:/ti/bios_6_73_01_01/packages/ti/platforms/cortexR//include/AWR14XX.cmd", line 20: error #10264: DATA_RAM memory range overlaps existing memory range DATA_RAM
    "C:/ti/bios_6_73_01_01/packages/ti/platforms/cortexR//include/AWR14XX.cmd", line 21: error #10263: L3_RAM memory range has already been specified
    "C:/ti/bios_6_73_01_01/packages/ti/platforms/cortexR//include/AWR14XX.cmd", line 21: error #10264: L3_RAM memory range overlaps existing memory range L3_RAM
    warning #16027-D: object files have incompatible enumeration types ("C:\Users\RhysHopkins\workspace_v12\Radar\Debug\configPkg\package\cfg\mss_srr_per4f.oer4f" = packed, "./hello.obj" = 32-bit)
    warning #10247-D: creating output section "systemHeap" without a SECTIONS specification

    the .cfg file is:


    environment['xdc.cfg.check.fatal'] = 'false';

    /********************************************************************
    ************************** BIOS Modules ****************************
    ********************************************************************/
    var Memory = xdc.useModule('xdc.runtime.Memory');
    var BIOS = xdc.useModule('ti.sysbios.BIOS');
    var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
    var HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf');
    var Task = xdc.useModule('ti.sysbios.knl.Task');
    var Idle = xdc.useModule('ti.sysbios.knl.Idle');
    var SEM = xdc.useModule('ti.sysbios.knl.Semaphore');
    var Event = xdc.useModule('ti.sysbios.knl.Event');
    var Hwi = xdc.useModule('ti.sysbios.family.arm.v7r.vim.Hwi');
    var System = xdc.useModule('xdc.runtime.System');
    var SysStd = xdc.useModule('xdc.runtime.SysStd');
    var clock = xdc.useModule('ti.sysbios.knl.Clock');
    System.SupportProxy = SysStd;

    /* FIQ Stack Usage: */
    Hwi.fiqStackSize = 2048;
    Hwi.fiqStackSection = ".myFiqStack"
    Program.sectMap[".myFiqStack"] = "DATA_RAM";

    /* Default Heap Creation: Local L2 memory */
    var heapMemParams = new HeapMem.Params();
    heapMemParams.size = 32*1024;
    heapMemParams.sectionName = "systemHeap";
    Program.global.heap0 = HeapMem.create(heapMemParams);
    Memory.defaultHeapInstance = Program.global.heap0;

    /* Enable BIOS Task Scheduler */
    BIOS.taskEnabled = true;

    Program.sectMap[".vecs"] = "VECTORS";

    /* Make sure libraries are built with 32-bit enum types to be compatible with DSP enum types*/
    BIOS.includeXdcRuntime = true;
    BIOS.libType = BIOS.LibType_Custom;
    BIOS.customCCOpts += " --enum_type=int ";

    the errors i'm getting above dont appear when building the srr demo and i dont see why its trying to link the AWR14XX.cmd as im using the AR16XX. the project includes for both my project and the demo ssr project are identical and so i'd have expected to see the same error when building both projects

  • Hello Rhys,

    Looks like when you made the change, it is searching for a path which might be common to both 14xx and 16xx and it's getting it first from the 14xx.
    Could you just relocate the AWR14XX to another path and see if it picks the right cmd file?


    Regards,
    Saswat kumar

  • Hi Saswat,

    Thank you for your reply, It does now build, my final stage problem is deploying the project onto the board. When running the debug command I get the error: Load program error. Radar.out Load failed. 

    My code is as follows:

    #include <stdio.h>
    #include <ti/drivers/gpio/gpio.h>


    int main(void)
    {
         int gpio_0 = 0;
         GPIO_init();
         GPIO_setConfig(gpio_0, GPIO_CFG_OUTPUT);

         while (1)
         {
              GPIO_toggle(gpio_0);
         }

        return 0;
    }

    I intend to try the i2c driver once i've successfully conquered gpio. 

  • Hello Rhys,

    Are you loading the newly built out on the code? Could you crosscheck for timestamps

    Regards,
    Saswat Kumar

  • Hi Saswat,
    sorry about how convoluted this is becoming, I'm sharing the configuration and build setup that i'm trying at the moment that I feel has been the most promising:
    code:

    #include <stdio.h>
    #include <ti/drivers/gpio/gpio.h>

    /* BIOS/XDC Include Files. */
    /**
    * hello.c
    */


    int main(void)
    {
    GPIO_init();
    GPIO_setConfig(SOC_XWR16XX_GPIO_0, GPIO_CFG_OUTPUT);
    GPIO_write(SOC_XWR16XX_GPIO_0, 1);

    return 0;
    }

    xdc tools flags:
    --xdcpath="${BIOS_CG_ROOT}/packages;" xdc.tools.configuro -o configPkg -t ti.targets.arm.elf.R4F -p ti.platforms.cortexR:AWR16XX -r release -c "${CG_TOOL_ROOT}" --compileOptions "--enum_type=int " 


    compiler flags:

    -mv7R4 --code_state=16 --float_support=VFPv3D16 -me --include_path="C:/Users/RhysHopkins/workspace_v12/Radar" --include_path="C:/ti/bios_6_73_01_01/packages" --include_path="C:/ti/mmwave_sdk_03_06_02_00-LTS" --include_path="C:/ti/mmwave_sdk_03_06_02_00-LTS/packages" --include_path="C:/ti/ti-cgt-arm_16.9.6.LTS/include" --include_path="C:/ti/xdctools_3_50_08_24_core/packages" --define=SOC_XWR16XX --define=SUBSYS_MSS -g --diag_warning=225 --diag_wrap=off --display_error_number --enum_type=int --abi=eabi

    linker flags:

    -mv7R4 --code_state=16 --float_support=VFPv3D16 -me --define=SOC_XWR16XX --define=SUBSYS_MSS -g --diag_warning=225 --diag_wrap=off --display_error_number --enum_type=int --abi=eabi -z -m"Radar.map" --heap_size=0x800 --stack_size=0x800 -i"C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/lib" -i"C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/control/mmwave/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/osal/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/gpio/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/control/mmwavelink/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/crc/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/esm/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/i2c/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/pinmux/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/mailbox/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/dma/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/soc/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/uart/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/utils/cli/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/cbuff/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/edma/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/adcbuf/lib" --reread_libs --disable_auto_rts --diag_warning=225 --diag_wrap=off --display_error_number --warn_sections --xml_link_info="Radar.xml" --rom_model --unused_section_elimination=on

    post build tasks:

    ${COM_TI_MMWAVE_SDK_INSTALL_DIR}/packages/scripts/ImageCreator/out2rprc/out2rprc.exe ${ProjName}.xer4f ${ProjName}.bin
    ${COM_TI_MMWAVE_SDK_INSTALL_DIR}/packages/scripts/ImageCreator/multicore_image_generator/MulticoreImageGen.exe LE 37 0x00000006 radar.bin 0x35510000 ${ProjName}.bin 0xb5510000 ${COM_TI_MMWAVE_SDK_INSTALL_DIR}/firmware/radarss/xwr16xx_radarss_rprc.bin 0xd5510000 ${REF_PROJECT_1_LOC}/Debug/${REF_PROJECT_1_NAME}.bin
    ${COM_TI_MMWAVE_SDK_INSTALL_DIR}/packages/scripts/ImageCreator/crc_multicore_image/crc_multicore_image.exe radar.bin radar.bin.tmp
    ${COM_TI_MMWAVE_SDK_INSTALL_DIR}/packages/scripts/ImageCreator/append_bin_crc/gen_bincrc32.exe radar.bin

    .cfg file:


    environment['xdc.cfg.check.fatal'] = 'false';

    /********************************************************************
    ************************** BIOS Modules ****************************
    ********************************************************************/
    var Memory = xdc.useModule('xdc.runtime.Memory');
    var BIOS = xdc.useModule('ti.sysbios.BIOS');
    var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
    var HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf');
    var Task = xdc.useModule('ti.sysbios.knl.Task');
    var Idle = xdc.useModule('ti.sysbios.knl.Idle');
    var SEM = xdc.useModule('ti.sysbios.knl.Semaphore');
    var Event = xdc.useModule('ti.sysbios.knl.Event');
    var Hwi = xdc.useModule('ti.sysbios.family.arm.v7r.vim.Hwi');
    var System = xdc.useModule('xdc.runtime.System');
    var SysStd = xdc.useModule('xdc.runtime.SysStd');
    var clock = xdc.useModule('ti.sysbios.knl.Clock');
    System.SupportProxy = SysStd;

    /* FIQ Stack Usage: */
    Hwi.fiqStackSize = 2048;
    Hwi.fiqStackSection = ".myFiqStack"
    Program.sectMap[".myFiqStack"] = "DATA_RAM";

    /* Default Heap Creation: Local L2 memory */
    var heapMemParams = new HeapMem.Params();
    heapMemParams.size = 32*1024;
    heapMemParams.sectionName = "systemHeap";
    Program.global.heap0 = HeapMem.create(heapMemParams);
    Memory.defaultHeapInstance = Program.global.heap0;

    /* Enable BIOS Task Scheduler */
    BIOS.taskEnabled = true;

    Program.sectMap[".vecs"] = "VECTORS";

    /* Make sure libraries are built with 32-bit enum types to be compatible with DSP enum types*/
    BIOS.includeXdcRuntime = true;
    BIOS.libType = BIOS.LibType_Custom;
    BIOS.customCCOpts += " --enum_type=int ";

    and when i build i get the following:

    **** Clean-only build of configuration Debug for project Radar ****

    "C:\\ti\\ccs1281\\ccs\\utils\\bin\\gmake" -k -j 16 clean -O

    DEL /F "configPkg\linker.cmd" "configPkg\compiler.opt" "Radar.out"
    DEL /F "hello.obj"
    DEL /F "hello.d"
    RMDIR /S/Q "configPkg"
    Finished clean

    **** Build Finished ****

    **** Build of configuration Debug for project Radar ****

    "C:\\ti\\ccs1281\\ccs\\utils\\bin\\gmake" -k -j 16 all -O

    rm -f C:/Users/RhysHopkins/workspace_v12/Radar/Radar.bin

    Building file: "../mss_srr.cfg"
    Invoking: XDCtools
    "C:/ti/ccs1281/xdctools_3_62_01_16_core/xs" --xdcpath="C:/ti/bios_6_73_01_01/packages;" xdc.tools.configuro -o configPkg -t ti.targets.arm.elf.R4F -p ti.platforms.cortexR:AWR16XX -r release -c "C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS" --compileOptions "--enum_type=int " "../mss_srr.cfg"
    making package.mak (because of package.bld) ...
    generating interfaces for package configPkg (because package/package.xdc.inc is older than package.xdc) ...
    configuring mss_srr.xer4f from package/cfg/mss_srr_per4f.cfg ...
    generating custom ti.sysbios library makefile ...
    Starting build of library sources ...
    making C:/Users/RhysHopkins/workspace_v12/Radar/src/sysbios/sysbios.aer4f ...
    Build of libraries done.
    cler4f package/cfg/mss_srr_per4f.c ...
    Finished building: "../mss_srr.cfg"

    Building file: "../hello.c"
    Invoking: Arm Compiler
    "C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl" -mv7R4 --code_state=16 --float_support=VFPv3D16 -me --include_path="C:/Users/RhysHopkins/workspace_v12/Radar" --include_path="C:/ti/bios_6_73_01_01/packages" --include_path="C:/ti/mmwave_sdk_03_06_02_00-LTS" --include_path="C:/ti/mmwave_sdk_03_06_02_00-LTS/packages" --include_path="C:/ti/ti-cgt-arm_16.9.6.LTS/include" --include_path="C:/ti/xdctools_3_50_08_24_core/packages" --define=SOC_XWR16XX --define=SUBSYS_MSS -g --diag_warning=225 --diag_wrap=off --display_error_number --enum_type=int --abi=eabi --preproc_with_compile --preproc_dependency="hello.d_raw" --cmd_file="configPkg/compiler.opt" "../hello.c"
    Finished building: "../hello.c"

    Building target: "Radar.out"
    Invoking: Arm Linker
    "C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl" -mv7R4 --code_state=16 --float_support=VFPv3D16 -me --define=SOC_XWR16XX --define=SUBSYS_MSS -g --diag_warning=225 --diag_wrap=off --display_error_number --enum_type=int --abi=eabi -z -m"Radar.map" --heap_size=0x800 --stack_size=0x800 -i"C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/lib" -i"C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/control/mmwave/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/osal/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/gpio/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/control/mmwavelink/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/crc/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/esm/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/i2c/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/pinmux/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/mailbox/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/dma/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/soc/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/uart/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/utils/cli/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/cbuff/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/edma/lib" -i"C:/ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/drivers/adcbuf/lib" --reread_libs --disable_auto_rts --diag_warning=225 --diag_wrap=off --display_error_number --warn_sections --xml_link_info="Radar.xml" --rom_model --unused_section_elimination=on -o "Radar.out" "./hello.obj" "../xwr1642_r4f.cmd" -l"configPkg/linker.cmd" -llibosal_xwr16xx.aer4f -llibesm_xwr16xx.aer4f -llibgpio_xwr16xx.aer4f -llibi2c_xwr16xx.aer4f -llibsoc_xwr16xx.aer4f -llibmailbox_xwr16xx.aer4f -llibpinmux_xwr16xx.aer4f -llibcrc_xwr16xx.aer4f -llibDMA_xwr16xx.aer4f -llibuart_xwr16xx.aer4f -llibmmwavelink_xwr16xx.aer4f -llibmmwave_xwr16xx.aer4f -llibcli_xwr16xx.aer4f -llibcbuff_xwr16xx.aer4f -llibedma_xwr16xx.aer4f -llibadcbuf_xwr16xx.aer4f -lrtsv7R4_T_le_v3D16_eabi.lib -llibc.a
    <Linking>
    warning #10247-D: creating output section "systemHeap" without a SECTIONS specification
    Finished building target: "Radar.out"

    C:\\ti\\mmwave_sdk_03_06_02_00-LTS/packages/scripts/ImageCreator/out2rprc/out2rprc.exe Radar.xer4f Radar.bin
    Parsing the input object file, Radar.xer4f.
    Object reference not set to an instance of an object.Encountered exception:
    Object reference not set to an instance of an object.
    C:\\ti\\mmwave_sdk_03_06_02_00-LTS/packages/scripts/ImageCreator/multicore_image_generator/MulticoreImageGen.exe LE 37 0x00000006 radar.bin 0x35510000 Radar.bin 0xb5510000 C:\\ti\\mmwave_sdk_03_06_02_00-LTS/firmware/radarss/xwr16xx_radarss_rprc.bin 0xd5510000 /Debug/.bin
    Number of Input Files 3
    Error opening input image file! /Debug/.bin

    C:\\ti\\mmwave_sdk_03_06_02_00-LTS/packages/scripts/ImageCreator/crc_multicore_image/crc_multicore_image.exe radar.bin radar.bin.tmp
    size of App Image is 35008 bytes
    cur_crc_read_addr 128
    cur_crc_read_addr 128
    Failed to remove CRC temp file

    C:\\ti\\mmwave_sdk_03_06_02_00-LTS/packages/scripts/ImageCreator/append_bin_crc/gen_bincrc32.exe radar.bin
    >>>> Binary CRC32 = 6b243df8 <<<<
    >>>> Total bytes in binary file 35012 <<<<

    **** Build Finished ****

    admittedly I a lot of the flags and configs are potentially unnecessary as I copied them from a larger demo project that was also using the gpio drivers. The error regarding the /Debug/.bin file I'm not sure in which property its mentioned to look for it or indeed where I'm supposed to set it such that it gets created/found. Im also uncertain as how worried I should be about the "systemHeap" warning

  • Hello Rhys,

    It will be easier, if you can attach your example project, which environment you are building it in so I can check.

    Regards,
    Saswat Kumar

  • Hi Saswat,

    I'm having trouble attaching my project either through drag and drop or using the insert command on these text replies. the environment is windows 11 Version 10.0.22631 Build 22631 on x64

  • Hello Rhys,

    Could you try to zip and send it?

    Regards,
    Saswat Kumar

  • Radar.zip

    in between replying to these i've managed to get past those errors, im now trying to flash onto the board, but the nerr_out flashes and I'm currently looking at the sop[0:2] pins to make sure i've got those set up correctly

  • Hello Rhys,

    Yes, do check it and if you have a working project, please do provide it, you can attach the .out as well so that I can directly run and see if I am getting the same behavior.

    Regards,
    Saswat Kumar

  • The .out that I'm trying at the moment is the same as the one in Radar/Debug/Radar.out. I believe I'm successfully debugging with the pins in debug mode (sop0 = 1, sop1 = 1, sop2 = 0). But then I'm turning th board off and switching to funcitonal mode (sop0 = 1, sop1 = 0, sop2 = 0) and turning the board back on and thats where I get the nerr_out led flashing. I'm not entirely sure if I need to do that last step, but I was under the impression that once a project has been debugged onto the board that I then power cycle and run it in functional mode

  • Hello Rhys,

    How are you loading it? Are you flashing it in functional mode using the uniflash tool?

    Regards,
    Saswat Kumar

  • im loading it through the debugger in ccs whilst in debug mode

  • Hello Rhys,

    If you are doing that what is flashed on the device?
    Loading it via CCS means you should be in functional mode as it is a RAM load, you should not reset device after that as the RAM loses its content after reset.

    1) Flash CCS debug in flashing mode SOP 5
    2) Switch to functional mode, and then load the program over CCS and then execute directly.

    Regards,
    Saswat Kumar

  • on step 2 when I set the sop pins to functional (sop0=1,sop1=0,sop2=0) and then i load from ccs through the xds110 i get an error saying load program error multiple debuggable cores detected.

    regards and Merry Christmas,

    Rhys

  • Hello Rhys, 
    Are you loading the whole binary or only the binary outfile of that particular core?
    You should be loading the individual binary file of each generated, what you are doing currently is directly loading the combined app binary of all cores on a single core.

    Regards,
    Saswat Kumar

  • Hi Saswat, 

    after the build step, theres only 1 binary file to choose from in the project for the load step so I'm not sure what you mean or how I would configure it to create a separate individual binaries

    regards,

    Rhys

  • Hello Rhys,

    It would look something like this:


    I have just attached the demo path, but your executables will also look something like this
    Regards,
    Saswat Kumar

  • Hi Saswat thank you for your reply, I've got it up an running now through ccs one last thing (hopefully) is that the demo code wont run unless theres a uart (in this case the visualiser) program that connects to it and initiates the tasks, i was hoping to execute the tasks without the need to connect an external program.

    Many thanks,

    Rhys

  • Hello Rhys,

    Sorry for the delay as I was out of office, you can pause the code when it gets stuck and find out which portion is not running.
    Accordingly, you can remove those parts of the UART in your program.

    Regards,
    Saswat Kumar

  • Hi Saswat, I've found a bit in the documentation for running the demo without the cli:

    @section bypassCLI How to bypass CLI
    *
    * Re-implement the file mmw_cli.c as follows:
    *
    * -# @ref MmwDemo_CLIInit should just create a task with input taskPriority.
    * Lets say the task is called "MmwDemo_sensorConfig_task".
    * -# All other functions are not needed
    * -# Implement the MmwDemo_sensorConfig_task as follows:
    * - Fill gMmwMssMCB.cfg.openCfg
    * - Fill gMmwMssMCB.cfg.ctrlCfg
    * - Add profiles and chirps using @ref MMWave_addProfile and @ref MMWave_addChirp functions
    * - Call @ref MmwDemo_CfgUpdate for every offset in @ref configStoreOffsets
    * (MMWDEMO_xxx_OFFSET in mmw_mss.h)
    * - Fill gMmwMssMCB.objDetCommonCfg.preStartCommonCfg
    * - Call @ref MmwDemo_openSensor
    * - Call @ref MmwDemo_configSensor
    * - Call @ref MmwDemo_startSensor (One can use helper function
    * @ref MmwDemo_isAllCfgInPendingState to know if all dynamic config was provided)

    these are the steps it says to follow:

    here's what I've done which as far as I can tell are the correct implemtations of the steps:

    //openCfg filling
    gMmwMssMCB.cfg.openCfg.adcOutCfg.fmt.b2AdcBits = 2;
    gMmwMssMCB.cfg.openCfg.adcOutCfg.fmt.b8FullScaleReducFctr = 0;
    gMmwMssMCB.cfg.openCfg.adcOutCfg.fmt.b2AdcOutFmt = 1;
    gMmwMssMCB.cfg.openCfg.calibMonTimeUnit = 100;
    gMmwMssMCB.cfg.openCfg.chCfg.txChannelEn = 3;
    gMmwMssMCB.cfg.openCfg.chCfg.rxChannelEn = 15;
    gMmwMssMCB.cfg.openCfg.chCfg.cascading = 0;
    gMmwMssMCB.cfg.openCfg.chCfg.cascadingPinoutCfg = 0;
    gMmwMssMCB.cfg.openCfg.customCalibrationEnableMask = 0;
    gMmwMssMCB.cfg.openCfg.defaultAsyncEventHandler = MMWave_DefaultAsyncEventHandler_MSS;
    gMmwMssMCB.cfg.openCfg.disableFrameStartAsyncEvent = 0;
    gMmwMssMCB.cfg.openCfg.disableFrameStopAsyncEvent = 0;
    gMmwMssMCB.cfg.openCfg.freqLimitHigh = 81;
    gMmwMssMCB.cfg.openCfg.freqLimitLow = 76;
    gMmwMssMCB.cfg.openCfg.lowPowerMode.lpAdcMode = 0;
    gMmwMssMCB.cfg.openCfg.useCustomCalibration = 1;

    //ctrlCfg filling
    gMmwMssMCB.cfg.ctrlCfg.dfeDataOutputMode = MMWave_DFEDataOutputMode_FRAME;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.profileHandle[0] = NULL;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.profileHandle[1] = NULL;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.profileHandle[2] = NULL;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.profileHandle[3] = NULL;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.chirpEndIdx = 0;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.chirpStartIdx = 0;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.framePeriodicity = 40;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.frameTriggerDelay = 0;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.numAdcSamples = 256;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.numDummyChirpsAtEnd = 0;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.numFrames = 8;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.numLoops = 129;
    gMmwMssMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.triggerSelect = 1;

    rlProfileCfg_t profileCfg;
    int32_t errCode;

    memset ((void *)&profileCfg, 0, sizeof(rlProfileCfg_t));

    profileCfg.profileId = 0;

    /* Translate from GHz to [1 LSB = gCLI_mmwave_freq_scale_factor * 1e9 / 2^26 Hz] units
    * of mmwavelink format */
    profileCfg.startFreqConst = 0x558E4BBC;

    /* Translate below times from us to [1 LSB = 10 ns] units of mmwavelink format */
    profileCfg.idleTimeConst = 10000;
    profileCfg.adcStartTimeConst = 600;
    profileCfg.rampEndTime = 6000;

    profileCfg.txOutPowerBackoffCode = 0;
    profileCfg.txPhaseShifter = 0;

    /* Translate from MHz/us to [1 LSB = (gCLI_mmwave_freq_scale_factor * 1e6 * 900) / 2^26 kHz/uS]
    * units of mmwavelink format */
    profileCfg.freqSlopeConst = 600;

    /* Translate from us to [1 LSB = 10 ns] units of mmwavelink format */
    profileCfg.txStartTime = 0;

    profileCfg.numAdcSamples = 256;
    profileCfg.digOutSampleRate = 6000;
    profileCfg.hpfCornerFreq1 = 0x00;
    profileCfg.hpfCornerFreq2 = 0x00;
    profileCfg.rxGain = 0;

    //Add profiles and chirps using @ref MMWave_addProfile and @ref MMWave_addChirp functions

    MMWave_addProfile(gMmwMssMCB.ctrlHandle, &profileCfg, &errCode);

    rlChirpCfg_t chirpCfg;
    MMWave_ProfileHandle profileHandle;

    memset ((void *)&chirpCfg, 0, sizeof(rlChirpCfg_t));

    /* Populate the chirp configuration: */
    chirpCfg.chirpStartIdx = 0;
    chirpCfg.chirpEndIdx = 0;
    chirpCfg.profileId = 0;

    /* Translate from Hz to number of [1 LSB = (gCLI_mmwave_freq_scale_factor * 1e9) / 2^26 Hz]
    * units of mmwavelink format */
    chirpCfg.startFreqVar = 0;

    /* Translate from KHz/us to number of [1 LSB = (gCLI_mmwave_freq_scale_factor * 1e6) * 900 /2^26 KHz/us]
    * units of mmwavelink format */
    chirpCfg.freqSlopeVar = 0;

    /* Translate from us to [1 LSB = 10ns] units of mmwavelink format */
    chirpCfg.idleTimeVar = 0;

    /* Translate from us to [1 LSB = 10ns] units of mmwavelink format */
    chirpCfg.adcStartTimeVar = 0;

    chirpCfg.txEnable = 3;

    /* Get the profile handle to which the chirp is to be added: */
    if (MMWave_getProfileHandle (gMmwMssMCB.ctrlHandle, chirpCfg.profileId,
    &profileHandle, &errCode) < 0)
    {
    /* Error: Unable to get the profile handle. Return the error code */
    return;
    }

    /* Add the chirp to the profile */
    if (MMWave_addChirp (profileHandle, &chirpCfg, &errCode) == NULL)
    {
    /* Error: Unable to add the chirp. Return the error code. */
    return;
    }

    * - Call @ref MmwDemo_CfgUpdate for every offset in @ref configStoreOffsets
    * (MMWDEMO_xxx_OFFSET in mmw_mss.h)

    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_GUIMONSEL_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_ADCBUFCFG_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_LVDSSTREAMCFG_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_BPMCFG_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_SUBFRAME_DYNCFG_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_CFARCFGRANGE_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_CFARCFGDOPPLER_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_FOVRANGE_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_FOVDOPPLER_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_FOVAOA_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_EXTMAXVEL_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_MULTIOBJBEAMFORMING_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_CALIBDCRANGESIG_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);
    MmwDemo_CfgUpdate((void *)&gMmwMssMCB.cfg.ctrlCfg.u.frameCfg, MMWDEMO_STATICCLUTTERREMOFVAL_OFFSET, sizeof(gMmwMssMCB.cfg.ctrlCfg.u.frameCfg), 0);

    * - Fill gMmwMssMCB.objDetCommonCfg.preStartCommonCfg

    DPM_ioctl(gMmwMssMCB.objDetDpmHandle,
    DPC_OBJDET_IOCTL__STATIC_PRE_START_COMMON_CFG,
    &gMmwMssMCB.objDetCommonCfg.preStartCommonCfg,
    sizeof (DPC_ObjectDetection_PreStartCommonCfg));

    int result = MmwDemo_isAllCfgInPendingState();


    * - Call @ref MmwDemo_openSensor

    MmwDemo_openSensor(true);


    but i get the error:
    Error: mmWave Open failed -203554190 level:2 [Error code: -3106 Subsystem: 156]

    which i think is because i've not gone through all the steps correctly

  • Hello Rhys,

    This is an example how to decode it:

    You can use the same to decode your error as well.

    Regards,
    Saswat Kumar