stm32.ld.S 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 == AT32F415
  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. .data : AT (_etext) {
  29. . = ALIGN(4);
  30. _sdat = .;
  31. *(.data)
  32. *(.data*)
  33. . = ALIGN(4);
  34. _edat = .;
  35. _ldat = LOADADDR(.data);
  36. } >RAM
  37. .bss : {
  38. . = ALIGN(8);
  39. _irq_stackbottom = .;
  40. . = . + 512;
  41. _irq_stacktop = .;
  42. _thread_stackbottom = .;
  43. . = . + 1024;
  44. _thread_stacktop = .;
  45. _sbss = .;
  46. *(.bss)
  47. *(.bss*)
  48. . = ALIGN(4);
  49. _ebss = .;
  50. } >RAM
  51. #if MCU == STM32F7
  52. .ext_ram (NOLOAD) : {
  53. . = ALIGN(8);
  54. _ext_ram_start = .;
  55. *(.ext_ram)
  56. . = ALIGN(4);
  57. _ext_ram_end = .;
  58. } >EXT_RAM
  59. #endif
  60. /DISCARD/ : {
  61. *(.eh_frame)
  62. }
  63. .ARM.attributes 0 : { *(.ARM.attributes) }
  64. }