75 lines
1.7 KiB
Plaintext
75 lines
1.7 KiB
Plaintext
_start = ORIGIN(FLASH);
|
|
ENTRY(_start)
|
|
|
|
MEMORY
|
|
{
|
|
FLASH (xrx) :ORIGIN = 0x10000000, LENGTH = 256K
|
|
RAM (xrw) :ORIGIN = 0x20000000, LENGTH = 256K
|
|
STACK (rw) :ORIGIN = 0x20040000, LENGTH = 8K - 256
|
|
AUTO(xrx) :ORIGIN = 0x20041F00, LENGTH = 256
|
|
}
|
|
|
|
_stack_top = ORIGIN(STACK) + LENGTH(STACK);
|
|
|
|
PHDRS
|
|
{
|
|
boot2_pre PT_LOAD FLAGS(5); /* R + X */
|
|
text PT_LOAD FLAGS(5); /* R + X */
|
|
rodata PT_LOAD FLAGS(5); /* R + W */
|
|
data PT_LOAD FLAGS(6); /* R + W */
|
|
bss PT_LOAD FLAGS(6); /* R + W */
|
|
}
|
|
|
|
SECTIONS
|
|
{
|
|
.boot2_pre :
|
|
{
|
|
KEEP(*boot2_pre.*(.text.boot2_pre))
|
|
KEEP(*(.text.boot2_pre))
|
|
_boot2_pre_size = . - ADDR(.boot2_pre);
|
|
ASSERT(_boot2_pre_size <= 240, "Error: .boot2_pre size exceeds 240 bytes!");
|
|
. += 240 - _boot2_pre_size;
|
|
LONG(_env_start) /* envionment variables start address */
|
|
LONG(0)
|
|
LONG(0)
|
|
LONG(0) /* MPEG2 of CRC32 */
|
|
} >AUTO AT > FLASH :boot2_pre
|
|
|
|
.text :
|
|
{
|
|
. = ALIGN(4);
|
|
_boot2_copy_self_start_addr = .;
|
|
*(.text*)
|
|
. = ALIGN(4);
|
|
} >RAM AT > FLASH :text
|
|
|
|
.rodata :
|
|
{
|
|
. = ALIGN(4);
|
|
*(.rodata*)
|
|
. = ALIGN(4);
|
|
} >RAM AT > FLASH :rodata
|
|
|
|
.data :
|
|
{
|
|
. = ALIGN(4);
|
|
*(.data*)
|
|
. = ALIGN(4);
|
|
} >RAM AT > FLASH :data
|
|
|
|
_boot2_copy_self_end_addr = .;
|
|
|
|
.bss (NOLOAD) :
|
|
{
|
|
. = ALIGN(4);
|
|
_bss_start = .;
|
|
*(.bss*)
|
|
. = ALIGN(4);
|
|
_bss_end = .;
|
|
} >RAM :bss
|
|
|
|
_env_start = ADDR(.bss);
|
|
_env_start = ALIGN(4K);
|
|
_env_start = _env_start - (ORIGIN(RAM) - ORIGIN(FLASH));
|
|
}
|