AnsweredAssumed Answered

Receiving "Undefined Refernce to ..." Errors

Question asked by Peter Voorhees on Aug 31, 2016

Hello NXP forum, 

 

Getting some undefined reference linker errors. I'm receiving undefined reference errors for the daqSpiCh1_MasterState and daqSpiCh1_dmaTcd symbols. Bottom line is that these symbols are declared in daqSpiCh1.h, defined in daqSpiCh1.c. daqSpiCh1.c is being complied (object file is present). But I don't seem to be able to link against those particular symbols. 

 

Linker log is attached also. 

 

I don't mind admitting I'm a little embarrassed that can't seem to define a variable... I appreciate your help and will post more info if it is necessary.

 

////////////////////////////////////////////////////////////////////////////////////////////////////////
//daqSpiCh1.h
#ifndef __daqSpiCh1_H
#define __daqSpiCh1_H
/* MODULE daqSpiCh1. */

/* Include inherited beans */
#include "clockManager.h"
#include "dmaController.h"
#include "osa.h"
#include "Cpu.h"

/*! @brief Device instance number */
#define daqSpiCh1_IDX SPI0_IDX
/*! @brief Device instance number for backward compatibility */
#define FSL_DAQSPICH1 daqSpiCh1_IDX
/*! @brief daqSpiCh1 component mode, 0 for interrupt, 1 for DMA mode */
#define daqSpiCh1_DMA_MODE 1U
/*! @brief daqSpiCh1 component mode for backward compatibility */
#define DAQSPICH1_DMA_MODE daqSpiCh1_DMA_MODE

/*! @brief Driver calculated baudrate is returned from DSPI_DRV_MasterInit() call.*/
extern uint32_t daqSpi1_calculatedBaudRate;

/*! @brief Master bus state decl */
extern dspi_edma_master_state_t daqSpiCh1_MasterState;
/*! @brief eDMA TCD structure */
extern edma_software_tcd_t daqSpiCh1_dmaTcd __attribute__((aligned(32)));

/*! @brief Master bus configuration declaration */
extern const dspi_edma_device_t daqSpiCh1_BusConfig0;
   
/*! @brief Master configuration declaration */
extern const dspi_edma_master_user_config_t daqSpiCh1_MasterConfig0;


#endif
////////////////////////////////////////////////////////////////////////////////////////////////////////
//daqSpiCh1.c
#include "daqSpiCh1.h"

dspi_edma_master_state_t daqSpi1_MasterState;

edma_software_tcd_t daqSpi1_dmaTcd __attribute__((aligned(32)));

uint32_t daqSpi1_calculatedBaudRate = 0;

const dspi_edma_device_t daqSpiCh1_BusConfig0 = {
    .bitsPerSec = 20000000U,
    .dataBusConfig.bitsPerFrame = 16U,
    .dataBusConfig.clkPolarity = kDspiClockPolarity_ActiveHigh,
    .dataBusConfig.clkPhase = kDspiClockPhase_FirstEdge,
    .dataBusConfig.direction = kDspiMsbFirst,
};

const dspi_edma_master_user_config_t daqSpiCh1_MasterConfig0 = {
    .whichCtar = kDspiCtar0,
    .isSckContinuous = false,
    .isChipSelectContinuous = false,
    .whichPcs = kDspiPcs0,
    .pcsPolarity = kDspiPcs_ActiveLow,
};
////////////////////////////////////////////////////////////////////////////////////////////////////////
//daq.h
#ifndef SOURCES_DAQ_DAQ_H_
#define SOURCES_DAQ_DAQ_H_

#include "arm_math.h"

typedef struct {
    enum edma_channel_assignments DMA_SPI_CH;
    enum IRQn DMA_IRQn;
    uint32_t PIT_CH;
    pdb_trigger_src_t PDB_INPUT_TRIG;
} daq_ChannelConfigTable_t;

extern const daq_ChannelConfigTable_t daq_ChannelConfigTable[];

#define BUF_PP_U8_ELEM 512 // size of one of the ping pong buffers
#define BUF_PP_N 2 // Number of buffers

#define BUF_PP_BANK_SIZE BUF_PP_U8_ELEM >> 1

