stm32.ld.S 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. ENTRY(vector_table)
  2. MEMORY
  3. {
  4. FLASH (rx) : ORIGIN = FLASH_BASE, LENGTH = FLASH_LEN
  5. #if MCU == STM32F1
  6. RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
  7. #elif MCU == STM32F7
  8. RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
  9. EXT_RAM (rwx) : ORIGIN = 0x20010000, LENGTH = 192K
  10. #elif MCU == AT32F4
  11. RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 32K
  12. #endif
  13. }
  14. SECTIONS
  15. {
  16. .text : {
  17. _stext = .;
  18. *(.vector_table)
  19. *(.text)
  20. *(.text*)
  21. *(.rodata)
  22. *(.rodata*)
  23. KEEP (*(.init))
  24. KEEP (*(.fini))
  25. . = ALIGN(4);
  26. _etext = .;
  27. } >FLASH
  28. #if MCU == STM32F1 || MCU == AT32F4
  29. .flags : {
  30. _reset_flag = .;
  31. . = . + 4;
  32. } >RAM
  33. #endif
  34. .data : AT (_etext) {
  35. . = ALIGN(4);
  36. _sdat = .;
  37. *(.data)
  38. *(.data*)
  39. . = ALIGN(4);
  40. _edat = .;
  41. _ldat = LOADADDR(.data);
  42. } >RAM
  43. .bss : {
  44. . = ALIGN(8);
  45. _irq_stackbottom = .;
  46. . = . + 512;
  47. _irq_stacktop = .;
  48. _thread_stackbottom = .;
  49. . = . + 1024;
  50. _thread_stacktop = .;
  51. _sbss = .;
  52. *(.bss)
  53. *(.bss*)
  54. . = ALIGN(4);
  55. _ebss = .;
  56. } >RAM
  57. #if MCU == STM32F7
  58. .ext_ram (NOLOAD) : {
  59. _ext_ram_start = .;
  60. _reset_flag = .;
  61. . = . + 4;
  62. *(.ext_ram)
  63. . = ALIGN(4);
  64. _ext_ram_end = .;
  65. } >EXT_RAM
  66. #endif
  67. /DISCARD/ : {
  68. *(.eh_frame)
  69. }
  70. .ARM.attributes 0 : { *(.ARM.attributes) }
  71. }