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.

TMS320F28020: Moving Target's Development Code to Standalone Operation

Part Number: TMS320F28020
Other Parts Discussed in Thread: C2000WARE, TMS320F28069

Hello C2000 Experts,

Project code is nearing alpha release and needs to run standalone.  So far, it's been running with the benefit of an emulator.

The project ran out of RAM space early on, and so the linker command file was modified to run from flash.  At this point, the code is running nicely from flash when it's invoked from CCS (v10.4, TI compiler v21.6.0.LTS)  via the emulator (XDS100v3).

The code doesn't run without the emulator.

Boot mode 3 is has been configured by keeping GPIO34 & 37 high while /TRST is kept low.  OTP hasn't been changed.

The linker command file is as follows:

MEMORY
{
PAGE 0:    /* Program Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */

   RAMM0       : origin = 0x000050, length = 0x000570
   PRAML0      : origin = 0x008000, length = 0x000300     /* on-chip RAM block L0 */
   OTP         : origin = 0x3D7800, length = 0x000400     /* on-chip OTP */
   CSM_RSVD    : origin = 0x3F7F80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
   BEGIN       : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
   CSM_PWL_P0  : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASH.  CSM password locations in FLASHA */
   FLASH0      : origin = 0x3F4000, length = 0x002000     /* on-chp FLASH */
//	FLASH1      : origin = 0x3F6000, length = 0x000500     /* on-chip FLASH */
	FLASH2      : origin = 0x3F6000, length = 0x001000     /* on-chip FLASH */
   FLASH3      : origin = 0x3F7000, length = 0x000f80     /* on-chip FLASH */

   IQTABLES    : origin = 0x3FE000, length = 0x000B50     /* IQ Math Tables in Boot ROM */
   IQTABLES2   : origin = 0x3FEB50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
   IQTABLES3   : origin = 0x3FEBDC, length = 0x0000AA	  /* IQ Math Tables in Boot ROM */

   ROM         : origin = 0x3FF27C, length = 0x000D44     /* Boot ROM */
   RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM  */
   VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM  */

PAGE 1 :   /* Data Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
           /* Registers remain on PAGE1                                                  */

   BOOT_RSVD   : origin = 0x000000, length = 0x000050     /* Part of M0, BOOT rom will use this for stack */
   RAMM1       : origin = 0x000600, length = 0x000200     /* on-chip RAM block M1 */
   DRAML0      : origin = 0x008300, length = 0x000100     /* on-chip RAM block L0 */

}

/* Allocate sections to memory blocks.
   Note:
         codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
                   execution when booting to flash
         ramfuncs  user defined section to store functions that will be copied from Flash into RAM
*/

SECTIONS
{

   /* Allocate program areas: */
   .cinit              : > FLASH0 | FLASH1 | FLASH2      PAGE = 0
   .pinit              : > FLASH0 | FLASH1 | FLASH2     PAGE = 0
   .text               : > FLASH0,      PAGE = 0
   codestart           : > BEGIN       PAGE = 0

   ramfuncs            : LOAD = FLASH0,
                         RUN = RAMM0 | PRAML0,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
						 		 LOAD_SIZE(_RamfuncsLoadSize),
                         PAGE = 0   

   csmpasswds          : > CSM_PWL_P0  PAGE = 0
   csm_rsvd            : > CSM_RSVD    PAGE = 0

   /* Allocate uninitalized data sections: */
   .stack        		  : > RAMM1,      PAGE = 1
   .ebss               : > DRAML0 | RAMM1,      PAGE = 1
   .esysmem            : > DRAML0 | RAMM1,      PAGE = 1
   .cio                : > DRAML0 | RAMM1,      PAGE = 1

   /* Initalized sections go in Flash */
   /* For SDFlash to program these, they must be allocated to page 0 */
   .econst             : > FLASH0 | FLASH1 | FLASH2      PAGE = 0
   .switch             : > FLASH0 | FLASH1 | FLASH2      PAGE = 0

   /* Allocate IQ math areas: */
   IQmath              : > PRAML0      PAGE = 0            /* Math Code */
   IQmathTables        : > IQTABLES,   PAGE = 0, TYPE = NOLOAD

   /* .reset is a standard section used by the compiler.  It contains the */
   /* the address of the start of _c_int00 for C Code.   /*
   /* When using the boot ROM this section and the CPU vector */
   /* table is not needed.  Thus the default type is set here to  */
   /* DSECT  */
   .reset              : > RESET,      PAGE = 0, TYPE = DSECT
   vectors             : > VECTORS     PAGE = 0, TYPE = DSECT

}

Per TI C2000 MCU 1-Day Workshop, I note the following:

F2802x_CodeStartBranch.asm   has been added to the project.  With CCS/emulator, after programming device, and resetting the device, the PC is at 0x3ff7bf.  Then when the EMU_BOOT_FLASH script is run, and I single-step (a bunch of times) to codestartbranch in disassembly window, then I can see that _c_int00 is the LB location:

And one more single-step takes me to the start of the program:

If I then select Go Main under the Run menu, the PC runs up to main and halts.  Doesn't this indicate that the flash has been programmed properly, and that the boot-loader is properly configured to jump to flash and everything's pretty much ready to go?  From here I can hit F8 and the program runs normally.

When I unplug the emulator and cycle target power, the program doesn't run.

Question #1:
What are the steps to have the code run on the target system without the emulator?

By searching the forum, there's no lack of information.  Just the opposite, it's overwhelming. 

Question #2:
Can anyone point me to a concise document explaining this migration from emulator-run code to standalone?

