linker_pass_final.sct 11 KB

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