struct {
    uint16_t* gen;
    q15_t* ch1;
    q15_t* ch2;
    size_t bufSize;
    uint16_t samplePeriod_nS;
} daq_buffers_public_struct;

void DAQ_Initialize(void(*analyzerCallback), uint32_t sampleFrequency_Hz);

#endif /* SOURCES_DAQ_DAQ_H_ */
////////////////////////////////////////////////////////////////////////////////////////////////////////
//daq_priv.h
#ifndef SOURCES_DAQ_DAQ_PRIV_H_
#define SOURCES_DAQ_DAQ_PRIV_H

#include "Cpu.h"

#include "Analyzer\analyzer.h"

#include "daqProgrammableDelay.h"
#include "daqSpiCh1.h"
#include "daqSpiCh2.h"
#include "daqTimerConversionStart.h"
#include "daqTimerSPIGate.h"
#include "dmaController.h"

#include "daq.h"

// =====PRIVATE VARIABLES======================================================

// -----GLOBALS----------------------------------------------------------------
extern SPI_Type* const g_dspiBase[SPI_INSTANCE_COUNT];
extern void* g_dspiStatePtr[SPI_INSTANCE_COUNT];
// -END-GLOBALS----------------------------------------------------------------

// -----Private State----------------------------------------------------------
void (*daq_callback)(void);
// -END-Private State----------------------------------------------------------

// -----CONFIGURATION----------------------------------------------------------
#define DAQ_CONFIG edmaChanneldaqSPI0CmdToTx
#define DAQ_CONV_START_FTM_CHANNEL 0

const daq_ChannelConfigTable_t daq_ChannelConfigTable[4] = {
    { kEDMAChannel0, DMA0_IRQn, 0, kPdbTrigger4 }, // When CMD to SPI uses DMA0
    { kEDMAChannel1, DMA1_IRQn, 1, kPdbTrigger5 }, // When CMD to SPI uses DMA1
    { kEDMAChannel2, DMA2_IRQn, 2, kPdbTrigger6 }, // When CMD to SPI uses DMA2
    { kEDMAChannel3, DMA3_IRQn, 3, kPdbTrigger7 }, // When CMD to SPI uses DMA3
};
// -END-CONFIGURATION----------------------------------------------------------

// -----BUFFERS----------------------------------------------------------------
/* size of the DMA transfer for a ping pong buffer */
#define BUF_PP_DMA_LEN BUF_PP_U8_ELEM
/* Resultant array length */
#define BUF_ELEMS_U16_SIZE BUF_PP_U8_ELEM
#define BUF_ELEMS_U8_SIZE (BUF_PP_U8_ELEM * BUF_PP_N)

enum uint32_t { BUF_BANK_A = 0, BUF_BANK_B };

uint32_t BUF_BANK[2] = { 0, BUF_PP_BANK_SIZE };

typedef struct {
    union {
        uint16_t u16[BUF_ELEMS_U16_SIZE];
        uint8_t u8[BUF_ELEMS_U8_SIZE];
    } gen;
    union {
        q15_t q15[BUF_ELEMS_U16_SIZE];
        uint8_t u8[BUF_ELEMS_U8_SIZE];
    } ch1;
    union {
        q15_t q15[BUF_ELEMS_U16_SIZE];
        uint8_t u8[BUF_ELEMS_U8_SIZE];
    } ch2;
    union {
        q15_t q15[BUF_ELEMS_U16_SIZE];
        uint8_t u8[BUF_ELEMS_U8_SIZE];
    } analysis_sin;
    union {
        q15_t q15[BUF_ELEMS_U16_SIZE];
        uint8_t u8[BUF_ELEMS_U8_SIZE];
    } analysis_cos;
} data_buffer
    __attribute__((aligned(512))); // aligned against DMA modulo boundary

static data_buffer fra_buffers = {.gen.u8 = { 0 },
    .ch1.u8 = { 0 },
    .ch2.u8 = { 0 },
    .analysis_sin.u8 = { 0 },
    .analysis_cos.u8 = { 0 } };
// -END-BUFFERS----------------------------------------------------------------c

Error actually flagged here: 

////////////////////////////////////////////////////////////////////////////////////////////////////////
//daq.c
#include "daq_priv.h"

