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.

TMS320F28379D: EABI - CLA Undefined Symbols linker error

Part Number: TMS320F28379D


When attempting to setup CLA1 for use, I've run into a consistent "undefined symbol" error during the link step. The apparent undefined symbols include the names of each of my declared CLA tasks (Cla1Task1, Cla1Task8) along with variables that I believe should be made available from the link command file (Cla1ConstLoadSize, Cla1ConstLoadStart, Cla1ConstRunStart, Cla1ProgLoadSize, Cla1ProgLoadStart, Cla1ProgRunStart). This project is configured as an EABI project using the latest compiler version (TI v22.6.1 LTS).

I've managed to somewhat duplicate this error in the "CLA Hands On Workshop" example project by simply changing a few project properties (albeit, along with many warnings about using COFF library files in an EABI project):

 - Compiler version => TI v22.6.1 LTS

- Output format => eabi (ELF)

- Runtime support library => rts2800_fpu32_eabi.lib

I've attached some relevant files in my own project related to CLA definitions/initialization. The project itself can be made available on GitHub if that may assist in reproducing the error. Any pointers or advice would be much appreciated, thank you!

/*
 * 2837xD_FLASH_CLA_lnk_cpu1.cmd
 */
// The user must define CLA_C in the project linker settings if using the
// CLA C compiler
// Project Properties -> C2000 Linker -> Advanced Options -> Command File
// Preprocessing -> --define
#ifdef CLA_C
// Define a size for the CLA scratchpad area that will be used
// by the CLA compiler for local symbols and temps
// Also force references to the special symbols that mark the
// scratchpad are.
CLA_SCRATCHPAD_SIZE = 0x100;
--undef_sym=__cla_scratchpad_end
--undef_sym=__cla_scratchpad_start
#endif //CLA_C

MEMORY
{
PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode   */

   BEGIN           	: origin = 0x080000,   length = 0x000002
   RAMM0           	: origin = 0x000123,   length = 0x0002DD
   RAMD0           	: origin = 0x00B000,   length = 0x000800
   RAMLS0          	: origin = 0x008000,   length = 0x000800
   RAMLS1          	: origin = 0x008800,   length = 0x000800   
   /* RAMLS4      	   : origin = 0x00A000, length = 0x000800 */
   /* RAMLS5           : origin = 0x00A800, length = 0x000800 */
   RAMLS4_5         : origin = 0x00A000,   length = 0x001000
   
   RAMGS14          : origin = 0x01A000,   length = 0x001000     /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */
   RAMGS15          : origin = 0x01B000, length = 0x000FF8     /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */

//   RAMGS15_RSVD     : origin = 0x01BFF8, length = 0x000008    /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */

   RESET           	: origin = 0x3FFFC0,   length = 0x000002

   /* Flash sectors */
   FLASHA           : origin = 0x080002,   length = 0x001FFE	/* on-chip Flash */
   FLASHB           : origin = 0x082000,   length = 0x002000	/* on-chip Flash */
   FLASHC           : origin = 0x084000,   length = 0x002000	/* on-chip Flash */
   FLASHD           : origin = 0x086000,   length = 0x002000	/* on-chip Flash */
   FLASHE           : origin = 0x088000,   length = 0x008000	/* on-chip Flash */
   FLASHF           : origin = 0x090000,   length = 0x008000	/* on-chip Flash */
   FLASHG           : origin = 0x098000,   length = 0x008000	/* on-chip Flash */
   FLASHH           : origin = 0x0A0000,   length = 0x008000	/* on-chip Flash */
   FLASHI           : origin = 0x0A8000,   length = 0x008000	/* on-chip Flash */
   FLASHJ           : origin = 0x0B0000,   length = 0x008000	/* on-chip Flash */
   FLASHK           : origin = 0x0B8000,   length = 0x002000	/* on-chip Flash */
   FLASHL           : origin = 0x0BA000,   length = 0x002000	/* on-chip Flash */
   FLASHM           : origin = 0x0BC000,   length = 0x002000	/* on-chip Flash */
   FLASHN           : origin = 0x0BE000, length = 0x001FF0	/* on-chip Flash */

//   FLASHN_RSVD     : origin = 0x0BFFF0, length = 0x000010    /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */


PAGE 1 :

   BOOT_RSVD       : origin = 0x000002, length = 0x000121     /* Part of M0, BOOT rom will use this for stack */
   RAMM1           : origin = 0x000400, length = 0x0003F8     /* on-chip RAM block M1 */
//   RAMM1_RSVD      : origin = 0x0007F8, length = 0x000008     /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */

   RAMLS2      		: origin = 0x009000,   length = 0x000800
   RAMLS3      		: origin = 0x009800,   length = 0x000800

   RAMGS0           : origin = 0x00C000,   length = 0x001000
   RAMGS1           : origin = 0x00D000,   length = 0x001000
   RAMGS2           : origin = 0x00E000,   length = 0x001000
   RAMGS3           : origin = 0x00F000,   length = 0x001000
   RAMGS4           : origin = 0x010000,   length = 0x001000
   RAMGS5           : origin = 0x011000,   length = 0x001000
   RAMGS6           : origin = 0x012000,   length = 0x001000
   RAMGS7           : origin = 0x013000,   length = 0x001000
   RAMGS8           : origin = 0x014000,   length = 0x001000
   RAMGS9           : origin = 0x015000,   length = 0x001000
   RAMGS10          : origin = 0x016000,   length = 0x001000
   
//   RAMGS11          : origin = 0x017000, length = 0x000FF8   /* Uncomment for F28374D, F28376D devices */

//   RAMGS11_RSVD     : origin = 0x017FF8, length = 0x000008    /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */

   RAMGS11          : origin = 0x017000, length = 0x001000     /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */
   RAMGS12          : origin = 0x018000, length = 0x001000     /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */
   RAMGS13          : origin = 0x019000,   length = 0x001000     /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */

   EMIF1_CS0n       : origin = 0x80000000, length = 0x10000000
   EMIF1_CS2n       : origin = 0x00100000, length = 0x00200000
   EMIF1_CS3n       : origin = 0x00300000, length = 0x00080000
   EMIF1_CS4n       : origin = 0x00380000, length = 0x00060000
   EMIF2_CS0n       : origin = 0x90000000, length = 0x10000000
   EMIF2_CS2n       : origin = 0x00002000, length = 0x00001000

   CLA1_MSGRAMLOW   : origin = 0x001480,   length = 0x000080
   CLA1_MSGRAMHIGH  : origin = 0x001500,   length = 0x000080
}


