stm32.ld.S 1.1 KB

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