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.

LAUNCHXL-F28P55X: FreeRTOS and C++

Part Number: LAUNCHXL-F28P55X
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

Tool/software:

Hi,

I am trying to integrate FreeRTOS to my existing project. I have started from the F28P55X example project of freertos_ex1_c28x_led_blinky_syscfg.

And since I changed the main file from C to C++, it failed the compilation and showing error as undefined symbol of  FreeRTOS_init() in  ./freertos_ex1_c28x_led_blinky_syscfg.obj.

CCS: 20.0.0.12__1.6.0

SDK: C2000Ware 5.04.00.00

Example: C:\ti\c2000\C2000Ware_5_04_00_00\kernel\FreeRTOS\Demo\C2000_F28P55x_C28x_CCS

Attached are the build log and project.

 

[0]**** Build of configuration CPU1_FLASH for project freertos_ex1_c28x_led_blinky_syscfg ****
[1]"C:\\ti\\ccs2000\\ccs\\utils\\bin\\gmake" -k -j 8 all -O 
 
[2]Building file: "../freertos_ex1_c28x_led_blinky_syscfg.cpp"
[3]Invoking: C2000 Compiler
[4]"C:/ti/ccs2000/ccs/tools/compiler/ti-cgt-c2000_22.6.1A23259/bin/cl2000" -v28 -ml -mt --cla_support=cla2 --float_support=fpu32 --tmu_support=tmu1 --vcu_support=vcrc -Ooff --include_path="C:/Users/workspace/freertos_ex1_c28x_led_blinky_syscfg" --include_path="C:/ti/c2000/C2000Ware_5_04_00_00" --include_path="C:/Users/workspace/freertos_ex1_c28x_led_blinky_syscfg/device" --include_path="C:/ti/c2000/C2000Ware_5_04_00_00/driverlib/f28p55x/driverlib" --include_path="C:/ti/ccs2000/ccs/tools/compiler/ti-cgt-c2000_22.6.1A23259/include" --define=DEBUG --define=_FLASH --define=_LAUNCHXL_F28P55X --diag_suppress=10063 --diag_warning=225 --diag_wrap=off --display_error_number --gen_func_subsections=on --abi=eabi --preproc_with_compile --preproc_dependency="freertos_ex1_c28x_led_blinky_syscfg.d_raw" --include_path="C:/Users/workspace/freertos_ex1_c28x_led_blinky_syscfg/CPU1_FLASH/syscfg" --cmd_file="syscfg/board.opt" --cmd_file="syscfg/c2000ware_libraries.opt" --cmd_file="syscfg/c2000_freertos.opt"  "../freertos_ex1_c28x_led_blinky_syscfg.cpp"
[5]Finished building: "../freertos_ex1_c28x_led_blinky_syscfg.cpp"
 
[6]Building target: "freertos_ex1_c28x_led_blinky_syscfg.out"
[7]Invoking: C2000 Linker
[8]"C:/ti/ccs2000/ccs/tools/compiler/ti-cgt-c2000_22.6.1A23259/bin/cl2000" -v28 -ml -mt --cla_support=cla2 --float_support=fpu32 --tmu_support=tmu1 --vcu_support=vcrc -Ooff --define=DEBUG --define=_FLASH --define=_LAUNCHXL_F28P55X --diag_suppress=10063 --diag_warning=225 --diag_wrap=off --display_error_number --gen_func_subsections=on --abi=eabi -z -m"freertos_ex1_c28x_led_blinky_syscfg.map" --heap_size=0x100 --stack_size=0x200 --warn_sections -i"C:/ti/ccs2000/ccs/tools/compiler/ti-cgt-c2000_22.6.1A23259/lib" -i"C:/ti/c2000/C2000Ware_5_04_00_00" -i"C:/Users/workspace/freertos_ex1_c28x_led_blinky_syscfg/CPU1_FLASH/syscfg" -i"C:/ti/ccs2000/ccs/tools/compiler/ti-cgt-c2000_22.6.1A23259/include" --reread_libs --define=_FLASH --diag_wrap=off --display_error_number --xml_link_info="freertos_ex1_c28x_led_blinky_syscfg_linkInfo.xml" --entry_point=code_start --rom_model -o "freertos_ex1_c28x_led_blinky_syscfg.out" "./freertos_ex1_c28x_led_blinky_syscfg.obj" "./syscfg/board.obj" "./syscfg/c2000ware_libraries.obj" "./syscfg/c2000_freertos.obj" "./tasks.obj" "./queue.obj" "./list.obj" "./timers.obj" "./event_groups.obj" "./stream_buffer.obj" "./port.obj" "./portasm.obj" "./heap_4.obj" "./device/device.obj" "./device/f28p55x_codestartbranch.obj" "../28p55x_freertos_flash_lnk.cmd" "C:/ti/c2000/C2000Ware_5_04_00_00/driverlib/f28p55x/driverlib/ccs/Debug/driverlib.lib"  -lc2000ware_libraries.cmd.genlibs -llibc.a 
[9]<Linking>
 
[10] undefined       first referenced                         
[11]  symbol             in file                              
[12] ---------       ----------------                         
[13] FreeRTOS_init() ./freertos_ex1_c28x_led_blinky_syscfg.obj
 
[14]error #10234-D: unresolved symbols remain
[15]error #10010: errors encountered during linking; "freertos_ex1_c28x_led_blinky_syscfg.out" not built
 
[16]>> Compilation failure
[17]makefile:153: recipe for target 'freertos_ex1_c28x_led_blinky_syscfg.out' failed
[18]gmake[1]: *** [freertos_ex1_c28x_led_blinky_syscfg.out] Error 1
[19]makefile:149: recipe for target 'all' failed
[20]gmake: *** [all] Error 2
[21]**** Build Finished ****

Am I missing any config?

freertos_ex1_c28x_led_blinky_syscfg.zip

Thanks,

Siu

  • Hi Siu,

    This issue is due to name mangling. You can resolve it by wrapping the C2000Ware and SysConfig includes in an extern "C" block like so:

    //
    // Included Files
    //
    extern "C" {
    #include "driverlib.h"
    #include "device.h"
    #include "board.h"
    #include "c2000_freertos.h"
    }

    You can refer to this thread for a more detailed explanation on this.

    Regards,

    Arnav