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.

RTOS/TMS320C6678: Linking errors when I2c and uart drivers are added!

Part Number: TMS320C6678
Other Parts Discussed in Thread: SYSBIOS

Tool/software: TI-RTOS

Hello,

I'm trying to add I2C functionality to my evaluation module.  Using the example project I load the board, I2C, and the uart driver packages in the config file.  I'm only calling the function:

void Board_initI2C(void)
{
Board_initCfg boardCfg;

boardCfg = BOARD_INIT_PINMUX_CONFIG |
BOARD_INIT_MODULE_CLOCK ;


Board_init(boardCfg);
}

inside main().  But I can't get it to build.  The latest linking error I have is the uart library!

**** Build of configuration Debug for project myEVMstart ****

"C:\\CodeComposerStudioV6\\ccsv6\\utils\\bin\\gmake" -k all
making ../src/sysbios/sysbios.ae66 ...
gmake[1]: Entering directory 'C:/Users/user/Documents/workplace_new/myEVMstart_Multicore/src/sysbios'
gmake[1]: Nothing to be done for 'all'.
gmake[1]: Leaving directory 'C:/Users/user/Documents/workplace_new/myEVMstart_Multicore/src/sysbios'
'Building target: myEVMstart.out'
'Invoking: C6000 Linker'
"C:/CodeComposerStudioV6/ccsv6/tools/compiler/ti-cgt-c6000_8.1.1/bin/cl6x" -mv6600 --abi=eabi -O3 --opt_for_speed=5 --symdebug:none --optimize_with_debug=on --program_level_compile --define=SOC_C6678 --define=EVM_C6678 --define=USE_BIOS --diag_warning=225 --display_error_number --debug_software_pipeline --speculate_unknown_loads -k --asm_listing -z -m"myEVMstart.map" -i"C:/CodeComposerStudioV6/ccsv6/tools/compiler/ti-cgt-c6000_8.1.1/lib" -i"C:/CodeComposerStudioV6/pdk_c667x_2_0_4/packages/ti/drv/uart" -i"C:/CodeComposerStudioV6/ipc_1_24_03_32/packages/ti/sdo/ipc/lib" -i"C:/CodeComposerStudioV6/pdk_c667x_2_0_4/packages/ti/platform/evmc6678l/platform_lib/lib/debug" -i"C:/CodeComposerStudioV6/ccsv6/tools/compiler/ti-cgt-c6000_8.1.1/include" --reread_libs --warn_sections --display_error_number --xml_link_info="myEVMstart_linkInfo.xml" --rom_model -o "myEVMstart.out" "main.obj" -l"configPkg/linker.cmd" -llibc.a -l"C:/CodeComposerStudioV6/pdk_c667x_2_0_4/packages/ti/csl/lib/c6678/c66/release/ti.csl.ae66" -l"C:/CodeComposerStudioV6/pdk_c667x_2_0_4/packages/ti/platform/evmc6678l/platform_lib/lib/debug/ti.platform.evm6678l.ae66"
<Linking>
>> WARNING: --speculate_unknown_loads requested. Assembly file contains warnings
for all speculated loads with unbounded address ranges.
Make sure that these loads are safe to speculate!!

undefined first referenced
symbol in file
--------- ----------------
HwiP_Params_init C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_v0.oe66>
HwiP_create C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_v0.oe66>
HwiP_delete C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_v0.oe66>
HwiP_disable C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_v0.oe66>

HwiP_restore C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_v0.oe66>
>> Compilation failure
makefile:148: recipe for target 'myEVMstart.out' failed
MuxIntcP_create C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_v0.oe66>
SemaphoreP_Params_init C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_stdio.oe66>
SemaphoreP_create C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_stdio.oe66>
SemaphoreP_delete C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_stdio.oe66>
SemaphoreP_pend C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_stdio.oe66>
SemaphoreP_post C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_stdio.oe66>
_DebugP_assert C:\CodeComposerStudioV6\pdk_c667x_2_0_4\packages\ti\drv\uart\lib\c6678\c66\release\ti.drv.uart.ae66<UART_v0.oe66>

error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "myEVMstart.out" not built
gmake: *** [myEVMstart.out] Error 1
gmake: Target 'all' not remade because of errors.

**** Build Finished ****

Would you please help me resolve this.

I appreciate any help.

  • Maryam,

    It appears that you are getting an error from an undefined symbol shat should be getting provided by the PDK. I don't believe that anyone in the TI-RTOS forum will be able to help you, so I have moved this thread over to the device forum in hopes that you will get a faster response there.
  • Thanks for your response. I finally found out that I had to add the osal package to the config file too. It's now resolved.
  • Whenever, you link into any LLD driver provided in the RTOS SDK, you will need to link to OSAL and board library whether you are using any RTOS or running the drivers in bare-metal or no-OS environment as the drivers rely on OSAL layer for setting up Hardware interrupts and utilizing semaphores and the board library for SOC initializations like SOC clocks, powering up modules, etc

    Hope this clarifies why these libraries are required.

    Regards,
    Rahul