ram.ld 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. #include "config.h"
  2. ENTRY(_start)
  3. //Define the flash max size
  4. __max_flash_size = FLASH_CODE_SIZE;
  5. __base = 0x10000000;
  6. // Define program ram size (* SUM: 61KB *)
  7. __data_ram_size = 11k;
  8. __comm_ram_size = 18k;
  9. __commEx_ram_size = COMM_EX_SIZE;
  10. __bram_ram_size = 32k;
  11. // Define the area size
  12. __cache_stack_vma = 0x10600; //for loader
  13. __cache_stack_size = 512; //for loader
  14. __stack_vma = 0x10800;
  15. __stack_ram_size = 1k;
  16. __data_vma = 0x10c00;
  17. __comm_vma = __data_vma + __data_ram_size;
  18. __commEx_vma = __comm_vma + __comm_ram_size;
  19. __bram_vma = __commEx_vma + __commEx_ram_size;
  20. MEMORY
  21. {
  22. init : org = __base, len = 512
  23. flash(rx) : org = __base + 512, len = __max_flash_size
  24. comm(rx) : org = __comm_vma, len = __comm_ram_size
  25. commEx(rx) : org = __commEx_vma, len = __commEx_ram_size
  26. stack : org = __stack_vma, len = __stack_ram_size
  27. data : org = __data_vma, len = __data_ram_size
  28. bram : org = __bram_vma, len = __bram_ram_size
  29. }
  30. SECTIONS
  31. {
  32. .init : {
  33. *(.reset)
  34. } > init
  35. .comm : {
  36. *(.vector)
  37. *(.com_text*)
  38. *(.com_rodata*)
  39. *debug.o(.rodata*)
  40. *(.com_sleep*)
  41. *(.com_periph.*)
  42. *(.data*)
  43. *(.sdata*)
  44. #if AINS3_EN
  45. *(.fft_buf*)
  46. #endif
  47. #if AINS4_EN
  48. *(.fft_buf*)
  49. #endif
  50. . = ALIGN(512);
  51. } > comm AT > flash
  52. .commEx : {
  53. *(.com_ex*)
  54. . = ALIGN(512);
  55. } > commEx AT > flash
  56. .flash : {
  57. __code_start_app_proc = .;
  58. *(.text.app.proc.*)
  59. . = ALIGN(512);
  60. __code_end_app_proc = .;
  61. __code_start_usbdev = .;
  62. *(.usbdev*)
  63. . = ALIGN(512);
  64. __code_end_usbdev = .;
  65. __code_start_stack_send = .;
  66. *(.text.stack.send.*)
  67. . = ALIGN(512);
  68. __code_end_stack_send = .;
  69. #if AINS3_EN
  70. __code_start_alg = .;
  71. . = ALIGN(512);
  72. __code_end_alg = .;
  73. *(.ains3_text*)
  74. *(.fft_rodata*)
  75. *(.fft_text*)
  76. #endif
  77. #if AINS4_EN
  78. __code_start_alg = .;
  79. . = ALIGN(512);
  80. __code_end_alg = .;
  81. *(.fft_rodata*)
  82. *(.ains4_rodata*)
  83. *(.text.ains4)
  84. *(.text.ains4_proc*)
  85. *(.ains4_text*)
  86. *(.fft_text*)
  87. #endif
  88. *(.text*)
  89. *(.rodata*)
  90. *(.srodata*)
  91. *(.rela*)
  92. LONG(0)
  93. . = ALIGN(512);
  94. } > flash
  95. .stack (NOLOAD) : {
  96. __irq_stack_start = .;
  97. . = 0x400;
  98. __irq_stack = .;
  99. } > stack
  100. __irq_stack_size = __irq_stack - __irq_stack_start;
  101. .bss (NOLOAD) : {
  102. __heap_start = .;
  103. *(.mem_heap)
  104. __heap_end = .;
  105. __bss_start = .;
  106. *(COMMON)
  107. *(.bss*)
  108. *(.sbss*)
  109. *(.buf*)
  110. *(.btmem.stack.l2cap)
  111. #if AINS3_EN
  112. *(.ains3_buf*)
  113. #endif
  114. __bss_end = .;
  115. } > data
  116. __bss_size = __bss_end - __bss_start;
  117. __heap_size = __heap_end - __heap_start;
  118. .bram __bram_vma (NOLOAD) : {
  119. __bram_start = .;
  120. *(.btmem.bthw)
  121. *(.btmem*)
  122. *(.ram_text.*)
  123. *(.ble_cache*)
  124. *(.ble_buf*)
  125. *(.fot_data.*)
  126. *(.usb_buf*)
  127. *(.user_buf*)
  128. *(.bram_com*)
  129. #if AINS4_EN
  130. *(.ains4_buf*)
  131. #endif
  132. __bram_end = .;
  133. } > bram
  134. __bram_size = __bram_end - __bram_start;
  135. .bram_dut __bram_vma (NOLOAD) : {
  136. . = __bram_ram_size - 4k;
  137. *(.fcc.huart_buf)
  138. *(.hci.h3*)
  139. *(.prod_test*)
  140. } > bram
  141. }
  142. //Calc the lma
  143. __bank_size = SIZEOF(.flash);
  144. __comm_lma = LOADADDR(.comm);
  145. __comm_size = SIZEOF(.comm);
  146. __commEx_lma = LOADADDR(.commEx);
  147. __commEx_size = SIZEOF(.commEx);