2015-04-22 13:15:13 +08:00
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
// Linker scatter for running in external SDRAM on the AT91SAM9260
|
|
|
|
//------------------------------------------------------------------------------
|
2015-04-15 16:08:43 +08:00
|
|
|
|
|
|
|
//
|
|
|
|
// Define a memory region that covers the entire 4 GB addressible space of the
|
|
|
|
// processor.
|
|
|
|
//
|
|
|
|
define memory mem with size = 4G;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Define a region for the on-chip flash.
|
|
|
|
//
|
|
|
|
define region FLASH = mem:[from 0x20000000 to 0x207FFFFF];
|
|
|
|
|
|
|
|
//
|
|
|
|
// Define a region for the on-chip SRAM.
|
|
|
|
//
|
|
|
|
define region SRAM = mem:[from 0x20800000 to 0x23FFFFFF];
|
|
|
|
|
|
|
|
//
|
|
|
|
// Indicate that the read/write values should be initialized by copying from
|
|
|
|
// flash.
|
|
|
|
//
|
|
|
|
initialize by copy { readwrite };
|
|
|
|
|
|
|
|
//
|
|
|
|
// Indicate that the noinit values should be left alone. This includes the
|
|
|
|
// stack, which if initialized will destroy the return address from the
|
|
|
|
// initialization code, causing the processor to branch to zero and fault.
|
|
|
|
//
|
|
|
|
do not initialize { section .noinit };
|
|
|
|
|
|
|
|
//
|
|
|
|
// Place the interrupt vectors at the start of flash.
|
|
|
|
//
|
|
|
|
place at start of FLASH { readonly section .intvec };
|
|
|
|
|
|
|
|
//
|
|
|
|
// Place the remainder of the read-only items into flash.
|
|
|
|
//
|
|
|
|
place in FLASH { readonly };
|
|
|
|
|
|
|
|
//
|
|
|
|
// Place the RAM vector table at the start of SRAM.
|
|
|
|
//
|
|
|
|
place at start of SRAM { section VTABLE };
|
|
|
|
|
|
|
|
//
|
|
|
|
// Place all read/write items into SRAM.
|
|
|
|
//
|
2015-04-22 13:15:13 +08:00
|
|
|
place in SRAM { readwrite};
|
2015-04-15 16:08:43 +08:00
|
|
|
keep { section FSymTab };
|
|
|
|
keep { section VSymTab };
|
|
|
|
keep { section .rti_fn* };
|