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.
I try to use the DCL function DF22 in a CLA code and get linking error.
The DCL_DF22_L1.asm source file is added to the include path.
Code:
/* shared CLA variables */
extern float uk;
extern float ek;
...
#include "DCLCLA.h"
..
//CLA variables
DCL_DF22_CLA ctrl1;
...
// run the full DF22 controller
uk = DCL_runDF22_L1(&ctrl1, ek);
...
Error:
Flags: -v28 -ml -mt --cla_support=cla2 --float_support=fpu64 --idiv_support=idiv0 --tmu_support=tmu0 --fp_mode=relaxed --advice:performance=all --define=CPU1 --define=F2838_TARGET --define=_FLASH -g --c99 --diag_warning=225 --diag_wrap=off --display_error_number --gen_func_subsections=on --abi=eabi --cla_background_task=on -z -m"../../Products/Obc_APP_Cpu1/Obc_APP_Cpu1.map" --stack_size=0x400 --warn_sections -i"C:/ti/ccs1020/ccs/tools/compiler/ti-cgt-c2000_20.2.2.LTS/lib" -i"C:/projects/PeDSP/Components/Libs_F2838/FlashAPI/c28x/lib" -i"C:/ti/ccs1020/ccs/tools/compiler/ti-cgt-c2000_20.2.2.LTS/include" --reread_libs --diag_wrap=off --display_error_number --xml_link_info="Obc_APP_Cpu1_linkInfo.xml" --rom_model
"C:/ti/ccs1020/ccs/tools/compiler/ti-cgt-c2000_20.2.2.LTS/bin/cl2000" -@"ccsLinker.opt" -o "../../Products/Obc_APP_Cpu1/Obc_APP_Cpu1.elf"
<Linking>
undefined first referenced
symbol in file
--------- ----------------
ek ./Sources/Sources/ClaTasks_C.obj
uk ./Sources/Sources/ClaTasks_C.obj
error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "../../Products/Obc_APP_Cpu1/Obc_APP_Cpu1.elf" not built
>> Compilation failure
makefile:351: recipe for target '../../Products/Obc_APP_Cpu1/Obc_APP_Cpu1.elf' failed
gmake[1]: *** [../../Products/Obc_APP_Cpu1/Obc_APP_Cpu1.elf] Error 1
gmake[1]: Target 'secondary-outputs' not remade because of errors.
makefile:347: recipe for target 'all' failed
gmake: *** [all] Error 2
**** Build Finished ****
Hi Andras,
Have the 2 variables showing up as undefined been declared as globals in the C28 source code and mapped to some shared memory? You can take a look at the DCL examples in C2000Ware for reference.
Thanks,
Ashwini
Hi Ashwini,
This is how they are defined:
/* shared CLA variables */
#pragma DATA_SECTION(ek, "CpuToCla1MsgRAM")
#pragma DATA_SECTION(uk, "Cla1ToCpuMsgRAM")
extern float uk;
extern float ek;
Hi Andras,
The extern keyword before float needs to be removed for uk and ek as this is the actual variable definition. Marking it extern indicates that it is defined elsewhere which is why the compiler is correctly reporting undefined error.
Thanks,
Ashwini