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;