linker_pass_final.sct 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. #! armclang --target=arm-arm-none-eabi -march=armv7-m -E -x c
  2. #include "zephyr/include/generated/autoconf.h"
  3. #include "zephyr/include/generated/offsets.h"
  4. #define ROM_ADDR (CONFIG_FLASH_BASE_ADDRESS + CONFIG_FLASH_LOAD_OFFSET)
  5. #define ROM_SIZE (CONFIG_FLASH_SIZE * 1024)
  6. #ifndef CONFIG_SENSOR_RAM_SIZE
  7. #define CONFIG_SENSOR_RAM_SIZE 0
  8. #endif
  9. #ifndef CONFIG_SENSOR_RAM_CODE_SIZE
  10. #define CONFIG_SENSOR_RAM_CODE_SIZE 0
  11. #endif
  12. #define SRAM_DATA_SIZE AlignExpr(ImageLength(ER_SRAM_DATA),1024)
  13. #define CODE_RAM_SIZE (CONFIG_SENSOR_RAM_CODE_SIZE * 1024)
  14. #define RAM_SIZE (CONFIG_SRAM_SIZE * 1024 - SRAM_DATA_SIZE - CODE_RAM_SIZE - CONFIG_SENSOR_RAM_SIZE * 1024)
  15. #define SRAM_DATA_ADDR (CONFIG_SRAM_BASE_ADDRESS)
  16. #define RAM_ADDR (SRAM_DATA_ADDR + SRAM_DATA_SIZE)
  17. #define CODE_RAM_ADDR (RAM_ADDR + RAM_SIZE)
  18. #define SHARE_RAM_ADDR 0x2FF1A600
  19. #define SHARE_RAM_SIZE 0x5900
  20. #define PSRAM_SIZE (CONFIG_PSRAM_SIZE * 1024)
  21. #define PSRAM_ADDR CONFIG_PSRAM_BASE_ADDRESS
  22. #define INIT_STATUS_SIZE (((((ImageLimit(ER_DEVICE_SMPX) - ImageBase(ER_DEVICE_PRE_KERNEL_1)) / _DEVICE_STRUCT_SIZEOF) + 31) / 32) * 4)
  23. #define DEVICE_BUSY_SIZE (((((ImageLimit(ER_DEVICE_SMPX) - ImageBase(ER_DEVICE_PRE_KERNEL_1)) / _DEVICE_STRUCT_SIZEOF) + 31) / 32) * 4)
  24. LR1 ROM_ADDR ROM_SIZE { ; load region 1
  25. ER_HEADER ROM_ADDR EMPTY CONFIG_ROM_START_OFFSET {
  26. }
  27. ER_VECTOR ROM_ADDR+CONFIG_ROM_START_OFFSET FIXED {
  28. * (.exc_vector_table)
  29. * (.exc_vector_table.*)
  30. * (.gnu.linkonce.irq_vector_table)
  31. * (.vectors)
  32. }
  33. #ifdef CONFIG_HR_ROM_BASE
  34. ER_HR_BIN CONFIG_HR_ROM_BASE FIXED {
  35. * (.hr_rom)
  36. }
  37. #endif
  38. #ifdef CONFIG_SENSOR_ROM_BASE
  39. ER_SENSOR_BIN CONFIG_SENSOR_ROM_BASE FIXED {
  40. * (.sensor_rom)
  41. }
  42. #endif
  43. #ifdef CONFIG_SENSOR_SLEEP_ROM_BASE
  44. ER_SENSOR_SLEEP_BIN CONFIG_SENSOR_SLEEP_ROM_BASE FIXED {
  45. * (.sensor_sleep_rom)
  46. }
  47. #endif
  48. ER_APP_ENTRY +0 {
  49. * (.app_entry)
  50. }
  51. ER_SRV_ENTRY +0 {
  52. * (.service_entry)
  53. }
  54. ER_VIEW_ENTRY +0 {
  55. * (.view_entry)
  56. }
  57. ER_TEXT +0 {
  58. * (.text)
  59. * (.text.*)
  60. * (.gnu.linkonce.t.*)
  61. * (.glue_7t)
  62. * (.glue_7)
  63. * (.vfp11_veneer)
  64. * (.v4_bx)
  65. .ANY (+RO-CODE)
  66. }
  67. ER_ARM_EXTAB +0 {
  68. *(.ARM.extab*)
  69. *(gnu.linkonce.armextab.*)
  70. }
  71. ER_ARM_EXIDX +0 {
  72. *(.ARM.exidx*)
  73. *(gnu.linkonce.armexidx.*)
  74. }
  75. ER_INIT_PRE_KERNEL_1 +0 SORTTYPE Lexical {
  76. * (.z_init_PRE_KERNEL_1?_ )
  77. }
  78. ER_INIT_PRE_KERNEL_1X +0 SORTTYPE Lexical {
  79. * (.z_init_PRE_KERNEL_1??_ )
  80. }
  81. ER_INIT_PRE_KERNEL_2 +0 SORTTYPE Lexical {
  82. * (.z_init_PRE_KERNEL_2?_ )
  83. }
  84. ER_INIT_PRE_KERNEL_2X +0 SORTTYPE Lexical {
  85. * (.z_init_PRE_KERNEL_2??_ )
  86. }
  87. ER_INIT_POST_KERNEL +0 SORTTYPE Lexical {
  88. * (.z_init_POST_KERNEL?_ )
  89. }
  90. ER_INIT_POST_KERNELX +0 SORTTYPE Lexical {
  91. * (.z_init_POST_KERNEL??_ )
  92. }
  93. ER_INIT_APPLICATION +0 SORTTYPE Lexical {
  94. * (.z_init_APPLICATION?_ )
  95. }
  96. ER_INIT_APPLICATIONX +0 SORTTYPE Lexical {
  97. * (.z_init_APPLICATION??_ )
  98. }
  99. ER_INIT_SMP +0 SORTTYPE Lexical {
  100. * (.z_init_SMP?_ )
  101. }
  102. ER_INIT_SMPX +0 SORTTYPE Lexical {
  103. * (.z_init_SMP??_ )
  104. }
  105. ER_INIT_ERROR +0 SORTTYPE Lexical {
  106. * (.z_init_?*)
  107. }
  108. ER_DEVICE_PRE_KERNEL_1 +0 SORTTYPE Lexical {
  109. * (.z_device_PRE_KERNEL_1?_ )
  110. }
  111. ER_DEVICE_PRE_KERNEL_1X +0 SORTTYPE Lexical {
  112. * (.z_device_PRE_KERNEL_1??_ )
  113. }
  114. ER_DEVICE_PRE_KERNEL_2 +0 SORTTYPE Lexical {
  115. * (.z_device_PRE_KERNEL_2?_ )
  116. }
  117. ER_DEVICE_PRE_KERNEL_2X +0 SORTTYPE Lexical {
  118. * (.z_device_PRE_KERNEL_2??_ )
  119. }
  120. ER_DEVICE_POST_KERNEL +0 SORTTYPE Lexical {
  121. * (.z_device_POST_KERNEL?_ )
  122. }
  123. ER_DEVICE_POST_KERNELX +0 SORTTYPE Lexical {
  124. * (.z_device_POST_KERNEL??_ )
  125. }
  126. ER_DEVICE_APPLICATION +0 SORTTYPE Lexical {
  127. * (.z_device_APPLICATION?_ )
  128. }
  129. ER_DEVICE_APPLICATIONX +0 SORTTYPE Lexical {
  130. * (.z_device_APPLICATION??_ )
  131. }
  132. ER_DEVICE_SMP +0 SORTTYPE Lexical {
  133. * (.z_device_SMP? )
  134. }
  135. ER_DEVICE_SMPX +0 SORTTYPE Lexical {
  136. * (.z_device_SMP?? )
  137. }
  138. ER_APP_SHMEM +0 SORTTYPE Lexical {
  139. * (.app_regions.*)
  140. }
  141. ER_NET_12 +0 SORTTYPE Lexical {
  142. * (.net_l2.init)
  143. * (.net_l2.init*)
  144. }
  145. ER_BT_CHANNELS +0 SORTTYPE Lexical ALIGNALL 4 {
  146. * (._bt_l2cap_fixed_chan.static.*)
  147. }
  148. ER_BT_BR_CHANNELS +0 SORTTYPE Lexical ALIGNALL 4 {
  149. * (._bt_l2cap_br_fixed_chan.static.*)
  150. }
  151. ER_BT_SERVICES +0 SORTTYPE Lexical ALIGNALL 4 {
  152. * (._bt_gatt_service_static.static.*)
  153. }
  154. ER_LOG_CONST +0 SORTTYPE Lexical {
  155. * (.log_const_*)
  156. }
  157. ER_LOG_BACKENDS +0 SORTTYPE Lexical {
  158. * (._log_backend.*)
  159. }
  160. ER_SHELL +0 SORTTYPE Lexical {
  161. * (._shell.static.*)
  162. }
  163. ER_SHELL_ROOT_CMDS +0 SORTTYPE Lexical {
  164. * (.shell_root_cmd_*)
  165. }
  166. ER_FONT_ENTRY +0 SORTTYPE Lexical {
  167. * (._cfb_font.*)
  168. }
  169. ER_TRACING_BACKENDS +0 {
  170. * (._tracing_backend.*)
  171. }
  172. ER_RODATA +0 ALIGN 4 {
  173. * (.rodata)
  174. * (.rodata.*)
  175. * (.gnu.linkonce.r.*)
  176. .ANY (+RO-DATA)
  177. }
  178. ER_SRAM_DATA SRAM_DATA_ADDR ALIGN 8 {
  179. * (.sleepfunc)
  180. * (.sleepfunc.*)
  181. * (.defunc)
  182. * (.lvglfunc)
  183. * (.sleep.data*)
  184. }
  185. ER_ATTDATA PSRAM_ADDR {
  186. * (.attruntimedata)
  187. }
  188. ER_RAMFUNC +0 {
  189. * (.ramfunc)
  190. * (.ramfunc.*)
  191. }
  192. ER_DATAS +0 ALIGN 8 {
  193. * (.data)
  194. * (.data.*)
  195. * (.kernel.*)
  196. }
  197. ER_AAC_P_OVERLAY_DATA +0 ALIGN 4 OVERLAY {
  198. aac_a_1.o(+RW)
  199. aac_a_2.o(+RW)
  200. aac_a_3.o(+RW)
  201. aac_s_1.o(+RW)
  202. }
  203. ER_MP3_P_OVERLAY_DATA +0 ALIGN 4 OVERLAY{
  204. m1.o(+RW)
  205. m2.o(+RW)
  206. }
  207. ER_WAV_P_OVERLAY_DATA +0 ALIGN 4 OVERLAY {
  208. wav_s_1.o(+RW)
  209. wav_w_1.o(+RW)
  210. wav_w_2.o(+RW)
  211. wav_w_3.o(+RW)
  212. }
  213. ER_APE_P_OVERLAY_DATA +0 ALIGN 4 OVERLAY {
  214. ape_c_1.o(+RW)
  215. ape_d_1.o(+RW)
  216. ape_e_1.o(+RW)
  217. ape_i_1.o(+RW)
  218. ape_p_1.o(+RW)
  219. ape_s_1.o(+RW)
  220. ape_test.o(+RW)
  221. }
  222. ER_FLAC_P_OVERLAY_DATA +0 ALIGN 4 OVERLAY {
  223. fla_p_1.o(+RW)
  224. fla_s_1.o(+RW)
  225. fla_s_2.o(+RW)
  226. }
  227. ER_WMA_P_OVERLAY_DATA +0 ALIGN 4 OVERLAY {
  228. w13_i_1.o(+RW)
  229. w13_s_1.o(+RW)
  230. w13_a_1.o(+RW)
  231. }
  232. ER_DEVICE_STATE +0 SORTTYPE Lexical {
  233. * (.z_devstate* )
  234. }
  235. ER_PM_DEVICE_SLOTS +0 SORTTYPE Lexical {
  236. * (.z_pm_device_slots* )
  237. }
  238. ER_DEVICE_INIT_STATUS +0 FILL 0 INIT_STATUS_SIZE {
  239. }
  240. ER_DEVICE_BUSY +0 FILL 0 DEVICE_BUSY_SIZE {
  241. }
  242. ER_INITSHELL +0 {
  243. * (.shell_module_*)
  244. * (.shell_cmd_*)
  245. }
  246. ER_LOG_DYNAMIC +0 SORTTYPE Lexical {
  247. * (.log_dynamic_*)
  248. }
  249. ER_STATIC_THREAD +0 SORTTYPE Lexical ALIGNALL 4 {
  250. * (.__static_thread_data.static.*)
  251. }
  252. ER_K_TIMER +0 ALIGNALL 4 {
  253. * (._k_timer.static.*)
  254. }
  255. ER_K_MEM_SLAB +0 ALIGNALL 4 {
  256. * (._k_mem_slab.static.*)
  257. }
  258. ER_K_MEM_POOL +0 ALIGNALL 4 {
  259. * (._k_mem_pool.static.*)
  260. }
  261. ER_K_HEAP +0 ALIGNALL 4 {
  262. * (._k_heap.static.*)
  263. }
  264. ER_K_SEM +0 ALIGNALL 4 {
  265. * (._k_sem.static.*)
  266. * (._sys_sem.static.*)
  267. }
  268. ER_K_MUTEX +0 ALIGNALL 4 {
  269. * (._k_mutex.static.*)
  270. }
  271. ER_K_QUEUE +0 ALIGNALL 4 {
  272. * (._k_queue.static.*)
  273. * (._k_fifo.static.*)
  274. * (._k_lifo.static.*)
  275. }
  276. ER_K_STACK +0 ALIGNALL 4 {
  277. * (._k_stack.static.*)
  278. }
  279. ER_K_MSGQ +0 ALIGNALL 4 {
  280. * (._k_msgq.static.*)
  281. }
  282. ER_K_MBOX +0 ALIGNALL 4 {
  283. * (._k_mbox.static.*)
  284. }
  285. ER_K_PIPE +0 ALIGNALL 4 {
  286. * (._k_pipe.static.*)
  287. }
  288. ER_NET_BUF_POOL +0 SORTTYPE Lexical ALIGNALL 4 {
  289. * (._net_buf_pool.static.*)
  290. }
  291. ER_NET_IF +0 SORTTYPE Lexical ALIGNALL 4 {
  292. * (.net_if.*)
  293. }
  294. ER_NET_IF_DEV +0 SORTTYPE Lexical ALIGNALL 4 {
  295. * (.net_if_dev.*)
  296. }
  297. ER_NET_L2_DATA +0 SORTTYPE Lexical ALIGNALL 4 {
  298. * (.net_l2.data)
  299. * (.net_l2.data*)
  300. }
  301. }
  302. LR2 AlignExpr(ImageLimit(ER_NET_L2_DATA), 512) { ; load region 2
  303. ER_SW_ISR_TABLE +0 ALIGN 4 FIXED {
  304. * (.gnu.linkonce.sw_isr_table)
  305. }
  306. ER_WAV_P_OVERLAY_BSS +0 ALIGN 4 {
  307. wav_s_1.o(+ZI)
  308. wav_w_1.o(+ZI)
  309. wav_w_2.o(+ZI)
  310. wav_w_3.o(+ZI)
  311. }
  312. ER_FLAC_P_OVERLAY_BSS +0 ALIGN 4 {
  313. fla_p_1.o(+ZI)
  314. fla_s_1.o(+ZI)
  315. fla_s_2.o(+ZI)
  316. }
  317. ER_AAC_P_OVERLAY_BSS +0 ALIGN 4 {
  318. aac_a_1.o(+ZI)
  319. aac_a_2.o(+ZI)
  320. aac_a_3.o(+ZI)
  321. aac_s_1.o(+ZI)
  322. }
  323. ER_MP3_P_OVERLAY_BSS +0 ALIGN 4{
  324. m1.o(+ZI)
  325. m2.o(+ZI)
  326. }
  327. ER_WMA_P_OVERLAY_BSS +0 ALIGN 4{
  328. w13_i_1.o(+ZI)
  329. w13_s_1.o(+ZI)
  330. w13_a_1.o(+ZI)
  331. }
  332. ER_APE_P_OVERLAY_BSS +0 ALIGN 4{
  333. ape_c_1.o(+ZI)
  334. ape_d_1.o(+ZI)
  335. ape_e_1.o(+ZI)
  336. ape_i_1.o(+ZI)
  337. ape_p_1.o(+ZI)
  338. ape_s_1.o(+ZI)
  339. ape_test.o(+ZI)
  340. }
  341. ER_BSS +0 ALIGN 4 {
  342. * (.bss)
  343. * (.bss.*)
  344. * (COMMON)
  345. * (.kernel_bss.*)
  346. * (.bthost_bss*)
  347. * (.btsrv_bss*)
  348. .ANY (+ZI)
  349. }
  350. ER_NOINIT +0 ALIGN 4 {
  351. * (.noinit)
  352. * (.noinit.*)
  353. * (.kernel_noinit.*)
  354. }
  355. ER_PSRAM_NOINIT +0 ALIGN 64 {
  356. * (.UI_PSRAM_REGION*)
  357. * (.RES_PSRAM_REGION*)
  358. * (.BMPFONT_PSRAM_REGION*)
  359. * (.font.bss.cache*)
  360. * (.tile.bss.cache*)
  361. * (.lvgl.noinit.malloc*)
  362. * (.vglite.noinit.mem_pool*)
  363. * (.vglite.noinit.malloc*)
  364. }
  365. ER_RAM_END (PSRAM_ADDR+PSRAM_SIZE) EMPTY 0 {
  366. }
  367. }
  368. LR3 SHARE_RAM_ADDR SHARE_RAM_SIZE { ; load region 3
  369. ER_SHARE_RAM_BSS +0 ALIGN 4 FIXED {
  370. * (.DSP_SHARE_RAM*)
  371. }
  372. }
  373. LR4 RAM_ADDR RAM_SIZE { ; load region 4
  374. ER_SRAM_BSS +0 ALIGN 4 {
  375. }
  376. ER_SRAM_NOINIT +0 ALIGN 0x200 {
  377. #ifdef CONFIG_IRQ_VECTOR_IN_SRAM
  378. * (.srm_irq_vector*, +FIRST)
  379. #endif
  380. *(.interrupt.noinit.stack*)
  381. *(.main.noinit.stack*)
  382. *(.uisrv.noinit.stack*)
  383. *(.lvgl.noinit.gpu*)
  384. *(.spinand.bss.BLK_ARRAY*)
  385. *(.spinand.bss.PAGE_CACHE_BUF*)
  386. *(.system.bss.sdfs_cache*)
  387. *(.diskio.cache.pool*)
  388. *(.jpeg.bss.temp_buffer*)
  389. *(.ram.noinit*)
  390. *(.decompress.bss.cache*)
  391. *(.lvgl.noinit.vdb*)
  392. *(.ram.noinit.stack*)
  393. *(.audio.bss.ouput_pcm*)
  394. *(.audio.bss.input_pcm*)
  395. *(.act_s2_not_save_mem*)
  396. }
  397. ER_SRAM_SLEEP_SHUTDOWN +0 ALIGN 0x200 {
  398. * (.ram.noinit.sufacebuffer*)
  399. }
  400. ER_SIM_SRAM_NOINIT +0 ALIGN 4 {
  401. * (.sram.noinit.actlog*)
  402. }
  403. ER_SRAM_END (RAM_ADDR+RAM_SIZE) EMPTY 0 {
  404. }
  405. }
  406. #if CONFIG_SENSOR_RAM_CODE_SIZE > 0
  407. LR4_1 CODE_RAM_ADDR CODE_RAM_SIZE { ; load region 4_1
  408. }
  409. #endif