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.

Trouble using lwIP stack, interrupt vector/reset vector conflicts

Other Parts Discussed in Thread: TM4C129XNCZAD

I buillt and tested the enet_io project that comes with the development kit and it worked okay, so I thought I would include similar Ethernet support into my existing RTSC project.

The code compiles fine but the linker complains:

"../tm4c129xnczad.cmd", line 31: error #10099-D: program will not fit into available memory.  placement with alignment fails for section ".intvecs" size 0x200 , overlaps with ".resetVecs", size 0x360 (page 0)

I took startup_ccs.c from another project and added the address of the Ethernet ISR.  I notice that the data section it declares is considerably bigger than what's listed in the .cmd file, 0x380 bytes compared with 0x200 bytes.

I see that the resetVecs section is defined in configPkg\package\cfg\<proj>_pem4f.c and that it has 216 vectors declared.

Questions:

a) Is the table in startup_ccs.c bigger because it includes additional software interrupt vectors to support RTSC functions?

b) How to reconcile the two sizes?

c) If I delete my tm4c129xnczad.cmd file, it isn't rebuilt by CCS but I thought that CCS automatically manages this -- if so, how can I cause this to happen?

My .cmd file contents follow below.


--retain=g_pfnVectors

MEMORY
{
    FLASH (RX) : origin = 0x00000000, length = 0x00100000
    SRAM (RWX) : origin = 0x20000000, length = 0x00040000
}
/* The following command line options are set as part of the CCS project.    */
/* If you are building using the command line, or for some reason want to    */
/* define them here, you can uncomment and modify these lines as needed.     */
/* If you are using CCS for building, it is probably better to make any such */
/* modifications in your CCS project and leave this file alone.              */
/*                                                                           */
/* --heap_size=0                                                             */
/* --stack_size=256                                                          */
/* --library=rtsv7M4_T_le_eabi.lib                                           */
/* Section allocation in memory */
SECTIONS
{
.intvecs:   > 0x00000000
.text   :   > FLASH
.const  :   > FLASH
.cinit  :   > FLASH
.pinit  :   > FLASH
    .init_array : > FLASH
    .vtable :   > 0x20000000
.data   :   > SRAM
.bss    :   > SRAM
.sysmem :   > SRAM
.stack  :   > SRAM
}
__STACK_TOP = __stack + 512;