static void daq_spiInit(void)
{
    // clang-format off
    DSPI_DRV_EdmaMasterInit(daqSpiCh1_IDX, &daqSpiCh1_MasterState, &daqSpiCh1_MasterConfig0, &daqSpiCh1_dmaTcd);
    DSPI_DRV_EdmaMasterConfigureBus(daqSpiCh1_IDX, &daqSpiCh1_BusConfig0, &daqSpi1_calculatedBaudRate);
    // ----SPI Ch2
    DSPI_DRV_EdmaSlaveInit(daqSpiCh2_IDX, &daqSpi2_SlaveState, &daqSpiCh2_SlaveConfig0);

    // ----DAQ DMA Controller
    // Correct the channel assignments
    EDMA_DRV_ReleaseChannel(&daqSpiCh1_MasterState.dmaCmdData2Fifo);
    EDMA_DRV_ReleaseChannel(&daqSpiCh1_MasterState.dmaFifo2Receive);
    EDMA_DRV_ReleaseChannel(&daqSpiCh1_MasterState.dmaSrc2CmdData);
    EDMA_DRV_ReleaseChannel(&daqSpi2_SlaveState.edmaRxChannel);
    EDMA_DRV_ReleaseChannel(&daqSpi2_SlaveState.edmaTxChannel);
    // Get correct DMA channels according to DMA config.
    EDMA_DRV_RequestChannel(edmaChanneldaqSPI0CmdToTx, edmaSignaldaqSPI0CmdToTx,&daqSpiCh1_MasterState.dmaCmdData2Fifo);
    EDMA_DRV_RequestChannel(edmaChanneldaqSPI0RxToBuf, edmaSignaldaqSPI0Rx,&daqSpiCh1_MasterState.dmaFifo2Receive);
    EDMA_DRV_RequestChannel(edmaChanneldaqSPI0DatToCmd, edmaSignaldaqSPI0Cmd, &daqSpiCh1_MasterState.dmaSrc2CmdData);
    EDMA_DRV_RequestChannel(edmaChanneldaqSPI1RxToBuf, edmaSignaldaqSPI1Rx, &daqSpi2_SlaveState.edmaRxChannel);
    // clang-format on
}
...

And the verbose linker log:

