/** * \file * * * \author Andrea Righi * * \brief Script for Olimex STM32-P103 Cortex-M3 board. * */ SEARCH_DIR(.) OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) /* * Define memory configuration for STM32F103R8 */ MEMORY { rom(rx) : org = 0x00000000, len = 128k ram(rwx) : org = 0x20000000, len = 20k } /* * Define stack size here */ STACK_SIZE = 0x1000; /* * Allocate section memory */ SECTIONS { .text : { KEEP(*(.vectors)); . = ALIGN (4); KEEP(*(.init)); . = ALIGN (4); *(.rodata .rodata.*); . = ALIGN (4); *(.text .text.*); . = ALIGN (4); *(.glue_7t); . = ALIGN(4); *(.glue_7); . = ALIGN(4); } > rom __text_end = .; PROVIDE (__text_end = .); .data : AT (__text_end) { PROVIDE (__data_start = .); . = ALIGN (0x400); *(vtable) *(.data .data.*) . = ALIGN (4); _edata = .; PROVIDE (__data_end = .); } > ram .bss : { PROVIDE (__bss_start = .); *(.bss .bss.*) . = ALIGN(4); *(COMMON) . = ALIGN(4); PROVIDE (__bss_end = .); } > ram /* * Allocated stack at the end of bss section. * Data heap is allocate at end of stack. */ PROVIDE (__msp_start = .); . = ALIGN(8); . += STACK_SIZE; PROVIDE (__msp_end = .); PROVIDE (__psp_start = .); . = ALIGN(8); . += STACK_SIZE; PROVIDE (__psp_end = .); PROVIDE (__heap_start = .); . = ALIGN(8); }