Other Parts Discussed in Thread: TM4C1294KCPDT, LM3S8971
Tivaware 2.1.2.111 driverlib & Serial Bootloader (SBL) projects:
KCPDT tool chain build of BootLoader copies itself to SRAM (0x2000.0000) and launches flash application from (0x4000) via EK-TM4C1294XL launch pad without issues.
However the same SBL build when loaded to TM4C1294KCPDT custom PCB with 512Kb flash does not seem to copy Flash SBL into SRAM, rather assets NmiSR() via bl_startup_ccs.s. Otherwise the KCPDT application runs from flash 0x0000 on custom PCB without issues.
The bl_link.cmd layout (below) is the same on both MCU class. Why will KCPDT not copy Flash loaded SBL into same SRAM address range KCPDT?
/* System memory map */
MEMORY
{
FLASH (RX) : origin = 0x00000000, length = 0x00010000
SRAM (RWX) : origin = 0x20000000, length = 0x00040000
}
/* Section allocation in memory */
SECTIONS
{
GROUP
{
.intvecs
.text
.const
.data
} load = FLASH, run = 0x20000000, LOAD_START(init_load), RUN_START(init_run), SIZE(init_size)
GROUP
{
.bss
.stack
} run = SRAM, RUN_START(bss_run), RUN_END(bss_end), SIZE(bss_size), RUN_END(__STACK_TOP)
}
**************************************************************************************
Application KCPDT:
/* The starting address of the application. Normally the interrupt vectors */
/* must be located at the beginning of the application. */
#define APP_BASE 0x00004000 //SBL=0x00004000, 16384 bytes.
#define RAM_BASE 0x20000000
/* System memory map */
MEMORY
{
FLASH (RX) : origin = 0x00000000, length = 0x00080000 /* FLASH KCPDT 80k=524288KB, NCPDT 100k=1,048,572 */
SRAM (RWX) : origin = 0x20000000, length = 0x00040000 /* SRAM .bss,.data */
}
/* 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=8192 */
/* --library=rtsv7M4_T_le_eabi.lib */
/* Section allocation in memory */
SECTIONS
{
.intvecs: > APP_BASE
.text : > FLASH
.const : > FLASH
.cinit : > FLASH
.pinit : > FLASH
.init_array : > FLASH
.vtable : > RAM_BASE
.data : > SRAM
.bss : > SRAM
.sysmem : > SRAM
.stack : > SRAM
}
__STACK_TOP = __stack + 512;