/*************************************************************************/ /* This is a Linker Command File for the TMS320C541 EVM */ /*************************************************************************/ /* This assumes the dual access internal program and data RAMs are */ /* overlayed, so OVLY = 1 -c /* Use the ROM model */ -stack 0x200 /* Allocate a stack of 512 words */ -heap 0x200 /* Allocate a heap of 512 words */ vects541.obj ints541.obj -l rts.lib /* Use this library (Put libraries after obj's) */ MEMORY { PAGE 0: /* PROGRAM Memory */ /* Reserved: 0000h-007fh */ IDARAM: origin = 0080h, length = 1380h /*Internal program DARAM */ EPRAM: origin = 1400h, length = 0eb80h /*External program RAM */ VECS: origin = 0FF80h, length = 0080h /* Allocate 128 words for interrupt vector branch instructions.*/ /* There are 32 possible interrupts with 4 words required per */ /* interrupt. The first two words are for a normal or delayed */ /* branch instruction. The second two allow for the two */ /* instructions executed after a delayed branch. */ /* On hardware reset, the PC is set to 0FF80h, so a branch */ /* to the program entry point should be put there. The TI C */ /* compiler uses the entry point _c_int00 and this is used in */ /* the progam vects541.asm for the branch address of the RS */ /* interrupt. For assembly programs, put a label like "start" */ /* at the entry point and declare it to be global with a */ /* .def or .global statement and use it for the branch vector */ /* for RS in vects541.asm. */ PAGE 1: /* DATA Memory */ /* Memory-mapped registers: 0000h-005Fh */ ISCRATCH: origin = 060h, length = 20h /*Internal data scratch-pad RAM */ IDARAM: origin = 0080h, length = 1380h /*Internal data DARAM */ EDRAM: origin = 1400h, length = 0ec00h /*External data RAM */ } SECTIONS { .text : > EPRAM PAGE 0 .cinit : > EPRAM PAGE 0 .switch : > EPRAM PAGE 0 .stack : > IDARAM PAGE 1 .bss : > IDARAM PAGE 1 .const : > IDARAM PAGE 1 .data : > IDARAM PAGE 1 .sysmem : > IDARAM PAGE 1 .vectors: > VECS PAGE 0 } /*****************************************************************/ /* Section Contents */ /* */ /* PAGE 0 = Program Memory, PAGE 1 = Data Memory */ /* */ /* Initialized Sections */ /* */ /* .text executable code and constants */ /* .cinit tables for initializing variables and constants */ /* .switch tables for switch statements */ /* .const string constants, initialization of global and */ /* static variables (qualified by const) that */ /* are explicitly initialized */ /* .vectors This section is for interrupt vectoring and */ /* should be created in an ASM program, for */ /* example, vectors.asm. */ /* */ /* Uninitialized Sections */ /* */ /* .bss global and static variables */ /* .stack system stack. Used to pass arguments to */ /* functions and to allocate space for local */ /* variables */ /* .sysmem Reserves space for dynamic memory allocation. */ /* .data Used by assembler for storing data values */ /*****************************************************************/