motor-control-sdk/.project/templates/am64x/common/linker_a53_smp.cmd.xdt

108 lines
2.8 KiB
Plaintext
Raw Permalink Normal View History

%%{
let options = args.options;
let stackSize = 0x10000;
let heapSize = 0x20000;
let isSingleCore = true;
let useDdr = true;
let addrBaseDdr = 0x80000000;
let codeDataSizeDdr = 0x1000000;
/* if no options given use defaults */
if(options && options.stackSize)
stackSize = options.stackSize;
if(options && options.heapSize)
heapSize = options.heapSize;
if(isSingleCore == true) {
codeDataAddrDdr = addrBaseDdr;
codeDataSizeDdr = 0x1000000 * 2;
}
else {
if(args.project.cpu == "a53ss0-0")
{
codeDataAddrDdr = addrBaseDdr + codeDataSizeDdr*0;
}
if(args.project.cpu == "a53ss0-1")
{
codeDataAddrDdr = addrBaseDdr + codeDataSizeDdr*1;
}
}
if(options && options.addrBaseDdr)
addrBaseDdr = options.addrBaseDdr;
if(options && options.codeDataSizeDdr)
codeDataSizeDdr = options.codeDataSizeDdr;
%%}
ENTRY(_c_int00)
__TI_STACK_SIZE = `stackSize`;
__TI_HEAP_SIZE = `heapSize`;
MEMORY
{
% if(useDdr) {
DDR : ORIGIN = 0x`(codeDataAddrDdr).toString(16).toUpperCase()`, LENGTH = 0x`(codeDataSizeDdr).toString(16).toUpperCase()`
% }
/* shared memory segments */
/* On A53,
* - make sure there is a MMU entry which maps below regions as non-cache
*/
USER_SHM_MEM : ORIGIN = 0x701D0000, LENGTH = 0x80
LOG_SHM_MEM : ORIGIN = 0x701D0000 + 0x80, LENGTH = 0x00004000 - 0x80
RTOS_NORTOS_IPC_SHM_MEM : ORIGIN = 0x701D4000, LENGTH = 0x0000C000
}
SECTIONS {
.vecs : {} > DDR
.text : {} > DDR
.rodata : {} > DDR
.data : ALIGN (8) {
__data_load__ = LOADADDR (.data);
__data_start__ = .;
*(.data)
*(.data*)
. = ALIGN (8);
__data_end__ = .;
} > DDR
/* General purpose user shared memory, used in some examples */
.bss.user_shared_mem (NOLOAD) : { KEEP(*(.bss.user_shared_mem)) } > USER_SHM_MEM
/* this is used when Debug log's to shared memory are enabled, else this is not used */
.bss.log_shared_mem (NOLOAD) : { KEEP(*(.bss.log_shared_mem)) } > LOG_SHM_MEM
/* this is used only when IPC RPMessage is enabled, else this is not used */
.bss.ipc_vring_mem (NOLOAD) : { KEEP(*(.bss.ipc_vring_mem)) } > RTOS_NORTOS_IPC_SHM_MEM
.bss : {
__bss_start__ = .;
*(.bss)
*(.bss.*)
. = ALIGN (8);
*(COMMON)
__bss_end__ = .;
. = ALIGN (8);
} > DDR
.heap (NOLOAD) : {
__heap_start__ = .;
KEEP(*(.heap))
. = . + __TI_HEAP_SIZE;
__heap_end__ = .;
} > DDR
.stack (NOLOAD) : ALIGN(16) {
__TI_STACK_BASE = .;
KEEP(*(.stack))
. = . + __TI_STACK_SIZE;
__TI_STACK_BASE1 = .;
KEEP(*(.stack))
. = . + __TI_STACK_SIZE;
} > DDR
}