186 lines
3.4 KiB
C
186 lines
3.4 KiB
C
// *INDENT-OFF*
|
|
#include "p11_rom_stubs.ld"
|
|
|
|
#include "power/p11/p11_mmap.h"
|
|
|
|
/*
|
|
p11 memory地址图
|
|
|
|
0xf28000, end
|
|
0xf27fe0, poff ram, 0x20
|
|
0xf27f00, m2p_message, 0xe0
|
|
0xf27ec0, p2m_message, 0x40
|
|
0xf2xxxx, stack, 0x600
|
|
0xf2xxxx, bss
|
|
0xf20080, code/data
|
|
0xf20000, isr_vertor, 0x80
|
|
*/
|
|
|
|
MEMORY
|
|
{
|
|
p11_message_ram(rw) : ORIGIN = P2M_MESSAGE_RAM_BEGIN, LENGTH = (P2M_MESSAGE_SIZE+M2P_MESSAGE_SIZE)
|
|
msys_poweroff_ram(rw) : ORIGIN = MSYS_POFF_RAM_BEGIN, LENGTH = MSYS_POFF_RAM_SIZE
|
|
p11_ram0(rw) : ORIGIN = P11_RAM0_BEGIN, LENGTH = P11_RAM0_SIZE
|
|
|
|
|
|
}
|
|
|
|
ENTRY(_start)
|
|
|
|
SECTIONS
|
|
{
|
|
. = ORIGIN(p11_ram0);
|
|
.text ALIGN(32):
|
|
{
|
|
*startup.o(.text)
|
|
*(.text*)
|
|
*(.*.text)
|
|
*(.*.const)
|
|
|
|
*(.*.text)
|
|
*(.ipc_spin_lock.text.cache.L1)
|
|
|
|
. = ALIGN(4);
|
|
sensor_dev_begin = .;
|
|
KEEP(*(.sensor_dev))
|
|
sensor_dev_end = .;
|
|
|
|
. = ALIGN(4);
|
|
*(.rodata*)
|
|
|
|
#include "power/ld/power_text.ld"
|
|
|
|
. = ALIGN(4);
|
|
*(.*.data)
|
|
. = ALIGN(4);
|
|
*(.data*)
|
|
. = ALIGN(4);
|
|
} > p11_ram0
|
|
|
|
.data ALIGN(32):
|
|
{
|
|
/* *(.data*) */
|
|
} > p11_ram0
|
|
|
|
.bss ALIGN(4):
|
|
{
|
|
*(.bss)
|
|
*(.*.bss)
|
|
*(COMMON)
|
|
} > p11_ram0
|
|
|
|
.stack_bss ALIGN(32):
|
|
{
|
|
*(.stack_magic0)
|
|
PROVIDE(_stack_begin = .);
|
|
PROVIDE(_sstack_begin = .);
|
|
*(.sstack)
|
|
PROVIDE(_sstack_end = .);
|
|
|
|
PROVIDE(_ustack_begin = .);
|
|
*(.ustack)
|
|
PROVIDE(_ustack_end = .);
|
|
|
|
PROVIDE(_stack_end = .);
|
|
*(.stack_magic1)
|
|
} > p11_ram0
|
|
|
|
#if 0
|
|
PROVIDE(overlay_demo_begin = .);
|
|
OVERLAY : AT(0x200000) SUBALIGN(4)
|
|
{
|
|
.overlay_bank_demo_init
|
|
{
|
|
LONG(0xffffffff);
|
|
*(.demo.code.bank.0)
|
|
. = ALIGN(4);
|
|
}
|
|
.overlay_bank_demo_normal0
|
|
{
|
|
LONG(0xffffffff);
|
|
*(.demo.code.bank.1)
|
|
}
|
|
|
|
.overlay_bank_demo_normal1
|
|
{
|
|
LONG(0xffffffff);
|
|
*(.demo.code.bank.2)
|
|
}
|
|
} > p11_ram0
|
|
PROVIDE(overlay_demo_end = .);
|
|
|
|
|
|
PROVIDE(overlay_sensor_begin = .);
|
|
OVERLAY : AT(0x210000) SUBALIGN(4)
|
|
{
|
|
/* TODO: */
|
|
.overlay_bank_sensor_init
|
|
{
|
|
LONG(0xffffffff);
|
|
*(.sensor.code.bank.0)
|
|
. = ALIGN(4);
|
|
}
|
|
.overlay_bank_sensor_normal0
|
|
{
|
|
LONG(0xffffffff);
|
|
*(.sensor.code.bank.1)
|
|
}
|
|
.overlay_bank_sensor_normal1
|
|
{
|
|
LONG(0xffffffff);
|
|
*(.sensor.code.bank.2)
|
|
}
|
|
|
|
} > p11_ram0
|
|
PROVIDE(overlay_sensor_end = .);
|
|
|
|
PROVIDE(overlay_sys_begin = .);
|
|
OVERLAY : AT(0x220000) SUBALIGN(4)
|
|
{
|
|
/* TODO: */
|
|
.overlay_bank_sys_init
|
|
{
|
|
LONG(0xffffffff);
|
|
*(.sys.code.bank.0)
|
|
. = ALIGN(4);
|
|
}
|
|
.overlay_bank_sys_normal0
|
|
{
|
|
LONG(0xffffffff);
|
|
*(.sys.code.bank.1)
|
|
}
|
|
} > p11_ram0
|
|
PROVIDE(overlay_sys_end = .);
|
|
#endif
|
|
|
|
PROVIDE(p11_heap_begin = .);
|
|
p11_heap_end = P2M_MESSAGE_RAM_BEGIN;
|
|
|
|
. = ORIGIN(p11_message_ram);
|
|
.p11_message ALIGN(32):
|
|
{
|
|
*(.p2m_data)
|
|
*(.m2p_data)
|
|
} > p11_message_ram
|
|
|
|
. = ORIGIN(msys_poweroff_ram);
|
|
.p11_poweroff ALIGN(32):
|
|
{
|
|
*(.msys_poff_data)
|
|
} > msys_poweroff_ram
|
|
}
|
|
|
|
text_begin = ADDR(.text);
|
|
text_size = SIZEOF(.text);
|
|
text_end = text_begin + text_size;
|
|
|
|
bss_begin = ADDR(.bss);
|
|
bss_size = SIZEOF(.bss);
|
|
|
|
p11_message_begin = ADDR(.p11_message);
|
|
p11_message_size = SIZEOF(.p11_message);
|
|
|
|
data_addr = ADDR(.data);
|
|
data_begin = text_begin + text_size;
|
|
data_size = SIZEOF(.data);
|