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.

LP-MSPM0C1104: dl_i2c.c is showing "undeclared function" warnings

Part Number: LP-MSPM0C1104
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

I am trying to use a FireBeetle Oled Display (with SSD1360) via I2C with my LP-MSPM0C1104. It is wired correctly, a simple i2c test file has proven the adress to be correct and reachable.

I am having trouble getting the code to build due to errors with the dl_i2c.c file or the linking of libraries (i think).

  • IDE version: Code Composer Studio (CCS) v20.2

  • SDK version: MSPM0 SDK v2.05.01.00

  • I2C_Oled.zip 

    [0]**** Build of configuration Debug for project I2C_Oled ****
    [1]"C:\\TI\\CCS20\\ccs\\utils\\bin\\gmake" -k -j 16 all -O 
     
    [2]Building file: "../I2C_Oled.syscfg"
    [3]Invoking: SysConfig
    [4]"C:/TI/CCS20/ccs/utils/sysconfig_1.24.0/sysconfig_cli.bat" --script "C:/Users/RD/workspace_ccstheia/I2C_Oled/I2C_Oled.syscfg" -o "." -s "C:/TI/mspm0_sdk_2_05_01_00/.metadata/product.json" --compiler ticlang
    [5]Running script...
    [6]Validating...
    [7]Generating Code (I2C_Oled.syscfg)...
    [8]Writing C:\Users\RD\workspace_ccstheia\I2C_Oled\Debug\device_linker.cmd...
    [9]Writing C:\Users\RD\workspace_ccstheia\I2C_Oled\Debug\device.opt...
    [10]Writing C:\Users\RD\workspace_ccstheia\I2C_Oled\Debug\device.cmd.genlibs...
    [11]Writing C:\Users\RD\workspace_ccstheia\I2C_Oled\Debug\ti_msp_dl_config.c...
    [12]Writing C:\Users\RD\workspace_ccstheia\I2C_Oled\Debug\ti_msp_dl_config.h...
    [13]Writing C:\Users\RD\workspace_ccstheia\I2C_Oled\Debug\Event.dot...
    [14]Finished building: "../I2C_Oled.syscfg"
     
    [15]Building file: "../dl_common.c"
    [16]Invoking: Arm Compiler
    [17]"C:/TI/CCS20/ccs/tools/compiler/ti-cgt-armllvm_4.0.3.LTS/bin/tiarmclang.exe" -c @"device.opt"  -march=thumbv6m -mcpu=cortex-m0plus -mfloat-abi=soft -mlittle-endian -mthumb -O2 -I"C:/Users/RD/workspace_ccstheia/I2C_Oled" -I"C:/Users/RD/workspace_ccstheia/I2C_Oled/Debug" -I"C:/TI/mspm0_sdk_2_05_01_00/source/third_party/CMSIS/Core/Include" -I"C:/TI/mspm0_sdk_2_05_01_00/source" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/devices/msp/m0p" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib/m0p" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib" -gdwarf-3 -MMD -MP -MF"dl_common.d_raw" -MT"dl_common.o"  @"./device.opt"  -o"dl_common.o" "../dl_common.c"
    [18]Finished building: "../dl_common.c"
     
    [19]Building file: "C:/TI/mspm0_sdk_2_05_01_00/source/ti/devices/msp/m0p/startup_system_files/ticlang/startup_mspm0c110x_ticlang.c"
    [20]Invoking: Arm Compiler
    [21]"C:/TI/CCS20/ccs/tools/compiler/ti-cgt-armllvm_4.0.3.LTS/bin/tiarmclang.exe" -c @"device.opt"  -march=thumbv6m -mcpu=cortex-m0plus -mfloat-abi=soft -mlittle-endian -mthumb -O2 -I"C:/Users/RD/workspace_ccstheia/I2C_Oled" -I"C:/Users/RD/workspace_ccstheia/I2C_Oled/Debug" -I"C:/TI/mspm0_sdk_2_05_01_00/source/third_party/CMSIS/Core/Include" -I"C:/TI/mspm0_sdk_2_05_01_00/source" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/devices/msp/m0p" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib/m0p" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib" -gdwarf-3 -MMD -MP -MF"startup_mspm0c110x_ticlang.d_raw" -MT"startup_mspm0c110x_ticlang.o"  @"./device.opt"  -o"startup_mspm0c110x_ticlang.o" "C:/TI/mspm0_sdk_2_05_01_00/source/ti/devices/msp/m0p/startup_system_files/ticlang/startup_mspm0c110x_ticlang.c"
    [22]Finished building: "C:/TI/mspm0_sdk_2_05_01_00/source/ti/devices/msp/m0p/startup_system_files/ticlang/startup_mspm0c110x_ticlang.c"
     
    [23]Building file: "../dl_i2c.c"
    [24]Invoking: Arm Compiler
    [25]"C:/TI/CCS20/ccs/tools/compiler/ti-cgt-armllvm_4.0.3.LTS/bin/tiarmclang.exe" -c @"device.opt"  -march=thumbv6m -mcpu=cortex-m0plus -mfloat-abi=soft -mlittle-endian -mthumb -O2 -I"C:/Users/RD/workspace_ccstheia/I2C_Oled" -I"C:/Users/RD/workspace_ccstheia/I2C_Oled/Debug" -I"C:/TI/mspm0_sdk_2_05_01_00/source/third_party/CMSIS/Core/Include" -I"C:/TI/mspm0_sdk_2_05_01_00/source" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/devices/msp/m0p" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib/m0p" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib" -gdwarf-3 -MMD -MP -MF"dl_i2c.d_raw" -MT"dl_i2c.o"  @"./device.opt"  -o"dl_i2c.o" "../dl_i2c.c"
    [26]Finished building: "../dl_i2c.c"
     
    [27]Building file: "ti_msp_dl_config.c"
    [28]Invoking: Arm Compiler
    [29]"C:/TI/CCS20/ccs/tools/compiler/ti-cgt-armllvm_4.0.3.LTS/bin/tiarmclang.exe" -c @"device.opt"  -march=thumbv6m -mcpu=cortex-m0plus -mfloat-abi=soft -mlittle-endian -mthumb -O2 -I"C:/Users/RD/workspace_ccstheia/I2C_Oled" -I"C:/Users/RD/workspace_ccstheia/I2C_Oled/Debug" -I"C:/TI/mspm0_sdk_2_05_01_00/source/third_party/CMSIS/Core/Include" -I"C:/TI/mspm0_sdk_2_05_01_00/source" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/devices/msp/m0p" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib/m0p" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib" -gdwarf-3 -MMD -MP -MF"ti_msp_dl_config.d_raw" -MT"ti_msp_dl_config.o"  @"./device.opt"  -o"ti_msp_dl_config.o" "ti_msp_dl_config.c"
    [30]Finished building: "ti_msp_dl_config.c"
     
    [31]Building file: "../I2C_Oled.c"
    [32]Invoking: Arm Compiler
    [33]"C:/TI/CCS20/ccs/tools/compiler/ti-cgt-armllvm_4.0.3.LTS/bin/tiarmclang.exe" -c @"device.opt"  -march=thumbv6m -mcpu=cortex-m0plus -mfloat-abi=soft -mlittle-endian -mthumb -O2 -I"C:/Users/RD/workspace_ccstheia/I2C_Oled" -I"C:/Users/RD/workspace_ccstheia/I2C_Oled/Debug" -I"C:/TI/mspm0_sdk_2_05_01_00/source/third_party/CMSIS/Core/Include" -I"C:/TI/mspm0_sdk_2_05_01_00/source" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/devices/msp/m0p" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib/m0p" -I"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib" -gdwarf-3 -MMD -MP -MF"I2C_Oled.d_raw" -MT"I2C_Oled.o"  @"./device.opt"  -o"I2C_Oled.o" "../I2C_Oled.c"
    [34]../I2C_Oled.c:42:5: warning: call to undeclared function 'DL_Common_delay_cycles'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    [35]   42 |     DL_Common_delay_cycles(ms * (CPUCLK_FREQ / 1000));
    [36]      |     ^
    [37]../I2C_Oled.c:51:12: warning: call to undeclared function 'DL_I2C_isControllerBusy'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    [38]   51 |     while (DL_I2C_isControllerBusy(I2C_INST));
    [39]      |            ^
    [40]../I2C_Oled.c:57:5: warning: call to undeclared function 'DL_I2C_Controller_startTransfer'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    [41]   57 |     DL_I2C_Controller_startTransfer(I2C_INST, OLED_I2C_ADDR, DL_I2C_CONTROLLER_DIRECTION_TX, len);
    [42]      |     ^
    [43]../I2C_Oled.c:64:9: warning: call to undeclared function 'DL_I2C_Controller_putData'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    [44]   64 |         DL_I2C_Controller_putData(I2C_INST, data[i]);
    [45]      |         ^
    [46]4 warnings generated.
    [47]Finished building: "../I2C_Oled.c"
     
    [48]Building target: "I2C_Oled.out"
    [49]Invoking: Arm Linker
    [50]"C:/TI/CCS20/ccs/tools/compiler/ti-cgt-armllvm_4.0.3.LTS/bin/tiarmclang.exe" @"device.opt"  -march=thumbv6m -mcpu=cortex-m0plus -mfloat-abi=soft -mlittle-endian -mthumb -O2 -gdwarf-3 -Wl,-m"I2C_Oled.map" -Wl,-i"C:/TI/mspm0_sdk_2_05_01_00/source" -Wl,-i"C:/Users/RD/workspace_ccstheia/I2C_Oled" -Wl,-i"C:/Users/RD/workspace_ccstheia/I2C_Oled/Debug/syscfg" -Wl,-i"C:/TI/CCS20/ccs/tools/compiler/ti-cgt-armllvm_4.0.3.LTS/lib" -Wl,-i"C:/TI/mspm0_sdk_2_05_01_00/source/ti/driverlib/lib/ticlang/m0p/mspm0c110x/" -Wl,--diag_wrap=off -Wl,--display_error_number -Wl,--warn_sections -Wl,--xml_link_info="I2C_Oled_linkInfo.xml" -Wl,--rom_model -o "I2C_Oled.out" "./I2C_Oled.o" "./ti_msp_dl_config.o" "./startup_mspm0c110x_ticlang.o" "./dl_common.o" "./dl_i2c.o" -Wl,-l"./device_linker.cmd"  -Wl,-ldevice.cmd.genlibs -Wl,-llibc.a 
    [51]"./device_linker.cmd", line 63: error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section, or the section contains padded functions. run placement with alignment fails for section ".stack" size 0x40.  Available memory ranges:
    [52]   SRAM         size: 0x400        unused: 0x0          max hole: 0x0       
     
    [53] undefined                       first referenced
    [54]  symbol                             in file     
    [55] ---------                       ----------------
    [56] DL_Common_delay_cycles          ./I2C_Oled.o    
    [57] DL_I2C_Controller_putData       ./I2C_Oled.o    
    [58] DL_I2C_Controller_startTransfer ./I2C_Oled.o    
    [59] DL_I2C_isControllerBusy         ./I2C_Oled.o    
     
    [60]error #10234-D: unresolved symbols remain
    [61]error #10010: errors encountered during linking; "I2C_Oled.out" not built
    [62]tiarmclang: error: tiarmlnk command failed with exit code 1 (use -v to see invocation)
    [63]gmake[1]: *** [makefile:141: I2C_Oled.out] Error 1
    [64]gmake: *** [makefile:135: all] Error 2
    [65]**** Build Finished ****
    
    Project folder and build log.

  • I have tried: creating a new projects, reinstalling SDK, reinstalling CCS, adding dl_common.c and dl_i2c.c directly, verifying SysConfig settings, checking linker paths, etc.

Could you maybe help me to solve this issue? I am stuck.

additional files: FireBeetle_Covers-OLED12864_Display_SKU__DFR0507.pdf SSD1360_Data.pdf
Any help would be appriciated.
Thank you and kind regards!
Roy

  • Hi Roy,

    I was looking through your project and noticed some issues. You attempt to call these functions:

    • DL_Common_delay_cycles
    • DL_I2C_isControllerBusy
    • DL_I2C_Controller_startTransfer
    • DL_I2C_Controller_putData

    None of these exist in the DriverLib. You also had many unnecessary includes in your I2C_Oled.c file, such as #include "driverlib.h", "dl_i2c.h", #include "dl_common.h", and #include "mspm0c110x.h". Within the compiler include options (project settings), you also had an unnecessary include to the m0p directory. Fix these issues and see if they resolve your issue.
    Another interesting observation I made is that your program exceeds the SRAM size for the C110x devices. I would ensure that you are allocating enough space for the stack, heap, etc.
    Best,
    Owen