| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*
- GNU linker script for generic STM32xxx MCU
- */
- /* Specify the memory areas */
- MEMORY
- {
- FLASH_BL (rx) : ORIGIN = 0x08000000, LENGTH = 16K /* sector 0 (can be 32K) */
- RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
- }
- /* produce a link error if there is not this amount of RAM for these sections */
- _minimum_stack_size = 2K;
- /* Define tho top end of the stack. The stack is full descending so begins just
- above last byte of RAM. Note that EABI requires the stack to be 8-byte
- aligned for a call. */
- _estack = ORIGIN(RAM) + LENGTH(RAM);
- ENTRY(Reset_Handler)
- SECTIONS
- {
- /* The startup code goes first into FLASH */
- .isr_vector :
- {
- . = ALIGN(4);
- KEEP(*(.isr_vector)) /* Startup code */
- . = ALIGN(4);
- } >FLASH_BL
- /* The program code and other data goes into FLASH */
- .text :
- {
- . = ALIGN(4);
- *(.text*)
- *(.rodata*)
- . = ALIGN(4);
- _etext = .;
- } >FLASH_BL
- /* used by the startup to initialize data */
- _sidata = LOADADDR(.data);
- /* Initialized data section */
- .data :
- {
- . = ALIGN(4);
- _sdata = .;
- *(.data*)
- . = ALIGN(4);
- _edata = .;
- } >RAM AT> FLASH_BL
- /* Uninitialized data section */
- .bss :
- {
- . = ALIGN(4);
- _sbss = .;
- *(.bss*)
- *(COMMON)
- . = ALIGN(4);
- _ebss = .;
- } >RAM
- /* this just checks there is enough RAM for the stack */
- .stack :
- {
- . = ALIGN(4);
- . = . + _minimum_stack_size;
- . = ALIGN(4);
- } >RAM
- .ARM.attributes 0 : { *(.ARM.attributes) }
- }
|