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.

MSPM0L1306: CCS Theia Some Function Can't Jump to Definition

Part Number: MSPM0L1306

Hi Team,

I was looking at some sample code in the MSPM0SDK for the L1306, and I was trying to jump to the definitions of some functions but I couldn't. Even in the sample file for example in the adc_to_uart example within adc_to_uart.c, the DL_ADC12_startConversion(); function is not jumping to definition, but DL_UART_Main_transmitData() is jumping. 

What is the cause for this?

Best regards,

Mari Tsunoda

  • Hi, 

    Did you face this issue after recent update?

    First, Delete all files in the debug folder.

    Then [Rebuild project], this maybe help.

    Regards,

    Helic

  • Hi Helic,

    I tried it and it didn't resolve the issue.

    I'm not sure before update, but I am on the newest version of CCS Theia.

    Best regards,

    Mari Tsunoda

  • Hi, 

    What is the cause for this?

    CCS using driverlib.a as link source, didn't directly compile adc12.c.

    Currently, you need manually search for functions in the driver lib file.

    You can try CCS, there is no jump issue in CCS.

    Regards,

    Helic

  • Hi Helic,

    Why is it compiling uart.c but not adc12.c?

    I am going to introduce Theia for M0 development, so I believe customer may ask this.

    Best,

    Mari

  • Hi, 

    Loop software team for help.

    Regards,

    Helic

  • CCS using driverlib.a as link source, didn't directly compile adc12.c.

    Yes. Hence CCS Theia will not be aware of that file. For CCS Eclipse, you can explicitly add new paths to search for files. CCS Theia does not support this as of yet.

    Why is it compiling uart.c but not adc12.c?

    I imported the adc_to_uart example in CCS Theia and it does not build any of these files. Can you provide your full build output?

    Thank you

    ki

  • Hi, 

    Thank you for your reply.

    Here is my build uotput of example code: adc_to_uart_LP_MSPM0L1306_nortos_ticlang

    [0]**** Clean-only build of configuration Debug for project adc_to_uart_LP_MSPM0L1306_nortos_ticlang ****
    [1]"C:\\ti\\ccstheia120\\ccs\\utils\\bin\\gmake" -k -j 12 clean -O 
     
    [2]DEL /F  "syscfg\device.cmd.genlibs" "syscfg\ti_msp_dl_config.h" "syscfg\Event.dot"  "syscfg\device_linker.cmd" "syscfg\device.opt" "syscfg\ti_msp_dl_config.c"  "adc_to_uart_LP_MSPM0L1306_nortos_ticlang.out" 
    [3]DEL /F "adc_to_uart.o" "syscfg\ti_msp_dl_config.o" "startup_mspm0l130x_ticlang.o" "Library\dl_adc12.o" "Library\dl_aes.o" "Library\dl_common.o" "Library\dl_crc.o" "Library\dl_dac12.o" "Library\dl_dma.o" "Library\dl_flashctl.o" "Library\dl_i2c.o" "Library\dl_mathacl.o" "Library\dl_mcan.o" "Library\dl_opa.o" "Library\dl_rtc.o" "Library\dl_spi.o" "Library\dl_timer.o" "Library\dl_trng.o" "Library\dl_uart.o" "Library\dl_vref.o" "Library\m0p\dl_interrupt.o" "Library\m0p\sysctl\dl_sysctl_mspm0c110x.o" "Library\m0p\sysctl\dl_sysctl_mspm0g1x0x_g3x0x.o" "Library\m0p\sysctl\dl_sysctl_mspm0l11xx_l13xx.o" 
    [4]DEL /F "adc_to_uart.d" "syscfg\ti_msp_dl_config.d" "startup_mspm0l130x_ticlang.d" "Library\dl_adc12.d" "Library\dl_aes.d" "Library\dl_common.d" "Library\dl_crc.d" "Library\dl_dac12.d" "Library\dl_dma.d" "Library\dl_flashctl.d" "Library\dl_i2c.d" "Library\dl_mathacl.d" "Library\dl_mcan.d" "Library\dl_opa.d" "Library\dl_rtc.d" "Library\dl_spi.d" "Library\dl_timer.d" "Library\dl_trng.d" "Library\dl_uart.d" "Library\dl_vref.d" "Library\m0p\dl_interrupt.d" "Library\m0p\sysctl\dl_sysctl_mspm0c110x.d" "Library\m0p\sysctl\dl_sysctl_mspm0g1x0x_g3x0x.d" "Library\m0p\sysctl\dl_sysctl_mspm0l11xx_l13xx.d" 
    [5]RMDIR /S/Q  "syscfg\" 
    [6]Finished clean
     
    
    [7]**** Build Finished ****
    
    [8]**** Build of configuration Debug for project adc_to_uart_LP_MSPM0L1306_nortos_ticlang ****
    [9]"C:\\ti\\ccstheia120\\ccs\\utils\\bin\\gmake" -k -j 12 all -O 
     
    [10]Building file: "../adc_to_uart.syscfg"
    [11]Invoking: SysConfig
    [12]"C:/ti/ccstheia120/ccs/utils/sysconfig_1.18.0/sysconfig_cli.bat" -s "C:/ti/mspm0_sdk_1_20_01_06/.metadata/product.json" --script "C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang/adc_to_uart.syscfg" -o "syscfg" --compiler ticlang
    [13]Running script...
    [14]Validating...
    [15]info: /ti/project_config/ProjectConfig deviceSpin: Note: User must select a device after migration. User must make sure to select the same device as the CCS Launch Device setting for proper configuration.
    [16]Generating Code (adc_to_uart.syscfg)...
    [17]Writing C:\Users\a0508911\workspace_ccstheia\adc_to_uart_LP_MSPM0L1306_nortos_ticlang\Debug\syscfg\device_linker.cmd...
    [18]Writing C:\Users\a0508911\workspace_ccstheia\adc_to_uart_LP_MSPM0L1306_nortos_ticlang\Debug\syscfg\device.opt...
    [19]Writing C:\Users\a0508911\workspace_ccstheia\adc_to_uart_LP_MSPM0L1306_nortos_ticlang\Debug\syscfg\device.cmd.genlibs...
    [20]Writing C:\Users\a0508911\workspace_ccstheia\adc_to_uart_LP_MSPM0L1306_nortos_ticlang\Debug\syscfg\ti_msp_dl_config.c...
    [21]Writing C:\Users\a0508911\workspace_ccstheia\adc_to_uart_LP_MSPM0L1306_nortos_ticlang\Debug\syscfg\ti_msp_dl_config.h...
    [22]Writing C:\Users\a0508911\workspace_ccstheia\adc_to_uart_LP_MSPM0L1306_nortos_ticlang\Debug\syscfg\Event.dot...
    [23]Finished building: "../adc_to_uart.syscfg"
     
    [24]Building file: "../adc_to_uart.c"
    [25]Invoking: Arm Compiler
    [26]"C:/ti/ccstheia120/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang.exe" -c @"syscfg/device.opt"  -march=thumbv6m -mcpu=cortex-m0plus -mfloat-abi=soft -mlittle-endian -mthumb -O2 -I"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang" -I"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang/Debug" -I"C:/ti/mspm0_sdk_1_20_01_06/source/third_party/CMSIS/Core/Include" -I"C:/ti/mspm0_sdk_1_20_01_06/source" -gdwarf-3 -MMD -MP -MF"adc_to_uart.d_raw" -MT"adc_to_uart.o" -I"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang/Debug/syscfg"  @"syscfg/device.opt"  -o"adc_to_uart.o" "../adc_to_uart.c"
    [27]Finished building: "../adc_to_uart.c"
     
    [28]Building file: "syscfg/ti_msp_dl_config.c"
    [29]Invoking: Arm Compiler
    [30]"C:/ti/ccstheia120/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang.exe" -c @"syscfg/device.opt"  -march=thumbv6m -mcpu=cortex-m0plus -mfloat-abi=soft -mlittle-endian -mthumb -O2 -I"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang" -I"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang/Debug" -I"C:/ti/mspm0_sdk_1_20_01_06/source/third_party/CMSIS/Core/Include" -I"C:/ti/mspm0_sdk_1_20_01_06/source" -gdwarf-3 -MMD -MP -MF"syscfg/ti_msp_dl_config.d_raw" -MT"syscfg/ti_msp_dl_config.o" -I"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang/Debug/syscfg"  @"syscfg/device.opt"  -o"syscfg/ti_msp_dl_config.o" "syscfg/ti_msp_dl_config.c"
    [31]Finished building: "syscfg/ti_msp_dl_config.c"
     
    [32]Building file: "C:/ti/mspm0_sdk_1_20_01_06/source/ti/devices/msp/m0p/startup_system_files/ticlang/startup_mspm0l130x_ticlang.c"
    [33]Invoking: Arm Compiler
    [34]"C:/ti/ccstheia120/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang.exe" -c @"syscfg/device.opt"  -march=thumbv6m -mcpu=cortex-m0plus -mfloat-abi=soft -mlittle-endian -mthumb -O2 -I"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang" -I"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang/Debug" -I"C:/ti/mspm0_sdk_1_20_01_06/source/third_party/CMSIS/Core/Include" -I"C:/ti/mspm0_sdk_1_20_01_06/source" -gdwarf-3 -MMD -MP -MF"startup_mspm0l130x_ticlang.d_raw" -MT"startup_mspm0l130x_ticlang.o" -I"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang/Debug/syscfg"  @"syscfg/device.opt"  -o"startup_mspm0l130x_ticlang.o" "C:/ti/mspm0_sdk_1_20_01_06/source/ti/devices/msp/m0p/startup_system_files/ticlang/startup_mspm0l130x_ticlang.c"
    [35]Finished building: "C:/ti/mspm0_sdk_1_20_01_06/source/ti/devices/msp/m0p/startup_system_files/ticlang/startup_mspm0l130x_ticlang.c"
     
    [36]Building target: "adc_to_uart_LP_MSPM0L1306_nortos_ticlang.out"
    [37]Invoking: Arm Linker
    [38]"C:/ti/ccstheia120/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmclang.exe" @"syscfg/device.opt"  -march=thumbv6m -mcpu=cortex-m0plus -mfloat-abi=soft -mlittle-endian -mthumb -O2 -gdwarf-3 -Wl,-m"adc_to_uart_LP_MSPM0L1306_nortos_ticlang.map" -Wl,-i"C:/ti/mspm0_sdk_1_20_01_06/source" -Wl,-i"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang" -Wl,-i"C:/Users/a0508911/workspace_ccstheia/adc_to_uart_LP_MSPM0L1306_nortos_ticlang/Debug/syscfg" -Wl,-i"C:/ti/ccstheia120/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/lib" -Wl,--diag_wrap=off -Wl,--display_error_number -Wl,--warn_sections -Wl,--xml_link_info="adc_to_uart_LP_MSPM0L1306_nortos_ticlang_linkInfo.xml" -Wl,--rom_model -o "adc_to_uart_LP_MSPM0L1306_nortos_ticlang.out" "./adc_to_uart.o" "./syscfg/ti_msp_dl_config.o" "./startup_mspm0l130x_ticlang.o" -Wl,-l"syscfg/device_linker.cmd"  -Wl,-ldevice.cmd.genlibs -Wl,-llibc.a 
    [39]Finished building target: "adc_to_uart_LP_MSPM0L1306_nortos_ticlang.out"
     
    [40]**** Build Finished *

    Of course there is no direct compilation of adc.c and uart.c.

    Instead, Arm linker using the command -llib.a to import driverlib.

    Why is it compiling uart.c but not adc12.c?

    Here is my screen shot of press Ctrl and move curse to thier function in main.c:

    As you can see, DL_UART can jump to the dl_uart_main.h while there is no jump link of DL_ADC12.

    Regards,

    Helic

  • Of course there is no direct compilation of adc.c and uart.c.

    Yes, I agree. I see that too. My question was for Tsunoda-san.

  • Hi Ki,

    I understand that neither file is compiled because both are not in the project folder, but the uart function jumping vs adc function not jumping still does not make sense to me.

    If the linker importing the entire driverlib, shouldn't they both jump to their respective definitions?

    Best regards,

    Mari Tsunoda

  • If the linker importing the entire driverlib, shouldn't they both jump to their respective definitions?

    Looks like DL_ADC12_startConversion is an inline function while DL_UART_Main_transmitData is not. Looks like the clangd parser in CCS Theia is not resolving inline functions. Also imported the same project in CCS Eclipse and the CDT indexer in CCS Eclipse is able to resolve inline functions.

    I'm not sure if this is a limitation of the clangd parser or if it is a bug. We will take a look.

  • I filed a bug for this. Tracking Link: https://sir.ext.ti.com/jira/browse/EXT_EP-11588

  • Hi Ki and Helic,

    Thanks for your support on this!

    Will mark as resolved.

    Best regards,

    Mari 

  • So...For MPSM0 development,This function(Jump to def),Theia is not as good as ccs12.4+.

    Hope to have a solution soon...

  • So...For MPSM0 development,This function(Jump to def),Theia is not as good as ccs12.4+.

    It appears that way. A different parsing tool is used in CCS Theia vs CCS Eclipse.