SECTIONS
{
   /* Allocate program areas: */
   .cinit           : > FLASHB      PAGE = 0, ALIGN(8)
   .text            : > FLASHB      PAGE = 0, ALIGN(8)
   codestart        : > BEGIN       PAGE = 0, ALIGN(8)
   .stack           : > RAMM1       PAGE = 1
   .switch          : > FLASHB      PAGE = 0, ALIGN(8)

   /* Allocate uninitalized data sections: */

#if defined(__TI_EABI__)
   .init_array         : > FLASHB,       PAGE = 0, ALIGN(8)
   .bss                : > RAMLS2,       PAGE = 1
   .bss:output         : > RAMLS2,       PAGE = 1
   .data               : > RAMLS2,       PAGE = 1
   .sysmem             : > RAMLS2,       PAGE = 1
   .const              : > FLASHB,       PAGE = 0, ALIGN(8)
#else
   .pinit              : > FLASHB,       PAGE = 0, ALIGN(8)
   .ebss               : > RAMLS2,		 PAGE = 1
   .esysmem            : > RAMLS2,       PAGE = 1
   .econst             : > FLASHB   	 PAGE = 0, ALIGN(8)
#endif

   .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */

   Filter_RegsFile  : > RAMGS0,	   PAGE = 1
   
   .em2_cs0         : > EMIF2_CS0n, PAGE = 1
   .em2_cs2         : > EMIF2_CS2n, PAGE = 1

    /* CLA specific sections */
   #if defined(__TI_EABI__)
   		Cla1Prog    : LOAD = FLASHD,
                      RUN = RAMLS4_5,
                      LOAD_START(Cla1funcsLoadStart),
                      LOAD_END(Cla1funcsLoadEnd),
                      RUN_START(Cla1funcsRunStart),
                      LOAD_SIZE(Cla1funcsLoadSize),
                      PAGE = 0, ALIGN(8)
   #else
      	Cla1Prog    : LOAD = FLASHD,
                      RUN = RAMLS4_5,
                      LOAD_START(_Cla1funcsLoadStart),
                      LOAD_END(_Cla1funcsLoadEnd),
                      RUN_START(_Cla1funcsRunStart),
                      LOAD_SIZE(_Cla1funcsLoadSize),
                      PAGE = 0, ALIGN(8)
   #endif

   CLADataLS0		: > RAMLS0, PAGE=0
   CLADataLS1		: > RAMLS1, PAGE=0

   Cla1ToCpuMsgRAM  : > CLA1_MSGRAMLOW,   PAGE = 1
   CpuToCla1MsgRAM  : > CLA1_MSGRAMHIGH,  PAGE = 1

#ifdef __TI_COMPILER_VERSION__
   #if __TI_COMPILER_VERSION__ >= 15009000
        #if defined(__TI_EABI__)
		    .TI.ramfunc : {} LOAD = FLASHD,
							 RUN = RAMD0,
                	         LOAD_START(RamfuncsLoadStart),
                 	         LOAD_SIZE(RamfuncsLoadSize),
                 	         LOAD_END(RamfuncsLoadEnd),
                  	         RUN_START(RamfuncsRunStart),
                  	         RUN_SIZE(RamfuncsRunSize),
                   	         RUN_END(RamfuncsRunEnd),
							 PAGE = 0, ALIGN(8)
		#else
			.TI.ramfunc : {} LOAD = FLASHD,
							 RUN = RAMD0,
                	         LOAD_START(_RamfuncsLoadStart),
                 	         LOAD_SIZE(_RamfuncsLoadSize),
                 	         LOAD_END(_RamfuncsLoadEnd),
                  	         RUN_START(_RamfuncsRunStart),
                  	         RUN_SIZE(_RamfuncsRunSize),
                   	         RUN_END(_RamfuncsRunEnd),
							 PAGE = 0, ALIGN(8)
		#endif
   #else
   ramfuncs         : LOAD = FLASHD,
                      RUN = RAMD0,
                      LOAD_START(_RamfuncsLoadStart),
                      LOAD_SIZE(_RamfuncsLoadSize),
                      LOAD_END(_RamfuncsLoadEnd),
                      RUN_START(_RamfuncsRunStart),
                      RUN_SIZE(_RamfuncsRunSize),
                      RUN_END(_RamfuncsRunEnd),
                      PAGE = 0, ALIGN(8)
   #endif
#endif

   /* The following section definition are for SDFM examples */
   Filter1_RegsFile : > RAMGS1,	PAGE = 1, fill=0x1111
   Filter2_RegsFile : > RAMGS2,	PAGE = 1, fill=0x2222
   Filter3_RegsFile : > RAMGS3,	PAGE = 1, fill=0x3333
   Filter4_RegsFile : > RAMGS4,	PAGE = 1, fill=0x4444

#ifdef CLA_C
   /* CLA C compiler sections */
   //
   // Must be allocated to memory the CLA has write access to
   //
   CLAscratch       :
                     { *.obj(CLAscratch)
                     . += CLA_SCRATCHPAD_SIZE;
                     *.obj(CLAscratch_end) } >  RAMLS1,  PAGE = 0

   .scratchpad      : > RAMLS1,       PAGE = 0
   .bss_cla		    : > RAMLS1,       PAGE = 0
   .const_cla	    :  LOAD = FLASHB,
                       RUN = RAMLS1,
                       RUN_START(_Cla1ConstRunStart),
                       LOAD_START(_Cla1ConstLoadStart),
                       LOAD_SIZE(_Cla1ConstLoadSize),
                       PAGE = 0
#endif //CLA_C
}

/*
//===========================================================================
// End of file.
//===========================================================================
*/

/*
 * CLA/shared.c
 */

#include "CLA/shared.h"
#include "CLA/tasks.h"

#include <stdint.h>
#include <inc/hw_types.h>


#pragma DATA_SECTION(encoder_sine_max, "CpuToCla1MsgRAM");
volatile uint16_t encoder_sine_max[6];
#pragma DATA_SECTION(encoder_sine_min, "CpuToCla1MsgRAM");
volatile uint16_t encoder_sine_min[6];
#pragma DATA_SECTION(encoder_cosine_max, "CpuToCla1MsgRAM");
volatile uint16_t encoder_cosine_max[6];
#pragma DATA_SECTION(encoder_cosine_min, "CpuToCla1MsgRAM");
volatile uint16_t encoder_cosine_min[6];

#pragma DATA_SECTION(encoder_angle, "Cla1ToCpuMsgRAM");
volatile float32_t encoder_angle[6];

/*
 * CLA/tasks.h
 */

#ifndef INCLUDE_CLA_TASKS_H_
#define INCLUDE_CLA_TASKS_H_


__attribute__((interrupt)) void Cla1Task1(void);
__attribute__((interrupt)) void Cla1Task8(void);


#endif /* INCLUDE_CLA_TASKS_H_ */

/*
 * CLA/shared.h
 *
 * Contains variable declarations shared between CLA and CPU.
 */

#ifndef INCLUDE_CLA_SHARED_H_
#define INCLUDE_CLA_SHARED_H_


#include <stdint.h>
#include <inc/hw_types.h>

extern volatile uint16_t encoder_sine_max[6];
extern volatile uint16_t encoder_sine_min[6];
extern volatile uint16_t encoder_cosine_max[6];
extern volatile uint16_t encoder_cosine_min[6];
extern volatile float32_t encoder_angle[6];


#endif /* INCLUDE_CLA_SHARED_H_ */

/*
 * CLA/tasks.cla
 */
 
#include "CLA/shared.h"
#include "CLA/tasks.h"

#include <stdint.h>
#include <inc/hw_types.h>
#include <adc.h>
#include <gpio.h>
#include <CLAmath.h>


uint16_t encoder_gpio;
// Copies of max/min in CLA memory that can dynamically adjust to new values.
uint16_t sin_max[6];
uint16_t sin_min[6];
uint16_t cos_max[6];
uint16_t cos_min[6];

float32_t amplitude(float32_t const max, float32_t const min) {
    return (max - min) / 2.0f;
}

float32_t normalize(
        uint32_t const measured_sub_min,
        float32_t const amplitude
) {
    float32_t const numerator = (float32_t)measured_sub_min - amplitude;
    return numerator / amplitude;
}

