Part Number: TMS320F280049C-Q1
SW Team,
I'm trying to put together a library I can hand to people so they can write custom code for my device. To this end, I've put together a library project which just compiles all the sources from my main application project and builds a lib instead of an executable. My problem comes when I try to use the library in a test project. The linker is complaining about missing symbols, even though I believe I've properly included them in the library. Is there a limitation on the things I can include in an archive? I didn't see anything in the assembly language tools guide in the archiver section that would suggest this wouldn't work.
**** Build of configuration Debug for project Sygnal-MCM-Library **** /Applications/ti/ccs1200/ccs/utils/bin/gmake -k -j 15 all -O Building target: "Sygnal-MCM-Library.lib" Invoking: C2000 Archiver "/Applications/ti/ccs1200/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/bin/ar2000" r "Sygnal-MCM-Library.lib" "./device.obj" "./f28004x_codestartbranch.obj" "./f28004x_globalvariabledefs.obj" "./main.obj" "./application/mcm-binaryconfig.obj" "./application/mcm-canproc.obj" "./application/mcm-cla.obj" "./application/mcm-closedloop.obj" "./application/mcm-commissioning.obj" "./application/mcm-config.obj" "./application/mcm-control.obj" "./application/mcm-factory.obj" "./application/mcm-fault-behavior.obj" "./application/mcm-fault.obj" "./application/mcm-heartbeat.obj" "./application/mcm-ifcontrol.obj" "./application/mcm-init.obj" "./application/mcm-inputctrl.obj" "./application/mcm-intercom.obj" "./application/mcm-main.obj" "./application/mcm-missing-signal.obj" "./application/mcm-outputctrl.obj" "./application/mcm-override-filters.obj" "./application/mcm-override.obj" "./application/mcm-report.obj" "./application/mcm-state.obj" "./application/mcm-task.obj" "./application/mcm-vehicledata.obj" "./application/mcm-virt-ifcontrol.obj" "./can_protocol/cascade.obj" "./can_protocol/closedloop.obj" "./can_protocol/commissioning.obj" "./can_protocol/config.obj" "./can_protocol/control.obj" "./can_protocol/error.obj" "./can_protocol/fail-op1.obj" "./can_protocol/fail-op2.obj" "./can_protocol/fault.obj" "./can_protocol/heartbeat.obj" "./can_protocol/i15765app.obj" "./can_protocol/ident.obj" "./can_protocol/kar-tech.obj" "./can_protocol/mcmglobal.obj" "./can_protocol/nlpid.obj" "./can_protocol/oscc.obj" "./can_protocol/override.obj" "./can_protocol/pid.obj" "./can_protocol/relay.obj" "./can_protocol/report.obj" "./can_protocol/signal.obj" "./can_protocol/sygnalglobal.obj" "./can_protocol/sygnalstatic.obj" "./can_protocol/vehicledata.obj" "./can_protocol/virt-if.obj" "./cla/mcm-cla-tasks.obj" "./control/DCL_PID_C4.obj" "./control/DCL_clamp_C1.obj" "./control/DCL_error.obj" "./driverlib/adc.obj" "./driverlib/asysctl.obj" "./driverlib/can.obj" "./driverlib/cla.obj" "./driverlib/clapromcrc.obj" "./driverlib/clb.obj" "./driverlib/cmpss.obj" "./driverlib/cputimer.obj" "./driverlib/dac.obj" "./driverlib/dcc.obj" "./driverlib/dcsm.obj" "./driverlib/dma.obj" "./driverlib/ecap.obj" "./driverlib/epwm.obj" "./driverlib/eqep.obj" "./driverlib/flash.obj" "./driverlib/fsi.obj" "./driverlib/gpio.obj" "./driverlib/hrcap.obj" "./driverlib/hrpwm.obj" "./driverlib/i2c.obj" "./driverlib/interrupt.obj" "./driverlib/lin.obj" "./driverlib/memcfg.obj" "./driverlib/pga.obj" "./driverlib/pmbus.obj" "./driverlib/sci.obj" "./driverlib/sdfm.obj" "./driverlib/spi.obj" "./driverlib/sysctl.obj" "./driverlib/version.obj" "./driverlib/xbar.obj" "./drivers/mcm-analog.obj" "./drivers/mcm-dac.obj" "./drivers/mcm-ecap.obj" "./drivers/mcm-gpio.obj" "./drivers/mcm-inputxbar.obj" "./drivers/mcm-pwm.obj" "./drivers/mcm-spi.obj" "./drivers/mcm-syscontrol.obj" "./drivers/mcm-watchdog.obj" "./drivers/mcm-xint.obj" "./sygnal_drivers/can.obj" "./sygnal_drivers/eeprom.obj" "./sygnal_drivers/i2c.obj" "./sygnal_drivers/timers.obj" "./sygnal_drivers/uart.obj" "./sygnal_utilities/RingBuf.obj" "./sygnal_utilities/bootloader-symbols.obj" "./sygnal_utilities/data_extractor.obj" "./sygnal_utilities/i15765.obj" "./sygnal_utilities/uart_debug.obj" "./sygnal_utilities/uds_tx.obj" "./utilities/crc.obj" "./virt_if_drivers/virtif-kartech.obj" "/Users/germanpm/Polymorphic_Labs_LLC/Sygnal/Firmware/common/f28004x/floatingptdsp/lib/c28x_fpu_dsp_library.lib" "/Users/germanpm/Polymorphic_Labs_LLC/Sygnal/Firmware/common/f28004x/vcu0/lib/c28x_vcu0_library_fpu32.lib" "/Users/germanpm/Polymorphic_Labs_LLC/Sygnal/Firmware/common/f28004x/device_support/f28004x/headers/cmd/f28004x_headers_nonbios.cmd" ==> new archive 'Sygnal-MCM-Library.lib' ==> building archive 'Sygnal-MCM-Library.lib' Finished building target: "Sygnal-MCM-Library.lib" **** Build Finished ****
Toward the end of the console dump, you'll see I'm archiving:
"/Firmware/common/f28004x/floatingptdsp/lib/c28x_fpu_dsp_library.lib"
"/Firmware/common/f28004x/vcu0/lib/c28x_vcu0_library_fpu32.lib"
But then when I use the lib the archiver spits out I get this from the linker:
undefined first referenced symbol in file --------- ---------------- _FIR_f32_calc /Firmware/Sygnal-MCM-Library/Debug/Sygnal-MCM-Library.lib<mcm-override-filters.obj> _FIR_f32_init /Firmware/Sygnal-MCM-Library/Debug/Sygnal-MCM-Library.lib<mcm-override-filters.obj> _getCRC16P1_vcu /Firmware/Sygnal-MCM-Library/Debug/Sygnal-MCM-Library.lib<mcm-config.obj> _getCRC8_vcu /Firmware/Sygnal-MCM-Library/Debug/Sygnal-MCM-Library.lib<crc.obj>
Any ideas? I will try using the t option of ar2000 to see what it says about symbols in the lib.
Thanks,
Trey