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: Compiling Warming for the mmWave SDK 1.1.0.2 #10370-D DSP

Part Number: AWR1642BOOST
Other Parts Discussed in Thread: MMWAVE-SDK

Hello 

When I complied the mmWave demo in the mmWave SDK 1.1.0.2, there is a compiling warning:

#10370-D Possible codesize or performance degradation. Section ".text:SOC_init:libsoc_xwr16xx.ae674<soc.oe674>" has calls to rts routines, but rts is placed out of range from call site at 0x200030e0, or in a different section. To optimize codesize, either 1) place rts closer to call site, or 2) place rts in same section, or 3) compile with --disable_push_pop. 

I believe that I had enabled the diable_push_pop. So how can I solve this warning?

Regards

Peter

  • Hello Peter,
    Have you modified anything in the SDK ?
    Have you installed the right dependency tools when installing the new version MMWAVE-SDK ?

    -Raghu
  • Hi Raghu

    I did not modify the code. I did not use the dependency tools comes with the MMWAVE-SDK. I downloaded those tools from TI website and installed them separately. The attached picture shows my environment. And the console output is attached too.

    Console_Output.txt
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>setenv.bat
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set MMWAVE_SDK_DEVICE=awr16xx
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set DOWNLOAD_FROM_CCS=yes
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set MMWAVE_SDK_TOOLS_INSTALL_PATH=C:/ti
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set MMWAVE_SDK_INSTALL_PATH=C:/ti/mmwave_sdk_01_01_00_02/packages
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set R4F_CODEGEN_INSTALL_PATH=C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set XDC_INSTALL_PATH=C:/ti/xdctools_3_50_00_10_core/
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set BIOS_INSTALL_PATH=C:/ti/bios_6_52_00_12/packages
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set C674_CODEGEN_INSTALL_PATH=C:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.5
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set C64Px_DSPLIB_INSTALL_PATH=C:/ti/dsplib_c64Px_3_4_0_0
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set C674x_DSPLIB_INSTALL_PATH=C:/ti/dsplib_c674x_3_4_0_0
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set C674x_MATHLIB_INSTALL_PATH=C:/ti/mathlib_c674x_3_1_2_1
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>set XWR16XX_RADARSS_IMAGE_BIN=C:/ti/mmwave_sdk_01_01_00_02/packages/../firmware/radarss/xwr16xx_radarss_rprc.bin
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>call checkenv.bat
    -----------------------------------------------
    mmWave Build Environment Configured
    -----------------------------------------------
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\scripts\windows>cd C:\ti\mmwave_sdk_01_01_00_02\packages\ti\demo\xwr16xx\mmw
    
    C:\ti\mmwave_sdk_01_01_00_02\packages\ti\demo\xwr16xx\mmw>gmake dssDemo
    Configuring RTSC packages...
    C:/ti/xdctools_3_50_00_10_core//xs --xdcpath="C:/ti/bios_6_52_00_12/packages;C:/ti/mmwave_sdk_01_01_00_02/packages" xdc.tools.configuro -t ti.targets.elf.C674 -p ti.platforms.c6x:AWR16XX:false:600 -DMMWAVE_SDK_DEVICE=awr16xx -DMMWAVE_SDK_DEVICE_TYPE=xwr16xx -r release -c C:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.5 -o dss/mmw_configPkg_xwr16xx dss/dss_mmw.cfg
    making package.mak (because of package.bld) ...
    generating interfaces for package mmw_configPkg_xwr16xx (because package/package.xdc.inc is older than package.xdc) ...
    configuring dss_mmw.xe674 from package/cfg/dss_mmw_pe674.cfg ...
    generating custom ti.sysbios library makefile ...
    Starting build of library sources ...
    making C:/ti/mmwave_sdk_01_01_00_02/packages/ti/demo/xwr16xx/mmw/dss/mmw_configPkg_xwr16xx/package/cfg/dss_mmw_pe674.src/sysbios/sysbios.ae674 ...
    gmake[1]: Entering directory `C:/ti/mmwave_sdk_01_01_00_02/packages/ti/demo/xwr16xx/mmw/dss/mmw_configPkg_xwr16xx/package/cfg/dss_mmw_pe674.src/sysbios'
    cle674 C:/ti/bios_6_52_00_12/packages/ti/sysbios/BIOS.c ...
    asme674 C:/ti/bios_6_52_00_12/packages/ti/sysbios/family/c64p/Exception_asm.s64P ...
    asme674 C:/ti/bios_6_52_00_12/packages/ti/sysbios/family/c64p/Hwi_asm.s62 ...
    asme674 C:/ti/bios_6_52_00_12/packages/ti/sysbios/family/c64p/Hwi_asm_switch.s62 ...
    asme674 C:/ti/bios_6_52_00_12/packages/ti/sysbios/family/c64p/Hwi_disp_always.s64P ...
    asme674 C:/ti/bios_6_52_00_12/packages/ti/sysbios/rts/ti/tls_get_tp.asm ...
    asme674 C:/ti/bios_6_52_00_12/packages/ti/sysbios/family/c62/TaskSupport_asm.s62 ...
    are674 BIOS.obj c64p_Exception_asm.obj c64p_Hwi_asm.obj c64p_Hwi_asm_switch.obj c64p_Hwi_disp_always.obj ti_tls_get_tp.obj c62_TaskSupport_asm.obj ...
    gmake[1]: Leaving directory `C:/ti/mmwave_sdk_01_01_00_02/packages/ti/demo/xwr16xx/mmw/dss/mmw_configPkg_xwr16xx/package/cfg/dss_mmw_pe674.src/sysbios'
    Build of libraries done.
    cle674 package/cfg/dss_mmw_pe674.c ...
    Finished configuring packages
    
    [C674 Device/Type: awr16xx/xwr16xx] Building file: dss/dss_main.c
    [C674 Device/Type: awr16xx/xwr16xx] Building file: dss/dss_config_edma_util.c
    [C674 Device/Type: awr16xx/xwr16xx] Building file: dss/dss_data_path.c
    [C674 Device/Type: awr16xx/xwr16xx] Building file: C:/ti/dsplib_c64Px_3_4_0_0/packages/ti/dsplib/src/DSP_fft16x16/c64P/gen_twiddle_fft16x16.c
    [C674 Device/Type: awr16xx/xwr16xx] Building file: C:/ti/dsplib_c64Px_3_4_0_0/packages/ti/dsplib/src/DSP_fft32x32/c64P/gen_twiddle_fft32x32.c
    [C674 Device/Type: awr16xx/xwr16xx] Building file: ../../utils/rx_ch_bias_measure.c
    C:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.5/bin/cl6x -mv6740 --abi=eabi -g --define=SOC_XWR16XX --display_error_number --diag_warning=225 --diag_wrap=off -z --reread_libs --warn_sections --ram_model -iC:/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.5/lib --emit_warnings_as_errors  -iC:/ti/mmwave_sdk_01_01_00_02/packages/ti/drivers/osal/lib -iC:/ti/mmwave_sdk_01_01_00_02/packages/ti/drivers/soc/lib -iC:/ti/mmwave_sdk_01_01_00_02/packages/ti/drivers/uart/lib -iC:/ti/mmwave_sdk_01_01_00_02/packages/ti/drivers/crc/lib -iC:/ti/mmwave_sdk_01_01_00_02/packages/ti/drivers/edma/lib -iC:/ti/mmwave_sdk_01_01_00_02/packages/ti/drivers/mailbox/lib -iC:/ti/mmwave_sdk_01_01_00_02/packages/ti/drivers/adcbuf/lib -iC:/ti/mmwave_sdk_01_01_00_02/packages/ti/control/mmwavelink/lib -iC:/ti/mmwave_sdk_01_01_00_02/packages/ti/control/mmwave/lib -iC:/ti/dsplib_c64Px_3_4_0_0/packages/ti/dsplib/lib -iC:/ti/mathlib_c674x_3_1_2_1/packages/ti/mathlib/lib -iC:/ti/mmwave_sdk_01_01_00_02/packages/ti/alg/mmwavelib/lib -llibosal_xwr16xx.ae674 -llibsoc_xwr16xx.ae674 -llibcrc_xwr16xx.ae674 -llibuart_xwr16xx.ae674 -llibedma_xwr16xx.ae674 -llibmailbox_xwr16xx.ae674 -llibmmwavelink_xwr16xx.ae674 -llibmmwave_xwr16xx.ae674 -llibadcbuf_xwr16xx.ae674 -llibmmwavealg_xwr16xx.ae674 -ldsplib.ae64P -lmathlib.ae674                    \
            -ldss/mmw_configPkg_xwr16xx/linker.cmd --map_file=xwr16xx_mmw_demo_dss.map obj_xwr16xx/dss_main.oe674 obj_xwr16xx/dss_config_edma_util.oe674 obj_xwr16xx/dss_data_path.oe674 obj_xwr16xx/gen_twiddle_fft16x16.oe674 obj_xwr16xx/gen_twiddle_fft32x32.oe674 obj_xwr16xx/rx_ch_bias_measure.oe674         \
            C:/ti/mmwave_sdk_01_01_00_02/packages/ti/platform/xwr16xx/c674x_linker.cmd dss/dss_mmw_linker.cmd -lrts6740_elf.lib -o xwr16xx_mmw_demo_dss.xe674
    <Linking>
    warning #10370-D: Possible codesize or performance degradation. Section ".text:MmwDemo_interFrameProcessing:dss_data_path.oe674" has calls to rts routines, but rts is placed out of range from call site at 0xe01b20, or in a different section. To optimize codesize, either 1) place rts closer to call site, or 2) place rts in same section, or 3) compile with --disable_push_pop.
    warning #10370-D: Possible codesize or performance degradation. Section ".text:MmwDemo_interFrameProcessing:dss_data_path.oe674" has calls to rts routines, but rts is placed out of range from call site at 0xe029f4, or in a different section. To optimize codesize, either 1) place rts closer to call site, or 2) place rts in same section, or 3) compile with --disable_push_pop.
    warning #10370-D: Possible codesize or performance degradation. Section ".text:SOC_init:libsoc_xwr16xx.ae674<soc.oe674>" has calls to rts routines, but rts is placed out of range from call site at 0x200035a4, or in a different section. To optimize codesize, either 1) place rts closer to call site, or 2) place rts in same section, or 3) compile with --disable_push_pop.
    warning #10370-D: Possible codesize or performance degradation. Section ".text:SOC_init:libsoc_xwr16xx.ae674<soc.oe674>" has calls to rts routines, but rts is placed out of range from call site at 0x200034a0, or in a different section. To optimize codesize, either 1) place rts closer to call site, or 2) place rts in same section, or 3) compile with --disable_push_pop.
    C:/ti/xdctools_3_50_00_10_core//bin/cp -f dss/mmw_configPkg_xwr16xx/package/cfg/dss_mmw_pe674.rov.xs dss_mmw_pe674.rov.xs
    Built the DSS Millimeter Wave Demo [Preparing the BIN Format]
    Parsing the input object file, xwr16xx_mmw_demo_dss.xe674.
    Appending zeros 8458616
    Appending zeros 8468072
    File conversion complete!
    ******************************************************************************
    Built the DSS Millimeter Wave OUT and BIN Formats
    ******************************************************************************

    Regards

    Peter

  • Hello Peter,

    We are aware of this and have deliberately let it remain so. Yes, it is annoying but overcoming it may not be the right thing to do. Firstly, for the understanding of what it really means, take a look at my e2e question a few years back and compiler expert response below:

    https://e2e.ti.com/support/development_tools/compiler/f/343/t/431202

    In AWR parts the code size is under pressure so the push-pop default optimization is a good one. The problem happens because we overlay some code with L1PSRAM (to reduce code size as is explained in user guide) so the caller (which may be in L2SRAM) and callee (in L1PSRAM) are too distant and cause trampolines to be generated which can wipe out the default compiler push-pop optimization code (that requires near calls hence requires trampolines to overcome) savings. The push pop savings is more fundamental in nature than the side effect due to trampoline generation and push-pop savings affects all code, not just that which is in L1PSRAM (that is callee-caller within L2SRAM also which will be near). So in my view, it is not advisable to overcome this warning by disabling push pop, and this decision will have to keep being re-evaluated every time we do maintenance changes so it is best to let the warning remain exposed so the user can make their own judgment about it.

     

    Regards,

    Jitendra