cmake_cpputest_template/linker.ld

103 lines
2.9 KiB
Plaintext
Raw Normal View History

/*
* Filename: linker.ld
* Micro-Controller: stm32f103c8t6
* Cortex-M3 and Cortex-M4 only need to be 4byte aligned where as
* other's might need 8byte or something differnt.
*/
/*
* Program Entry Point:
* This part is put into the elf file header.
*/
ENTRY(Reset_Handler)
/* Highest address of user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0x200; /* required amount of heap. */
_Min_Stack_Size = 0x400; /* required amount of stack. */
/*
* FORMAT:
* R: Read only section.
* W: Read/Write section.
* X: Executable section.
* A: Allocation section.
* I: Initialized section.
* !: Invert following attribute.
*/
/*
* MEMORY Format:
* name [(attr)] : ORIGIN = origin, LENGTH = len
*/
/* You will want to change these values to match your uC.*/
MEMORY
{
FLASH(rx): ORIGIN = 0x08000000, LENGTH = 64K
SRAM(rwx): ORIGIN = 0x20000000, LENGTH = 20K
}
/* VMA: virtual memory address.*/
/* LMA: Load memory address. */
floating_point = 0;
SECTIONS
{
/* Code section, mapped to Flash memory */
.text :
{
KEEP(*(.isr_vector)) /* Vector table, which must be at the beginning of Flash*/
*(.text) /* All code goes here */
*(.rodata) /* Read-only data (e.g., const vars) */
_etext = .; /* Mark the end of text section */
} > FLASH
/* Initialized data section, copied from Flash to RAM on startup. */
.data :
{
_sdata = .; /* Start of data section */
*(.data) /* Initialized data */
_edata = .; /* End of data section */
} > RAM AT > FLASH
/* BSS: Placed in SRAM memory types. */
/* Holds all uninitialized globals and static variables.*/
.bss :
{
_sbss = .; /* Start of BSS */
*(.bss) /* Uninitialized data */
*(COMMON) /* Common symbols (zero-init) */
_ebss = .; /* End of BSS */
} > RAM
/* Stack Section: Sizes known at compile time. */
._stack :
{
. = ALIGN(8); /* Align to 8-byte boundry */
_estack = .; /* End of stack (top of the stack) */
. = . + 2048; /* Reserve 2KB for stack */
_sstack = .; /*Start of stack */
} > RAM
/* Heap Section: Used for dynamic memory allocation. */
.heap :
{
_sheap = .; /* Start of heap */
. = . + 2048; /* Reserve 2 KB for heap */
_eheap = .; /* End of heap */
} > RAM
}
/* Provide symbols to be used in the startup code */
PROVIDE(_stack_start = _sstack);
PROVIDE(_stack_end = _estack);
PROVIDE(_heap_start = _sheap);
PROVIDE(_heap_end = _eheap);