]> mj.ucw.cz Git - home-hw.git/blobdiff - STM32F030R8Tx_FLASH.ld
Makefile: Fix deps
[home-hw.git] / STM32F030R8Tx_FLASH.ld
index 6ab4965eb34128f0f874e589b2a52cf0d2920ffd..b2e3eb9cd58554ed6ce646f6999a28c6bc69662c 100644 (file)
-/*\r
-*****************************************************************************\r
-**\r
-\r
-**  File        : LinkerScript.ld\r
-**\r
-**  Abstract    : Linker script for STM32F030R8Tx Device with\r
-**                64KByte FLASH, 8KByte RAM\r
-**\r
-**                Set heap size, stack size and stack location according\r
-**                to application requirements.\r
-**\r
-**                Set memory bank area and size if external memory is used.\r
-**\r
-**  Target      : STMicroelectronics STM32\r
-**\r
-**\r
-**  Distribution: The file is distributed as is, without any warranty\r
-**                of any kind.\r
-**\r
-**  (c)Copyright Ac6.\r
-**  You may use this file as-is or modify it according to the needs of your\r
-**  project. Distribution of this file (unmodified or modified) is not\r
-**  permitted. Ac6 permit registered System Workbench for MCU users the\r
-**  rights to distribute the assembled, compiled & linked contents of this\r
-**  file as part of an application binary file, provided that it is built\r
-**  using the System Workbench for MCU toolchain.\r
-**\r
-*****************************************************************************\r
-*/\r
-\r
-/* Entry Point */\r
-ENTRY(Reset_Handler)\r
-\r
-/* Highest address of the user mode stack */\r
-_estack = 0x20002000;    /* end of RAM */\r
-/* Generate a link error if heap and stack don't fit into RAM */\r
-_Min_Heap_Size = 0x200;      /* required amount of heap  */\r
-_Min_Stack_Size = 0x400; /* required amount of stack */\r
-\r
-/* Specify the memory areas */\r
-MEMORY\r
-{\r
-RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 8K\r
-FLASH (rx)      : ORIGIN = 0x8000000, LENGTH = 64K\r
-}\r
-\r
-/* Define output sections */\r
-SECTIONS\r
-{\r
-  /* The startup code goes first into FLASH */\r
-  .isr_vector :\r
-  {\r
-    . = ALIGN(4);\r
-    KEEP(*(.isr_vector)) /* Startup code */\r
-    . = ALIGN(4);\r
-  } >FLASH\r
-\r
-  /* The program code and other data goes into FLASH */\r
-  .text :\r
-  {\r
-    . = ALIGN(4);\r
-    *(.text)           /* .text sections (code) */\r
-    *(.text*)          /* .text* sections (code) */\r
-    *(.glue_7)         /* glue arm to thumb code */\r
-    *(.glue_7t)        /* glue thumb to arm code */\r
-    *(.eh_frame)\r
-\r
-    KEEP (*(.init))\r
-    KEEP (*(.fini))\r
-\r
-    . = ALIGN(4);\r
-    _etext = .;        /* define a global symbols at end of code */\r
-  } >FLASH\r
-\r
-  /* Constant data goes into FLASH */\r
-  .rodata :\r
-  {\r
-    . = ALIGN(4);\r
-    *(.rodata)         /* .rodata sections (constants, strings, etc.) */\r
-    *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */\r
-    . = ALIGN(4);\r
-  } >FLASH\r
-\r
-  .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH\r
-  .ARM : {\r
-    __exidx_start = .;\r
-    *(.ARM.exidx*)\r
-    __exidx_end = .;\r
-  } >FLASH\r
-\r
-  .preinit_array     :\r
-  {\r
-    PROVIDE_HIDDEN (__preinit_array_start = .);\r
-    KEEP (*(.preinit_array*))\r
-    PROVIDE_HIDDEN (__preinit_array_end = .);\r
-  } >FLASH\r
-  .init_array :\r
-  {\r
-    PROVIDE_HIDDEN (__init_array_start = .);\r
-    KEEP (*(SORT(.init_array.*)))\r
-    KEEP (*(.init_array*))\r
-    PROVIDE_HIDDEN (__init_array_end = .);\r
-  } >FLASH\r
-  .fini_array :\r
-  {\r
-    PROVIDE_HIDDEN (__fini_array_start = .);\r
-    KEEP (*(SORT(.fini_array.*)))\r
-    KEEP (*(.fini_array*))\r
-    PROVIDE_HIDDEN (__fini_array_end = .);\r
-  } >FLASH\r
-\r
-  /* used by the startup to initialize data */\r
-  _sidata = LOADADDR(.data);\r
-\r
-  /* Initialized data sections goes into RAM, load LMA copy after code */\r
-  .data : \r
-  {\r
-    . = ALIGN(4);\r
-    _sdata = .;        /* create a global symbol at data start */\r
-    *(.data)           /* .data sections */\r
-    *(.data*)          /* .data* sections */\r
-\r
-    . = ALIGN(4);\r
-    _edata = .;        /* define a global symbol at data end */\r
-  } >RAM AT> FLASH\r
-\r
-  \r
-  /* Uninitialized data section */\r
-  . = ALIGN(4);\r
-  .bss :\r
-  {\r
-    /* This is used by the startup in order to initialize the .bss secion */\r
-    _sbss = .;         /* define a global symbol at bss start */\r
-    __bss_start__ = _sbss;\r
-    *(.bss)\r
-    *(.bss*)\r
-    *(COMMON)\r
-\r
-    . = ALIGN(4);\r
-    _ebss = .;         /* define a global symbol at bss end */\r
-    __bss_end__ = _ebss;\r
-  } >RAM\r
-\r
-  /* User_heap_stack section, used to check that there is enough RAM left */\r
-  ._user_heap_stack :\r
-  {\r
-    . = ALIGN(8);\r
-    PROVIDE ( end = . );\r
-    PROVIDE ( _end = . );\r
-    . = . + _Min_Heap_Size;\r
-    . = . + _Min_Stack_Size;\r
-    . = ALIGN(8);\r
-  } >RAM\r
-\r
-  \r
-\r
-  /* Remove information from the standard libraries */\r
-  /DISCARD/ :\r
-  {\r
-    libc.a ( * )\r
-    libm.a ( * )\r
-    libgcc.a ( * )\r
-  }\r
-\r
-  .ARM.attributes 0 : { *(.ARM.attributes) }\r
-}\r
-\r
-\r
+/*
+*****************************************************************************
+**
+
+**  File        : LinkerScript.ld
+**
+**  Abstract    : Linker script for STM32F030R8Tx Device with
+**                64KByte FLASH, 8KByte RAM
+**
+**                Set heap size, stack size and stack location according
+**                to application requirements.
+**
+**                Set memory bank area and size if external memory is used.
+**
+**  Target      : STMicroelectronics STM32
+**
+**
+**  Distribution: The file is distributed as is, without any warranty
+**                of any kind.
+**
+**  (c)Copyright Ac6.
+**  You may use this file as-is or modify it according to the needs of your
+**  project. Distribution of this file (unmodified or modified) is not
+**  permitted. Ac6 permit registered System Workbench for MCU users the
+**  rights to distribute the assembled, compiled & linked contents of this
+**  file as part of an application binary file, provided that it is built
+**  using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Entry Point */
+ENTRY(Reset_Handler)
+
+/* Highest address of the user mode stack */
+_estack = 0x20002000;    /* end of RAM */
+/* 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 */
+
+/* Specify the memory areas */
+MEMORY
+{
+RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 8K
+FLASH (rx)      : ORIGIN = 0x8000000, LENGTH = 64K
+}
+
+/* Define output sections */
+SECTIONS
+{
+  /* The startup code goes first into FLASH */
+  .isr_vector :
+  {
+    . = ALIGN(4);
+    KEEP(*(.isr_vector)) /* Startup code */
+    . = ALIGN(4);
+  } >FLASH
+
+  /* The program code and other data goes into FLASH */
+  .text :
+  {
+    . = ALIGN(4);
+    *(.text)           /* .text sections (code) */
+    *(.text*)          /* .text* sections (code) */
+    *(.glue_7)         /* glue arm to thumb code */
+    *(.glue_7t)        /* glue thumb to arm code */
+    *(.eh_frame)
+
+    KEEP (*(.init))
+    KEEP (*(.fini))
+
+    . = ALIGN(4);
+    _etext = .;        /* define a global symbols at end of code */
+  } >FLASH
+
+  /* Constant data goes into FLASH */
+  .rodata :
+  {
+    . = ALIGN(4);
+    *(.rodata)         /* .rodata sections (constants, strings, etc.) */
+    *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */
+    . = ALIGN(4);
+  } >FLASH
+
+  .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
+  .ARM : {
+    __exidx_start = .;
+    *(.ARM.exidx*)
+    __exidx_end = .;
+  } >FLASH
+
+  .preinit_array     :
+  {
+    PROVIDE_HIDDEN (__preinit_array_start = .);
+    KEEP (*(.preinit_array*))
+    PROVIDE_HIDDEN (__preinit_array_end = .);
+  } >FLASH
+  .init_array :
+  {
+    PROVIDE_HIDDEN (__init_array_start = .);
+    KEEP (*(SORT(.init_array.*)))
+    KEEP (*(.init_array*))
+    PROVIDE_HIDDEN (__init_array_end = .);
+  } >FLASH
+  .fini_array :
+  {
+    PROVIDE_HIDDEN (__fini_array_start = .);
+    KEEP (*(SORT(.fini_array.*)))
+    KEEP (*(.fini_array*))
+    PROVIDE_HIDDEN (__fini_array_end = .);
+  } >FLASH
+
+  /* used by the startup to initialize data */
+  _sidata = LOADADDR(.data);
+
+  /* Initialized data sections goes into RAM, load LMA copy after code */
+  .data : 
+  {
+    . = ALIGN(4);
+    _sdata = .;        /* create a global symbol at data start */
+    *(.data)           /* .data sections */
+    *(.data*)          /* .data* sections */
+
+    . = ALIGN(4);
+    _edata = .;        /* define a global symbol at data end */
+  } >RAM AT> FLASH
+
+  
+  /* Uninitialized data section */
+  . = ALIGN(4);
+  .bss :
+  {
+    /* This is used by the startup in order to initialize the .bss secion */
+    _sbss = .;         /* define a global symbol at bss start */
+    __bss_start__ = _sbss;
+    *(.bss)
+    *(.bss*)
+    *(COMMON)
+
+    . = ALIGN(4);
+    _ebss = .;         /* define a global symbol at bss end */
+    __bss_end__ = _ebss;
+  } >RAM
+
+  /* User_heap_stack section, used to check that there is enough RAM left */
+  ._user_heap_stack :
+  {
+    . = ALIGN(8);
+    PROVIDE ( end = . );
+    PROVIDE ( _end = . );
+    . = . + _Min_Heap_Size;
+    . = . + _Min_Stack_Size;
+    . = ALIGN(8);
+  } >RAM
+
+  
+
+  /* Remove information from the standard libraries */
+  /DISCARD/ :
+  {
+    libc.a ( * )
+    libm.a ( * )
+    libgcc.a ( * )
+  }
+
+  .ARM.attributes 0 : { *(.ARM.attributes) }
+}
+
+