'Invoking: Cross ARM C++ Linker'
arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -Wall -g3 -T "C:/Users/pgvoorhees/OneDrive/Documents/Projects/KDS/881/Project_Settings/ProcessorExpert.ld" -Xlinker --gc-sections -L"C:\Freescale\KSDK_1.3.0\platform\CMSIS/Lib/GCC" -L"C:/Users/pgvoorhees/OneDrive/Documents/Projects/KDS/881/Project_Settings/Linker_Files" -Wl,-Map,"881.map" --specs=nano.specs -v -specs=nosys.specs -Xlinker -z -Xlinker muldefs -o "881.elf" ./Sources/Sys/ringbuffer.o ./Sources/Sys/system.o ./Sources/Parse/parse.o ./Sources/DAQ/daq.o ./Sources/Comm/comm.o ./Sources/Comm/rs485.o ./Sources/Comm/usb_ser.o ./Sources/Analyzer/analyzer.o ./Sources/Events.o ./Sources/PE_low_level_init.o ./Sources/main.o ./Sources/os_tasks.o ./SDK/platform/utilities/src/fsl_debug_console.o ./SDK/platform/utilities/src/fsl_misc_utilities.o ./SDK/platform/utilities/src/print_scan.o ./SDK/platform/system/src/interrupt/fsl_interrupt_manager.o ./SDK/platform/system/src/clock/MK22FA12/fsl_clock_MK22FA12.o ./SDK/platform/system/src/clock/fsl_clock_manager.o ./SDK/platform/system/src/clock/fsl_clock_manager_common.o ./SDK/platform/osa/src/fsl_os_abstraction_bm.o ./SDK/platform/hal/src/wdog/fsl_wdog_hal.o ./SDK/platform/hal/src/uart/fsl_uart_hal.o ./SDK/platform/hal/src/sim/MK22FA12/fsl_sim_hal_MK22FA12.o ./SDK/platform/hal/src/rtc/fsl_rtc_hal.o ./SDK/platform/hal/src/port/fsl_port_hal.o ./SDK/platform/hal/src/pit/fsl_pit_hal.o ./SDK/platform/hal/src/pdb/fsl_pdb_hal.o ./SDK/platform/hal/src/osc/fsl_osc_hal.o ./SDK/platform/hal/src/mcg/fsl_mcg_hal.o ./SDK/platform/hal/src/mcg/fsl_mcg_hal_modes.o ./SDK/platform/hal/src/gpio/fsl_gpio_hal.o ./SDK/platform/hal/src/ftm/fsl_ftm_hal.o ./SDK/platform/hal/src/edma/fsl_edma_hal.o ./SDK/platform/hal/src/dspi/fsl_dspi_hal.o ./SDK/platform/hal/src/dmamux/fsl_dmamux_hal.o ./SDK/platform/drivers/src/wdog/fsl_wdog_common.o ./SDK/platform/drivers/src/wdog/fsl_wdog_driver.o ./SDK/platform/drivers/src/uart/fsl_uart_common.o ./SDK/platform/drivers/src/uart/fsl_uart_edma_driver.o ./SDK/platform/drivers/src/rtc/fsl_rtc_common.o ./SDK/platform/drivers/src/pit/fsl_pit_common.o ./SDK/platform/drivers/src/pit/fsl_pit_driver.o ./SDK/platform/drivers/src/pdb/fsl_pdb_common.o ./SDK/platform/drivers/src/pdb/fsl_pdb_driver.o ./SDK/platform/drivers/src/gpio/fsl_gpio_common.o ./SDK/platform/drivers/src/gpio/fsl_gpio_driver.o ./SDK/platform/drivers/src/ftm/fsl_ftm_common.o ./SDK/platform/drivers/src/ftm/fsl_ftm_driver.o ./SDK/platform/drivers/src/edma/fsl_edma_common.o ./SDK/platform/drivers/src/edma/fsl_edma_driver.o ./SDK/platform/drivers/src/dspi/fsl_dspi_common.o ./SDK/platform/drivers/src/dspi/fsl_dspi_edma_master_driver.o ./SDK/platform/drivers/src/dspi/fsl_dspi_edma_shared_function.o ./SDK/platform/drivers/src/dspi/fsl_dspi_edma_slave_driver.o ./SDK/platform/devices/MK22FA12/startup/gcc/startup_MK22FA12.o ./SDK/platform/devices/MK22FA12/startup/system_MK22FA12.o ./SDK/platform/devices/startup.o ./PEx/src/Cpu.o ./PEx/src/FRAManagementTask.o ./PEx/src/WatchdogTask.o ./PEx/src/clockManager.o ./PEx/src/communicationRS485.o ./PEx/src/daqProgrammableDelay.o ./PEx/src/daqSpiCh1.o ./PEx/src/daqSpiCh2.o ./PEx/src/daqTimerConversionStart.o ./PEx/src/daqTimerSPIGate.o ./PEx/src/dmaController.o ./PEx/src/gpio.o ./PEx/src/hardware_init.o ./PEx/src/osa.o ./PEx/src/pinMux.o ./PEx/src/watchdog.o -larm_cortexM4lf_math
Using built-in specs.
Reading specs from c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/nano.specs
rename spec link to nano_link
rename spec link_gcc_c_sequence to nano_link_gcc_c_sequence
rename spec cpp to nano_cpp
Reading specs from c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/nosys.specs
rename spec link_gcc_c_sequence to nosys_link_gcc_c_sequence
COLLECT_GCC=arm-none-eabi-g++
COLLECT_LTO_WRAPPER=c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/lto-wrapper.exe
Target: arm-none-eabi
Configured with: /home/build/work/GCC-4-9-build/src/gcc/configure --build=i686-linux-gnu --host=i686-w64-mingw32 --target=arm-none-eabi --prefix=/home/build/work/GCC-4-9-build/install-mingw --libexecdir=/home/build/work/GCC-4-9-build/install-mingw/lib --infodir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/info --mandir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/man --htmldir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/html --pdfdir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-headers=yes --with-newlib --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/home/build/work/GCC-4-9-build/install-mingw/arm-none-eabi --with-libiconv-prefix=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-gmp=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-mpfr=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-mpc=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-isl=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-cloog=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-libelf=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for ARM Embedded Processors' --with-multilib-list=armv6-m,armv7-m,armv7e-m,cortex-m7,armv7-r
Thread model: single
gcc version 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977] (GNU Tools for ARM Embedded Processors)
COMPILER_PATH=c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/;c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/;c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/
LIBRARY_PATH=c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/;c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7e-m/fpu/;c:/freescale/kds_3.0.0/toolchain/bin/../arm-none-eabi/lib/armv7e-m/fpu/;c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/;c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/;c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/;c:/freescale/kds_3.0.0/toolchain/bin/../arm-none-eabi/lib/
COLLECT_GCC_OPTIONS='-mcpu=cortex-m4' '-mthumb' '-mfloat-abi=hard' '-mfpu=fpv4-sp-d16' '-O0' '-fmessage-length=0' '-fsigned-char' '-ffunction-sections' '-fdata-sections' '-Wall' '-g3' '-T' 'C:/Users/pgvoorhees/OneDrive/Documents/Projects/KDS/881/Project_Settings/ProcessorExpert.ld' '-LC:\Freescale\KSDK_1.3.0\platform\CMSIS/Lib/GCC' '-LC:/Users/pgvoorhees/OneDrive/Documents/Projects/KDS/881/Project_Settings/Linker_Files' '-specs=nano.specs' '-v' '-specs=nosys.specs' '-o' '881.elf'
c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/collect2.exe -plugin c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/liblto_plugin-0.dll -plugin-opt=c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\PGVOOR~1\AppData\Local\Temp\ccte6Qsk.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lg_nano -plugin-opt=-pass-through=-lc_nano -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc_nano -plugin-opt=-pass-through=-lnosys -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc_nano -plugin-opt=-pass-through=-lnosys --sysroot=c:\freescale\kds_3.0.0\toolchain\bin\../arm-none-eabi -X -o 881.elf c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/crti.o c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/crtbegin.o c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7e-m/fpu/crt0.o -LC:\Freescale\KSDK_1.3.0\platform\CMSIS/Lib/GCC -LC:/Users/pgvoorhees/OneDrive/Documents/Projects/KDS/881/Project_Settings/Linker_Files -Lc:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu -Lc:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7e-m/fpu -Lc:/freescale/kds_3.0.0/toolchain/bin/../arm-none-eabi/lib/armv7e-m/fpu -Lc:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3 -Lc:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc -Lc:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib -Lc:/freescale/kds_3.0.0/toolchain/bin/../arm-none-eabi/lib --gc-sections -Map 881.map -z muldefs ./Sources/Sys/ringbuffer.o ./Sources/Sys/system.o ./Sources/Parse/parse.o ./Sources/DAQ/daq.o ./Sources/Comm/comm.o ./Sources/Comm/rs485.o ./Sources/Comm/usb_ser.o ./Sources/Analyzer/analyzer.o ./Sources/Events.o ./Sources/PE_low_level_init.o ./Sources/main.o ./Sources/os_tasks.o ./SDK/platform/utilities/src/fsl_debug_console.o ./SDK/platform/utilities/src/fsl_misc_utilities.o ./SDK/platform/utilities/src/print_scan.o ./SDK/platform/system/src/interrupt/fsl_interrupt_manager.o ./SDK/platform/system/src/clock/MK22FA12/fsl_clock_MK22FA12.o ./SDK/platform/system/src/clock/fsl_clock_manager.o ./SDK/platform/system/src/clock/fsl_clock_manager_common.o ./SDK/platform/osa/src/fsl_os_abstraction_bm.o ./SDK/platform/hal/src/wdog/fsl_wdog_hal.o ./SDK/platform/hal/src/uart/fsl_uart_hal.o ./SDK/platform/hal/src/sim/MK22FA12/fsl_sim_hal_MK22FA12.o ./SDK/platform/hal/src/rtc/fsl_rtc_hal.o ./SDK/platform/hal/src/port/fsl_port_hal.o ./SDK/platform/hal/src/pit/fsl_pit_hal.o ./SDK/platform/hal/src/pdb/fsl_pdb_hal.o ./SDK/platform/hal/src/osc/fsl_osc_hal.o ./SDK/platform/hal/src/mcg/fsl_mcg_hal.o ./SDK/platform/hal/src/mcg/fsl_mcg_hal_modes.o ./SDK/platform/hal/src/gpio/fsl_gpio_hal.o ./SDK/platform/hal/src/ftm/fsl_ftm_hal.o ./SDK/platform/hal/src/edma/fsl_edma_hal.o ./SDK/platform/hal/src/dspi/fsl_dspi_hal.o ./SDK/platform/hal/src/dmamux/fsl_dmamux_hal.o ./SDK/platform/drivers/src/wdog/fsl_wdog_common.o ./SDK/platform/drivers/src/wdog/fsl_wdog_driver.o ./SDK/platform/drivers/src/uart/fsl_uart_common.o ./SDK/platform/drivers/src/uart/fsl_uart_edma_driver.o ./SDK/platform/drivers/src/rtc/fsl_rtc_common.o ./SDK/platform/drivers/src/pit/fsl_pit_common.o ./SDK/platform/drivers/src/pit/fsl_pit_driver.o ./SDK/platform/drivers/src/pdb/fsl_pdb_common.o ./SDK/platform/drivers/src/pdb/fsl_pdb_driver.o ./SDK/platform/drivers/src/gpio/fsl_gpio_common.o ./SDK/platform/drivers/src/gpio/fsl_gpio_driver.o ./SDK/platform/drivers/src/ftm/fsl_ftm_common.o ./SDK/platform/drivers/src/ftm/fsl_ftm_driver.o ./SDK/platform/drivers/src/edma/fsl_edma_common.o ./SDK/platform/drivers/src/edma/fsl_edma_driver.o ./SDK/platform/drivers/src/dspi/fsl_dspi_common.o ./SDK/platform/drivers/src/dspi/fsl_dspi_edma_master_driver.o ./SDK/platform/drivers/src/dspi/fsl_dspi_edma_shared_function.o ./SDK/platform/drivers/src/dspi/fsl_dspi_edma_slave_driver.o ./SDK/platform/devices/MK22FA12/startup/gcc/startup_MK22FA12.o ./SDK/platform/devices/MK22FA12/startup/system_MK22FA12.o ./SDK/platform/devices/startup.o ./PEx/src/Cpu.o ./PEx/src/FRAManagementTask.o ./PEx/src/WatchdogTask.o ./PEx/src/clockManager.o ./PEx/src/communicationRS485.o ./PEx/src/daqProgrammableDelay.o ./PEx/src/daqSpiCh1.o ./PEx/src/daqSpiCh2.o ./PEx/src/daqTimerConversionStart.o ./PEx/src/daqTimerSPIGate.o ./PEx/src/dmaController.o ./PEx/src/gpio.o ./PEx/src/hardware_init.o ./PEx/src/osa.o ./PEx/src/pinMux.o ./PEx/src/watchdog.o -larm_cortexM4lf_math -lstdc++_nano -lm --start-group -lgcc -lg_nano -lc_nano --end-group --start-group -lgcc -lc_nano -lnosys --end-group --start-group -lgcc -lc_nano -lnosys --end-group c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/crtend.o c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/crtn.o -T C:/Users/pgvoorhees/OneDrive/Documents/Projects/KDS/881/Project_Settings/ProcessorExpert.ld
./Sources/DAQ/daq.o: In function `daq_spiInit':
C:\Users\pgvoorhees\OneDrive\Documents\Projects\KDS\881\Debug/../Sources/DAQ/daq.c:31: undefined reference to `daqSpiCh1_MasterState'
C:\Users\pgvoorhees\OneDrive\Documents\Projects\KDS\881\Debug/../Sources/DAQ/daq.c:31: undefined reference to `daqSpiCh1_dmaTcd'
C:\Users\pgvoorhees\OneDrive\Documents\Projects\KDS\881\Debug/../Sources/DAQ/daq.c:31: undefined reference to `daqSpiCh1_MasterState'
C:\Users\pgvoorhees\OneDrive\Documents\Projects\KDS\881\Debug/../Sources/DAQ/daq.c:31: undefined reference to `daqSpiCh1_MasterState'
C:\Users\pgvoorhees\OneDrive\Documents\Projects\KDS\881\Debug/../Sources/DAQ/daq.c:31: undefined reference to `daqSpiCh1_MasterState'
collect2.exe: error: ld returned 1 exit status
make: *** [881.elf] Error 1

Outcomes