Thanks,
robin

  • Hi Robin - I am looking into your post and will get back to you by end of Wednesday.

  • Robin,

    For this device I would suggest this FAQ to help debug the issue: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/757590/faq-f05-flash-how-can-i-debug-code-that-does-not-run-standalone-without-code-composer-studio-attached

    I'm not spotting anything in the .cmd file that looks wrong.  Please take a look at the FAQ and let me know if you discover anything that may be a clue.

    Best Regards

    Lori

  • Hi Lori,

    Thanks for the info.

    Referring to the FAQ response you sent:

    1. Boot to flash is confirmed (as can be seen in my original post).

    2. This is an area where I'm having difficulty.  I don't think I've made any mistakes in the linker command file, as far as where sections are allocated.  You didn't see anything wrong there either.

    However, this step refers to SPRA958, section 4.1, where it says vectors must be " ... copied to the PIEVECT RAM as part of the device initialization procedure ... "  My code is using driverlib, not bitfield.

    I haven't done that.  What are the minimum requirements for that to be done?

    My project already includes "pie.h", and a PIE_Handle of myPie has been declared.

    I've made calls to:

    1. PIE_init()
    2. PIE_disable()
    3. PIE_disableAllInts()

    It seems like I should have vector addresses in flash, assign them a non-volatile memory section, and then memcpy() that section to RAM.

    Does that sound right?  Can you give me some steps to do that?

    Here are excerpts from my code that may provide some clues:

    //
    // Included Files
    //
    #include "iobase.h"
    #include "system.h"
    
    #include "DSP28x_Project.h"     // Device Headerfile and Examples Include File
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <file.h>
    #include "IQmathLib.h"
    
    #include "common/include/adc.h"
    
    //#include "common/include/clk.h"       //rdv Modified LOSPCP setting function due to TI code error
    #include "clk.h"
    
    #include "common/include/flash.h"
    #include "common/include/gpio.h"
    #include "common/include/pie.h"
    #include "common/include/pll.h"
    #include "common/include/pwm.h"
    #include "common/include/sci.h"
    #include "common/include/wdog.h"
    
    #include "common/include/i2c.h"
    #include <F2802x_Device.h>
    
    //
    // Globals
    //
    
    ADC_Handle      myAdc;
    CLK_Handle      myClk;
    FLASH_Handle    myFlash;
    GPIO_Handle     myGpio;
    PIE_Handle      myPie;
    SCI_Handle      mySci;
    PWM_Handle      myPwm;
    
    
    //
    // Function Prototypes
    //
    void scia_init(void);
    void gpio_pin_init(void);
    void I2C_init_CTE(void);    // CTE function, not TI
    void sciMasterTransmit(const char* str);
    extern uint16_t i2cMasterTransmit(uint8_t id, uint8_t slave_addr, uint8_t* p_data, uint8_t len);
    __interrupt void adc_isr(void);
    
    //
    // Main
    //
    void main(void)
    {
        CPU_Handle  myCpu;
        PLL_Handle  myPll;
        WDOG_Handle myWDog;
    
        //
        // Initialize all the handles needed for this application
        //
        myAdc   = ADC_init((void *)ADC_BASE_ADDR, sizeof(ADC_Obj));
        myClk   = CLK_init((void *)CLK_BASE_ADDR, sizeof(CLK_Obj));
        myCpu   = CPU_init((void *)NULL, sizeof(CPU_Obj));
        myFlash = FLASH_init((void *)FLASH_BASE_ADDR, sizeof(FLASH_Obj));
        myGpio  = GPIO_init((void *)GPIO_BASE_ADDR, sizeof(GPIO_Obj));
        myPie   = PIE_init((void *)PIE_BASE_ADDR, sizeof(PIE_Obj));
        myPll   = PLL_init((void *)PLL_BASE_ADDR, sizeof(PLL_Obj));
        mySci   = SCI_init((void *)SCIA_BASE_ADDR, sizeof(SCI_Obj));
        myPwm   = PWM_init((void *)PWM_ePWM1_BASE_ADDR, sizeof(PWM_Obj));
        myWDog  = WDOG_init((void *)WDOG_BASE_ADDR, sizeof(WDOG_Obj));
    
        //
        // Perform basic system initialization
        //
        WDOG_disable(myWDog);
        CLK_enableAdcClock(myClk);
        CLK_enableI2cClock(myClk);
    
        (*Device_cal)();
    
        //
        // Select the internal oscillator 1 as the clock source
        //
        CLK_setOscSrc(myClk, CLK_OscSrc_Internal);  // 10MHz internal clock frequency
    
        //
        // Setup the PLL for x8 /2 which will yield 40Mhz = 10Mhz * 8 / 2
        //
        PLL_setup(myPll, PLL_Multiplier_8, PLL_DivideSelect_ClkIn_by_2);
    
        //
        // Setup the clock out prescaler to check SYSCLK frequency at XCLKOUT
        //
        CLK_setClkOutPreScaler(myClk, CLK_ClkOutPreScaler_SysClkOut_by_1);  // Div by 1 = SYSCLKOUT
    
        //
        // Setup the LOSPCP to produce 40MHz LSPCLK
        //
        CLK_setLowSpdPreScaler(myClk, CLK_LowSpdPreScaler_SysClkOut_by_1);
    
        //
        // Disable the PIE and all interrupts
        //
        PIE_disable(myPie);
        PIE_disableAllInts(myPie);
        CPU_disableGlobalInts(myCpu);
        CPU_clearIntFlags(myCpu);
    
    //TODO:  Enable running from flash
        //
        // If running from flash, copy RAM only functions to RAM
        //
    #ifdef _FLASH
        memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
    #endif
    

    Thanks,
    robin

  • Robin,

    There is an example you can follow in https://www.ti.com/tool/C2000WARE in the following locations:

    C:\ti\c2000\C2000Ware<version>\device_support\f2802x\examples\drivers\flash_f2802x

    or

    C:\ti\c2000\C2000Ware_4_01_00_00\device_support\f2802x\examples\structs\flash_f2802x

    One caution on using the drivers.  This device is quite old and newer devices have a different driverlib that aligned with another TI MCU.  Please keep this in mind for future projects.  We still do use the bit-field structs in addition to the newer driverlib format. 

    Regards

    Lori

  • Hi Lori,

    Thanks again for your valuable help.

    I've gone through the drivers example and found a couple of additions that seemed relevant, but it didn't help.

    Going back to the FAQ checklist, here are my findings:

    1. GPIO34 & GPIO37 both go high and stay high at power up.  /TRST is low and stays low.

    2. The linker cmd file and map file appears to assign the code in expected sections:

    MEMORY
    {
    PAGE 0:    /* Program Memory */
               /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
    
       RAMM0       : origin = 0x000050, length = 0x000570
       PRAML0      : origin = 0x008000, length = 0x000300     /* on-chip RAM block L0 */
       OTP         : origin = 0x3D7800, length = 0x000400     /* on-chip OTP */
       CSM_RSVD    : origin = 0x3F7F80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
       BEGIN       : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
       CSM_PWL_P0  : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASH.  CSM password locations in FLASHA */
       FLASH0      : origin = 0x3F4000, length = 0x002000     /* on-chp FLASH */
    //	FLASH1      : origin = 0x3F5000, length = 0x001000     /* on-chip FLASH */
    	FLASH2      : origin = 0x3F6000, length = 0x001000     /* on-chip FLASH */
       FLASH3      : origin = 0x3F7000, length = 0x000f80     /* on-chip FLASH */
    
       IQTABLES    : origin = 0x3FE000, length = 0x000B50     /* IQ Math Tables in Boot ROM */
       IQTABLES2   : origin = 0x3FEB50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
       IQTABLES3   : origin = 0x3FEBDC, length = 0x0000AA	  /* IQ Math Tables in Boot ROM */
    
       ROM         : origin = 0x3FF27C, length = 0x000D44     /* Boot ROM */
       RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM  */
       VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM  */
    
    PAGE 1 :   /* Data Memory */
               /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
               /* Registers remain on PAGE1                                                  */
    
       BOOT_RSVD   : origin = 0x000000, length = 0x000050     /* Part of M0, BOOT rom will use this for stack */
       RAMM1       : origin = 0x000600, length = 0x000200     /* on-chip RAM block M1 */
       DRAML0      : origin = 0x008300, length = 0x000100     /* on-chip RAM block L0 */
    
    }
    
    /* Allocate sections to memory blocks.
       Note:
             codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
                       execution when booting to flash
             ramfuncs  user defined section to store functions that will be copied from Flash into RAM
    */
    
    SECTIONS
    {
    
       /* Allocate program areas: */
       .cinit              : > FLASH0,      PAGE = 0
       .pinit              : > FLASH0,     PAGE = 0
       .text               : > FLASH0,      PAGE = 0
       codestart           : > BEGIN,       PAGE = 0
    
    #ifdef __TI_COMPILER_VERSION__
       #if __TI_COMPILER_VERSION__ >= 15009000
        .TI.ramfunc : {} LOAD = FLASH0,
                             RUN = RAMM0,
                             LOAD_START(_RamfuncsLoadStart),
                             LOAD_END(_RamfuncsLoadEnd),
                             RUN_START(_RamfuncsRunStart),
    						 		 LOAD_SIZE(_RamfuncsLoadSize),
                             PAGE = 0
       #else
    
       ramfuncs            : LOAD = FLASH0,
                             RUN = RAMM0 | PRAML0,
                             LOAD_START(_RamfuncsLoadStart),
                             LOAD_END(_RamfuncsLoadEnd),
                             RUN_START(_RamfuncsRunStart),
    						 		 LOAD_SIZE(_RamfuncsLoadSize),
                             PAGE = 0   
       #endif/#endif
    
       csmpasswds          : > CSM_PWL_P0,  PAGE = 0
       csm_rsvd            : > CSM_RSVD,    PAGE = 0
    
       /* Allocate uninitalized data sections: */
       .stack        		  : > RAMM1,      PAGE = 1
       .ebss               : > DRAML0,      PAGE = 1
       .esysmem            : > DRAML0,      PAGE = 1
       .cio                : > DRAML0,      PAGE = 1
    
       /* Initalized sections go in Flash */
       /* For SDFlash to program these, they must be allocated to page 0 */
       .econst             : > FLASH0,      PAGE = 0
       .switch             : > FLASH0,      PAGE = 0
    
       /* Allocate IQ math areas: */
       IQmath              : > PRAML0,      PAGE = 0            /* Math Code */
       IQmathTables        : > IQTABLES,   PAGE = 0, TYPE = NOLOAD
    
       /* Uncomment the section below if calling the IQNexp() or IQexp()
          functions from the IQMath.lib library in order to utilize the
          relevant IQ Math table in Boot ROM (This saves space and Boot ROM
          is 1 wait-state). If this section is not uncommented, IQmathTables2
          will be loaded into other memory (SARAM, Flash, etc.) and will take
          up space, but 0 wait-state is possible.
       */
       /*
       IQmathTables2    : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
       {
    
                  IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)
    
       }
       */
       /* Uncomment the section below if calling the IQNasin() or IQasin()
          functions from the IQMath.lib library in order to utilize the
          relevant IQ Math table in Boot ROM (This saves space and Boot ROM
          is 1 wait-state). If this section is not uncommented, IQmathTables2
          will be loaded into other memory (SARAM, Flash, etc.) and will take
          up space, but 0 wait-state is possible.
       */
       /*
       IQmathTables3    : > IQTABLES3, PAGE = 0, TYPE = NOLOAD
       {
    
                  IQmath.lib<IQNasinTable.obj> (IQmathTablesRam)
    
       }
       */
    
       /* .reset is a standard section used by the compiler.  It contains the */
       /* the address of the start of _c_int00 for C Code.   /*
       /* When using the boot ROM this section and the CPU vector */
       /* table is not needed.  Thus the default type is set here to  */
       /* DSECT  */
       .reset              : > RESET,      PAGE = 0, TYPE = DSECT
       vectors             : > VECTORS     PAGE = 0, TYPE = DSECT
    
    }
    

    and the map file:

    ******************************************************************************
                 TMS320C2000 Linker PC v21.6.0                     
    ******************************************************************************
    >> Linked Thu Jul 28 09:06:36 2022
    
    OUTPUT FILE NAME:   <CAM-20-E.out>
    ENTRY POINT SYMBOL: "code_start"  address: 003f7ff6
    
    
    MEMORY CONFIGURATION
    
             name            origin    length      used     unused   attr    fill
    ----------------------  --------  ---------  --------  --------  ----  --------
    PAGE 0:
      RAMM0                 00000050   00000570  00000521  0000004f  RWIX
      PRAML0                00008000   00000300  00000014  000002ec  RWIX
      OTP                   003d7800   00000400  00000000  00000400  RWIX
      FLASH0                003f4000   00002000  00001908  000006f8  RWIX
      FLASH2                003f6000   00001000  00000000  00001000  RWIX
      FLASH3                003f7000   00000f80  00000000  00000f80  RWIX
      CSM_RSVD              003f7f80   00000076  00000000  00000076  RWIX
      BEGIN                 003f7ff6   00000002  00000002  00000000  RWIX
      CSM_PWL_P0            003f7ff8   00000008  00000000  00000008  RWIX
      IQTABLES              003fe000   00000b50  00000000  00000b50  RWIX
      IQTABLES2             003feb50   0000008c  00000000  0000008c  RWIX
      IQTABLES3             003febdc   000000aa  00000000  000000aa  RWIX
      ROM                   003ff27c   00000d44  00000000  00000d44  RWIX
      RESET                 003fffc0   00000002  00000000  00000002  RWIX
      VECTORS               003fffc2   0000003e  00000000  0000003e  RWIX
    
    PAGE 1:
      BOOT_RSVD             00000000   00000050  00000000  00000050  RWIX
      RAMM1                 00000600   00000200  00000200  00000000  RWIX
      DEV_EMU               00000880   00000105  00000004  00000101  RWIX
      SYS_PWR_CTL           00000985   00000003  00000003  00000000  RWIX
      FLASH_REGS            00000a80   00000060  00000008  00000058  RWIX
      CSM                   00000ae0   00000010  00000010  00000000  RWIX
      ADC_RESULT            00000b00   00000020  00000020  00000000  RWIX
      CPU_TIMER0            00000c00   00000008  00000008  00000000  RWIX
      CPU_TIMER1            00000c08   00000008  00000008  00000000  RWIX
      CPU_TIMER2            00000c10   00000008  00000008  00000000  RWIX
      PIE_CTRL              00000ce0   00000020  0000001a  00000006  RWIX
      PIE_VECT              00000d00   00000100  00000100  00000000  RWIX
      COMP1                 00006400   00000020  00000020  00000000  RWIX
      COMP2                 00006420   00000020  00000020  00000000  RWIX
      EPWM1                 00006800   00000040  00000040  00000000  RWIX
      EPWM2                 00006840   00000040  00000040  00000000  RWIX
      EPWM3                 00006880   00000040  00000040  00000000  RWIX
      EPWM4                 000068c0   00000040  00000040  00000000  RWIX
      ECAP1                 00006a00   00000020  00000020  00000000  RWIX
      GPIOCTRL              00006f80   00000040  00000040  00000000  RWIX
      GPIODAT               00006fc0   00000020  00000020  00000000  RWIX
      GPIOINT               00006fe0   00000020  0000000a  00000016  RWIX
      SYSTEM                00007010   00000020  0000001f  00000001  RWIX
      SPIA                  00007040   00000010  00000010  00000000  RWIX
      SCIA                  00007050   00000010  00000010  00000000  RWIX
      NMIINTRUPT            00007060   00000010  00000010  00000000  RWIX
      XINTRUPT              00007070   00000010  00000010  00000000  RWIX
      ADC                   00007100   00000080  00000051  0000002f  RWIX
      I2CA                  00007900   00000040  00000022  0000001e  RWIX
      DRAML0                00008300   00000100  000000c0  00000040  RWIX
      PARTID                003d7fff   00000001  00000001  00000000  RWIX
      CSM_PWL               003f7ff8   00000008  00000008  00000000  RWIX
    
    
    SECTION ALLOCATION MAP
    
     output                                  attributes/
    section   page    origin      length       input sections
    --------  ----  ----------  ----------   ----------------
    .TI.ramfunc 
    *          0    00000050    00000000     UNINITIALIZED
    
    .cinit     0    003f5802    00000107     
                      003f5802    00000087     main.obj (.cinit)
                      003f5889    00000043     main.obj (.cinit:_out)
                      003f58cc    00000023     main.obj (.cinit:_message)
                      003f58ef    0000000e     rts2800_ml.lib : exit.c.obj (.cinit)
                      003f58fd    00000005                    : _lock.c.obj (.cinit:__lock)
                      003f5902    00000005                    : _lock.c.obj (.cinit:__unlock)
                      003f5907    00000002     --HOLE-- [fill = 0]
    
    DevEmuRegsFile 
    *          1    00000880    00000004     UNINITIALIZED
                      00000880    00000004     F2802x_GlobalVariableDefs.obj (DevEmuRegsFile)
    
    SysPwrCtrlRegsFile 
    *          1    00000985    00000003     UNINITIALIZED
                      00000985    00000003     F2802x_GlobalVariableDefs.obj (SysPwrCtrlRegsFile)
    
    FlashRegsFile 
    *          1    00000a80    00000008     UNINITIALIZED
                      00000a80    00000008     F2802x_GlobalVariableDefs.obj (FlashRegsFile)
    
    CsmRegsFile 
    *          1    00000ae0    00000010     UNINITIALIZED
                      00000ae0    00000010     F2802x_GlobalVariableDefs.obj (CsmRegsFile)
    
    AdcResultFile 
    *          1    00000b00    00000020     UNINITIALIZED
                      00000b00    00000020     F2802x_GlobalVariableDefs.obj (AdcResultFile)
    
    CpuTimer0RegsFile 
    *          1    00000c00    00000008     UNINITIALIZED
                      00000c00    00000008     F2802x_GlobalVariableDefs.obj (CpuTimer0RegsFile)
    
    CpuTimer1RegsFile 
    *          1    00000c08    00000008     UNINITIALIZED
                      00000c08    00000008     F2802x_GlobalVariableDefs.obj (CpuTimer1RegsFile)
    
    CpuTimer2RegsFile 
    *          1    00000c10    00000008     UNINITIALIZED
                      00000c10    00000008     F2802x_GlobalVariableDefs.obj (CpuTimer2RegsFile)
    
    PieCtrlRegsFile 
    *          1    00000ce0    0000001a     UNINITIALIZED
                      00000ce0    0000001a     F2802x_GlobalVariableDefs.obj (PieCtrlRegsFile)
    
    PieVectTableFile 
    *          1    00000d00    00000100     UNINITIALIZED
                      00000d00    00000100     F2802x_GlobalVariableDefs.obj (PieVectTableFile)
    
    EmuKeyVar 
    *          1    00000d00    00000001     UNINITIALIZED
                      00000d00    00000001     F2802x_GlobalVariableDefs.obj (EmuKeyVar)
    
    EmuBModeVar 
    *          1    00000d01    00000001     UNINITIALIZED
                      00000d01    00000001     F2802x_GlobalVariableDefs.obj (EmuBModeVar)
    
    FlashCallbackVar 
    *          1    00000d02    00000002     UNINITIALIZED
                      00000d02    00000002     F2802x_GlobalVariableDefs.obj (FlashCallbackVar)
    
    FlashScalingVar 
    *          1    00000d04    00000002     UNINITIALIZED
                      00000d04    00000002     F2802x_GlobalVariableDefs.obj (FlashScalingVar)
    
    Comp1RegsFile 
    *          1    00006400    00000020     UNINITIALIZED
                      00006400    00000020     F2802x_GlobalVariableDefs.obj (Comp1RegsFile)
    
    Comp2RegsFile 
    *          1    00006420    00000020     UNINITIALIZED
                      00006420    00000020     F2802x_GlobalVariableDefs.obj (Comp2RegsFile)
    
    EPwm1RegsFile 
    *          1    00006800    00000040     UNINITIALIZED
                      00006800    00000040     F2802x_GlobalVariableDefs.obj (EPwm1RegsFile)
    
    EPwm2RegsFile 
    *          1    00006840    00000040     UNINITIALIZED
                      00006840    00000040     F2802x_GlobalVariableDefs.obj (EPwm2RegsFile)
    
    EPwm3RegsFile 
    *          1    00006880    00000040     UNINITIALIZED
                      00006880    00000040     F2802x_GlobalVariableDefs.obj (EPwm3RegsFile)
    
    EPwm4RegsFile 
    *          1    000068c0    00000040     UNINITIALIZED
                      000068c0    00000040     F2802x_GlobalVariableDefs.obj (EPwm4RegsFile)
    
    ECap1RegsFile 
    *          1    00006a00    00000020     UNINITIALIZED
                      00006a00    00000020     F2802x_GlobalVariableDefs.obj (ECap1RegsFile)
    
    GpioCtrlRegsFile 
    *          1    00006f80    00000040     UNINITIALIZED
                      00006f80    00000040     F2802x_GlobalVariableDefs.obj (GpioCtrlRegsFile)
    
    GpioDataRegsFile 
    *          1    00006fc0    00000020     UNINITIALIZED
                      00006fc0    00000020     F2802x_GlobalVariableDefs.obj (GpioDataRegsFile)
    
    GpioIntRegsFile 
    *          1    00006fe0    0000000a     UNINITIALIZED
                      00006fe0    0000000a     F2802x_GlobalVariableDefs.obj (GpioIntRegsFile)
    
    SysCtrlRegsFile 
    *          1    00007010    0000001f     UNINITIALIZED
                      00007010    0000001f     F2802x_GlobalVariableDefs.obj (SysCtrlRegsFile)
    
    SpiaRegsFile 
    *          1    00007040    00000010     UNINITIALIZED
                      00007040    00000010     F2802x_GlobalVariableDefs.obj (SpiaRegsFile)
    
    SciaRegsFile 
    *          1    00007050    00000010     UNINITIALIZED
                      00007050    00000010     F2802x_GlobalVariableDefs.obj (SciaRegsFile)
    
    NmiIntruptRegsFile 
    *          1    00007060    00000010     UNINITIALIZED
                      00007060    00000010     F2802x_GlobalVariableDefs.obj (NmiIntruptRegsFile)
    
    XIntruptRegsFile 
    *          1    00007070    00000010     UNINITIALIZED
                      00007070    00000010     F2802x_GlobalVariableDefs.obj (XIntruptRegsFile)
    
    AdcRegsFile 
    *          1    00007100    00000051     UNINITIALIZED
                      00007100    00000051     F2802x_GlobalVariableDefs.obj (AdcRegsFile)
    
    I2caRegsFile 
    *          1    00007900    00000022     UNINITIALIZED
                      00007900    00000022     F2802x_GlobalVariableDefs.obj (I2caRegsFile)
    
    PartIdRegsFile 
    *          1    003d7fff    00000001     UNINITIALIZED
                      003d7fff    00000001     F2802x_GlobalVariableDefs.obj (PartIdRegsFile)
    
    CsmPwlFile 
    *          1    003f7ff8    00000008     UNINITIALIZED
                      003f7ff8    00000008     F2802x_GlobalVariableDefs.obj (CsmPwlFile)
    
    .pinit     0    003f4000    00000000     UNINITIALIZED
    
    .text      0    003f4000    000013d7     
                      003f4000    00000a3c     main.obj (.text)
                      003f4a3c    00000251     clk.obj (.text)
                      003f4c8d    00000083     rts2800_ml.lib : fd_mpy28.asm.obj (.text)
                      003f4d10    00000078                    : fs_add28.asm.obj (.text)
                      003f4d88    0000005a                    : fs_mpy28.asm.obj (.text)
                      003f4de2    00000054                    : boot28.asm.obj (.text)
                      003f4e36    00000048     driverlib.lib : gpio.obj (.text:_GPIO_setMode)
                      003f4e7e    00000031     rts2800_ml.lib : atoi.c.obj (.text)
                      003f4eaf    00000029     driverlib.lib : gpio.obj (.text:_GPIO_setDirection)
                      003f4ed8    00000029                   : gpio.obj (.text:_GPIO_setPullUp)
                      003f4f01    00000029     rts2800_ml.lib : exit.c.obj (.text)
                      003f4f2a    00000027     driverlib.lib : gpio.obj (.text:_GPIO_setQualification)
                      003f4f51    00000024     main.obj (.text:retain)
                      003f4f75    00000024     rts2800_ml.lib : cpy_tbl.c.obj (.text)
                      003f4f99    00000022     driverlib.lib : adc.obj (.text:_ADC_setIntMode)
                      003f4fbb    00000022                   : adc.obj (.text:_ADC_setIntSrc)
                      003f4fdd    00000022     rts2800_ml.lib : i_div28.asm.obj (.text)
                      003f4fff    0000001f                    : fd_tol28.asm.obj (.text)
                      003f501e    0000001d                    : memcpy.c.obj (.text)
                      003f503b    0000001c                    : fs_tofd28.asm.obj (.text)
                      003f5057    0000001a                    : i_tofs28.asm.obj (.text)
                      003f5071    00000017     driverlib.lib : adc.obj (.text:_ADC_enableInt)
                      003f5088    00000017     rts2800_ml.lib : fs_cmp28.asm.obj (.text)
                      003f509f    00000015     driverlib.lib : pll.obj (.text:_PLL_setup)
                      003f50b4    00000014                   : gpio.obj (.text:_GPIO_setHigh)
                      003f50c8    00000014                   : gpio.obj (.text:_GPIO_setLow)
                      003f50dc    00000014                   : gpio.obj (.text:_GPIO_toggle)
                      003f50f0    00000014                   : pie.obj (.text:_PIE_enableAdcInt)
                      003f5104    00000012                   : adc.obj (.text:_ADC_setSocChanNumber)
                      003f5116    00000012                   : adc.obj (.text:_ADC_setSocSampleWindow)
                      003f5128    00000012                   : adc.obj (.text:_ADC_setSocTrigSrc)
                      003f513a    00000011                   : adc.obj (.text:_ADC_setIntPulseGenMode)
                      003f514b    00000011                   : adc.obj (.text:_ADC_setVoltRefSrc)
                      003f515c    00000011                   : gpio.obj (.text:_GPIO_getData)
                      003f516d    00000011                   : pie.obj (.text:_PIE_disableAllInts)
                      003f517e    00000011                   : pie.obj (.text:_PIE_setDebugIntVectorTable)
                      003f518f    00000011     rts2800_ml.lib : args_main.c.obj (.text)
                      003f51a0    0000000f     driverlib.lib : pie.obj (.text:_PIE_registerPieIntHandler)
                      003f51af    0000000b     rts2800_ml.lib : u_div28.asm.obj (.text)
                      003f51ba    0000000a     driverlib.lib : adc.obj (.text:_ADC_enable)
                      003f51c4    0000000a                   : adc.obj (.text:_ADC_enableBandGap)
                      003f51ce    0000000a                   : adc.obj (.text:_ADC_enableRefBuffers)
                      003f51d8    0000000a                   : adc.obj (.text:_ADC_init)
                      003f51e2    0000000a                   : adc.obj (.text:_ADC_powerUp)
                      003f51ec    0000000a                   : pie.obj (.text:_PIE_init)
                      003f51f6    0000000a     rts2800_ml.lib : strcmp.c.obj (.text)
                      003f5200    00000009     driverlib.lib : pwm.obj (.text:_PWM_setSocAPeriod)
                      003f5209    00000009                   : pwm.obj (.text:_PWM_setSocAPulseSrc)
                      003f5212    00000009                   : sci.obj (.text:_SCI_putDataBlocking)
                      003f521b    00000009     rts2800_ml.lib : _lock.c.obj (.text)
                      003f5224    00000008     driverlib.lib : flash.obj (.text:_FLASH_init)
                      003f522c    00000008                   : gpio.obj (.text:_GPIO_init)
                      003f5234    00000008                   : pll.obj (.text:_PLL_init)
                      003f523c    00000008                   : pwm.obj (.text:_PWM_init)
                      003f5244    00000008                   : sci.obj (.text:_SCI_getDataBlocking)
                      003f524c    00000008                   : sci.obj (.text:_SCI_init)
                      003f5254    00000008                   : wdog.obj (.text:_WDOG_disable)
                      003f525c    00000008                   : wdog.obj (.text:_WDOG_init)
                      003f5264    00000008     f2802x_codestartbranch.obj (.text)
                      003f526c    00000008     rts2800_ml.lib : strlen.c.obj (.text)
                      003f5274    00000007     driverlib.lib : pll.obj (.text:_PLL_setDivider)
                      003f527b    00000006                   : pll.obj (.text:_PLL_setMultiplier)
                      003f5281    00000006                   : sci.obj (.text:_SCI_setBaudRate)
                      003f5287    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT1_ISR)
                      003f528c    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT2_ISR)
                      003f5291    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT3_ISR)
                      003f5296    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT4_ISR)
                      003f529b    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT5_ISR)
                      003f52a0    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT6_ISR)
                      003f52a5    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT7_ISR)
                      003f52aa    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT8_ISR)
                      003f52af    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT9_ISR)
                      003f52b4    00000005                   : f2802xx_defaultisr.obj (.text:_DATALOG_ISR)
                      003f52b9    00000005                   : f2802xx_defaultisr.obj (.text:_ECAP1_INT_ISR)
                      003f52be    00000005                   : f2802xx_defaultisr.obj (.text:_EMPTY_ISR)
                      003f52c3    00000005                   : f2802xx_defaultisr.obj (.text:_EMUINT_ISR)
                      003f52c8    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM1_INT_ISR)
                      003f52cd    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM1_TZINT_ISR)
                      003f52d2    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM2_INT_ISR)
                      003f52d7    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM2_TZINT_ISR)
                      003f52dc    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM3_INT_ISR)
                      003f52e1    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM3_TZINT_ISR)
                      003f52e6    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM4_INT_ISR)
                      003f52eb    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM4_TZINT_ISR)
                      003f52f0    00000005                   : f2802xx_defaultisr.obj (.text:_I2CINT1A_ISR)
                      003f52f5    00000005                   : f2802xx_defaultisr.obj (.text:_I2CINT2A_ISR)
                      003f52fa    00000005                   : f2802xx_defaultisr.obj (.text:_ILLEGAL_ISR)
                      003f52ff    00000005                   : f2802xx_defaultisr.obj (.text:_INT13_ISR)
                      003f5304    00000005                   : f2802xx_defaultisr.obj (.text:_INT14_ISR)
                      003f5309    00000005                   : f2802xx_defaultisr.obj (.text:_NMI_ISR)
                      003f530e    00000005                   : f2802xx_defaultisr.obj (.text:_PIE_RESERVED)
                      003f5313    00000005                   : pie.obj (.text:_PIE_illegalIsr)
                      003f5318    00000005                   : f2802xx_defaultisr.obj (.text:_RTOSINT_ISR)
                      003f531d    00000005                   : f2802xx_defaultisr.obj (.text:_SCIRXINTA_ISR)
                      003f5322    00000005                   : f2802xx_defaultisr.obj (.text:_SCITXINTA_ISR)
                      003f5327    00000005                   : f2802xx_defaultisr.obj (.text:_SPIRXINTA_ISR)
                      003f532c    00000005                   : f2802xx_defaultisr.obj (.text:_SPITXINTA_ISR)
                      003f5331    00000005                   : f2802xx_defaultisr.obj (.text:_TINT0_ISR)
                      003f5336    00000005                   : f2802xx_defaultisr.obj (.text:_USER10_ISR)
                      003f533b    00000005                   : f2802xx_defaultisr.obj (.text:_USER11_ISR)
                      003f5340    00000005                   : f2802xx_defaultisr.obj (.text:_USER12_ISR)
                      003f5345    00000005                   : f2802xx_defaultisr.obj (.text:_USER1_ISR)
                      003f534a    00000005                   : f2802xx_defaultisr.obj (.text:_USER2_ISR)
                      003f534f    00000005                   : f2802xx_defaultisr.obj (.text:_USER3_ISR)
                      003f5354    00000005                   : f2802xx_defaultisr.obj (.text:_USER4_ISR)
                      003f5359    00000005                   : f2802xx_defaultisr.obj (.text:_USER5_ISR)
                      003f535e    00000005                   : f2802xx_defaultisr.obj (.text:_USER6_ISR)
                      003f5363    00000005                   : f2802xx_defaultisr.obj (.text:_USER7_ISR)
                      003f5368    00000005                   : f2802xx_defaultisr.obj (.text:_USER8_ISR)
                      003f536d    00000005                   : f2802xx_defaultisr.obj (.text:_USER9_ISR)
                      003f5372    00000005                   : f2802xx_defaultisr.obj (.text:_WAKEINT_ISR)
                      003f5377    00000005                   : f2802xx_defaultisr.obj (.text:_XINT1_ISR)
                      003f537c    00000005                   : f2802xx_defaultisr.obj (.text:_XINT2_ISR)
                      003f5381    00000005                   : f2802xx_defaultisr.obj (.text:_XINT3_ISR)
                      003f5386    00000005                   : f2802xx_defaultisr.obj (.text:_rsvd_ISR)
                      003f538b    00000005     rts2800_ml.lib : strcpy.c.obj (.text)
                      003f5390    00000004     driverlib.lib : cpu.obj (.text:_CPU_enableInt)
                      003f5394    00000004                   : cpu.obj (.text:_CPU_init)
                      003f5398    00000004                   : pwm.obj (.text:_PWM_enableSocAPulse)
                      003f539c    00000004                   : pwm.obj (.text:_PWM_setCounterMode)
                      003f53a0    00000004                   : sci.obj (.text:_SCI_setCharLength)
                      003f53a4    00000004                   : sci.obj (.text:_SCI_setNumStopBits)
                      003f53a8    00000003                   : cpu.obj (.text:_CPU_clearIntFlags)
                      003f53ab    00000003                   : cpu.obj (.text:_CPU_disableGlobalInts)
                      003f53ae    00000003                   : cpu.obj (.text:_CPU_enableDebugInt)
                      003f53b1    00000003                   : cpu.obj (.text:_CPU_enableGlobalInts)
                      003f53b4    00000003                   : pie.obj (.text:_PIE_disable)
                      003f53b7    00000003                   : pie.obj (.text:_PIE_enable)
                      003f53ba    00000003                   : pll.obj (.text:_PLL_getClkStatus)
                      003f53bd    00000003                   : pll.obj (.text:_PLL_getLockStatus)
                      003f53c0    00000003                   : sci.obj (.text:_SCI_disableParity)
                      003f53c3    00000003                   : sci.obj (.text:_SCI_enable)
                      003f53c6    00000003                   : sci.obj (.text:_SCI_enableRx)
                      003f53c9    00000003                   : sci.obj (.text:_SCI_enableRxInt)
                      003f53cc    00000003                   : sci.obj (.text:_SCI_enableTx)
                      003f53cf    00000003                   : sci.obj (.text:_SCI_enableTxInt)
                      003f53d2    00000002                   : pwm.obj (.text:_PWM_setPeriod)
                      003f53d4    00000002     rts2800_ml.lib : pre_init.c.obj (.text)
                      003f53d6    00000001                    : startup.c.obj (.text)
    
    codestart 
    *          0    003f7ff6    00000002     
                      003f7ff6    00000002     f2802x_codestartbranch.obj (codestart)
    
    .stack     1    00000600    00000200     UNINITIALIZED
                      00000600    00000200     --HOLE--
    
    .ebss      1    00008300    000000c0     UNINITIALIZED
                      00008300    00000047     main.obj (.ebss)
                      00008347    00000020     main.obj (.ebss:_message)
                      00008367    00000001     driverlib.lib : cpu.obj (.ebss)
                      00008368    00000006     rts2800_ml.lib : exit.c.obj (.ebss)
                      0000836e    00000002                    : _lock.c.obj (.ebss:__lock)
                      00008370    00000002                    : _lock.c.obj (.ebss:__unlock)
                      00008372    0000000e     --HOLE--
                      00008380    00000040     main.obj (.ebss:_out)
    
    .econst    0    003f53d8    0000042a     
                      003f53d8    00000207     main.obj (.econst:.string)
                      003f55df    00000101     rts2800_ml.lib : ctype.c.obj (.econst:.string:__ctypes_)
                      003f56e0    00000100     driverlib.lib : pie.obj (.econst:_PIE_tableDebugInit)
                      003f57e0    00000017     main.obj (.econst:_volMap)
                      003f57f7    00000006     main.obj (.econst:.string:_$P$T0$1)
                      003f57fd    00000001     --HOLE-- [fill = 0]
                      003f57fe    00000004     main.obj (.econst)
    
    IQmath     0    00008000    00000014     
                      00008000    00000014     IQmath_coff.lib : IQ24toF.obj (IQmath)
    
    .reset     0    003fffc0    00000002     DSECT
                      003fffc0    00000002     rts2800_ml.lib : boot28.asm.obj (.reset)
    
    vectors    0    003fffc2    00000000     DSECT
    
    ramfuncs   0    00000050    00000521     
                      00000050    000004e6     main.obj (ramfuncs)
                      00000536    00000016     driverlib.lib : flash.obj (ramfuncs:_FLASH_setup)
                      0000054c    00000007                   : flash.obj (ramfuncs:_FLASH_setNumPagedReadWaitStates)
                      00000553    00000007                   : flash.obj (ramfuncs:_FLASH_setNumRandomReadWaitStates)
                      0000055a    00000007                   : flash.obj (ramfuncs:_FLASH_setOtpWaitStates)
                      00000561    00000006                   : flash.obj (ramfuncs:_FLASH_enablePipelineMode)
                      00000567    00000005                   : flash.obj (ramfuncs:_FLASH_setActiveWaitCount)
                      0000056c    00000005                   : flash.obj (ramfuncs:_FLASH_setStandbyWaitCount)
    
    MODULE SUMMARY
    
           Module                          code   initialized data   uninitialized data
           ------                          ----   ----------------   ------------------
        .\
           main.obj                        3910   789                167               
           F2802x_GlobalVariableDefs.obj   0      0                  1052              
           clk.obj                         593    0                  0                 
           f2802x_codestartbranch.obj      10     0                  0                 
        +--+-------------------------------+------+------------------+--------------------+
           Total:                          4513   789                1219              
                                                                                       
        C:/ti/C2000Ware_4_00_00_00/device_support/f2802x/common/ccs/Debug/driverlib.lib
           pie.obj                         90     256                0                 
           gpio.obj                        278    0                  0                 
           f2802xx_defaultisr.obj          255    0                  0                 
           adc.obj                         229    0                  0                 
           flash.obj                       67     0                  0                 
           sci.obj                         57     0                  0                 
           pll.obj                         48     0                  0                 
           pwm.obj                         36     0                  0                 
           cpu.obj                         20     0                  1                 
           wdog.obj                        16     0                  0                 
        +--+-------------------------------+------+------------------+--------------------+
           Total:                          1096   256                1                 
                                                                                       
        C:/ti/ccs1020/ccs/tools/compiler/ti-cgt-c2000_21.6.0.LTS/lib/rts2800_ml.lib
           ctype.c.obj                     0      257                0                 
           fd_mpy28.asm.obj                131    0                  0                 
           fs_add28.asm.obj                120    0                  0                 
           fs_mpy28.asm.obj                90     0                  0                 
           boot28.asm.obj                  84     0                  0                 
           exit.c.obj                      41     14                 6                 
           atoi.c.obj                      49     0                  0                 
           cpy_tbl.c.obj                   36     0                  0                 
           i_div28.asm.obj                 34     0                  0                 
           fd_tol28.asm.obj                31     0                  0                 
           memcpy.c.obj                    29     0                  0                 
           fs_tofd28.asm.obj               28     0                  0                 
           i_tofs28.asm.obj                26     0                  0                 
           _lock.c.obj                     9      10                 4                 
           fs_cmp28.asm.obj                23     0                  0                 
           args_main.c.obj                 17     0                  0                 
           u_div28.asm.obj                 11     0                  0                 
           strcmp.c.obj                    10     0                  0                 
           strlen.c.obj                    8      0                  0                 
           strcpy.c.obj                    5      0                  0                 
           pre_init.c.obj                  2      0                  0                 
           startup.c.obj                   1      0                  0                 
        +--+-------------------------------+------+------------------+--------------------+
           Total:                          785    281                10                
                                                                                       
        C:\ti\C2000Ware_4_00_00_00\libraries\math\IQmath\c28\lib\IQmath_coff.lib
           IQ24toF.obj                     20     0                  0                 
        +--+-------------------------------+------+------------------+--------------------+
           Total:                          20     0                  0                 
                                                                                       
           Stack:                          0      0                  512               
        +--+-------------------------------+------+------------------+--------------------+
           Grand Total:                    6414   1326               1742              
    

    3. Time-critical code has been assigned to the ramfuncs section.

    4. This is where I'm not sure about what I'm seeing, but it doesn't look right.  With the emulator connected and a breakpoint halts execution just after the ramfuncs memcpy() function, I see the following:

      a. The program exists in FLASH0, as expected:

      b. It looks like ramfuncs is getting copied into RAMM0, as expected:

      c. When I step & trace a single function, it seems to still be running from FLASH0:

    FLASH_setup() embedded in main() in FLASH0 @ addr: 0x3f4357:

    FLASH_setup() in RAMM0:

    FLASH_setup() running in disassembly window:

    The PC in the disassembly window is at 0x3f4357, which is in FLASH0.  I would have thought the PC to be at 0x00000536 if it were truly running from RAM.

    QUESTION #1:

    Am I reading this correctly?

    5. I moved the memcpy() function to preceed any function calls, and it didn't help.

    6. I thought the code had the appropriate branch architecture, but now I wonder?

    If I flash the device, cycle power, connect CCS & load symbols, set a breakpoint at _c_int00, and run, then I hit the breakpoint.

    I'm pretty much stuck, with a looming deadline.  Any and all help is greatly appreciated.

    Thanks,
    robin

  • Everything seems ok - I don't see anything in the linker or map file that looks wrong. 

    The highlighted line is the call instruction (LCR) to the flash setup routine. When you step the highlighted line, where does the PC go?  

    If you look at this memory area in the disassembly window, what does it look like?

    Note any software breakpoint you put in ram funcs will get over-written during the copy.  You can either run past the copy and then set the breakpoint or use a hardware breakpoint (can be configured in the breakpoint window) to halt at address 0x536

  • Hi Lori,

    Many thanks for the direction.  Sharing your expertise has helped and it's greatly appreciated.

    I've made progress in that code is now running from RAM.  The measure I was using to determine if the target was alive after a power cycle wasn't sufficient to see when it actually started working.  As a result, I'm not sure which of the changes I made over the last few days was responsible.

    I've run into more problems with running code standalone.  After debugging and fixing a couple, I'm stuck trying the get the IQ math function "_IQtoF()" to work.  It works with the emulator connected, but not without it.

    #include "IQmathLib.h"
    
    #define GLOBAL_Q 30
    
    long            adcResult_long_A0;
    
    volatile _iq    adcResult_iq        = _IQ(0.0);
    
    
    main()
    {
        while(1)
        {
            adcResult_iq    = _IQmpyI32(_IQ(0.000488281250), adcResult_long_A0);    // Convert adc result to iq
                    
            adcResult_float = _IQtoF(adcResult_iq) - 1;                             // Convert iq to float
        }
    }
    

    The above code (only the relevant part) runs fine with the emulator, but crashes at the _IQtoF() function after a standalone boot.

    If I adjust code as follows, it runs in standalone (albeit with nonsensical adc data):

    #include "IQmathLib.h"
    
    #define GLOBAL_Q 30
    
    long adcResult_long_A0;
    
    volatile _iq adcResult_iq = _IQ(0.0);
    
    
    main()
    {
        while(1)
        {
            adcResult_iq = _IQmpyI32(_IQ(0.000488281250), adcResult_long_A0); // Convert adc result to iq
     
            adcResult_float = (float)adcResult_iq;                            // Convert to float
        }
    }

    What am I missing to have this function work?

    Since it works with the emulator connected, can you suggest a debugging technique that doesn't rely on the emulator?

    Thanks,
    robin

  • Robin,

    What symptoms are you seeing when it doesn't work?  

    You can try to get to a similar state by:

    • power on reset and then
    • connect CCS to the board manually (that is don't re-program the device).
    • Then load the symbols only from the project
    • try to debug / step through code to find the issue.  

    https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html#manual-launch

    -Lori

  • Hi Lori,

    Sorry for being so thick-headed, but I can't get symbols loaded to debug.  The instructions in the link you sent don't match what I see in CCS (10.4).

    Also, when I cycle the target's power, no matter what I do, as soon as I hit 'run', it goes to estop:

    After doing this, I have to shut down CCS and restart to get the CCS debugger working again.  I don't know what the IQ functions are doing, but it looks like they're not converting numbers properly (if I can trust the watch window while CCS is in its weird non-working-right state).

    Thanks,
    robin

  • Also, when I cycle the target's power, no matter what I do, as soon as I hit 'run', it goes to estop:

    I checked the boot ROM code memory map and that is the wait() boot function.  If you populate EMU_KEY and EMU_BMODE for flash then the next time you reset this should be bypassed. 

    In CCS there is a script menu that you can pull down and select boot mode -> emu_flash (or something similar - I don't have a 2802x setup at the moment).   

    Then reset and run.  

  • Hi Lori,

    The symbols now appear in the disassembly window and I can set breakpoints. So, it would seem that I can now debug the standalone code using CCS debug facilities.  HOWEVER, the code runs fine when I run it like this.

    Here's the procedure I follow to debug the standalone code running on the target board:

    1. Load the program to flash, just as if I was debugging using the CCS debugger without relying on previously uploaded code.  This programs it to flash.

    2. Cycle target power.

    3. Go to Debug Configurations...

    4. Select a configuration that only loads symbols.

    5. Select Restart under the Run menu.

    6. Set a breakpoint at the call to _IQtoF(() function.

    7. Single step through the assembly code, which is running from RAM.

    It all looks just as you'd expect.  Without the breakpoint, code runs normally.

    Then, if I disconnect CCS and cycle power, the target hangs.

    If I comment out the calls to _IQtoF() and follow the above procedure, the code doesn't hang, there are no warnings or errors, but it doesn't run normally due to the iq type mismatching.

    Here's the code causing

        //  Convert long adc result to iq
        adcResult_iq            = _IQmpyI32(_IQ(0.000488281250), adcResult_long_A0);    
        
        // Convert to float
        adcResult_float         = _IQtoF(adcResult_iq) - 1;
        
        // Rectify AC signal (all floats)
        rectifiedSignal         = (adcResult_float < 0.0) ? (adcResult_float * -1) : (adcResult_float); 
    
        // Calculate a fast average (convert to iq)
        adcAverageFast          = _IQmpy(adcAverageFast, _IQ(0.930) ) + _IQmpy(_IQ(rectifiedSignal), _IQ(0.070) );
        
        // Convert iq to float
        detectorAverage_Fast    = _IQtoF(adcAverageFast);        
    	            
    
    problems:

    Do you see anything amiss here?

    Thanks,
    robin

  • 5. Select Restart under the Run menu.

    Restart can have a different effect and bypass the boot ROM.  Basically CCS forces the PC where it believes the entry point is. 

    Instead of restart, please try reset so the code will go through the boot ROM process.  This will require the setup of the emulation boot using the script menu.

    (i.e. script -> emulation boot -> flash,  reset, go main, run)

    A few things we can check to try and find a direction to go.  

    • Please share your latest .map file. 
    • If you pass a constant value to IQtoF instead of a variable is there any difference in the behavior?
    • Are you using the code security module?  That is, are the keys programmed to a non 0xFFFF value?  I'm wondering if this could be in a secure state during a stand-alone run and in an open state during debug. 
    • When there is a failure, does the reset line toggle?  This could indicate that the watchdog is resetting the device when the debugger is not connected. The watchdog will pull the XRSn line low for 512 OSCCLK cycles each time it resets.
  • Hi Lori,

    Using reset instead of restart was a good lead.  Now the _IQtoF() function doesn't work when the code is running.  That's a good thing in that I can break and step through the assembly code.  I'm not good with assembly language and there are too many steps for me to effectively analyze the specifics of what's going on, but what I can say is that the function seems to be running in its entirety, without throwing an exception.  It just doesn't produce an appropriate result.

    Please share your latest .map file

    Here's the latest map:

    ******************************************************************************
                 TMS320C2000 Linker PC v21.6.0                     
    ******************************************************************************
    >> Linked Wed Aug  3 09:35:35 2022
    
    OUTPUT FILE NAME:   <CAM-20-E.out>
    ENTRY POINT SYMBOL: "code_start"  address: 003f7ff6
    
    
    MEMORY CONFIGURATION
    
             name            origin    length      used     unused   attr    fill
    ----------------------  --------  ---------  --------  --------  ----  --------
    PAGE 0:
      RAMM0                 00000050   000007b0  0000064b  00000165  RWIX
      PRAML0                00008000   00000100  00000014  000000ec  RWIX
      OTP                   003d7800   00000400  00000000  00000400  RWIX
      FLASH0                003f4000   00002000  00001ed1  0000012f  RWIX
      FLASH2                003f6000   00001000  00000000  00001000  RWIX
      FLASH3                003f7000   00000f80  00000000  00000f80  RWIX
      CSM_RSVD              003f7f80   00000076  00000000  00000076  RWIX
      BEGIN                 003f7ff6   00000002  00000002  00000000  RWIX
      CSM_PWL_P0            003f7ff8   00000008  00000000  00000008  RWIX
      IQTABLES              003fe000   00000b50  00000000  00000b50  RWIX
      IQTABLES2             003feb50   0000008c  00000000  0000008c  RWIX
      IQTABLES3             003febdc   000000aa  00000000  000000aa  RWIX
      ROM                   003ff27c   00000d44  00000000  00000d44  RWIX
      RESET                 003fffc0   00000002  00000000  00000002  RWIX
      VECTORS               003fffc2   0000003e  00000000  0000003e  RWIX
    
    PAGE 1:
      BOOT_RSVD             00000000   00000050  00000000  00000050  RWIX
      DEV_EMU               00000880   00000105  00000004  00000101  RWIX
      SYS_PWR_CTL           00000985   00000003  00000003  00000000  RWIX
      FLASH_REGS            00000a80   00000060  00000008  00000058  RWIX
      CSM                   00000ae0   00000010  00000010  00000000  RWIX
      ADC_RESULT            00000b00   00000020  00000020  00000000  RWIX
      CPU_TIMER0            00000c00   00000008  00000008  00000000  RWIX
      CPU_TIMER1            00000c08   00000008  00000008  00000000  RWIX
      CPU_TIMER2            00000c10   00000008  00000008  00000000  RWIX
      PIE_CTRL              00000ce0   00000020  0000001a  00000006  RWIX
      PIE_VECT              00000d00   00000100  00000100  00000000  RWIX
      COMP1                 00006400   00000020  00000020  00000000  RWIX
      COMP2                 00006420   00000020  00000020  00000000  RWIX
      EPWM1                 00006800   00000040  00000040  00000000  RWIX
      EPWM2                 00006840   00000040  00000040  00000000  RWIX
      EPWM3                 00006880   00000040  00000040  00000000  RWIX
      EPWM4                 000068c0   00000040  00000040  00000000  RWIX
      ECAP1                 00006a00   00000020  00000020  00000000  RWIX
      GPIOCTRL              00006f80   00000040  00000040  00000000  RWIX
      GPIODAT               00006fc0   00000020  00000020  00000000  RWIX
      GPIOINT               00006fe0   00000020  0000000a  00000016  RWIX
      SYSTEM                00007010   00000020  0000001f  00000001  RWIX
      SPIA                  00007040   00000010  00000010  00000000  RWIX
      SCIA                  00007050   00000010  00000010  00000000  RWIX
      NMIINTRUPT            00007060   00000010  00000010  00000000  RWIX
      XINTRUPT              00007070   00000010  00000010  00000000  RWIX
      ADC                   00007100   00000080  00000051  0000002f  RWIX
      I2CA                  00007900   00000040  00000022  0000001e  RWIX
      DRAML0                00008100   00000300  000002c0  00000040  RWIX
      PARTID                003d7fff   00000001  00000001  00000000  RWIX
      CSM_PWL               003f7ff8   00000008  00000008  00000000  RWIX
    
    
    SECTION ALLOCATION MAP
    
     output                                  attributes/
    section   page    origin      length       input sections
    --------  ----  ----------  ----------   ----------------
    ramfuncsL0 
    *          0    00008000    00000000     UNINITIALIZED
    
    IQmath     0    00008000    00000014     
                      00008000    00000014     IQmath_coff.lib : IQ24toF.obj (IQmath)
    
    ramfuncs   0    003f534b    0000064b     RUN ADDR = 00000050
                      003f534b    000005e4     main.obj (ramfuncs)
                      003f592f    00000028     main.obj (ramfuncs:retain)
                      003f5957    00000016     driverlib.lib : flash.obj (ramfuncs:_FLASH_setup)
                      003f596d    00000007                   : flash.obj (ramfuncs:_FLASH_setNumPagedReadWaitStates)
                      003f5974    00000007                   : flash.obj (ramfuncs:_FLASH_setNumRandomReadWaitStates)
                      003f597b    00000007                   : flash.obj (ramfuncs:_FLASH_setOtpWaitStates)
                      003f5982    00000006                   : flash.obj (ramfuncs:_FLASH_enablePipelineMode)
                      003f5988    00000005                   : flash.obj (ramfuncs:_FLASH_setActiveWaitCount)
                      003f598d    00000005                   : flash.obj (ramfuncs:_FLASH_setStandbyWaitCount)
                      003f5992    00000004                   : f2802xx_asmfuncs.obj (ramfuncs)
    
    .cinit     0    003f5d92    00000111     
                      003f5d92    00000091     main.obj (.cinit)
                      003f5e23    00000043     main.obj (.cinit:_out)
                      003f5e66    00000023     main.obj (.cinit:_message)
                      003f5e89    0000000e     rts2800_ml.lib : exit.c.obj (.cinit)
                      003f5e97    00000005                    : _lock.c.obj (.cinit:__lock)
                      003f5e9c    00000005                    : _lock.c.obj (.cinit:__unlock)
                      003f5ea1    00000002     --HOLE-- [fill = 0]
    
    DevEmuRegsFile 
    *          1    00000880    00000004     UNINITIALIZED
                      00000880    00000004     F2802x_GlobalVariableDefs.obj (DevEmuRegsFile)
    
    SysPwrCtrlRegsFile 
    *          1    00000985    00000003     UNINITIALIZED
                      00000985    00000003     F2802x_GlobalVariableDefs.obj (SysPwrCtrlRegsFile)
    
    FlashRegsFile 
    *          1    00000a80    00000008     UNINITIALIZED
                      00000a80    00000008     F2802x_GlobalVariableDefs.obj (FlashRegsFile)
    
    CsmRegsFile 
    *          1    00000ae0    00000010     UNINITIALIZED
                      00000ae0    00000010     F2802x_GlobalVariableDefs.obj (CsmRegsFile)
    
    AdcResultFile 
    *          1    00000b00    00000020     UNINITIALIZED
                      00000b00    00000020     F2802x_GlobalVariableDefs.obj (AdcResultFile)
    
    CpuTimer0RegsFile 
    *          1    00000c00    00000008     UNINITIALIZED
                      00000c00    00000008     F2802x_GlobalVariableDefs.obj (CpuTimer0RegsFile)
    
    CpuTimer1RegsFile 
    *          1    00000c08    00000008     UNINITIALIZED
                      00000c08    00000008     F2802x_GlobalVariableDefs.obj (CpuTimer1RegsFile)
    
    CpuTimer2RegsFile 
    *          1    00000c10    00000008     UNINITIALIZED
                      00000c10    00000008     F2802x_GlobalVariableDefs.obj (CpuTimer2RegsFile)
    
    PieCtrlRegsFile 
    *          1    00000ce0    0000001a     UNINITIALIZED
                      00000ce0    0000001a     F2802x_GlobalVariableDefs.obj (PieCtrlRegsFile)
    
    PieVectTableFile 
    *          1    00000d00    00000100     UNINITIALIZED
                      00000d00    00000100     F2802x_GlobalVariableDefs.obj (PieVectTableFile)
    
    EmuKeyVar 
    *          1    00000d00    00000001     UNINITIALIZED
                      00000d00    00000001     F2802x_GlobalVariableDefs.obj (EmuKeyVar)
    
    EmuBModeVar 
    *          1    00000d01    00000001     UNINITIALIZED
                      00000d01    00000001     F2802x_GlobalVariableDefs.obj (EmuBModeVar)
    
    FlashCallbackVar 
    *          1    00000d02    00000002     UNINITIALIZED
                      00000d02    00000002     F2802x_GlobalVariableDefs.obj (FlashCallbackVar)
    
    FlashScalingVar 
    *          1    00000d04    00000002     UNINITIALIZED
                      00000d04    00000002     F2802x_GlobalVariableDefs.obj (FlashScalingVar)
    
    Comp1RegsFile 
    *          1    00006400    00000020     UNINITIALIZED
                      00006400    00000020     F2802x_GlobalVariableDefs.obj (Comp1RegsFile)
    
    Comp2RegsFile 
    *          1    00006420    00000020     UNINITIALIZED
                      00006420    00000020     F2802x_GlobalVariableDefs.obj (Comp2RegsFile)
    
    EPwm1RegsFile 
    *          1    00006800    00000040     UNINITIALIZED
                      00006800    00000040     F2802x_GlobalVariableDefs.obj (EPwm1RegsFile)
    
    EPwm2RegsFile 
    *          1    00006840    00000040     UNINITIALIZED
                      00006840    00000040     F2802x_GlobalVariableDefs.obj (EPwm2RegsFile)
    
    EPwm3RegsFile 
    *          1    00006880    00000040     UNINITIALIZED
                      00006880    00000040     F2802x_GlobalVariableDefs.obj (EPwm3RegsFile)
    
    EPwm4RegsFile 
    *          1    000068c0    00000040     UNINITIALIZED
                      000068c0    00000040     F2802x_GlobalVariableDefs.obj (EPwm4RegsFile)
    
    ECap1RegsFile 
    *          1    00006a00    00000020     UNINITIALIZED
                      00006a00    00000020     F2802x_GlobalVariableDefs.obj (ECap1RegsFile)
    
    GpioCtrlRegsFile 
    *          1    00006f80    00000040     UNINITIALIZED
                      00006f80    00000040     F2802x_GlobalVariableDefs.obj (GpioCtrlRegsFile)
    
    GpioDataRegsFile 
    *          1    00006fc0    00000020     UNINITIALIZED
                      00006fc0    00000020     F2802x_GlobalVariableDefs.obj (GpioDataRegsFile)
    
    GpioIntRegsFile 
    *          1    00006fe0    0000000a     UNINITIALIZED
                      00006fe0    0000000a     F2802x_GlobalVariableDefs.obj (GpioIntRegsFile)
    
    SysCtrlRegsFile 
    *          1    00007010    0000001f     UNINITIALIZED
                      00007010    0000001f     F2802x_GlobalVariableDefs.obj (SysCtrlRegsFile)
    
    SpiaRegsFile 
    *          1    00007040    00000010     UNINITIALIZED
                      00007040    00000010     F2802x_GlobalVariableDefs.obj (SpiaRegsFile)
    
    SciaRegsFile 
    *          1    00007050    00000010     UNINITIALIZED
                      00007050    00000010     F2802x_GlobalVariableDefs.obj (SciaRegsFile)
    
    NmiIntruptRegsFile 
    *          1    00007060    00000010     UNINITIALIZED
                      00007060    00000010     F2802x_GlobalVariableDefs.obj (NmiIntruptRegsFile)
    
    XIntruptRegsFile 
    *          1    00007070    00000010     UNINITIALIZED
                      00007070    00000010     F2802x_GlobalVariableDefs.obj (XIntruptRegsFile)
    
    AdcRegsFile 
    *          1    00007100    00000051     UNINITIALIZED
                      00007100    00000051     F2802x_GlobalVariableDefs.obj (AdcRegsFile)
    
    I2caRegsFile 
    *          1    00007900    00000022     UNINITIALIZED
                      00007900    00000022     F2802x_GlobalVariableDefs.obj (I2caRegsFile)
    
    PartIdRegsFile 
    *          1    003d7fff    00000001     UNINITIALIZED
                      003d7fff    00000001     F2802x_GlobalVariableDefs.obj (PartIdRegsFile)
    
    CsmPwlFile 
    *          1    003f7ff8    00000008     UNINITIALIZED
                      003f7ff8    00000008     F2802x_GlobalVariableDefs.obj (CsmPwlFile)
    
    .pinit     0    003f4000    00000000     UNINITIALIZED
    
    .text      0    003f4000    0000134b     
                      003f4000    0000099c     main.obj (.text)
                      003f499c    00000251     clk.obj (.text)
                      003f4bed    00000083     rts2800_ml.lib : fd_mpy28.asm.obj (.text)
                      003f4c70    00000078                    : fs_add28.asm.obj (.text)
                      003f4ce8    0000005a                    : fs_mpy28.asm.obj (.text)
                      003f4d42    00000054                    : boot28.asm.obj (.text)
                      003f4d96    00000048     driverlib.lib : gpio.obj (.text:_GPIO_setMode)
                      003f4dde    00000031     rts2800_ml.lib : atoi.c.obj (.text)
                      003f4e0f    00000029     driverlib.lib : gpio.obj (.text:_GPIO_setDirection)
                      003f4e38    00000029                   : gpio.obj (.text:_GPIO_setPullUp)
                      003f4e61    00000029     rts2800_ml.lib : exit.c.obj (.text)
                      003f4e8a    00000027     driverlib.lib : gpio.obj (.text:_GPIO_setQualification)
                      003f4eb1    00000024     rts2800_ml.lib : cpy_tbl.c.obj (.text)
                      003f4ed5    00000022     driverlib.lib : adc.obj (.text:_ADC_setIntMode)
                      003f4ef7    00000022                   : adc.obj (.text:_ADC_setIntSrc)
                      003f4f19    00000022     rts2800_ml.lib : i_div28.asm.obj (.text)
                      003f4f3b    0000001f                    : fd_tol28.asm.obj (.text)
                      003f4f5a    0000001d                    : memcpy.c.obj (.text)
                      003f4f77    0000001c                    : fs_tofd28.asm.obj (.text)
                      003f4f93    0000001a                    : i_tofs28.asm.obj (.text)
                      003f4fad    0000001a                    : l_tofs28.asm.obj (.text)
                      003f4fc7    00000017     driverlib.lib : adc.obj (.text:_ADC_enableInt)
                      003f4fde    00000017     rts2800_ml.lib : fs_cmp28.asm.obj (.text)
                      003f4ff5    00000015     driverlib.lib : pll.obj (.text:_PLL_setup)
                      003f500a    00000014                   : gpio.obj (.text:_GPIO_setHigh)
                      003f501e    00000014                   : gpio.obj (.text:_GPIO_setLow)
                      003f5032    00000014                   : gpio.obj (.text:_GPIO_toggle)
                      003f5046    00000014                   : pie.obj (.text:_PIE_enableAdcInt)
                      003f505a    00000012                   : adc.obj (.text:_ADC_setSocChanNumber)
                      003f506c    00000012                   : adc.obj (.text:_ADC_setSocSampleWindow)
                      003f507e    00000012                   : adc.obj (.text:_ADC_setSocTrigSrc)
                      003f5090    00000011                   : adc.obj (.text:_ADC_setIntPulseGenMode)
                      003f50a1    00000011                   : adc.obj (.text:_ADC_setVoltRefSrc)
                      003f50b2    00000011                   : gpio.obj (.text:_GPIO_getData)
                      003f50c3    00000011                   : pie.obj (.text:_PIE_disableAllInts)
                      003f50d4    00000011                   : pie.obj (.text:_PIE_setDebugIntVectorTable)
                      003f50e5    00000011     rts2800_ml.lib : args_main.c.obj (.text)
                      003f50f6    0000000f     driverlib.lib : pie.obj (.text:_PIE_registerPieIntHandler)
                      003f5105    0000000b     rts2800_ml.lib : u_div28.asm.obj (.text)
                      003f5110    0000000a     driverlib.lib : adc.obj (.text:_ADC_enable)
                      003f511a    0000000a                   : adc.obj (.text:_ADC_enableBandGap)
                      003f5124    0000000a                   : adc.obj (.text:_ADC_enableRefBuffers)
                      003f512e    0000000a                   : adc.obj (.text:_ADC_init)
                      003f5138    0000000a                   : adc.obj (.text:_ADC_powerUp)
                      003f5142    0000000a                   : pie.obj (.text:_PIE_init)
                      003f514c    0000000a                   : wdog.obj (.text:_WDOG_setPreScaler)
                      003f5156    0000000a                   : f2802xx_asmfuncs.obj (.text)
                      003f5160    0000000a     rts2800_ml.lib : strcmp.c.obj (.text)
                      003f516a    00000009     driverlib.lib : pwm.obj (.text:_PWM_setSocAPeriod)
                      003f5173    00000009                   : pwm.obj (.text:_PWM_setSocAPulseSrc)
                      003f517c    00000009                   : sci.obj (.text:_SCI_putDataBlocking)
                      003f5185    00000009     rts2800_ml.lib : _lock.c.obj (.text)
                      003f518e    00000008     driverlib.lib : flash.obj (.text:_FLASH_init)
                      003f5196    00000008                   : gpio.obj (.text:_GPIO_init)
                      003f519e    00000008                   : pll.obj (.text:_PLL_init)
                      003f51a6    00000008                   : pwm.obj (.text:_PWM_init)
                      003f51ae    00000008                   : sci.obj (.text:_SCI_getDataBlocking)
                      003f51b6    00000008                   : sci.obj (.text:_SCI_init)
                      003f51be    00000008                   : wdog.obj (.text:_WDOG_clearCounter)
                      003f51c6    00000008                   : wdog.obj (.text:_WDOG_disable)
                      003f51ce    00000008                   : wdog.obj (.text:_WDOG_init)
                      003f51d6    00000008     f2802x_codestartbranch.obj (.text)
                      003f51de    00000008     rts2800_ml.lib : strlen.c.obj (.text)
                      003f51e6    00000007     driverlib.lib : pll.obj (.text:_PLL_setDivider)
                      003f51ed    00000006                   : pll.obj (.text:_PLL_setMultiplier)
                      003f51f3    00000006                   : sci.obj (.text:_SCI_setBaudRate)
                      003f51f9    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT1_ISR)
                      003f51fe    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT2_ISR)
                      003f5203    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT3_ISR)
                      003f5208    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT4_ISR)
                      003f520d    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT5_ISR)
                      003f5212    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT6_ISR)
                      003f5217    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT7_ISR)
                      003f521c    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT8_ISR)
                      003f5221    00000005                   : f2802xx_defaultisr.obj (.text:_ADCINT9_ISR)
                      003f5226    00000005                   : f2802xx_defaultisr.obj (.text:_DATALOG_ISR)
                      003f522b    00000005                   : f2802xx_defaultisr.obj (.text:_ECAP1_INT_ISR)
                      003f5230    00000005                   : f2802xx_defaultisr.obj (.text:_EMPTY_ISR)
                      003f5235    00000005                   : f2802xx_defaultisr.obj (.text:_EMUINT_ISR)
                      003f523a    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM1_INT_ISR)
                      003f523f    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM1_TZINT_ISR)
                      003f5244    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM2_INT_ISR)
                      003f5249    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM2_TZINT_ISR)
                      003f524e    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM3_INT_ISR)
                      003f5253    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM3_TZINT_ISR)
                      003f5258    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM4_INT_ISR)
                      003f525d    00000005                   : f2802xx_defaultisr.obj (.text:_EPWM4_TZINT_ISR)
                      003f5262    00000005                   : f2802xx_defaultisr.obj (.text:_I2CINT1A_ISR)
                      003f5267    00000005                   : f2802xx_defaultisr.obj (.text:_I2CINT2A_ISR)
                      003f526c    00000005                   : f2802xx_defaultisr.obj (.text:_ILLEGAL_ISR)
                      003f5271    00000005                   : f2802xx_defaultisr.obj (.text:_INT13_ISR)
                      003f5276    00000005                   : f2802xx_defaultisr.obj (.text:_INT14_ISR)
                      003f527b    00000005                   : f2802xx_defaultisr.obj (.text:_NMI_ISR)
                      003f5280    00000005                   : f2802xx_defaultisr.obj (.text:_PIE_RESERVED)
                      003f5285    00000005                   : pie.obj (.text:_PIE_illegalIsr)
                      003f528a    00000005                   : f2802xx_defaultisr.obj (.text:_RTOSINT_ISR)
                      003f528f    00000005                   : f2802xx_defaultisr.obj (.text:_SCIRXINTA_ISR)
                      003f5294    00000005                   : f2802xx_defaultisr.obj (.text:_SCITXINTA_ISR)
                      003f5299    00000005                   : f2802xx_defaultisr.obj (.text:_SPIRXINTA_ISR)
                      003f529e    00000005                   : f2802xx_defaultisr.obj (.text:_SPITXINTA_ISR)
                      003f52a3    00000005                   : f2802xx_defaultisr.obj (.text:_TINT0_ISR)
                      003f52a8    00000005                   : f2802xx_defaultisr.obj (.text:_USER10_ISR)
                      003f52ad    00000005                   : f2802xx_defaultisr.obj (.text:_USER11_ISR)
                      003f52b2    00000005                   : f2802xx_defaultisr.obj (.text:_USER12_ISR)
                      003f52b7    00000005                   : f2802xx_defaultisr.obj (.text:_USER1_ISR)
                      003f52bc    00000005                   : f2802xx_defaultisr.obj (.text:_USER2_ISR)
                      003f52c1    00000005                   : f2802xx_defaultisr.obj (.text:_USER3_ISR)
                      003f52c6    00000005                   : f2802xx_defaultisr.obj (.text:_USER4_ISR)
                      003f52cb    00000005                   : f2802xx_defaultisr.obj (.text:_USER5_ISR)
                      003f52d0    00000005                   : f2802xx_defaultisr.obj (.text:_USER6_ISR)
                      003f52d5    00000005                   : f2802xx_defaultisr.obj (.text:_USER7_ISR)
                      003f52da    00000005                   : f2802xx_defaultisr.obj (.text:_USER8_ISR)
                      003f52df    00000005                   : f2802xx_defaultisr.obj (.text:_USER9_ISR)
                      003f52e4    00000005                   : f2802xx_defaultisr.obj (.text:_WAKEINT_ISR)
                      003f52e9    00000005                   : f2802xx_defaultisr.obj (.text:_XINT1_ISR)
                      003f52ee    00000005                   : f2802xx_defaultisr.obj (.text:_XINT2_ISR)
                      003f52f3    00000005                   : f2802xx_defaultisr.obj (.text:_XINT3_ISR)
                      003f52f8    00000005                   : f2802xx_defaultisr.obj (.text:_rsvd_ISR)
                      003f52fd    00000005     rts2800_ml.lib : strcpy.c.obj (.text)
                      003f5302    00000004     driverlib.lib : cpu.obj (.text:_CPU_enableInt)
                      003f5306    00000004                   : cpu.obj (.text:_CPU_init)
                      003f530a    00000004                   : pwm.obj (.text:_PWM_enableSocAPulse)
                      003f530e    00000004                   : pwm.obj (.text:_PWM_setCounterMode)
                      003f5312    00000004                   : sci.obj (.text:_SCI_setCharLength)
                      003f5316    00000004                   : sci.obj (.text:_SCI_setNumStopBits)
                      003f531a    00000003                   : cpu.obj (.text:_CPU_clearIntFlags)
                      003f531d    00000003                   : cpu.obj (.text:_CPU_disableGlobalInts)
                      003f5320    00000003                   : cpu.obj (.text:_CPU_enableDebugInt)
                      003f5323    00000003                   : cpu.obj (.text:_CPU_enableGlobalInts)
                      003f5326    00000003                   : pie.obj (.text:_PIE_disable)
                      003f5329    00000003                   : pie.obj (.text:_PIE_enable)
                      003f532c    00000003                   : pll.obj (.text:_PLL_getClkStatus)
                      003f532f    00000003                   : pll.obj (.text:_PLL_getLockStatus)
                      003f5332    00000003                   : sci.obj (.text:_SCI_disableParity)
                      003f5335    00000003                   : sci.obj (.text:_SCI_enable)
                      003f5338    00000003                   : sci.obj (.text:_SCI_enableRx)
                      003f533b    00000003                   : sci.obj (.text:_SCI_enableRxInt)
                      003f533e    00000003                   : sci.obj (.text:_SCI_enableTx)
                      003f5341    00000003                   : sci.obj (.text:_SCI_enableTxInt)
                      003f5344    00000002                   : pwm.obj (.text:_PWM_setPeriod)
                      003f5346    00000002                   : wdog.obj (.text:_WDOG_setCount)
                      003f5348    00000002     rts2800_ml.lib : pre_init.c.obj (.text)
                      003f534a    00000001                    : startup.c.obj (.text)
    
    codestart 
    *          0    003f7ff6    00000002     
                      003f7ff6    00000002     f2802x_codestartbranch.obj (codestart)
    
    .stack     1    00008100    00000200     UNINITIALIZED
                      00008100    00000200     --HOLE--
    
    .ebss      1    00008300    000000c0     UNINITIALIZED
                      00008300    0000004f     main.obj (.ebss)
                      0000834f    00000020     main.obj (.ebss:_message)
                      0000836f    00000001     driverlib.lib : cpu.obj (.ebss)
                      00008370    00000006     rts2800_ml.lib : exit.c.obj (.ebss)
                      00008376    00000002                    : _lock.c.obj (.ebss:__lock)
                      00008378    00000002                    : _lock.c.obj (.ebss:__unlock)
                      0000837a    00000006     --HOLE--
                      00008380    00000040     main.obj (.ebss:_out)
    
    .econst    0    003f5996    000003fc     
                      003f5996    000001d9     main.obj (.econst:.string)
                      003f5b6f    00000101     rts2800_ml.lib : ctype.c.obj (.econst:.string:__ctypes_)
                      003f5c70    00000100     driverlib.lib : pie.obj (.econst:_PIE_tableDebugInit)
                      003f5d70    00000017     main.obj (.econst:_volMap)
                      003f5d87    00000006     main.obj (.econst:.string:_$P$T0$1)
                      003f5d8d    00000001     --HOLE-- [fill = 0]
                      003f5d8e    00000004     main.obj (.econst)
    
    .switch    0    003f5ea4    0000002e     
                      003f5ea4    0000002e     main.obj (.switch:_runCommand)
    
    .reset     0    003fffc0    00000002     DSECT
                      003fffc0    00000002     rts2800_ml.lib : boot28.asm.obj (.reset)
    
    vectors    0    003fffc2    00000000     DSECT
    
    MODULE SUMMARY
    
           Module                          code   initialized data   uninitialized data
           ------                          ----   ----------------   ------------------
        .\
           main.obj                        5556   799                175               
           F2802x_GlobalVariableDefs.obj   0      0                  1052              
           clk.obj                         593    0                  0                 
           f2802x_codestartbranch.obj      10     0                  0                 
        +--+-------------------------------+------+------------------+--------------------+
           Total:                          6159   799                1227              
                                                                                       
        C:/ti/C2000Ware_4_00_00_00/device_support/f2802x/common/ccs/Debug/driverlib.lib
           pie.obj                         90     256                0                 
           gpio.obj                        278    0                  0                 
           f2802xx_defaultisr.obj          255    0                  0                 
           adc.obj                         229    0                  0                 
           flash.obj                       126    0                  0                 
           sci.obj                         57     0                  0                 
           pll.obj                         48     0                  0                 
           pwm.obj                         36     0                  0                 
           wdog.obj                        36     0                  0                 
           cpu.obj                         20     0                  1                 
           f2802xx_asmfuncs.obj            18     0                  0                 
        +--+-------------------------------+------+------------------+--------------------+
           Total:                          1193   256                1                 
                                                                                       
        C:/ti/ccs1020/ccs/tools/compiler/ti-cgt-c2000_21.6.0.LTS/lib/rts2800_ml.lib
           ctype.c.obj                     0      257                0                 
           fd_mpy28.asm.obj                131    0                  0                 
           fs_add28.asm.obj                120    0                  0                 
           fs_mpy28.asm.obj                90     0                  0                 
           boot28.asm.obj                  84     0                  0                 
           exit.c.obj                      41     14                 6                 
           atoi.c.obj                      49     0                  0                 
           cpy_tbl.c.obj                   36     0                  0                 
           i_div28.asm.obj                 34     0                  0                 
           fd_tol28.asm.obj                31     0                  0                 
           memcpy.c.obj                    29     0                  0                 
           fs_tofd28.asm.obj               28     0                  0                 
           i_tofs28.asm.obj                26     0                  0                 
           l_tofs28.asm.obj                26     0                  0                 
           _lock.c.obj                     9      10                 4                 
           fs_cmp28.asm.obj                23     0                  0                 
           args_main.c.obj                 17     0                  0                 
           u_div28.asm.obj                 11     0                  0                 
           strcmp.c.obj                    10     0                  0                 
           strlen.c.obj                    8      0                  0                 
           strcpy.c.obj                    5      0                  0                 
           pre_init.c.obj                  2      0                  0                 
           startup.c.obj                   1      0                  0                 
        +--+-------------------------------+------+------------------+--------------------+
           Total:                          811    281                10                
                                                                                       
        C:\ti\C2000Ware_4_00_00_00\libraries\math\IQmath\c28\lib\IQmath_coff.lib
           IQ24toF.obj                     20     0                  0                 
        +--+-------------------------------+------+------------------+--------------------+
           Total:                          20     0                  0                 
                                                                                       
           Stack:                          0      0                  512               
        +--+-------------------------------+------+------------------+--------------------+
           Grand Total:                    8183   1336               1750              
    
    
    GLOBAL DATA SYMBOLS: SORTED BY DATA PAGE
    
    address     data page           name
    --------    ----------------    ----
    00000880      22 (00000880)     _DevEmuRegs
    
    00000985      26 (00000980)     _SysPwrCtrlRegs
    
    00000a80      2a (00000a80)     _FlashRegs
    
    00000ae0      2b (00000ac0)     _CsmRegs
    
    00000b00      2c (00000b00)     _AdcResult
    
    00000c00      30 (00000c00)     _CpuTimer0Regs
    00000c08      30 (00000c00)     _CpuTimer1Regs
    00000c10      30 (00000c00)     _CpuTimer2Regs
    
    00000ce0      33 (00000cc0)     _PieCtrlRegs
    
    00000d00      34 (00000d00)     _EmuKey
    00000d00      34 (00000d00)     _PieVectTable
    00000d01      34 (00000d00)     _EmuBMode
    00000d02      34 (00000d00)     _Flash_CallbackPtr
    00000d04      34 (00000d00)     _Flash_CPUScaleFactor
    
    00006400     190 (00006400)     _Comp1Regs
    00006420     190 (00006400)     _Comp2Regs
    
    00006800     1a0 (00006800)     _EPwm1Regs
    
    00006840     1a1 (00006840)     _EPwm2Regs
    
    00006880     1a2 (00006880)     _EPwm3Regs
    
    000068c0     1a3 (000068c0)     _EPwm4Regs
    
    00006a00     1a8 (00006a00)     _ECap1Regs
    
    00006f80     1be (00006f80)     _GpioCtrlRegs
    
    00006fc0     1bf (00006fc0)     _GpioDataRegs
    00006fe0     1bf (00006fc0)     _GpioIntRegs
    
    00007010     1c0 (00007000)     _SysCtrlRegs
    
    00007040     1c1 (00007040)     _SpiaRegs
    00007050     1c1 (00007040)     _SciaRegs
    00007060     1c1 (00007040)     _NmiIntruptRegs
    00007070     1c1 (00007040)     _XIntruptRegs
    
    00007100     1c4 (00007100)     _AdcRegs
    
    00007900     1e4 (00007900)     _I2caRegs
    
    00008100     204 (00008100)     __stack
    
    00008305     20c (00008300)     _ErrorCount
    00008306     20c (00008300)     _rdvCount
    00008307     20c (00008300)     _redLED
    00008308     20c (00008300)     _blueLED
    00008309     20c (00008300)     _greenLED
    0000830a     20c (00008300)     _detectVar
    0000830b     20c (00008300)     _redSwPressed
    0000830c     20c (00008300)     _previousRed
    0000830d     20c (00008300)     _greenSwPressed
    0000830e     20c (00008300)     _previousGreen
    0000830f     20c (00008300)     _rdvWordCount
    00008310     20c (00008300)     _byteReceived
    00008311     20c (00008300)     _idleCounter1
    00008312     20c (00008300)     _idleCounter2
    00008313     20c (00008300)     _tempByte
    00008314     20c (00008300)     _newSampleFlag
    00008315     20c (00008300)     _detectorAverage_FastCounter
    00008316     20c (00008300)     _releaseCounter
    00008317     20c (00008300)     _attackDelay
    00008318     20c (00008300)     _releaseDelay
    00008319     20c (00008300)     _currentSource
    0000831a     20c (00008300)     _numBytes
    0000831c     20c (00008300)     _adcResult_long_A0
    0000831e     20c (00008300)     _adcZeroed_A0
    00008320     20c (00008300)     _adcRectified_A0
    00008322     20c (00008300)     _adcResult_long_A2
    00008324     20c (00008300)     _adcResult_float
    00008326     20c (00008300)     _adcResult_iq
    00008328     20c (00008300)     _adcAverageFast
    0000832a     20c (00008300)     _adcAverageFast_float
    0000832c     20c (00008300)     _adcAverageMedium
    0000832e     20c (00008300)     _adcAverageSlow
    00008330     20c (00008300)     _rectified_iq
    00008332     20c (00008300)     _rectifiedSignal
    00008334     20c (00008300)     _detectorAverage_Fast
    00008336     20c (00008300)     _detectorAverage_Medium
    00008338     20c (00008300)     _detectorAverage_Slow
    0000833a     20c (00008300)     _attackThreshold
    0000833c     20c (00008300)     _releaseThreshold
    0000833e     20c (00008300)     _myAdc
    
    00008340     20d (00008340)     _myClk
    00008342     20d (00008340)     _myFlash
    00008344     20d (00008340)     _myGpio
    00008346     20d (00008340)     _myPie
    00008348     20d (00008340)     _mySci
    0000834a     20d (00008340)     _myPwm
    0000834c     20d (00008340)     _cm
    0000834f     20d (00008340)     _message
    0000836f     20d (00008340)     _cpu
    00008370     20d (00008340)     ___TI_enable_exit_profile_output
    00008372     20d (00008340)     ___TI_cleanup_ptr
    00008374     20d (00008340)     ___TI_dtors_ptr
    00008376     20d (00008340)     __lock
    00008378     20d (00008340)     __unlock
    
    00008380     20e (00008380)     _out
    
    003d7fff    f5ff (003d7fc0)     _PartIdRegs
    
    003f5b6f    fd6d (003f5b40)     __ctypes_
    
    003f5c70    fd71 (003f5c40)     _PIE_tableDebugInit
    
    003f5d70    fd75 (003f5d40)     _volMap
    
    003f7ff8    fdff (003f7fc0)     _CsmPwl
    
    
    GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name 
    
    page  address   name                             
    ----  -------   ----                             
    0     003f4000  .text                            
    0     003f4e61  C$$EXIT                          
    0     003f4bed  FD$$MPY                          
    0     003f4f3b  FD$$TOL                          
    0     003f4c75  FS$$ADD                          
    0     003f4fde  FS$$CMP                          
    0     003f4ce8  FS$$MPY                          
    0     003f4c70  FS$$SUB                          
    0     003f4f77  FS$$TOFD                         
    0     003f4f19  I$$DIV                           
    0     003f4f2a  I$$MOD                           
    0     003f4f93  I$$TOFS                          
    0     003f4fad  L$$TOFS                          
    0     003f5105  U$$DIV                           
    0     003f510a  U$$MOD                           
    0     003f51f9  _ADCINT1_ISR                     
    0     003f51fe  _ADCINT2_ISR                     
    0     003f5203  _ADCINT3_ISR                     
    0     003f5208  _ADCINT4_ISR                     
    0     003f520d  _ADCINT5_ISR                     
    0     003f5212  _ADCINT6_ISR                     
    0     003f5217  _ADCINT7_ISR                     
    0     003f521c  _ADCINT8_ISR                     
    0     003f5221  _ADCINT9_ISR                     
    0     003f5110  _ADC_enable                      
    0     003f511a  _ADC_enableBandGap               
    0     003f4fc7  _ADC_enableInt                   
    0     003f5124  _ADC_enableRefBuffers            
    0     003f512e  _ADC_init                        
    0     003f5138  _ADC_powerUp                     
    0     003f4ed5  _ADC_setIntMode                  
    0     003f5090  _ADC_setIntPulseGenMode          
    0     003f4ef7  _ADC_setIntSrc                   
    0     003f505a  _ADC_setSocChanNumber            
    0     003f506c  _ADC_setSocSampleWindow          
    0     003f507e  _ADC_setSocTrigSrc               
    0     003f50a1  _ADC_setVoltRefSrc               
    1     00007100  _AdcRegs                         
    1     00000b00  _AdcResult                       
    0     003f499c  _CLK_disableAdcClock             
    0     003f49aa  _CLK_disableClkIn                
    0     003f49b5  _CLK_disableCompClock            
    0     003f49c2  _CLK_disableCpuTimerClock        
    0     003f49d2  _CLK_disableCrystalOsc           
    0     003f49dd  _CLK_disableEcap1Clock           
    0     003f49eb  _CLK_disableGpioInputClock       
    0     003f49f9  _CLK_disableHrPwmClock           
    0     003f4a07  _CLK_disableI2cClock             
    0     003f4a15  _CLK_disableOsc1                 
    0     003f4a20  _CLK_disableOsc1HaltMode         
    0     003f4a2b  _CLK_disableOsc2                 
    0     003f4a36  _CLK_disableOsc2HaltMode         
    0     003f4a41  _CLK_disablePwmClock             
    0     003f4a53  _CLK_disableSciaClock            
    0     003f4a63  _CLK_disableSpiaClock            
    0     003f4a71  _CLK_disableTbClockSync          
    0     003f4a7f  _CLK_disableWatchDogHaltMode     
    0     003f4a8a  _CLK_enableAdcClock              
    0     003f4acf  _CLK_enableClkIn                 
    0     003f4a98  _CLK_enableCompClock             
    0     003f4aa7  _CLK_enableCpuTimerClock         
    0     003f4ab6  _CLK_enableCrystalOsc            
    0     003f4ac1  _CLK_enableEcap1Clock            
    0     003f4ada  _CLK_enableGpioInputClock        
    0     003f4ae8  _CLK_enableHrPwmClock            
    0     003f4af6  _CLK_enableI2cClock              
    0     003f4b04  _CLK_enableOsc1                  
    0     003f4b0f  _CLK_enableOsc1HaltMode          
    0     003f4b1a  _CLK_enableOsc2                  
    0     003f4b25  _CLK_enableOsc2HaltMode          
    0     003f4b30  _CLK_enablePwmClock              
    0     003f4b41  _CLK_enableSciaClock             
    0     003f4b51  _CLK_enableSpiaClock             
    0     003f4b5f  _CLK_enableTbClockSync           
    0     003f4b6d  _CLK_enableWatchDogHaltMode      
    0     003f4b78  _CLK_init                        
    0     003f4b84  _CLK_setClkOutPreScaler          
    0     003f4b93  _CLK_setLowSpdPreScaler          
    0     003f4bb1  _CLK_setOsc2Src                  
    0     003f4ba2  _CLK_setOscSrc                   
    0     003f4bc0  _CLK_setTimer2PreScale           
    0     003f4bcf  _CLK_setTimer2Src                
    0     003f4bde  _CLK_setWatchDogSrc              
    0     003f531a  _CPU_clearIntFlags               
    0     003f531d  _CPU_disableGlobalInts           
    0     003f5320  _CPU_enableDebugInt              
    0     003f5323  _CPU_enableGlobalInts            
    0     003f5302  _CPU_enableInt                   
    0     003f5306  _CPU_init                        
    1     00006400  _Comp1Regs                       
    1     00006420  _Comp2Regs                       
    1     00000c00  _CpuTimer0Regs                   
    1     00000c08  _CpuTimer1Regs                   
    1     00000c10  _CpuTimer2Regs                   
    1     003f7ff8  _CsmPwl                          
    1     00000ae0  _CsmRegs                         
    0     003f5226  _DATALOG_ISR                     
    0     003f5159  _DSP28x_DisableInt               
    0     003f515d  _DSP28x_RestoreInt               
    0     00000697  _DSP28x_usDelay                  
    1     00000880  _DevEmuRegs                      
    0     003f522b  _ECAP1_INT_ISR                   
    1     00006a00  _ECap1Regs                       
    0     003f5230  _EMPTY_ISR                       
    0     003f5235  _EMUINT_ISR                      
    0     003f523a  _EPWM1_INT_ISR                   
    0     003f523f  _EPWM1_TZINT_ISR                 
    0     003f5244  _EPWM2_INT_ISR                   
    0     003f5249  _EPWM2_TZINT_ISR                 
    0     003f524e  _EPWM3_INT_ISR                   
    0     003f5253  _EPWM3_TZINT_ISR                 
    0     003f5258  _EPWM4_INT_ISR                   
    0     003f525d  _EPWM4_TZINT_ISR                 
    1     00006800  _EPwm1Regs                       
    1     00006840  _EPwm2Regs                       
    1     00006880  _EPwm3Regs                       
    1     000068c0  _EPwm4Regs                       
    1     00000d01  _EmuBMode                        
    1     00000d00  _EmuKey                          
    1     00008305  _ErrorCount                      
    0     00000687  _FLASH_enablePipelineMode        
    0     003f518e  _FLASH_init                      
    0     0000068d  _FLASH_setActiveWaitCount        
    0     00000672  _FLASH_setNumPagedReadWaitStates 
    0     00000679  _FLASH_setNumRandomReadWaitStates
    0     00000680  _FLASH_setOtpWaitStates          
    0     00000692  _FLASH_setStandbyWaitCount       
    0     0000065c  _FLASH_setup                     
    1     00000a80  _FlashRegs                       
    1     00000d04  _Flash_CPUScaleFactor            
    1     00000d02  _Flash_CallbackPtr               
    0     003f50b2  _GPIO_getData                    
    0     003f5196  _GPIO_init                       
    0     003f4e0f  _GPIO_setDirection               
    0     003f500a  _GPIO_setHigh                    
    0     003f501e  _GPIO_setLow                     
    0     003f4d96  _GPIO_setMode                    
    0     003f4e38  _GPIO_setPullUp                  
    0     003f4e8a  _GPIO_setQualification           
    0     003f5032  _GPIO_toggle                     
    1     00006f80  _GpioCtrlRegs                    
    1     00006fc0  _GpioDataRegs                    
    1     00006fe0  _GpioIntRegs                     
    0     003f5262  _I2CINT1A_ISR                    
    0     003f5267  _I2CINT2A_ISR                    
    0     003f48ea  _I2C_init_CTE                    
    1     00007900  _I2caRegs                        
    0     003f526c  _ILLEGAL_ISR                     
    0     003f5271  _INT13_ISR                       
    0     003f5276  _INT14_ISR                       
    0     003f527b  _NMI_ISR                         
    1     00007060  _NmiIntruptRegs                  
    0     003f5280  _PIE_RESERVED                    
    0     003f5326  _PIE_disable                     
    0     003f50c3  _PIE_disableAllInts              
    0     003f5329  _PIE_enable                      
    0     003f5046  _PIE_enableAdcInt                
    0     003f5285  _PIE_illegalIsr                  
    0     003f5142  _PIE_init                        
    0     003f50f6  _PIE_registerPieIntHandler       
    0     003f50d4  _PIE_setDebugIntVectorTable      
    0     003f5c70  _PIE_tableDebugInit              
    0     003f532c  _PLL_getClkStatus                
    0     003f532f  _PLL_getLockStatus               
    0     003f519e  _PLL_init                        
    0     003f51e6  _PLL_setDivider                  
    0     003f51ed  _PLL_setMultiplier               
    0     003f4ff5  _PLL_setup                       
    0     003f530a  _PWM_enableSocAPulse             
    0     003f51a6  _PWM_init                        
    0     003f530e  _PWM_setCounterMode              
    0     003f5344  _PWM_setPeriod                   
    0     003f516a  _PWM_setSocAPeriod               
    0     003f5173  _PWM_setSocAPulseSrc             
    1     003d7fff  _PartIdRegs                      
    1     00000ce0  _PieCtrlRegs                     
    1     00000d00  _PieVectTable                    
    0     003f528a  _RTOSINT_ISR                     
    0     00008000  _RamfuncsL0LoadEnd               
    abs   00000000  _RamfuncsL0LoadSize              
    0     00008000  _RamfuncsL0LoadStart             
    0     00008000  _RamfuncsL0RunStart              
    0     003f5996  _RamfuncsLoadEnd                 
    abs   0000064b  _RamfuncsLoadSize                
    0     003f534b  _RamfuncsLoadStart               
    0     00000050  _RamfuncsRunStart                
    0     003f528f  _SCIRXINTA_ISR                   
    0     003f5294  _SCITXINTA_ISR                   
    0     003f5332  _SCI_disableParity               
    0     003f5335  _SCI_enable                      
    0     003f5338  _SCI_enableRx                    
    0     003f533b  _SCI_enableRxInt                 
    0     003f533e  _SCI_enableTx                    
    0     003f5341  _SCI_enableTxInt                 
    0     003f51ae  _SCI_getDataBlocking             
    0     003f51b6  _SCI_init                        
    0     003f517c  _SCI_putDataBlocking             
    0     003f51f3  _SCI_setBaudRate                 
    0     003f5312  _SCI_setCharLength               
    0     003f5316  _SCI_setNumStopBits              
    0     003f5299  _SPIRXINTA_ISR                   
    0     003f529e  _SPITXINTA_ISR                   
    1     00007050  _SciaRegs                        
    1     00007040  _SpiaRegs                        
    1     00007010  _SysCtrlRegs                     
    1     00000985  _SysPwrCtrlRegs                  
    0     003f52a3  _TINT0_ISR                       
    0     003f52a8  _USER10_ISR                      
    0     003f52ad  _USER11_ISR                      
    0     003f52b2  _USER12_ISR                      
    0     003f52b7  _USER1_ISR                       
    0     003f52bc  _USER2_ISR                       
    0     003f52c1  _USER3_ISR                       
    0     003f52c6  _USER4_ISR                       
    0     003f52cb  _USER5_ISR                       
    0     003f52d0  _USER6_ISR                       
    0     003f52d5  _USER7_ISR                       
    0     003f52da  _USER8_ISR                       
    0     003f52df  _USER9_ISR                       
    0     003f52e4  _WAKEINT_ISR                     
    0     003f51be  _WDOG_clearCounter               
    0     003f51c6  _WDOG_disable                    
    0     003f51ce  _WDOG_init                       
    0     003f5346  _WDOG_setCount                   
    0     003f514c  _WDOG_setPreScaler               
    0     003f52e9  _XINT1_ISR                       
    0     003f52ee  _XINT2_ISR                       
    0     003f52f3  _XINT3_ISR                       
    1     00007070  _XIntruptRegs                    
    0     00008000  __IQ24toF                        
    1     00008300  __STACK_END                      
    abs   00000200  __STACK_SIZE                     
    1     00008372  ___TI_cleanup_ptr                
    1     00008374  ___TI_dtors_ptr                  
    1     00008370  ___TI_enable_exit_profile_output 
    abs   ffffffff  ___TI_pprof_out_hndl             
    abs   ffffffff  ___TI_prof_data_size             
    abs   ffffffff  ___TI_prof_data_start            
    abs   ffffffff  ___binit__                       
    abs   ffffffff  ___c_args__                      
    0     003f5d92  ___cinit__                       
    0     003f534b  ___etext__                       
    abs   ffffffff  ___pinit__                       
    0     003f4000  ___text__                        
    0     003f50e5  __args_main                      
    0     003f5b6f  __ctypes_                        
    1     00008376  __lock                           
    0     003f518d  __nop                            
    0     003f5189  __register_lock                  
    0     003f5185  __register_unlock                
    1     00008100  __stack                          
    0     003f534a  __system_post_cinit              
    0     003f5348  __system_pre_init                
    1     00008378  __unlock                         
    0     003f4e61  _abort                           
    1     00008328  _adcAverageFast                  
    1     0000832a  _adcAverageFast_float            
    1     0000832c  _adcAverageMedium                
    1     0000832e  _adcAverageSlow                  
    1     00008320  _adcRectified_A0                 
    1     00008324  _adcResult_float                 
    1     00008326  _adcResult_iq                    
    1     0000831c  _adcResult_long_A0               
    1     00008322  _adcResult_long_A2               
    1     0000831e  _adcZeroed_A0                    
    0     00000634  _adc_isr                         
    0     003f4dde  _atoi                            
    1     00008317  _attackDelay                     
    1     0000833a  _attackThreshold                 
    1     00008308  _blueLED                         
    1     00008310  _byteReceived                    
    0     003f4d42  _c_int00                         
    0     00000050  _checkValid                      
    1     0000834c  _cm                              
    0     003f4eb1  _copy_in                         
    1     0000836f  _cpu                             
    1     00008319  _currentSource                   
    0     003f40fd  _decrementInputVolumeAmbient     
    0     003f41a7  _decrementInputVolumeDetect      
    0     003f4153  _decrementInputVolumeTeacher     
    0     003f41fb  _decrementOuputVolumeMaster      
    1     0000830a  _detectVar                       
    1     00008334  _detectorAverage_Fast            
    1     00008315  _detectorAverage_FastCounter     
    1     00008336  _detectorAverage_Medium          
    1     00008338  _detectorAverage_Slow            
    0     003f4960  _error                           
    0     003f4e63  _exit                            
    0     003f4119  _getInputVolumeAmbient           
    0     003f41c3  _getInputVolumeDetect            
    0     003f416f  _getInputVolumeTeacher           
    0     003f4215  _getOutputVolumeMaster           
    0     003f40c3  _getSwitchingMode                
    0     003f478e  _gpio_pin_init                   
    1     00008309  _greenLED                        
    1     0000830d  _greenSwPressed                  
    0     000005a5  _i2cMasterTransmit               
    1     00008311  _idleCounter1                    
    1     00008312  _idleCounter2                    
    0     003f40e0  _incrementInputVolumeAmbient     
    0     003f418c  _incrementInputVolumeDetect      
    0     003f4136  _incrementInputVolumeTeacher     
    0     003f41e0  _incrementOutputVolumeMaster     
    0     003f4219  _loadDefaults                    
    0     003f4228  _main                            
    0     003f4f5a  _memcpy                          
    1     0000834f  _message                         
    1     0000833e  _myAdc                           
    1     00008340  _myClk                           
    1     00008342  _myFlash                         
    1     00008344  _myGpio                          
    1     00008346  _myPie                           
    1     0000834a  _myPwm                           
    1     00008348  _mySci                           
    1     00008314  _newSampleFlag                   
    1     0000831a  _numBytes                        
    1     00008380  _out                             
    1     0000830e  _previousGreen                   
    1     0000830c  _previousRed                     
    1     00008306  _rdvCount                        
    1     0000830f  _rdvWordCount                    
    1     00008332  _rectifiedSignal                 
    1     00008330  _rectified_iq                    
    1     00008307  _redLED                          
    1     0000830b  _redSwPressed                    
    1     00008316  _releaseCounter                  
    1     00008318  _releaseDelay                    
    1     0000833c  _releaseThreshold                
    0     003f52f8  _rsvd_ISR                        
    0     000000ac  _runCommand                      
    0     003f494f  _sciMasterTransmit               
    0     003f4965  _scia_init                       
    0     003f40b8  _setAmbientMic                   
    0     003f40a8  _setAutoSwitching                
    0     003f5156  _setDBGIER                       
    0     003f40c7  _setInputVolumeAmbient           
    0     003f4173  _setInputVolumeDetect            
    0     003f411d  _setInputVolumeTeacher           
    0     003f41c7  _setOutputVolumeMaster           
    0     003f40ad  _setTeacherMic                   
    0     003f4048  _setVolumeRaw                    
    0     003f5160  _strcmp                          
    0     003f52fd  _strcpy                          
    0     003f51de  _strlen                          
    0     0000007a  _sub                             
    1     00008313  _tempByte                        
    0     003f5d70  _volMap                          
    abs   ffffffff  binit                            
    0     003f5d92  cinit                            
    0     003f7ff6  code_start                       
    0     003f534b  etext                            
    abs   ffffffff  pinit                            
    
    
    GLOBAL SYMBOLS: SORTED BY Symbol Address 
    
    page  address   name                             
    ----  -------   ----                             
    0     00000050  _RamfuncsRunStart                
    0     00000050  _checkValid                      
    0     0000007a  _sub                             
    0     000000ac  _runCommand                      
    0     000005a5  _i2cMasterTransmit               
    0     00000634  _adc_isr                         
    0     0000065c  _FLASH_setup                     
    0     00000672  _FLASH_setNumPagedReadWaitStates 
    0     00000679  _FLASH_setNumRandomReadWaitStates
    0     00000680  _FLASH_setOtpWaitStates          
    0     00000687  _FLASH_enablePipelineMode        
    0     0000068d  _FLASH_setActiveWaitCount        
    0     00000692  _FLASH_setStandbyWaitCount       
    0     00000697  _DSP28x_usDelay                  
    0     00008000  _RamfuncsL0LoadEnd               
    0     00008000  _RamfuncsL0LoadStart             
    0     00008000  _RamfuncsL0RunStart              
    0     00008000  __IQ24toF                        
    0     003f4000  .text                            
    0     003f4000  ___text__                        
    0     003f4048  _setVolumeRaw                    
    0     003f40a8  _setAutoSwitching                
    0     003f40ad  _setTeacherMic                   
    0     003f40b8  _setAmbientMic                   
    0     003f40c3  _getSwitchingMode                
    0     003f40c7  _setInputVolumeAmbient           
    0     003f40e0  _incrementInputVolumeAmbient     
    0     003f40fd  _decrementInputVolumeAmbient     
    0     003f4119  _getInputVolumeAmbient           
    0     003f411d  _setInputVolumeTeacher           
    0     003f4136  _incrementInputVolumeTeacher     
    0     003f4153  _decrementInputVolumeTeacher     
    0     003f416f  _getInputVolumeTeacher           
    0     003f4173  _setInputVolumeDetect            
    0     003f418c  _incrementInputVolumeDetect      
    0     003f41a7  _decrementInputVolumeDetect      
    0     003f41c3  _getInputVolumeDetect            
    0     003f41c7  _setOutputVolumeMaster           
    0     003f41e0  _incrementOutputVolumeMaster     
    0     003f41fb  _decrementOuputVolumeMaster      
    0     003f4215  _getOutputVolumeMaster           
    0     003f4219  _loadDefaults                    
    0     003f4228  _main                            
    0     003f478e  _gpio_pin_init                   
    0     003f48ea  _I2C_init_CTE                    
    0     003f494f  _sciMasterTransmit               
    0     003f4960  _error                           
    0     003f4965  _scia_init                       
    0     003f499c  _CLK_disableAdcClock             
    0     003f49aa  _CLK_disableClkIn                
    0     003f49b5  _CLK_disableCompClock            
    0     003f49c2  _CLK_disableCpuTimerClock        
    0     003f49d2  _CLK_disableCrystalOsc           
    0     003f49dd  _CLK_disableEcap1Clock           
    0     003f49eb  _CLK_disableGpioInputClock       
    0     003f49f9  _CLK_disableHrPwmClock           
    0     003f4a07  _CLK_disableI2cClock             
    0     003f4a15  _CLK_disableOsc1                 
    0     003f4a20  _CLK_disableOsc1HaltMode         
    0     003f4a2b  _CLK_disableOsc2                 
    0     003f4a36  _CLK_disableOsc2HaltMode         
    0     003f4a41  _CLK_disablePwmClock             
    0     003f4a53  _CLK_disableSciaClock            
    0     003f4a63  _CLK_disableSpiaClock            
    0     003f4a71  _CLK_disableTbClockSync          
    0     003f4a7f  _CLK_disableWatchDogHaltMode     
    0     003f4a8a  _CLK_enableAdcClock              
    0     003f4a98  _CLK_enableCompClock             
    0     003f4aa7  _CLK_enableCpuTimerClock         
    0     003f4ab6  _CLK_enableCrystalOsc            
    0     003f4ac1  _CLK_enableEcap1Clock            
    0     003f4acf  _CLK_enableClkIn                 
    0     003f4ada  _CLK_enableGpioInputClock        
    0     003f4ae8  _CLK_enableHrPwmClock            
    0     003f4af6  _CLK_enableI2cClock              
    0     003f4b04  _CLK_enableOsc1                  
    0     003f4b0f  _CLK_enableOsc1HaltMode          
    0     003f4b1a  _CLK_enableOsc2                  
    0     003f4b25  _CLK_enableOsc2HaltMode          
    0     003f4b30  _CLK_enablePwmClock              
    0     003f4b41  _CLK_enableSciaClock             
    0     003f4b51  _CLK_enableSpiaClock             
    0     003f4b5f  _CLK_enableTbClockSync           
    0     003f4b6d  _CLK_enableWatchDogHaltMode      
    0     003f4b78  _CLK_init                        
    0     003f4b84  _CLK_setClkOutPreScaler          
    0     003f4b93  _CLK_setLowSpdPreScaler          
    0     003f4ba2  _CLK_setOscSrc                   
    0     003f4bb1  _CLK_setOsc2Src                  
    0     003f4bc0  _CLK_setTimer2PreScale           
    0     003f4bcf  _CLK_setTimer2Src                
    0     003f4bde  _CLK_setWatchDogSrc              
    0     003f4bed  FD$$MPY                          
    0     003f4c70  FS$$SUB                          
    0     003f4c75  FS$$ADD                          
    0     003f4ce8  FS$$MPY                          
    0     003f4d42  _c_int00                         
    0     003f4d96  _GPIO_setMode                    
    0     003f4dde  _atoi                            
    0     003f4e0f  _GPIO_setDirection               
    0     003f4e38  _GPIO_setPullUp                  
    0     003f4e61  C$$EXIT                          
    0     003f4e61  _abort                           
    0     003f4e63  _exit                            
    0     003f4e8a  _GPIO_setQualification           
    0     003f4eb1  _copy_in                         
    0     003f4ed5  _ADC_setIntMode                  
    0     003f4ef7  _ADC_setIntSrc                   
    0     003f4f19  I$$DIV                           
    0     003f4f2a  I$$MOD                           
    0     003f4f3b  FD$$TOL                          
    0     003f4f5a  _memcpy                          
    0     003f4f77  FS$$TOFD                         
    0     003f4f93  I$$TOFS                          
    0     003f4fad  L$$TOFS                          
    0     003f4fc7  _ADC_enableInt                   
    0     003f4fde  FS$$CMP                          
    0     003f4ff5  _PLL_setup                       
    0     003f500a  _GPIO_setHigh                    
    0     003f501e  _GPIO_setLow                     
    0     003f5032  _GPIO_toggle                     
    0     003f5046  _PIE_enableAdcInt                
    0     003f505a  _ADC_setSocChanNumber            
    0     003f506c  _ADC_setSocSampleWindow          
    0     003f507e  _ADC_setSocTrigSrc               
    0     003f5090  _ADC_setIntPulseGenMode          
    0     003f50a1  _ADC_setVoltRefSrc               
    0     003f50b2  _GPIO_getData                    
    0     003f50c3  _PIE_disableAllInts              
    0     003f50d4  _PIE_setDebugIntVectorTable      
    0     003f50e5  __args_main                      
    0     003f50f6  _PIE_registerPieIntHandler       
    0     003f5105  U$$DIV                           
    0     003f510a  U$$MOD                           
    0     003f5110  _ADC_enable                      
    0     003f511a  _ADC_enableBandGap               
    0     003f5124  _ADC_enableRefBuffers            
    0     003f512e  _ADC_init                        
    0     003f5138  _ADC_powerUp                     
    0     003f5142  _PIE_init                        
    0     003f514c  _WDOG_setPreScaler               
    0     003f5156  _setDBGIER                       
    0     003f5159  _DSP28x_DisableInt               
    0     003f515d  _DSP28x_RestoreInt               
    0     003f5160  _strcmp                          
    0     003f516a  _PWM_setSocAPeriod               
    0     003f5173  _PWM_setSocAPulseSrc             
    0     003f517c  _SCI_putDataBlocking             
    0     003f5185  __register_unlock                
    0     003f5189  __register_lock                  
    0     003f518d  __nop                            
    0     003f518e  _FLASH_init                      
    0     003f5196  _GPIO_init                       
    0     003f519e  _PLL_init                        
    0     003f51a6  _PWM_init                        
    0     003f51ae  _SCI_getDataBlocking             
    0     003f51b6  _SCI_init                        
    0     003f51be  _WDOG_clearCounter               
    0     003f51c6  _WDOG_disable                    
    0     003f51ce  _WDOG_init                       
    0     003f51de  _strlen                          
    0     003f51e6  _PLL_setDivider                  
    0     003f51ed  _PLL_setMultiplier               
    0     003f51f3  _SCI_setBaudRate                 
    0     003f51f9  _ADCINT1_ISR                     
    0     003f51fe  _ADCINT2_ISR                     
    0     003f5203  _ADCINT3_ISR                     
    0     003f5208  _ADCINT4_ISR                     
    0     003f520d  _ADCINT5_ISR                     
    0     003f5212  _ADCINT6_ISR                     
    0     003f5217  _ADCINT7_ISR                     
    0     003f521c  _ADCINT8_ISR                     
    0     003f5221  _ADCINT9_ISR                     
    0     003f5226  _DATALOG_ISR                     
    0     003f522b  _ECAP1_INT_ISR                   
    0     003f5230  _EMPTY_ISR                       
    0     003f5235  _EMUINT_ISR                      
    0     003f523a  _EPWM1_INT_ISR                   
    0     003f523f  _EPWM1_TZINT_ISR                 
    0     003f5244  _EPWM2_INT_ISR                   
    0     003f5249  _EPWM2_TZINT_ISR                 
    0     003f524e  _EPWM3_INT_ISR                   
    0     003f5253  _EPWM3_TZINT_ISR                 
    0     003f5258  _EPWM4_INT_ISR                   
    0     003f525d  _EPWM4_TZINT_ISR                 
    0     003f5262  _I2CINT1A_ISR                    
    0     003f5267  _I2CINT2A_ISR                    
    0     003f526c  _ILLEGAL_ISR                     
    0     003f5271  _INT13_ISR                       
    0     003f5276  _INT14_ISR                       
    0     003f527b  _NMI_ISR                         
    0     003f5280  _PIE_RESERVED                    
    0     003f5285  _PIE_illegalIsr                  
    0     003f528a  _RTOSINT_ISR                     
    0     003f528f  _SCIRXINTA_ISR                   
    0     003f5294  _SCITXINTA_ISR                   
    0     003f5299  _SPIRXINTA_ISR                   
    0     003f529e  _SPITXINTA_ISR                   
    0     003f52a3  _TINT0_ISR                       
    0     003f52a8  _USER10_ISR                      
    0     003f52ad  _USER11_ISR                      
    0     003f52b2  _USER12_ISR                      
    0     003f52b7  _USER1_ISR                       
    0     003f52bc  _USER2_ISR                       
    0     003f52c1  _USER3_ISR                       
    0     003f52c6  _USER4_ISR                       
    0     003f52cb  _USER5_ISR                       
    0     003f52d0  _USER6_ISR                       
    0     003f52d5  _USER7_ISR                       
    0     003f52da  _USER8_ISR                       
    0     003f52df  _USER9_ISR                       
    0     003f52e4  _WAKEINT_ISR                     
    0     003f52e9  _XINT1_ISR                       
    0     003f52ee  _XINT2_ISR                       
    0     003f52f3  _XINT3_ISR                       
    0     003f52f8  _rsvd_ISR                        
    0     003f52fd  _strcpy                          
    0     003f5302  _CPU_enableInt                   
    0     003f5306  _CPU_init                        
    0     003f530a  _PWM_enableSocAPulse             
    0     003f530e  _PWM_setCounterMode              
    0     003f5312  _SCI_setCharLength               
    0     003f5316  _SCI_setNumStopBits              
    0     003f531a  _CPU_clearIntFlags               
    0     003f531d  _CPU_disableGlobalInts           
    0     003f5320  _CPU_enableDebugInt              
    0     003f5323  _CPU_enableGlobalInts            
    0     003f5326  _PIE_disable                     
    0     003f5329  _PIE_enable                      
    0     003f532c  _PLL_getClkStatus                
    0     003f532f  _PLL_getLockStatus               
    0     003f5332  _SCI_disableParity               
    0     003f5335  _SCI_enable                      
    0     003f5338  _SCI_enableRx                    
    0     003f533b  _SCI_enableRxInt                 
    0     003f533e  _SCI_enableTx                    
    0     003f5341  _SCI_enableTxInt                 
    0     003f5344  _PWM_setPeriod                   
    0     003f5346  _WDOG_setCount                   
    0     003f5348  __system_pre_init                
    0     003f534a  __system_post_cinit              
    0     003f534b  _RamfuncsLoadStart               
    0     003f534b  ___etext__                       
    0     003f534b  etext                            
    0     003f5996  _RamfuncsLoadEnd                 
    0     003f5b6f  __ctypes_                        
    0     003f5c70  _PIE_tableDebugInit              
    0     003f5d70  _volMap                          
    0     003f5d92  ___cinit__                       
    0     003f5d92  cinit                            
    0     003f7ff6  code_start                       
    1     00000880  _DevEmuRegs                      
    1     00000985  _SysPwrCtrlRegs                  
    1     00000a80  _FlashRegs                       
    1     00000ae0  _CsmRegs                         
    1     00000b00  _AdcResult                       
    1     00000c00  _CpuTimer0Regs                   
    1     00000c08  _CpuTimer1Regs                   
    1     00000c10  _CpuTimer2Regs                   
    1     00000ce0  _PieCtrlRegs                     
    1     00000d00  _EmuKey                          
    1     00000d00  _PieVectTable                    
    1     00000d01  _EmuBMode                        
    1     00000d02  _Flash_CallbackPtr               
    1     00000d04  _Flash_CPUScaleFactor            
    1     00006400  _Comp1Regs                       
    1     00006420  _Comp2Regs                       
    1     00006800  _EPwm1Regs                       
    1     00006840  _EPwm2Regs                       
    1     00006880  _EPwm3Regs                       
    1     000068c0  _EPwm4Regs                       
    1     00006a00  _ECap1Regs                       
    1     00006f80  _GpioCtrlRegs                    
    1     00006fc0  _GpioDataRegs                    
    1     00006fe0  _GpioIntRegs                     
    1     00007010  _SysCtrlRegs                     
    1     00007040  _SpiaRegs                        
    1     00007050  _SciaRegs                        
    1     00007060  _NmiIntruptRegs                  
    1     00007070  _XIntruptRegs                    
    1     00007100  _AdcRegs                         
    1     00007900  _I2caRegs                        
    1     00008100  __stack                          
    1     00008300  __STACK_END                      
    1     00008305  _ErrorCount                      
    1     00008306  _rdvCount                        
    1     00008307  _redLED                          
    1     00008308  _blueLED                         
    1     00008309  _greenLED                        
    1     0000830a  _detectVar                       
    1     0000830b  _redSwPressed                    
    1     0000830c  _previousRed                     
    1     0000830d  _greenSwPressed                  
    1     0000830e  _previousGreen                   
    1     0000830f  _rdvWordCount                    
    1     00008310  _byteReceived                    
    1     00008311  _idleCounter1                    
    1     00008312  _idleCounter2                    
    1     00008313  _tempByte                        
    1     00008314  _newSampleFlag                   
    1     00008315  _detectorAverage_FastCounter     
    1     00008316  _releaseCounter                  
    1     00008317  _attackDelay                     
    1     00008318  _releaseDelay                    
    1     00008319  _currentSource                   
    1     0000831a  _numBytes                        
    1     0000831c  _adcResult_long_A0               
    1     0000831e  _adcZeroed_A0                    
    1     00008320  _adcRectified_A0                 
    1     00008322  _adcResult_long_A2               
    1     00008324  _adcResult_float                 
    1     00008326  _adcResult_iq                    
    1     00008328  _adcAverageFast                  
    1     0000832a  _adcAverageFast_float            
    1     0000832c  _adcAverageMedium                
    1     0000832e  _adcAverageSlow                  
    1     00008330  _rectified_iq                    
    1     00008332  _rectifiedSignal                 
    1     00008334  _detectorAverage_Fast            
    1     00008336  _detectorAverage_Medium          
    1     00008338  _detectorAverage_Slow            
    1     0000833a  _attackThreshold                 
    1     0000833c  _releaseThreshold                
    1     0000833e  _myAdc                           
    1     00008340  _myClk                           
    1     00008342  _myFlash                         
    1     00008344  _myGpio                          
    1     00008346  _myPie                           
    1     00008348  _mySci                           
    1     0000834a  _myPwm                           
    1     0000834c  _cm                              
    1     0000834f  _message                         
    1     0000836f  _cpu                             
    1     00008370  ___TI_enable_exit_profile_output 
    1     00008372  ___TI_cleanup_ptr                
    1     00008374  ___TI_dtors_ptr                  
    1     00008376  __lock                           
    1     00008378  __unlock                         
    1     00008380  _out                             
    1     003d7fff  _PartIdRegs                      
    1     003f7ff8  _CsmPwl                          
    abs   00000000  _RamfuncsL0LoadSize              
    abs   00000200  __STACK_SIZE                     
    abs   0000064b  _RamfuncsLoadSize                
    abs   ffffffff  ___TI_pprof_out_hndl             
    abs   ffffffff  ___TI_prof_data_size             
    abs   ffffffff  ___TI_prof_data_start            
    abs   ffffffff  ___binit__                       
    abs   ffffffff  ___c_args__                      
    abs   ffffffff  ___pinit__                       
    abs   ffffffff  binit                            
    abs   ffffffff  pinit                            
    
    [352 symbols]
    
    ...

    Are you using the code security module?

    I haven't configured the CSM.  All values are 0xffff.

    When there is a failure, does the reset line toggle?

    I put a scope on it just to be sure, and the reset line doesn't toggle.  I disabled the WDT when I started troubleshooting this issue.

    If you pass a constant value to IQtoF instead of a variable is there any difference in the behavior?

    No difference.  The result of the variable is the same as with a constant value.

    Here's something;

    In the call to _IQtoF(), I'm subtracting 1.0, like this:
    (adcResult_float         = _IQtoF(adcResult_iq) - 1;)
    to cause a nominal value of zero.  If I remove that arithmetic, and move the normalization to the adc result, the code runs standalone.  I'll have to rework all the surrounding conversions and comparisons for the algorithm to work correctly, but I think the problem with the _IQtoF() function was in subtracting a value, then assigning that new value.  Is this expected behavior?

    Thanks,
    robin

  • Sorry, I have to backtrack.  What I previously reported as working standalone, doesn't actually work standalone, it works with emulator connected and monitoring.  Before the last couple of changes, it wasn't working when connecting the emulator for debugging.

    If you populate EMU_KEY and EMU_BMODE for flash then the next time you reset this should be bypassed. 

    I've been relying on GPIO34 & GPIO37 being high and /TRST being low to be in the right boot mode.  I haven't changed EMU_KEY or EMU_BMODE.  I'm surprised to find values there:

    Is this a problem?

    Thanks,
    robin

  • EmuKey and EmuBMode are only used when a debugger is connected to make the boot selection (flash, ram, etc..) by the boot ROM code.  Typically I set them using the script I mentioned before once I have a debugger probe connected. The boot ROM, I recall, writes the values for "wait boot"  in order to pause the PC in case the user tries to connect a debug probe.   

    When running stand-alone, a value in these two locations doesn't have an effect.  The boot ROM will use the pin state instead of these locations. 

    It is possible that in the InitPieVectTable() in your application has loaded a place-holder vector in these locations (0x3F5256 looks like an address to me? )

    What I previously reported as working standalone, doesn't actually work standalone, it works with emulator connected and monitoring.  Before the last couple of changes, it wasn't working when connecting the emulator for debugging.

    I'm not sure I completely understand.  I feel we need to determine if the code is really booting to main() when in stand-alone?  I had assumed that it was, but now I'm not sure?  Toggling an I/O right after main() can help determine if the code is making it there.  

  • The code is definitely making it to main() when power is cycled and the emulator is not connected.  I know this, because a function sends data out over I2C after all the init is done in main().  In fact, I transmitted an identifying byte out over I2C at various points in main() to see how far it got before the problem.  It made it through all the initialization parts of main() and well into the idle loop.  It got to the _IQtoF() function without issue, but did not send I2C after calling _IQtoF().

    For now, I have replaced all the IQ Math functions with similar floating point operations, and standalone code works fine.  I'd rather use the IQ Math functions to gain precision, but at this point...hmmm...maybe it's time to punt.  My client can't be OK with how long this is taking.

    It's crazy.  I've used IQ Math on three different significant TMS320F28069 projects (thousands of lines of code), as well as a couple of TMS320F28379 projects stretching back over the last 10 years.  I never experienced anything like this with those projects.

    This is kicking my butt.  I feel like I'm losing my C2000 mojo.

    Can you send me a private link to share my project with you?  I'd rather not make it public domain by sharing it here.

  • Great - that helps knowing the boot startup makes it to main().  That eliminates some possible issues. 

    I was looking at the .map file you sent and noticed that the IQtoF is the only function running in the 0x8000 memory range.   Is there a copy of RamfuncsL0 in the project?  The IQmpy is handled by the compiler itself.  But this function is standing out as being alone in this memory range so I'm wondering if it is being copied from flash to RAM. 

    I was hoping the debug steps with loading the symbols only would help confirm everything was being copied as required.  

    0 00000050 _checkValid
    0 0000007a _sub
    0 000000ac _runCommand
    0 000005a5 _i2cMasterTransmit
    0 00000634 _adc_isr
    0 0000065c _FLASH_setup
    0 00000672 _FLASH_setNumPagedReadWaitStates
    0 00000679 _FLASH_setNumRandomReadWaitStates
    0 00000680 _FLASH_setOtpWaitStates
    0 00000687 _FLASH_enablePipelineMode
    0 0000068d _FLASH_setActiveWaitCount
    0 00000692 _FLASH_setStandbyWaitCount
    0 00000697 _DSP28x_usDelay
    0 00008000 _RamfuncsL0LoadEnd
    0 00008000 _RamfuncsL0LoadStart
    0 00008000 _RamfuncsL0RunStart
    0 00008000 __IQ24toF
    0 003f4000 .text
    0 003f4000 ___text__
    0 003f4048 _setVolumeRaw

  • It's crazy.  I've used IQ Math on three different significant TMS320F28069 projects (thousands of lines of code), as well as a couple of TMS320F28379 projects stretching back over the last 10 years.  I never experienced anything like this with those projects.

    I can understand the frustration.  I feel like we must be getting close to resolving this. 

    One other request - can you provide a screenshot of the disassembly of the IQtoF function at 0x8000.  I recall another case where the wrong version of the function was being picked up.  I don't think this is the issue as this should fail whether the emulator is connected or not. 

  • Hi Lori,

    By default the f28020 linker command file places IQmath in PRAML0, which starts at 0x8000, so I'm not surprised to see it there.

    I did have a section called ramfuncsL0, but nothing is assigned to it in my code.  In other words no #pragmas telling functions to go there.  I commented out the section and recompiled.  No help.  The function still won't run standalone.

    Then I reassigned the IQmath section to RAMM0.  Now it's at 0x069b, but that didn't change its failure to run standalone.

    Here's the aftermath of those linker command file changes:

       ramfuncs            : LOAD = FLASH0,
                             RUN = RAMM0,
                             LOAD_START(_RamfuncsLoadStart),
                             LOAD_END(_RamfuncsLoadEnd),
                             RUN_START(_RamfuncsRunStart),
    						 		 LOAD_SIZE(_RamfuncsLoadSize),
                             PAGE = 0
    
    /*   ramfuncsL0            : LOAD = FLASH0,
                             RUN = PRAML0,
                             LOAD_START(_RamfuncsL0LoadStart),
                             LOAD_END(_RamfuncsL0LoadEnd),
                             RUN_START(_RamfuncsL0RunStart),
    						 		 LOAD_SIZE(_RamfuncsL0LoadSize),
                             PAGE = 0
    */
       csmpasswds          : > CSM_PWL_P0,  PAGE = 0
       csm_rsvd            : > CSM_RSVD,    PAGE = 0
    
       /* Allocate uninitalized data sections: */
    //   .stack        		  : > RAMM1,      PAGE = 1
       .stack        		  : > DRAML0,      PAGE = 1
       .ebss               : > DRAML0,      PAGE = 1
       .esysmem            : > DRAML0,      PAGE = 1
       .cio                : > DRAML0,      PAGE = 1
    
       /* Initalized sections go in Flash */
       /* For SDFlash to program these, they must be allocated to page 0 */
       .econst             : > FLASH0,      PAGE = 0
       .switch             : > FLASH0,      PAGE = 0
    
       /* Allocate IQ math areas: */
       IQmath              : > RAMM0,      PAGE = 0            /* Math Code */
    //   IQmath              : > PRAML0,      PAGE = 0            /* Math Code */
       IQmathTables        : > IQTABLES,   PAGE = 0, TYPE = NOLOAD
    
    

    provide a screenshot of the disassembly of the IQtoF function at 0x8000.  I recall another case where the wrong version of the function was being picked up.

    Here's the screenshot of IQtoF() at 0x8000:

    I see the function specified in the map and disassembly window is _IQ24toF().  That doesn't seem right.  I tried to assign the global Q to 30, not 24.  I did it with the following preprocessor directive:

    #ifndef GLOBAL_Q
    #define GLOBAL_Q 30
    long GlobalQ = GLOBAL_Q;      // Used for legacy GEL & Graph Debug.
    #endif
    
    

    I should note that this ifndef doesn't seem to be running, because it is grayed out.  Here's a screenshot to show what I mean:

    Because it's grayed out, I believe the preprocessor considers GLOBAL_Q to already be #defined somewhere else.

    C:\ti\C2000Ware_4_01_00_00\libraries\math\IQmath\c28\include\IQmathLib.h  contains the following lines:

    //---------------------------------------------------------------------------
    // Select global Q value and scaling. The Q value is limited to the
    // following range for all functions:
    //
    //        30 <= GLOBAL_Q <=  1
    //
    #ifndef   GLOBAL_Q
    #define   GLOBAL_Q       24
    #endif
    

    Should I hard code GLOBAL_Q in my main.c file like this instead:

    #define GLOBAL_Q 30
    

    Will this override the def in the lib header file?

    Do you think this could have anything to do with the standalone issue?  I'm thinking it's all just running in iq24 format instead of iq30.

    Thanks,
    robin

  • Robin,

    In the linker file, IQMath should be assigned to a section that will load in flash and run from RAM. The same way you initialized the ramfuncs in M0

    Something like:

    IQmath           : LOAD = FLASH0,
                       RUN = PRAML0,
                       LOAD_START(_RamfuncsL0LoadStart),
                       LOAD_END(_RamfuncsL0LoadEnd),
                       RUN_START(_RamfuncsL0RunStart),
                       LOAD_SIZE(_RamfuncsL0LoadSize),
                       PAGE = 0
    
    In the header file define these:
    
    extern Uint16 RamfuncsL0LoadStart;
    extern Uint16 RamfuncsL0LoadEnd;
    extern Uint16 RamfuncsL0LoadSize;
    
    Then in the code, copy the section from flash to RAM:
    
    MemCopy(&RamfuncsL0LoadStart, &RamfuncsL0LoadEnd, &RamfuncsL0LoadSize);

  • Here's the screenshot of IQtoF() at 0x8000:

    Thank you.  I'm assuming this is with CCS connected as CCS will load ram sections as well as flash.  It looks ok to me. 

  • C:\ti\C2000Ware_4_01_00_00\libraries\math\IQmath\c28\include\IQmathLib.h  contains the following lines:

    Those lines basically say if it isn't already defined, then it will be defined as 24.  Section 3.9. Selecting the GLOBAL_Q format of the documentation shows the options for selecting the GLOBAL_Q. 

    C:\ti\c2000\C2000Ware<version>\libraries\math\IQmath\c28\docs

  • Do you think this could have anything to do with the standalone issue?  I'm thinking it's all just running in iq24 format instead of iq30.

    I'm fairly confident that the issue is the IQmath code isn't being loaded into flash and then copied over to RAM for execution.  See if that resolves the issue.

  • Robin, 

    Any luck?

    Lori

  • Hi Lori,

    I sent the code that used floating point operations to the client for review.

    I still want to go back to the IQ Math format, but it will have to wait and be folded in after I hear back from the client.  Hopefully in the next few days.

    I'd like to keep this ticket open until I get the chance to incorporate your last suggestions.

    Thanks,
    robin

  • Thank you for the update. 

    Cheers

    Lori

  • Hi Lori,

    It looks like we'll move forward using only floating point operations, and abandon IQ Math.  It may arise later if I need to do any more serious filtering (like adding biquads, etc.), but for now floating point operations suffice.

    I'm fairly confident that the issue is the IQmath code isn't being loaded into flash and then copied over to RAM for execution.

    If I can carve out some time in the near future, I'll give your suggestion a shot.  Until then I'll be deep in the throes of getting other functionality in place.

    Thanks for all you input on this issue.  We should close this thread.