/* Process ADC results and calculate encoder angles. */
__attribute__((interrupt)) void CLA1Task1(void) {
    uint16_t const a1 = 0;
    uint16_t const a2 = 1;
    uint16_t const a3 = 2;

    uint32_t sine_reads[3];
    uint32_t cosine_reads[3];
    float32_t sin_amp[3];
    float32_t cos_amp[3];
    float32_t sine_n[3];
    float32_t cosine_n[3];

    sine_reads[a1] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER1);
    sine_reads[a1] += ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER2);
    sine_reads[a1] += ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER3);
    sine_reads[a1] += ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER4);
    sine_reads[a1] += ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER5);
    sine_reads[a1] += ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER6);
    sine_reads[a1] += ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER7);
    sine_reads[a1] += ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER8);

    cosine_reads[a1] = ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER1);
    cosine_reads[a1] += ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER2);
    cosine_reads[a1] += ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER3);
    cosine_reads[a1] += ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER4);
    cosine_reads[a1] += ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER5);
    cosine_reads[a1] += ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER6);
    cosine_reads[a1] += ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER7);
    cosine_reads[a1] += ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER8);

    sine_reads[a2] = ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER1);
    sine_reads[a2] += ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER3);
    sine_reads[a2] += ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER5);
    sine_reads[a2] += ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER7);

    sine_reads[a3] = ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER2);
    sine_reads[a3] += ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER4);
    sine_reads[a3] += ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER6);
    sine_reads[a3] += ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER8);

    cosine_reads[a2] = ADC_readResult(ADCDRESULT_BASE, ADC_SOC_NUMBER1);
    cosine_reads[a2] += ADC_readResult(ADCDRESULT_BASE, ADC_SOC_NUMBER3);
    cosine_reads[a2] += ADC_readResult(ADCDRESULT_BASE, ADC_SOC_NUMBER5);
    cosine_reads[a2] += ADC_readResult(ADCDRESULT_BASE, ADC_SOC_NUMBER7);

    cosine_reads[a3] = ADC_readResult(ADCDRESULT_BASE, ADC_SOC_NUMBER2);
    cosine_reads[a3] += ADC_readResult(ADCDRESULT_BASE, ADC_SOC_NUMBER4);
    cosine_reads[a3] += ADC_readResult(ADCDRESULT_BASE, ADC_SOC_NUMBER6);
    cosine_reads[a3] += ADC_readResult(ADCDRESULT_BASE, ADC_SOC_NUMBER8);

    sine_reads[a1] >>= 3; // Divide by 8 for average.
    cosine_reads[a1] >>= 3; // Divide by 8 for average.
    sine_reads[a2] >>= 2; // Divide by 4 for average.
    cosine_reads[a2] >>= 2; // Divide by 4 for average.
    sine_reads[a3] >>= 2; // Divide by 4 for average.
    cosine_reads[a3] >>= 2; // Divide by 4 for average.

    uint16_t const a1_ex = 0 + encoder_gpio;
    uint16_t const a2_ex = 2 + encoder_gpio;
    uint16_t const a3_ex = 4 + encoder_gpio;

    /** Bit manipulations to emulate comparison-less min/max. **/

    /* Axis 1 Sine/Cosine */
    // 0xFFFFFFFF if sine_reads[a1] > sin_max[a1_ex]
    int32_t mask = ((int32_t)sin_max[a1_ex] - sine_reads[a1]) >> 31;
    sin_max[a1_ex] = (mask & sine_reads[a1]) + ((~mask) & sin_max[a1_ex]);

    // 0xFFFFFFFF if sin_min[a1_ex] > sine_reads[a1]
    mask = ((int32_t)sine_reads[a1] - sin_min[a1_ex]) >> 31;
    sin_min[a1_ex] = (mask & sine_reads[a1]) + ((~mask) & sin_min[a1_ex]);

    mask = ((int32_t)cos_max[a1_ex] - cosine_reads[a1]) >> 31;
    cos_max[a1_ex] = (mask & cosine_reads[a1]) + ((~mask) & cos_max[a1_ex]);

    mask = ((int32_t)cosine_reads[a1] - cos_min[a1_ex]) >> 31;
    cos_min[a1_ex] = (mask & cosine_reads[a1]) + ((~mask) & cos_min[a1_ex]);

    /* Axis 2 Sine/Cosine */
    mask = ((int32_t)sin_max[a2_ex] - sine_reads[a2]) >> 31;
    sin_max[a2_ex] = (mask & sine_reads[a2]) + ((~mask) & sin_max[a2_ex]);

    mask = ((int32_t)sine_reads[a2] - sin_min[a2_ex]) >> 31;
    sin_min[a2_ex] = (mask & sine_reads[a2]) + ((~mask) & sin_min[a2_ex]);

    mask = ((int32_t)cos_max[a2_ex] - cosine_reads[a2]) >> 31;
    cos_max[a2_ex] = (mask & cosine_reads[a2]) + ((~mask) & cos_max[a2_ex]);

    mask = ((int32_t)cosine_reads[a2] - cos_min[a2_ex]) >> 31;
    cos_min[a2_ex] = (mask & cosine_reads[a2]) + ((~mask) & cos_min[a2_ex]);

    /* Axis 3 Sine/Cosine */
    mask = ((int32_t)sin_max[a3_ex] - sine_reads[a3]) >> 31;
    sin_max[a3_ex] = (mask & sine_reads[a3]) + ((~mask) & sin_max[a3_ex]);

    mask = ((int32_t)sine_reads[a3] - sin_min[a3_ex]) >> 31;
    sin_min[a3_ex] = (mask & sine_reads[a3]) + ((~mask) & sin_min[a3_ex]);

    mask = ((int32_t)cos_max[a3_ex] - cosine_reads[a3]) >> 31;
    cos_max[a3_ex] = (mask & cosine_reads[a3]) + ((~mask) & cos_max[a3_ex]);

    mask = ((int32_t)cosine_reads[a3] - cos_min[a3_ex]) >> 31;
    cos_min[a3_ex] = (mask & cosine_reads[a3]) + ((~mask) & cos_min[a3_ex]);

    /** With updated min/max values, normalize to 0.0-1.0 for atan2. **/
    sin_amp[a1] = amplitude(sin_max[a1_ex], sin_min[a1_ex]);
    sin_amp[a2] = amplitude(sin_max[a2_ex], sin_min[a2_ex]);
    sin_amp[a3] = amplitude(sin_max[a3_ex], sin_min[a3_ex]);

    cos_amp[a1] = amplitude(cos_max[a1_ex], cos_min[a1_ex]);
    cos_amp[a2] = amplitude(cos_max[a2_ex], cos_min[a2_ex]);
    cos_amp[a3] = amplitude(cos_max[a3_ex], cos_min[a3_ex]);

    sine_n[a1] = normalize(sine_reads[a1] - sin_min[a1_ex], sin_amp[a1]);
    cosine_n[a1] = normalize(cosine_reads[a1] - cos_min[a1_ex], cos_amp[a1]);
    sine_n[a2] = normalize(sine_reads[a2] - sin_min[a2_ex], sin_amp[a2]);
    cosine_n[a2] = normalize(cosine_reads[a2] - cos_min[a2_ex], cos_amp[a2]);
    sine_n[a3] = normalize(sine_reads[a3] - sin_min[a3_ex], sin_amp[a3]);
    cosine_n[a3] = normalize(cosine_reads[a3] - cos_min[a3_ex], cos_amp[a3]);

    encoder_angle[a1_ex] = CLAatan2(sine_n[a1], cosine_n[a1]);
    encoder_angle[a2_ex] = CLAatan2(sine_n[a2], cosine_n[a2]);
    encoder_angle[a3_ex] = CLAatan2(sine_n[a3], cosine_n[a3]);

    // Flip hall encoder mux GPIO.
    encoder_gpio ^= 1;
    GPIO_writePin(99, encoder_gpio);
    GPIO_writePin(103, encoder_gpio);
    GPIO_writePin(107, encoder_gpio);
}

/* Initialize CLA memory. */
__attribute__((interrupt)) void CLA1Task8(void) {
    __mdebugstop();
    encoder_gpio = 0;
    for (uint16_t i = 0; i < 6; ++i) {
        sin_max[i] = encoder_sine_max[i];
        sin_min[i] = encoder_sine_min[i];
        cos_max[i] = encoder_cosine_max[i];
        cos_min[i] = encoder_cosine_min[i];
    }
}

