catlinkcmds 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. ".vector_size" = 0x2000;
  2. ".text_size" = 0x37000;
  3. ".data_size" = 0x2000;
  4. ".exidx_size" = 0x8;
  5. ".bss_size" = 0x69000;
  6. ".start_size" = 0x1000;
  7. ".comment_size" = 0x2f;
  8. ".ARM.attributes_size" = 0x37;
  9. ".debug_info_size" = 0xdc93;
  10. ".debug_abbrev_size" = 0x2735;
  11. ".debug_aranges_size" = 0x2d8;
  12. ".debug_line_size" = 0x59dc;
  13. ".debug_str_size" = 0x20395;
  14. ".debug_frame_size" = 0x2ad8;
  15. ".debug_macro_size" = 0x7823;
  16. ".debug_ranges_size" = 0x28;
  17. /* memory-config builder in ACoreIDE by qxbin*/
  18. /*21 Mar 2025 10:47:48 GMT*/
  19. ENTRY(_start)
  20. MEMORY
  21. {
  22. ram : ORIGIN = 0x80000000, LENGTH = 0x03000000
  23. boot_rom : ORIGIN = 0x700000, LENGTH = 0x00200000
  24. }
  25. SECTIONS {
  26. .vector ((0x80000000 + (0x00001000-1))& ~ (0x00001000-1)) : AT((0x701000 + (0x00001000-1))& ~ (0x00001000-1))
  27. {
  28. ".vector_start" = .;
  29. _vectors_start = .;
  30. *(.vectors);
  31. . = ALIGN(4096);
  32. ;
  33. _vectors_end = .;
  34. } >ram
  35. _vectors_size = 0x00008000;
  36. .text ((".vector_start" + 0x00008000 + (0x00001000-1))& ~ (0x00001000-1)) : AT((0x701000 + 0x00008000 + (0x00001000-1))& ~ (0x00001000-1))
  37. {
  38. ".text_start" = .;
  39. _code_start = .;
  40. CREATE_OBJECT_SYMBOLS *( .text ) ;
  41. *(.m_hdr) ;
  42. __EH_FRAME_BEGIN__ = .;
  43. *(.eh_frame) ;
  44. *(.gnu.linkonce.t*) ;
  45. . = ALIGN(4);
  46. ___CTOR_LIST__ = .;
  47. __CTOR_LIST__ = .;
  48. LONG (-1);
  49. *(.ctors);
  50. *(.ctor);
  51. LONG (0);
  52. __CTOR_END__ = .;
  53. ___DTOR_LIST__ = .;
  54. __DTOR_LIST__ = .;
  55. LONG (-1);
  56. *(.dtors);
  57. *(.dtor);
  58. LONG (0);
  59. __DTOR_END__ = .;
  60. *(.gnu.linkonce.r*);
  61. *(.glue_7) ;
  62. *(.glue_7t);
  63. *(.rodata);
  64. *(.rodata.*);
  65. *(.init);
  66. *(.jcr);
  67. *(.data.rel.local);
  68. *(.fini);
  69. *(.got*);
  70. *(.fixup);
  71. *(.interface);
  72. . = ALIGN(4096);
  73. ;
  74. _code_end = .;
  75. } >ram
  76. _code_size = SIZEOF(.text);
  77. .data ((".text_start" + "_code_size" + (0x00001000-1))& ~ (0x00001000-1)) : AT((0x701000 + 0x00008000 + "_code_size" + (0x00001000-1))& ~ (0x00001000-1))
  78. {
  79. ".data_start" = .;
  80. _data_start = .;
  81. *(.data);
  82. *(.gnu.linkonce.d*);
  83. *(.sdata*);
  84. *(.flash*);
  85. *(.gcc_except_table);
  86. *(.init_array*);
  87. *(.fini_array*);
  88. . = ALIGN(4);
  89. shell_cmd_start = .;
  90. *(.data.shellCmd) ;
  91. shell_cmd_end = .;
  92. . = ALIGN(4096);
  93. ;
  94. _data_end = .;
  95. } >ram
  96. _data_size = SIZEOF(.data);
  97. .exidx ((".data_start" + "_data_size" + (0x00001000-1))& ~ (0x00001000-1)) : AT((0x701000 + 0x00008000 + "_code_size" + "_data_size" + (0x00001000-1))& ~ (0x00001000-1))
  98. {
  99. ".exidx_start" = .;
  100. _exidx_start = .;
  101. *(.ARM.exidx* .gnu.linkonce.armexidx.*);
  102. _exidx_end = .;
  103. } >ram
  104. _exidx_size = SIZEOF(.exidx);
  105. .bss ((".exidx_start" + "_exidx_size" + (0x00001000-1))& ~ (0x00001000-1)) :
  106. {
  107. ".bss_start" = .;
  108. _bss_start = .;
  109. *(.bss);
  110. *(COMMON);
  111. *(.sbss);
  112. . = ALIGN(4096);
  113. ;
  114. _bss_end = .;
  115. } >ram
  116. _bss_size = SIZEOF(.bss);
  117. _pgheap_start =( 0x80200000 + (0x00000004-1))& ~ (0x00000004-1);
  118. _pgheap_end =( 0x80200000 + 0x500000 + (0x00000004-1))& ~ (0x00000004-1);
  119. _pgheap_size = 0x500000;
  120. _crtl_heap_start =( 0x80700000 + (0x00000004-1))& ~ (0x00000004-1);
  121. _crtl_heap_end =( 0x80700000 + 0x02900000 + (0x00000004-1))& ~ (0x00000004-1);
  122. _crtl_heap_size = 0x02900000;
  123. _rom_start_start = ((0x700000 + (0x00001000-1))& ~ (0x00001000-1));
  124. _rom_start_end = ((0x700000 + 0x1000 + (0x00001000-1))& ~ (0x00001000-1));
  125. _rom_vectors_start = ((0x701000 + (0x00001000-1))& ~ (0x00001000-1));
  126. _rom_vectors_end = ((0x701000 + 0x00008000 + (0x00001000-1))& ~ (0x00001000-1));
  127. _rom_code_start = ((0x701000 + 0x00008000 + (0x00001000-1))& ~ (0x00001000-1));
  128. _rom_code_end = ((0x701000 + 0x00008000 + "_code_size" + (0x00001000-1))& ~ (0x00001000-1));
  129. _rom_data_start = ((0x701000 + 0x00008000 + "_code_size" + (0x00001000-1))& ~ (0x00001000-1));
  130. _rom_data_end = ((0x701000 + 0x00008000 + "_code_size" + "_data_size" + (0x00001000-1))& ~ (0x00001000-1));
  131. _rom_exidx_start = ((0x701000 + 0x00008000 + "_code_size" + "_data_size" + (0x00001000-1))& ~ (0x00001000-1));
  132. _rom_exidx_end = ((0x701000 + 0x00008000 + "_code_size" + "_data_size" + "_exidx_size" + (0x00001000-1))& ~ (0x00001000-1));
  133. .start ((0x700000 + (0x00001000-1))& ~ (0x00001000-1)) : AT((0x700000 + (0x00001000-1))& ~ (0x00001000-1))
  134. {
  135. ".start_start" = .;
  136. _start_start = .;
  137. *(.start);
  138. . = ALIGN(4096);
  139. ;
  140. _start_start = .;
  141. } >boot_rom
  142. _start_size = 0x1000;
  143. }
  144. load__code_start =( 0x00001000-1 )&~(0x00001000 -1 );
  145. load__data_start =( load__code_start + _code_size + ( 0x00001000 -1 ))&~(0x00001000 -1 );
  146. load__bss_start =( load__data_start + _data_size + ( 0x00001000 -1 ))&~(0x00001000 -1 );