emsk_em9d.ld 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. MEMORY
  2. {
  3. ICCM : ORIGIN = 0x00000000, LENGTH = 0x40000
  4. DCCM : ORIGIN = 0x80000000, LENGTH = 0x20000
  5. EXT_RAM : ORIGIN = 0x10000000, LENGTH = 0x8000000
  6. }
  7. ENTRY(_start)
  8. SECTIONS
  9. {
  10. .init :
  11. {
  12. _f_init = .;
  13. KEEP (*(.init_vector))
  14. KEEP (*(.init_bootstrap))
  15. _e_init = .;
  16. } > EXT_RAM
  17. .vector : ALIGN(1024)
  18. {
  19. _f_vector = .;
  20. *(.vector)
  21. _e_vector = .;
  22. } > EXT_RAM
  23. .text : ALIGN(4)
  24. {
  25. _f_text = .;
  26. *(.text .text.* .gnu.linkonce.t.*)
  27. _e_text = .;
  28. } > EXT_RAM
  29. .rodata : ALIGN(4)
  30. {
  31. _f_rodata = .;
  32. /* section information for finsh shell */
  33. . = ALIGN(4);
  34. __fsymtab_start = .;
  35. KEEP(*(FSymTab))
  36. __fsymtab_end = .;
  37. . = ALIGN(4);
  38. __vsymtab_start = .;
  39. KEEP(*(VSymTab))
  40. __vsymtab_end = .;
  41. . = ALIGN(4);
  42. __rt_init_start = .;
  43. KEEP(*(SORT(.rti_fn*)))
  44. __rt_init_end = .;
  45. . = ALIGN(4);
  46. __CTOR_LIST__ = .;
  47. LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
  48. KEEP(*(SORT_BY_NAME(".ctors*")))
  49. LONG(0)
  50. __CTOR_END__ = .;
  51. . = ALIGN(4);
  52. __init_array_start = .;
  53. KEEP(*(SORT_BY_NAME(".init_array*")))
  54. __init_array_end = .;
  55. . = ALIGN(4);
  56. __DTOR_LIST__ = .;
  57. LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
  58. KEEP(*(SORT_BY_NAME(".dtors*")))
  59. LONG(0)
  60. __DTOR_END__ = .;
  61. *(.rodata .rodata.* .gnu.linkonce.r.*)
  62. _e_rodata = .;
  63. } > EXT_RAM
  64. .data : ALIGN(4)
  65. {
  66. _f_data = .;
  67. *(.data .data.* .gnu.linkonce.d.*)
  68. _f_sdata = .;
  69. __SDATA_BEGIN__ = .;
  70. *(.sdata .sdata.* .gnu.linkonce.s.*)
  71. _e_sdata = .;
  72. _e_data = .;
  73. } > EXT_RAM
  74. .bss (NOLOAD) : ALIGN(8)
  75. {
  76. PROVIDE (__sbss_start = .);
  77. PROVIDE (___sbss_start = .);
  78. _f_bss = .;
  79. _f_sbss = .;
  80. *(.dynsbss)
  81. *(.sbss .sbss.* .gnu.linkonce.sb.*)
  82. *(.scommon)
  83. _e_sbss = .;
  84. PROVIDE (__sbss_end = .);
  85. PROVIDE (___sbss_end = .);
  86. *(.dynbss)
  87. *(.bss .bss.* .gnu.linkonce.b.*)
  88. *(COMMON)
  89. _e_bss = .;
  90. } > EXT_RAM
  91. .stack (NOLOAD) :
  92. {
  93. . = ALIGN(4);
  94. _f_stack = .;
  95. . = . + 4096;
  96. _e_stack = .;
  97. } > EXT_RAM
  98. .heap (NOLOAD) :
  99. {
  100. . = ALIGN(4);
  101. __start_heap = . ;
  102. _f_heap = .;
  103. . = . + 0x8000;
  104. _e_heap = .;
  105. __end_heap = . ;
  106. } > EXT_RAM
  107. _load_addr_text = LOADADDR(.text);
  108. _load_addr_rodata = LOADADDR(.rodata);
  109. _load_addr_data = LOADADDR(.data);
  110. }