/*
 * device/cla.c
 *
 *  -> In the application, this file's header simply contains the 
 *     `claInitialize` function declaration with no other
 *     declarations/definitions/includes. The "main.c" file calls
 *     this initialization after `Device_init`, `Interrupt_initModule`,
 *     `Interrupt_initVectorTable`, `EINT`/`ERTM`, and GPIO pin
 *     initialization.
 */

#include "device/cla.h"

#include <stdint.h>
#include <memcfg.h>
#include <cla.h>
#include <sysctl.h>

#include "CLA/shared.h"
#include "CLA/tasks.h"


// Below declarations allow access to linker-defined placement variables.
// These variables are needed to copy over CLA code and data to the correct
// places from FLASH to RAM.
extern uint32_t Cla1ProgRunStart, Cla1ProgLoadStart, Cla1ProgLoadSize;
extern uint32_t Cla1ConstRunStart, Cla1ConstLoadStart, Cla1ConstLoadSize;

void claInitialize(void) {
    memcpy((uint32_t*)&Cla1ProgRunStart, (uint32_t*)&Cla1ProgLoadStart, (uint32_t)&Cla1ProgLoadSize);
    memcpy((uint32_t*)&Cla1ConstRunStart, (uint32_t*)&Cla1ConstLoadStart, (uint32_t)&Cla1ConstLoadSize);

    MemCfg_initSections(MEMCFG_SECT_MSGCLA1TOCPU);
    MemCfg_initSections(MEMCFG_SECT_MSGCPUTOCLA1);
    while (!MemCfg_getInitStatus(MEMCFG_SECT_MSGCLA1TOCPU)) {}
    while (!MemCfg_getInitStatus(MEMCFG_SECT_MSGCPUTOCLA1)) {}

    MemCfg_initSections(MEMCFG_SECT_LS4 | MEMCFG_SECT_LS5 | MEMCFG_SECT_LS0 | MEMCFG_SECT_LS1);
    while (!MemCfg_getInitStatus(MEMCFG_SECT_LS4 | MEMCFG_SECT_LS5 | MEMCFG_SECT_LS0 | MEMCFG_SECT_LS1)) {};

    MemCfg_setLSRAMControllerSel(MEMCFG_SECT_LS4, MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
    MemCfg_setLSRAMControllerSel(MEMCFG_SECT_LS5, MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
    MemCfg_setCLAMemType(MEMCFG_SECT_LS4, MEMCFG_CLA_MEM_PROGRAM);
    MemCfg_setCLAMemType(MEMCFG_SECT_LS5, MEMCFG_CLA_MEM_PROGRAM);

    MemCfg_setLSRAMControllerSel(MEMCFG_SECT_LS0, MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
    MemCfg_setLSRAMControllerSel(MEMCFG_SECT_LS1, MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
    MemCfg_setCLAMemType(MEMCFG_SECT_LS0, MEMCFG_CLA_MEM_DATA);
    MemCfg_setCLAMemType(MEMCFG_SECT_LS1, MEMCFG_CLA_MEM_DATA);

    // SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_CLA1);

    CLA_mapTaskVector(CLA1_BASE, CLA_MVECT_1, (uint16_t)&Cla1Task1);
    CLA_mapTaskVector(CLA1_BASE, CLA_MVECT_8, (uint16_t)&Cla1Task8);

    // Default values for ADC peak calibration.
    for (uint16_t i = 0; i < 6; ++i) {
        encoder_sine_max[i] = 0;
        encoder_sine_min[i] = 65535;
        encoder_cosine_max[i] = 0;
        encoder_cosine_min[i] = 65535;
    }

    CLA_enableTasks(CLA1_BASE, CLA_TASKFLAG_1 | CLA_TASKFLAG_8);
    CLA_clearTaskFlags(CLA1_BASE, CLA_TASKFLAG_ALL);

    // Two triggers set so task runs regardless of which axes are enabled.
    CLA_setTriggerSource(CLA_TASK_1, CLA_TRIGGER_ADCA1);
    CLA_setTriggerSource(CLA_TASK_1, CLA_TRIGGER_ADCC1);

    CLA_forceTasks(CLA1_BASE, CLA_TASKFLAG_8);

    //    while (CLA_getTaskRunStatus(CLA1_BASE, CLA_TASK_8)) {}
}

  • In COFF the compiler adds underscores to symbols as part of the translation to assembly. In EABI the compiler does not add the _.

    So in the linker file remove the _ from the symbols:

  • Hi Lori, resolving the COFF v.s. EABI underscores issue has eliminated most of the undefined symbol errors. However, both declared CLA tasks still show up as undefined symbols. I've attempted varying forms of underscore prefixes to the task names in 1. only the header/C files, 2. across both the CLA and header/C files, 3. only in the CLA file, but none have solved the issue. I don't believe the CLA task undefined symbol errors are caused by this particular COFF v.s. EABI issue; is there anything else that you could recommend for me to look into here?

  • Update: Attached a picture of the exact error below.

  • Further information: Upon emitting the linker's section dependence information, I have found that while the .cla file is compiled into a .obj successfully, it does not show up as being linked at all.

    Section .text:decompress:lzss:rts2800_fpu32_eabi.lib<copy_decompress_lzss.c.obj>:
          
        Section size: 48
    
        Defines:
          Symbol Name           Offset  TYPE      Scope   Size
          -----------           ------  ----      -----   ----
          __TI_decompress_lzss  0       function  global  48  
    
        Input references:
          Section                       from symbol  to symbol  at offset
          -------                       -----------  ---------  ---------
          Implicit reference or retain                                   
    
    
    Section .text:decompress:none:rts2800_fpu32_eabi.lib<copy_decompress_none.c.obj>:
          
        Section size: 8
    
        Defines:
          Symbol Name           Offset  TYPE      Scope   Size
          -----------           ------  ----      -----   ----
          __TI_decompress_none  0       function  global  8   
    
        Input references:
          Section                       from symbol  to symbol  at offset
          -------                       -----------  ---------  ---------
          Implicit reference or retain                                   
    
    
    Section codestart:F2837xD_CodeStartBranch.obj:
          
        Section size: 2
    
        Defines:
          Symbol Name  Offset  TYPE      Scope   Size
          -----------  ------  ----      -----   ----
          code_start   0       function  global  0   
    
        Input references:
          Section                       from symbol  to symbol  at offset
          -------                       -----------  ---------  ---------
          Implicit reference or retain                                   
    
    
    Section .text:retain:interrupt.obj:
          
        Section size: 32
    
        Defines:
          Symbol Name                        Offset  TYPE      Scope   Size
          -----------                        ------  ----      -----   ----
          Interrupt_defaultHandler           20      function  global  12  
          Interrupt_nmiHandler               0       function  global  10  
          Interrupt_illegalOperationHandler  10      function  global  10  
    
        Input references:
          Section                       from symbol                to symbol                          at offset
          -------                       -----------                ---------                          ---------
          Implicit reference or retain                                                                         
          .text:interrupt.obj           Interrupt_initVectorTable  Interrupt_defaultHandler           2        
          .text:interrupt.obj           Interrupt_initVectorTable  Interrupt_nmiHandler               16       
          .text:interrupt.obj           Interrupt_initVectorTable  Interrupt_illegalOperationHandler  18       
          .text:ipc.obj                 IPC_unregisterInterrupt    Interrupt_defaultHandler           24       
    
    
    Section .stack:rts2800_fpu32_eabi.lib<boot28.asm.obj>:
          
        Section size: 0
    
        No symbols defined
    
        Input references:
          Section                                       from symbol  to symbol  at offset
          -------                                       -----------  ---------  ---------
          Implicit reference or retain                                                   
          .text:rts2800_fpu32_eabi.lib<boot28.asm.obj>               __stack    1        
    
    
    Section .text:decompress:ZI:__TI_zero_init_nomemset:rts2800_fpu32_eabi.lib<copy_zero_init.c.obj>:
          
        Section size: 13
    
        Defines:
          Symbol Name              Offset  TYPE      Scope   Size
          -----------              ------  ----      -----   ----
          __TI_zero_init_nomemset  0       function  global  13  
    
        Input references:
          Section                       from symbol  to symbol  at offset
          -------                       -----------  ---------  ---------
          Implicit reference or retain                                   
    
    
    Section .text:rts2800_fpu32_eabi.lib<memcpy.c.obj>:
          
        Section size: 29
    
        Defines:
          Symbol Name  Offset  TYPE      Scope   Size
          -----------  ------  ----      -----   ----
          memcpy       0       function  global  29  
    
        Input references:
          Section                                                                   from symbol           to symbol  at offset
          -------                                                                   -----------           ---------  ---------
          .text:decompress:none:rts2800_fpu32_eabi.lib<copy_decompress_none.c.obj>  __TI_decompress_none  memcpy     5        
    
    
    Section .text:F2837xD_CodeStartBranch.obj:
          
        Section size: 8
    
        No symbols defined
    
        Input references:
          Section                                from symbol  to symbol   at offset
          -------                                -----------  ---------   ---------
          codestart:F2837xD_CodeStartBranch.obj               wd_disable  0        
    
    
    Section .text:interrupt.obj:
          
        Section size: 335
    
        Defines:
          Symbol Name                Offset  TYPE      Scope   Size
          -----------                ------  ----      -----   ----
          Interrupt_disable          261     function  global  74  
          Interrupt_initModule       26      function  global  65  
          Interrupt_enable           91      function  global  54  
          Interrupt_initVectorTable  0       function  global  26  
    
        Input references:
          Section                     from symbol              to symbol                  at offset
          -------                     -----------              ---------                  ---------
          .text:retain:interrupt.obj                                                               
          .text:ipc.obj               IPC_unregisterInterrupt  Interrupt_disable          15       
          .text:ipc.obj               IPC_registerInterrupt    Interrupt_enable           187      
          .text:initialize.obj        initialize               Interrupt_initModule       737      
          .text:initialize.obj        initialize               Interrupt_initVectorTable  739      
    
    
    Section .text:ipc.obj:
          
        Section size: 357
    
        Defines:
          Symbol Name               Offset  TYPE      Scope   Size
          -----------               ------  ----      -----   ----
          IPC_unregisterInterrupt   0       function  global  30  
          IPC_sendMessageToQueue    30      function  global  75  
          IPC_sendCommand           105     function  global  59  
          IPC_registerInterrupt     164     function  global  26  
          IPC_initMessageQueue      308     function  global  49  
          IPC_readCommand           257     function  global  51  
          IPC_readMessageFromQueue  190     function  global  67  
    
        Input references:
          Section                     from symbol  to symbol  at offset
          -------                     -----------  ---------  ---------
          .text:retain:interrupt.obj                                   
    
    
    Section .text:rts2800_fpu32_eabi.lib<boot28.asm.obj>:
          
        Section size: 23
    
        Defines:
          Symbol Name  Offset  TYPE      Scope   Size
          -----------  ------  ----      -----   ----
          _c_int00     0       function  global  0   
    
        Input references:
          Section                            from symbol  to symbol  at offset
          -------                            -----------  ---------  ---------
          .text:F2837xD_CodeStartBranch.obj               _c_int00   6        
    
    
    Section .const:IPC_Instance:ipc.obj:
          
        Section size: 68
    
        Defines:
          Symbol Name   Offset  TYPE    Scope   Size
          -----------   ------  ----    -----   ----
          IPC_Instance  0       object  global  136 
    
        Input references:
          Section        from symbol               to symbol     at offset
          -------        -----------               ---------     ---------
          .text:ipc.obj  IPC_unregisterInterrupt   IPC_Instance  3        
          .text:ipc.obj  IPC_sendMessageToQueue    IPC_Instance  76       
          .text:ipc.obj  IPC_sendMessageToQueue    IPC_Instance  89       
          .text:ipc.obj  IPC_sendCommand           IPC_Instance  109      
          .text:ipc.obj  IPC_sendCommand           IPC_Instance  137      
          .text:ipc.obj  IPC_sendCommand           IPC_Instance  150      
          .text:ipc.obj  IPC_registerInterrupt     IPC_Instance  167      
          .text:ipc.obj  IPC_readMessageFromQueue  IPC_Instance  228      
          .text:ipc.obj  IPC_readCommand           IPC_Instance  260      
          .text:ipc.obj  IPC_readCommand           IPC_Instance  288      
          .text:ipc.obj  IPC_initMessageQueue      IPC_Instance  311      
    
    
    Section .text:rts2800_fpu32_eabi.lib<pre_init.c.obj>:
          
        Section size: 2
    
        Defines:
          Symbol Name       Offset  TYPE      Scope   Size
          -----------       ------  ----      -----   ----
          _system_pre_init  0       function  global  2   
    
        Input references:
          Section                                       from symbol  to symbol         at offset
          -------                                       -----------  ---------         ---------
          .text:rts2800_fpu32_eabi.lib<boot28.asm.obj>               _system_pre_init  13       
    
    
    Section .text:rts2800_fpu32_eabi.lib<args_main.c.obj>:
          
        Section size: 12
    
        Defines:
          Symbol Name  Offset  TYPE      Scope   Size
          -----------  ------  ----      -----   ----
          _args_main   0       function  global  12  
    
        Input references:
          Section                                       from symbol  to symbol   at offset
          -------                                       -----------  ---------   ---------
          .text:rts2800_fpu32_eabi.lib<boot28.asm.obj>               _args_main  19       
    
    
    Section .text:rts2800_fpu32_eabi.lib<exit.c.obj>:
          
        Section size: 41
    
        Defines:
          Symbol Name  Offset  TYPE      Scope   Size
          -----------  ------  ----      -----   ----
          C$$EXIT      0       function  global  0   
          abort        0       function  global  2   
          exit         2       function  global  39  
    
        Input references:
          Section                                       from symbol  to symbol  at offset
          -------                                       -----------  ---------  ---------
          .text:rts2800_fpu32_eabi.lib<boot28.asm.obj>               exit       21       
    
    
    Section .text:__TI_auto_init_nobinit_nopinit:rts2800_fpu32_eabi.lib<autoinit.c.obj>:
          
        Section size: 43
    
        Defines:
          Symbol Name                     Offset  TYPE      Scope   Size
          -----------                     ------  ----      -----   ----
          __TI_auto_init_nobinit_nopinit  0       function  global  43  
    
        Input references:
          Section                                       from symbol  to symbol  at offset
          -------                                       -----------  ---------  ---------
          .text:rts2800_fpu32_eabi.lib<boot28.asm.obj>                                   
    
    
    Section MSGRAM_CPU1_TO_CPU2:ipc.obj:
          
        Section size: 136
    
        Defines:
          Symbol Name                 Offset  TYPE    Scope   Size
          -----------                 ------  ----    -----   ----
          IPC_CPU1_To_CPU2_PutBuffer  0       object  global  272 
    
        Input references:
          Section                      from symbol   to symbol                   at offset
          -------                      -----------   ---------                   ---------
          .const:IPC_Instance:ipc.obj  IPC_Instance  IPC_CPU1_To_CPU2_PutBuffer  30       
          .const:IPC_Instance:ipc.obj  IPC_Instance  IPC_CPU1_To_CPU2_PutBuffer  66       
    
    
    Section MSGRAM_CPU2_TO_CPU1:ipc.obj:
          
        Section size: 136
    
        Defines:
          Symbol Name                 Offset  TYPE    Scope   Size
          -----------                 ------  ----    -----   ----
          IPC_CPU1_To_CPU2_GetBuffer  0       object  global  272 
    
        Input references:
          Section                      from symbol   to symbol                   at offset
          -------                      -----------   ---------                   ---------
          .const:IPC_Instance:ipc.obj  IPC_Instance  IPC_CPU1_To_CPU2_GetBuffer  32       
          .const:IPC_Instance:ipc.obj  IPC_Instance  IPC_CPU1_To_CPU2_GetBuffer  64       
    
    
    Section .text:main.obj:
          
        Section size: 5
    
        Defines:
          Symbol Name  Offset  TYPE      Scope   Size
          -----------  ------  ----      -----   ----
          main         0       function  global  5   
    
        Input references:
          Section                                        from symbol  to symbol  at offset
          -------                                        -----------  ---------  ---------
          .text:rts2800_fpu32_eabi.lib<args_main.c.obj>  _args_main   main       9        
    
    
    Section .data:rts2800_fpu32_eabi.lib<exit.c.obj>:
          
        Section size: 6
    
        Defines:
          Symbol Name                      Offset  TYPE    Scope   Size
          -----------                      ------  ----    -----   ----
          __TI_dtors_ptr                   4       object  global  4   
          __TI_cleanup_ptr                 2       object  global  4   
          __TI_enable_exit_profile_output  0       object  global  2   
    
        Input references:
          Section                                   from symbol  to symbol                        at offset
          -------                                   -----------  ---------                        ---------
          .text:rts2800_fpu32_eabi.lib<exit.c.obj>  exit         __TI_enable_exit_profile_output  4        
          .text:rts2800_fpu32_eabi.lib<exit.c.obj>  exit         __TI_enable_exit_profile_output  6        
          .text:rts2800_fpu32_eabi.lib<exit.c.obj>  exit         __TI_dtors_ptr                   25       
          .text:rts2800_fpu32_eabi.lib<exit.c.obj>  exit         __TI_dtors_ptr                   26       
          .text:rts2800_fpu32_eabi.lib<exit.c.obj>  exit         __TI_cleanup_ptr                 32       
          .text:rts2800_fpu32_eabi.lib<exit.c.obj>  exit         __TI_cleanup_ptr                 33       
    
    
    Section .data:_lock:rts2800_fpu32_eabi.lib<_lock.c.obj>:
          
        Section size: 2
    
        Defines:
          Symbol Name  Offset  TYPE    Scope   Size
          -----------  ------  ----    -----   ----
          _lock        0       object  global  4   
    
        Input references:
          Section                                    from symbol     to symbol  at offset
          -------                                    -----------     ---------  ---------
          .text:rts2800_fpu32_eabi.lib<exit.c.obj>   exit            _lock      21       
          .text:rts2800_fpu32_eabi.lib<exit.c.obj>   exit            _lock      22       
          .text:rts2800_fpu32_eabi.lib<_lock.c.obj>  _register_lock  _lock      5        
          .text:rts2800_fpu32_eabi.lib<_lock.c.obj>  _register_lock  _lock      6        
    
    
    Section .text:rts2800_fpu32_eabi.lib<startup.c.obj>:
          
        Section size: 1
    
        Defines:
          Symbol Name         Offset  TYPE      Scope   Size
          -----------         ------  ----      -----   ----
          _system_post_cinit  0       function  global  1   
    
        Input references:
          Section                                                                      from symbol                     to symbol           at offset
          -------                                                                      -----------                     ---------           ---------
          .text:__TI_auto_init_nobinit_nopinit:rts2800_fpu32_eabi.lib<autoinit.c.obj>  __TI_auto_init_nobinit_nopinit  _system_post_cinit  37       
    
    
    Section .bss:main.obj:
          
        Section size: 118
    
        Defines:
          Symbol Name  Offset  TYPE    Scope   Size
          -----------  ------  ----    -----   ----
          model        0       object  global  236 
    
        Input references:
          Section         from symbol  to symbol  at offset
          -------         -----------  ---------  ---------
          .text:main.obj  main         model      0        
    
    
    Section .text:initialize.obj:
          
        Section size: 785
    
        Defines:
          Symbol Name     Offset  TYPE      Scope   Size
          -----------     ------  ----      -----   ----
          initializeGpio  0       function  global  659 
          initialize      659     function  global  126 
    
        Input references:
          Section         from symbol  to symbol   at offset
          -------         -----------  ---------   ---------
          .text:main.obj  main         initialize  2        
    
    
    Section .text:rts2800_fpu32_eabi.lib<_lock.c.obj>:
          
        Section size: 9
    
        Defines:
          Symbol Name       Offset  TYPE      Scope   Size
          -----------       ------  ----      -----   ----
          _nop              8       function  global  1   
          _register_lock    4       function  global  4   
          _register_unlock  0       function  global  4   
    
        Input references:
          Section                                            from symbol  to symbol  at offset
          -------                                            -----------  ---------  ---------
          .data:_lock:rts2800_fpu32_eabi.lib<_lock.c.obj>    _lock        _nop       0        
          .data:_unlock:rts2800_fpu32_eabi.lib<_lock.c.obj>  _unlock      _nop       0        
    
    
    Section .text:device.obj:
          
        Section size: 825
    
        Defines:
          Symbol Name                                Offset  TYPE      Scope   Size
          -----------                                ------  ----      -----   ----
          Device_enableAllPeripherals                165     function  global  222 
          Device_initGPIO                            78      function  global  36  
          Example_setResultFail                      8       function  global  5   
          Device_bootCPU2                            445     function  global  380 
          Device_init                                387     function  global  58  
          Device_enableUnbondedGPIOPullups           62      function  global  16  
          __error__                                  0       function  global  3   
          Example_setResultPass                      3       function  global  5   
          Device_configureTMXAnalogTrim              114     function  global  51  
          Device_enableUnbondedGPIOPullupsFor176Pin  14      function  global  19  
          Example_done                               13      function  global  1   
          Device_enableUnbondedGPIOPullupsFor100Pin  33      function  global  29  
    
        Input references:
          Section               from symbol     to symbol        at offset
          -------               -----------     ---------        ---------
          .text:initialize.obj  initializeGpio  Device_initGPIO  2        
          .text:initialize.obj  initialize      Device_init      667      
    
    
    Section .text:gpio.obj:
          
        Section size: 395
    
        Defines:
          Symbol Name                  Offset  TYPE      Scope   Size
          -----------                  ------  ----      -----   ----
          GPIO_setQualificationMode    27      function  global  34  
          GPIO_getPadConfig            334     function  global  43  
          GPIO_setPadConfig            109     function  global  63  
          GPIO_setInterruptPin         172     function  global  32  
          GPIO_setAnalogMode           269     function  global  32  
          GPIO_setDirectionMode        204     function  global  31  
          GPIO_setQualificationPeriod  0       function  global  27  
          GPIO_getQualificationMode    301     function  global  33  
          GPIO_setPinConfig            61      function  global  48  
          GPIO_getDirectionMode        377     function  global  18  
          GPIO_setControllerCore       235     function  global  34  
    
        Input references:
          Section                 from symbol            to symbol                    at offset
          -------                 -----------            ---------                    ---------
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            7        
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            11       
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        15       
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    19       
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  24       
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            29       
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            33       
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        37       
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    41       
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  46       
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            51       
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            57       
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        61       
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            66       
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            72       
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        76       
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            81       
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            87       
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        91       
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            96       
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            102      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        106      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            111      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            117      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        121      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            126      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            132      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        136      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            141      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            147      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        151      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            156      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            162      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        166      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            171      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            177      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        181      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            186      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            192      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        196      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            201      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            207      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        211      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            216      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            222      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        226      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            231      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            237      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        241      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            246      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            252      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        256      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            261      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            267      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        271      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            276      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            281      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        285      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            290      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            296      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        300      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            305      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            311      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        315      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            320      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            324      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        328      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    332      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  337      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            342      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            347      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        351      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    355      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  360      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            365      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            370      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        374      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    378      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  383      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            388      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            393      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        397      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    401      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  406      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            411      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            415      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        419      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            429      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            433      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        437      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            445      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            449      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        453      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            461      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            465      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        469      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    473      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  478      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            483      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            487      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        491      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    495      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  500      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            505      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            509      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        513      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    517      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  522      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            527      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            531      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        535      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    539      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  544      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            549      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            555      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        559      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            568      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            574      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        578      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    582      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationPeriod  587      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            592      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            597      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        601      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            606      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            610      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        614      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            623      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            628      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        632      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    636      
          .text:initialize.obj    initializeGpio         GPIO_setPadConfig            641      
          .text:initialize.obj    initializeGpio         GPIO_setPinConfig            646      
          .text:initialize.obj    initializeGpio         GPIO_setDirectionMode        650      
          .text:initialize.obj    initializeGpio         GPIO_setQualificationMode    654      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       521      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            526      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    530      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       534      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            539      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    543      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        585      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    589      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            593      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       597      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        601      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    605      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            610      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       614      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        635      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    639      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            644      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       648      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        652      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    656      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            661      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       665      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        669      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    673      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            678      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       682      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        686      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    690      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            695      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       699      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        723      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    727      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            732      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       736      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        740      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    744      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            749      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       753      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        759      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    763      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       767      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        775      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    779      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            783      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       787      
          .text:device.obj        Device_bootCPU2        GPIO_setDirectionMode        791      
          .text:device.obj        Device_bootCPU2        GPIO_setQualificationMode    795      
          .text:device.obj        Device_bootCPU2        GPIO_setPinConfig            799      
          .text:device.obj        Device_bootCPU2        GPIO_setControllerCore       803      
          .text:led.obj           ledInitialize          GPIO_setPadConfig            32       
          .text:led.obj           ledInitialize          GPIO_setPinConfig            36       
          .text:led.obj           ledInitialize          GPIO_setDirectionMode        40       
          .text:led.obj           ledInitialize          GPIO_setPadConfig            50       
          .text:led.obj           ledInitialize          GPIO_setPinConfig            54       
          .text:led.obj           ledInitialize          GPIO_setDirectionMode        58       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            53       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            58       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        62       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationMode    66       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationPeriod  71       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            76       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            81       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        85       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationMode    89       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationPeriod  94       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            99       
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            104      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        108      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationMode    112      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationPeriod  117      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            125      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            129      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        133      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationMode    137      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationPeriod  142      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            147      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            153      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        157      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationMode    161      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationPeriod  166      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            174      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            178      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        182      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationMode    186      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationPeriod  191      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            196      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            200      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        204      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationMode    208      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationPeriod  213      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            218      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            222      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        226      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationMode    230      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setQualificationPeriod  235      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            243      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            247      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        251      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setControllerCore       259      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            267      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            271      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        275      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setControllerCore       283      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPadConfig            291      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setPinConfig            295      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setDirectionMode        299      
          .text:hall_encoder.obj  hallEncoderInitialize  GPIO_setControllerCore       308      
    
    
    Section .text:led.obj:
          
        Section size: 75
    
        Defines:
          Symbol Name    Offset  TYPE      Scope   Size
          -----------    ------  ----      -----   ----
          ledOrange      9       function  global  9   
          ledInitialize  27      function  global  39  
          ledGreen       66      function  global  9   
          ledOff         18      function  global  9   
          ledRed         0       function  global  9   
    
        Input references:
          Section               from symbol  to symbol      at offset
          -------               -----------  ---------      ---------
          .text:initialize.obj  initialize   ledInitialize  730      
          .text:initialize.obj  initialize   ledGreen       768      
    
    
    Section .text:hall_encoder.obj:
          
        Section size: 517
    
        Defines:
          Symbol Name                 Offset  TYPE      Scope   Size
          -----------                 ------  ----      -----   ----
          hallEncoderAxis3MuxFront    407     function  global  6   
          hallEncoderAxis1MuxBack     486     function  global  5   
          hallEncoderAxis2FrontAlarm  455     function  global  13  
          hallEncoderAxis3FrontAlarm  419     function  global  13  
          hallEncoderAxis1FrontAlarm  491     function  global  13  
          hallEncoderAxis3BackAlarm   432     function  global  13  
          hallEncoderAxis1BackAlarm   504     function  global  13  
          hallEncoderInitialize       44      function  global  269 
          hallEncoderMuxBack          22      function  global  22  
          hallEncoderAxis2MuxFront    445     function  global  5   
          hallEncoderBackAlarm        360     function  global  47  
          hallEncoderAxis2BackAlarm   468     function  global  13  
          hallEncoderAxis3MuxBack     413     function  global  6   
          hallEncoderMuxFront         0       function  global  22  
          hallEncoderAxis2MuxBack     450     function  global  5   
          hallEncoderAxis1MuxFront    481     function  global  5   
          hallEncoderFrontAlarm       313     function  global  47  
    
        Input references:
          Section               from symbol  to symbol              at offset
          -------               -----------  ---------              ---------
          .text:initialize.obj  initialize   hallEncoderInitialize  735      
    
    
    Section .text:./src/device/cla.obj:
          
        Section size: 141
    
        Defines:
          Symbol Name    Offset  TYPE      Scope   Size
          -----------    ------  ----      -----   ----
          claInitialize  0       function  global  141 
    
        Input references:
          Section               from symbol  to symbol      at offset
          -------               -----------  ---------      ---------
          .text:initialize.obj  initialize   claInitialize  744      
    
    
    Section .text:./src/device/adc.obj:
          
        Section size: 359
    
        Defines:
          Symbol Name    Offset  TYPE      Scope   Size
          -----------    ------  ----      -----   ----
          adcInitialize  0       function  global  116 
          adcEnable      116     function  global  67  
          adcConfigure   183     function  global  176 
    
        Input references:
          Section               from symbol  to symbol      at offset
          -------               -----------  ---------      ---------
          .text:initialize.obj  initialize   adcInitialize  749      
          .text:initialize.obj  initialize   adcConfigure   755      
          .text:initialize.obj  initialize   adcEnable      764      
    
    
    Section .text:./src/device/epwm.obj:
          
        Section size: 96
    
        Defines:
          Symbol Name     Offset  TYPE      Scope   Size
          -----------     ------  ----      -----   ----
          epwmInitialize  0       function  global  77  
          epwmEnable      77      function  global  19  
    
        Input references:
          Section               from symbol  to symbol       at offset
          -------               -----------  ---------       ---------
          .text:initialize.obj  initialize   epwmInitialize  757      
          .text:initialize.obj  initialize   epwmEnable      766      
    
    
    Section .data:_unlock:rts2800_fpu32_eabi.lib<_lock.c.obj>:
          
        Section size: 2
    
        Defines:
          Symbol Name  Offset  TYPE    Scope   Size
          -----------  ------  ----    -----   ----
          _unlock      0       object  global  4   
    
        Input references:
          Section                                    from symbol       to symbol  at offset
          -------                                    -----------       ---------  ---------
          .text:rts2800_fpu32_eabi.lib<_lock.c.obj>  _register_unlock  _unlock    1        
          .text:rts2800_fpu32_eabi.lib<_lock.c.obj>  _register_unlock  _unlock    2        
    
    
    Section .data:device.obj:
          
        Section size: 6
    
        Defines:
          Symbol Name        Offset  TYPE    Scope   Size
          -----------        ------  ----    -----   ----
          Example_Fail       4       object  global  4   
          Example_Result     0       object  global  4   
          Example_PassCount  2       object  global  4   
    
        Input references:
          Section           from symbol            to symbol       at offset
          -------           -----------            ---------       ---------
          .text:device.obj  Example_setResultPass  Example_Result  5        
          .text:device.obj  Example_setResultPass  Example_Result  6        
          .text:device.obj  Example_setResultFail  Example_Result  10       
          .text:device.obj  Example_setResultFail  Example_Result  11       
          .text:device.obj  Device_init            Example_Result  441      
          .text:device.obj  Device_init            Example_Result  443      
    
    
    Section .text:sysctl.obj:
          
        Section size: 1293
    
        Defines:
          Symbol Name                   Offset  TYPE      Scope   Size
          -----------                   ------  ----      -----   ----
          SysCtl_getAuxClock            1223    function  global  70  
          SysCtl_getDeviceParametric    1148    function  global  75  
          SysCtl_selectXTAL             15      function  global  173 
          SysCtl_selectOscSource        188     function  global  49  
          SysCtl_getLowSpeedClock       1112    function  global  36  
          SysCtl_setClock               237     function  global  477 
          SysCtl_getClock               1027    function  global  85  
          SysCtl_selectOscSourceAuxPLL  714     function  global  42  
          SysCtl_setAuxClock            756     function  global  271 
    
        Input references:
          Section           from symbol  to symbol                   at offset
          -------           -----------  ---------                   ---------
          .text:device.obj  Device_init  SysCtl_getDeviceParametric  395      
          .text:device.obj  Device_init  SysCtl_setClock             408      
    
    
    Section .text:memcfg.obj:
          
        Section size: 654
    
        Defines:
          Symbol Name                   Offset  TYPE      Scope   Size
          -----------                   ------  ----      -----   ----
          MemCfg_initSections           383     function  global  81  
          MemCfg_setGSRAMControllerSel  295     function  global  26  
          MemCfg_setLSRAMControllerSel  260     function  global  35  
          MemCfg_getUncorrErrorAddress  488     function  global  14  
          MemCfg_setTestMode            75      function  global  94  
          MemCfg_setProtection          169     function  global  91  
          MemCfg_getCorrErrorAddress    588     function  global  4   
          MemCfg_lockConfig             321     function  global  62  
          MemCfg_getInitStatus          502     function  global  86  
          MemCfg_unlockConfig           0       function  global  75  
          MemCfg_commitConfig           592     function  global  62  
          MemCfg_getViolationAddress    464     function  global  24  
    
        Input references:
          Section                     from symbol    to symbol                     at offset
          -------                     -----------    ---------                     ---------
          .text:./src/device/cla.obj  claInitialize  MemCfg_initSections           3        
          .text:./src/device/cla.obj  claInitialize  MemCfg_getInitStatus          8        
          .text:./src/device/cla.obj  claInitialize  MemCfg_initSections           15       
          .text:./src/device/cla.obj  claInitialize  MemCfg_getInitStatus          20       
          .text:./src/device/cla.obj  claInitialize  MemCfg_initSections           27       
          .text:./src/device/cla.obj  claInitialize  MemCfg_getInitStatus          32       
          .text:./src/device/cla.obj  claInitialize  MemCfg_setLSRAMControllerSel  40       
          .text:./src/device/cla.obj  claInitialize  MemCfg_setLSRAMControllerSel  46       
          .text:./src/device/cla.obj  claInitialize  MemCfg_setLSRAMControllerSel  64       
          .text:./src/device/cla.obj  claInitialize  MemCfg_setLSRAMControllerSel  70       
    
    
    Section CpuToCla1MsgRAM:shared.obj:
          
        Section size: 24
    
        Defines:
          Symbol Name         Offset  TYPE    Scope   Size
          -----------         ------  ----    -----   ----
          encoder_sine_max    0       object  global  12  
          encoder_sine_min    6       object  global  12  
          encoder_cosine_max  12      object  global  12  
          encoder_cosine_min  18      object  global  12  
    
        Input references:
          Section                     from symbol    to symbol           at offset
          -------                     -----------    ---------           ---------
          .text:./src/device/cla.obj  claInitialize  encoder_sine_max    85       
          .text:./src/device/cla.obj  claInitialize  encoder_sine_min    87       
          .text:./src/device/cla.obj  claInitialize  encoder_cosine_max  89       
          .text:./src/device/cla.obj  claInitialize  encoder_cosine_min  91       
    
    
    Section .text:./lib/driverlib/cla.obj:
          
        Section size: 28
    
        Defines:
          Symbol Name           Offset  TYPE      Scope   Size
          -----------           ------  ----      -----   ----
          CLA_setTriggerSource  0       function  global  28  
    
        Input references:
          Section                     from symbol    to symbol             at offset
          -------                     -----------    ---------             ---------
          .text:./src/device/cla.obj  claInitialize  CLA_setTriggerSource  127      
          .text:./src/device/cla.obj  claInitialize  CLA_setTriggerSource  131      
    
    
    Section .text:./lib/driverlib/adc.obj:
          
        Section size: 217
    
        Defines:
          Symbol Name           Offset  TYPE      Scope   Size
          -----------           ------  ----      -----   ----
          ADC_setOffsetTrim     40      function  global  65  
          ADC_setMode           200     function  global  17  
          ADC_setINLTrim        105     function  global  95  
          ADC_setPPBTripLimits  0       function  global  40  
    
        Input references:
          Section                     from symbol    to symbol    at offset
          -------                     -----------    ---------    ---------
          .text:./src/device/adc.obj  adcInitialize  ADC_setMode  18       
          .text:./src/device/adc.obj  adcInitialize  ADC_setMode  43       
          .text:./src/device/adc.obj  adcInitialize  ADC_setMode  75       
          .text:./src/device/adc.obj  adcInitialize  ADC_setMode  100      
    
    
    Section .TI.ramfunc:sysctl.obj:
          
        Section size: 4
    
        Defines:
          Symbol Name   Offset  TYPE      Scope   Size
          -----------   ------  ----      -----   ----
          SysCtl_delay  0       function  global  0   
    
        Input references:
          Section                     from symbol         to symbol     at offset
          -------                     -----------         ---------     ---------
          .text:./src/device/adc.obj  adcEnable           SysCtl_delay  180      
          .text:sysctl.obj                                SysCtl_delay  2        
          .text:sysctl.obj            SysCtl_setClock     SysCtl_delay  263      
          .text:sysctl.obj            SysCtl_setClock     SysCtl_delay  369      
          .text:sysctl.obj            SysCtl_setClock     SysCtl_delay  696      
          .text:sysctl.obj            SysCtl_setAuxClock  SysCtl_delay  771      
          .text:sysctl.obj            SysCtl_setAuxClock  SysCtl_delay  861      
          .text:sysctl.obj            SysCtl_setAuxClock  SysCtl_delay  882      
          .text:sysctl.obj            SysCtl_setAuxClock  SysCtl_delay  959      
          .text:sysctl.obj            SysCtl_setAuxClock  SysCtl_delay  970      
          .text:sysctl.obj            SysCtl_setAuxClock  SysCtl_delay  977      
          .text:sysctl.obj            SysCtl_setAuxClock  SysCtl_delay  996      
    
    
    

  • Final update; discovered that the capitalization of the CLA task function names in the .cla file was mistakenly different from that of the header... correcting the capitalization fixed the issue.

  • Great! I'm glad you found the issue. Thank you for the feedback.