ram.ld 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993
  1. #include "config.h"
  2. ENTRY(_start)
  3. //Define the flash max size
  4. __max_flash_size = FLASH_CODE_SIZE;
  5. __base = 0x10000000;
  6. // retention RAM
  7. __cache_stack_vma = 0x10600; //for loader
  8. __cache_stack_size = 512; //for loader
  9. __stack_vma = 0x10800;
  10. __stack_ram_size = 1k;
  11. __heap_vma = 0x10c00;
  12. __heap_ram_size = 12k;
  13. __comm_vma = 0x13c00;
  14. __comm_ram_size = 40k;
  15. __data_vma = 0x1dc00;
  16. __data_ram_size = 25k;
  17. // non retention RAM
  18. __bram_vma = 0x24000;
  19. __bram_ram_size = 48k;
  20. __cram_a2dp_vma = 0x30000; //a2dp数据缓存
  21. __cram_dec_vma = 0x35800; //音乐解码缓存
  22. __cram_ldac_vma = 0x35800;
  23. __lhdc_ram_vma = 0x35800;
  24. __lhdc_ram_size = 110k;
  25. __lhdc_com_ram_size = 6k; //LHDC变量区公共部分
  26. __cram_dnn_comm_vma = 0x30000; //dnn代码区
  27. __cram_dnn_vma = 0x35000; //dnn变量区
  28. __cram_dnn_pro_comm_vma = 0x30000; //dnn_pro代码区
  29. __cram_dnn_pro_vma = 0x35000; //dnn_pro变量区
  30. __cram_aiaec_dnn_comm_vma = 0x30000; //aiaec_dnn代码区
  31. __cram_aiaec_dnn_vma = 0x35000; //aiaec_dnn变量区
  32. __cram_sndp_comm_vma = 0x30000; //sndp代码区
  33. __cram_sndp_vma = 0x36800; //sndp变量区
  34. __cram_dmdnn_comm_vma = 0x30000; //dmdnn代码区
  35. __cram_dmdnn_vma = 0x37000; //dmdnn变量区
  36. __cram_ldmdnn_comm_vma = 0x30000; //dmdnn代码区
  37. __cram_ldmdnn_vma = 0x37000; //dmdnn变量区
  38. __cram_ains_comm_vma = 0x30000; //ains代码区
  39. __cram_ains_vma = 0x38800; //ains变量区
  40. __cram_ains4_comm_vma = 0x30000; //ains4代码区
  41. __cram_ains4_vma = 0x35000; //ains4变量区
  42. __cram_agc_vma = 0x3fa00; //agc变量区
  43. __nram_ttp_vma = 0x30000; //ttp音效变量区(4k)
  44. __nram_vma = 0x40000; //npu
  45. __aram_vma = 0x100000; //20k
  46. __nrram_vma = 0x105000; //8k
  47. __nrram_dec_comm_vma = 0x105000; //解码代码区(8k)
  48. __dram_vma = 0x108000; //17.25k
  49. __eram_vma = 0x107000; //2.5k
  50. #if ANC_ALG_AI_WN_DSP_FF_EN
  51. __nram_audio_comm_vma = 0x40000;
  52. __nram_audio_comm_len = 18k; //音乐音效算法代码区
  53. __nram_audio_len = 16k; //音乐音效算法变量区
  54. __anc_alg_comm_len = 8k; //ANC算法代码区
  55. __anc_alg_len = 58k; //ANC算法变量区
  56. #elif ANC_ALG_AI_NPU_EN
  57. //ANC算法使用NPU,ANC相关代码变量放cram
  58. __nram_audio_comm_vma = 0x39800;
  59. __nram_audio_comm_len = 0k;
  60. __nram_audio_len = 0k;
  61. __anc_alg_comm_len = 6k;
  62. __anc_alg_len = 20k;
  63. #else
  64. __nram_audio_comm_vma = 0x40000;
  65. __nram_audio_comm_len = 20k;
  66. __nram_audio_len = 16k;
  67. __anc_alg_comm_len = 20k;
  68. __anc_alg_len = 44k;
  69. #endif
  70. __nram_audio_vma = __nram_audio_comm_vma + __nram_audio_comm_len;
  71. __anc_alg_comm_vma = __nram_audio_vma + __nram_audio_len;
  72. __anc_alg_vma = __anc_alg_comm_vma + __anc_alg_comm_len;
  73. __anc_tool_ram_vma = 0x40000; //ANC工具
  74. __anc_tool_ram_len = 100k;
  75. MEMORY
  76. {
  77. init : org = __base, len = 512
  78. flash(rx) : org = __base + 512, len = __max_flash_size
  79. comm(rx) : org = __comm_vma, len = __comm_ram_size
  80. nrram_dec_comm(rx) : org = __nrram_dec_comm_vma, len = 8k
  81. boot : org = __cache_stack_vma, len = __cache_stack_size
  82. stack : org = __stack_vma, len = __stack_ram_size
  83. heap : org = __heap_vma, len = __heap_ram_size
  84. data : org = __data_vma, len = __data_ram_size
  85. bram : org = __bram_vma, len = __bram_ram_size
  86. aram : org = __aram_vma, len = 20k
  87. dram : org = __dram_vma, len = 0x4500
  88. nrram : org = __nrram_vma, len = 0x2000
  89. eram : org = __eram_vma, len = 0xa00
  90. //音乐缓存
  91. cram_a2dp : org = __cram_a2dp_vma, len = 22k
  92. cram_dec : org = __cram_dec_vma, len = 42k
  93. cram_ldac_comm(rx) : org = __cram_ldac_vma, len = 24k
  94. lhdc_ram : org = __lhdc_ram_vma, len = __lhdc_ram_size
  95. //通话缓存
  96. //dnn算法(0x30000~0x40000)
  97. cram_dnn_comm(rx) : org = __cram_dnn_comm_vma, len = 22k
  98. cram_dnn : org = __cram_dnn_vma, len = 0xa200
  99. //dnn_pro算法(0x30000~0x40000)
  100. cram_dnn_pro_comm(rx) : org = __cram_dnn_pro_comm_vma, len = 22k
  101. cram_dnn_pro : org = __cram_dnn_pro_vma, len = 0xa200
  102. //aiaec_dnn算法(0x30000~0x40000)
  103. cram_aiaec_dnn_comm(rx) : org = __cram_aiaec_dnn_comm_vma, len = 22k
  104. cram_aiaec_dnn : org = __cram_aiaec_dnn_vma, len = 0xa200
  105. //sndp算法(0x30000~0x40000)
  106. cram_sndp_comm : org = __cram_sndp_comm_vma, len = 26k
  107. cram_sndp : org = __cram_sndp_vma, len = 0x9200
  108. //dmdnn算法(0x30000~0x40000)
  109. cram_dmdnn_comm(rx) : org = __cram_dmdnn_comm_vma, len = 28k
  110. cram_dmdnn : org = __cram_dmdnn_vma, len = 0x8a00
  111. //ldmdnn算法(0x30000~0x40000)
  112. cram_ldmdnn_comm(rx) : org = __cram_ldmdnn_comm_vma, len = 28k
  113. cram_ldmdnn : org = __cram_ldmdnn_vma, len = 0x8a00
  114. //ains算法(0x30000~0x36000)
  115. cram_ains_comm(rx) : org = __cram_ains_comm_vma, len = 14k
  116. cram_ains : org = __cram_ains_vma, len = 0x2200
  117. cram_ains4_comm(rx) : org = __cram_ains4_comm_vma, len = 24k
  118. cram_ains4 : org = __cram_ains4_vma, len = 40k
  119. cram_agc : org = __cram_agc_vma, len = 0x600
  120. nram : org = __nram_vma, len = 100k
  121. //音乐音效算法
  122. nram_audio_comm(rx) : org = __nram_audio_comm_vma, len = __nram_audio_comm_len
  123. nram_audio : org = __nram_audio_vma, len = __nram_audio_len
  124. //ANC算法
  125. anc_alg_comm(rx) : org = __anc_alg_comm_vma, len = __anc_alg_comm_len
  126. anc_alg : org = __anc_alg_vma, len = __anc_alg_len
  127. //ttp音效
  128. nram_ttp : org = __nram_ttp_vma, len = 4k
  129. anc_tool_ram : org = __anc_tool_ram_vma, len = __anc_tool_ram_len
  130. }
  131. SECTIONS
  132. {
  133. .init : {
  134. *(.reset)
  135. } > init
  136. .data_cpu (NOLOAD) : {
  137. *(.buf.cpu_regs)
  138. } > boot
  139. .comm : {
  140. __vertor_vma = .;
  141. *(.vector)
  142. *(.com_text*)
  143. *debug.o(.rodata*)
  144. *(.com_rodata*)
  145. *(.data*)
  146. *(.sdata*)
  147. *(.plt)
  148. *(.text.wsbc.asm)
  149. . = ALIGN(512);
  150. } > comm AT > flash
  151. .cram_dnn_comm : {
  152. *(.dnn_rodata*)
  153. *(.dnn_text*)
  154. . = ALIGN(512);
  155. } > cram_dnn_comm AT > flash
  156. .cram_dnn_pro_comm : {
  157. *(.dnn_pro_rodata*)
  158. *(.dnn_pro_text*)
  159. . = ALIGN(512);
  160. } > cram_dnn_pro_comm AT > flash
  161. .cram_aiaec_dnn_comm : {
  162. *(.aiaec_dnn_rodata*)
  163. *(.aiaec_dnn_text*)
  164. . = ALIGN(512);
  165. } > cram_aiaec_dnn_comm AT > flash
  166. .cram_dmdnn_comm : {
  167. *(.dmdnn_rodata*)
  168. *(.dmdnn_text*)
  169. . = ALIGN(512);
  170. } > cram_dmdnn_comm AT > flash
  171. .cram_ldmdnn_comm : {
  172. *(.ldmdnn_rodata*)
  173. *(.ldmdnn_text*)
  174. . = ALIGN(512);
  175. } > cram_ldmdnn_comm AT > flash
  176. .cram_sndp_comm : {
  177. *(.sndp_comm_rodata*)
  178. *(.sndp_comm_text*)
  179. *(.sndp_rodata*)
  180. *(.sndp_text*)
  181. *(.sndp_fbdm_rodata*)
  182. *(.sndp_fbdm_text*)
  183. *(.sndp_dm_rodata*)
  184. *(.sndp_dm_text*)
  185. . = ALIGN(512);
  186. } > cram_sndp_comm AT > flash
  187. .cram_ains_comm : {
  188. *(.ains_rodata*)
  189. *(.ains_text*)
  190. . = ALIGN(512);
  191. } > cram_ains_comm AT > flash
  192. .cram_ains4_comm : {
  193. *(.ains4_rodata*)
  194. *(.ains4_text*)
  195. . = ALIGN(512);
  196. } > cram_ains4_comm AT > flash
  197. .cram_ldac_comm : {
  198. *(.text.ldac.dec.*)
  199. *(.rodata.ldac.dec.*)
  200. . = ALIGN(512);
  201. } > cram_ldac_comm AT > flash
  202. .lhdc_com_text __lhdc_ram_vma : {
  203. __code_start_lhdc_com_text = .;
  204. *(.text.lhdc.dec.*)
  205. *(.rodata.lhdc.dec.*)
  206. . = ALIGN(512);
  207. __code_end_lhdc_com_text = .;
  208. } > lhdc_ram AT > flash
  209. .lhdcv5_text __code_end_lhdc_com_text : {
  210. *(.lhdc_text.lhdcv5*)
  211. *(.lhdc_rodata.lhdcv5*)
  212. . = ALIGN(512);
  213. __code_end_lhdcv5_text = .;
  214. } > lhdc_ram AT > flash
  215. .lhdcv4_text __code_end_lhdc_com_text : {
  216. *(.lhdc_text.lhdcv3*)
  217. *(.lhdc_rodata.lhdcv3*)
  218. *(.lhdc_text.lhdcv4*)
  219. *(.lhdc_rodata.lhdcv4*)
  220. . = ALIGN(512);
  221. __code_end_lhdcv4_text = .;
  222. } > lhdc_ram AT > flash
  223. .nram_audio_comm : {
  224. *(.audio_rodata*)
  225. *(.audio_text*)
  226. . = ALIGN(512);
  227. } > nram_audio_comm AT > flash
  228. .anc_alg_comm : {
  229. *(.anc_rodata*)
  230. *(.anc_text*)
  231. *(.sndp_sae_rodata*)
  232. *(.sndp_sae_text*)
  233. . = ALIGN(512);
  234. } > anc_alg_comm AT > flash
  235. #if !WARNING_WSBC_EN
  236. .nrram_dec_comm : {
  237. __code_start_btdec_com = .;
  238. *(.btdec*)
  239. . = ALIGN(512);
  240. __code_end_btdec_com = .;
  241. } > nrram_dec_comm AT > flash
  242. #endif
  243. .anc_tool_code : {
  244. *(.anc_tool_rodata*)
  245. *(.anc_tool_text*)
  246. . = ALIGN(512);
  247. } > anc_tool_ram AT > flash
  248. .flash : {
  249. __code_start_stream = .;
  250. *(.com_stream.text*)
  251. . = ALIGN(512);
  252. __code_end_stream = .;
  253. __code_start_sniff = .;
  254. *(.sniff*)
  255. . = ALIGN(512);
  256. __code_end_sniff = .;
  257. #if WARNING_WSBC_EN
  258. __code_start_btdec_com = .;
  259. *(.btdec*)
  260. . = ALIGN(512);
  261. __code_end_btdec_com = .;
  262. #endif
  263. __code_start_usbdev = .;
  264. *(.usbdev*)
  265. . = ALIGN(512);
  266. __code_end_usbdev = .;
  267. __code_start_mp3dec = .;
  268. *(.mp3dec*)
  269. . = ALIGN(512);
  270. __code_end_mp3dec = .;
  271. __code_start_sbcdec = .;
  272. *(.sbcdec*)
  273. *(.sbc_com*)
  274. . = ALIGN(512);
  275. __code_end_sbcdec = .;
  276. __code_start_aacdec = .;
  277. *(.aacdec*)
  278. . = ALIGN(512);
  279. __code_end_aacdec = .;
  280. __code_start_wavdec = .;
  281. *(.wavdec*)
  282. . = ALIGN(512);
  283. __code_end_wavdec = .;
  284. __code_start_wmadec = .;
  285. *(.wmadec*)
  286. . = ALIGN(512);
  287. __code_end_wmadec = .;
  288. __code_start_apedec = .;
  289. *(.apedec*)
  290. . = ALIGN(512);
  291. __code_end_apedec = .;
  292. __code_start_flacdec = .;
  293. *(.flacdec*)
  294. . = ALIGN(512);
  295. __code_end_flacdec = .;
  296. __code_start_wma_rlc44q = .;
  297. *(.wma_huff_rlc44q_table)
  298. . = ALIGN(512);
  299. __code_end_wma_rlc44q = .;
  300. __code_start_wma_rlc44o = .;
  301. *(.wma_huff_rlc44o_table)
  302. . = ALIGN(512);
  303. __code_end_wma_rlc44o = .;
  304. __code_start_wma_rlc16 = .;
  305. *(.wma_huff_rlc16_table)
  306. . = ALIGN(512);
  307. __code_end_wma_rlc16 = .;
  308. __code_start_sleep = .;
  309. *(.saradc_text*)
  310. *(.sleep_text*)
  311. . = ALIGN(512);
  312. __code_end_sleep = .;
  313. __code_start_charge = .;
  314. *(.charge_text*)
  315. *(.text.charge)
  316. *(.text.bsp.tkey)
  317. *(.text.charge_box)
  318. . = ALIGN(512);
  319. __code_end_charge = .;
  320. __code_start_bt_voice = .;
  321. *(.bt_voice*)
  322. *(.sco_mic_dnr*)
  323. . = ALIGN(512);
  324. __code_end_bt_voice = .;
  325. __code_start_pwrsave = .;
  326. *(.text.pwroff*)
  327. . = ALIGN(512);
  328. __code_end_pwrsave = .;
  329. __code_start_bb_test = .;
  330. *(.bb_test*)
  331. *(.bb_test_rodata*)
  332. . = ALIGN(512);
  333. __code_end_bb_test = .;
  334. __code_start_piano = .;
  335. *(.piano_com*)
  336. . = ALIGN(512);
  337. __code_end_piano = .;
  338. __code_start_record = .;
  339. *(.com_rec*)
  340. . = ALIGN(512);
  341. __code_end_record = .;
  342. __code_start_mav = .;
  343. *(.text.mav*)
  344. *(.rodata.mav*)
  345. *(.text.pitch_shift*)
  346. *(.rodata.pitch_shift*)
  347. . = ALIGN(512);
  348. __code_end_mav = .;
  349. __code_start_update = .;
  350. *(.text.update*)
  351. . = ALIGN(512);
  352. __code_end_update = .;
  353. __code_start_huart = .;
  354. *(.com_huart*)
  355. . = ALIGN(512);
  356. __code_end_huart = .;
  357. __code_start_spdif = .;
  358. *(.spdif_text*)
  359. . = ALIGN(512);
  360. __code_end_spdif = .;
  361. __code_start_fota = .;
  362. *(.text.fot.cache*)
  363. . = ALIGN(512);
  364. __code_end_fota = .;
  365. __code_start_spiflash_id = .;
  366. *(.text.spiflash.*)
  367. . = ALIGN(512);
  368. __code_end_spiflash_id = .;
  369. __code_start_opus = .;
  370. *(.text.opus.asm)
  371. *(.text.opus.enc.asm)
  372. *(.text.opus.proc)
  373. *(.text.opus.enc.proc)
  374. *(.text.opus.ec_tell)
  375. *(.text.opus.enc.entenc)
  376. *(.text.opus.mathops)
  377. *(.rodata.opus*)
  378. . = ALIGN(512);
  379. __code_end_opus = .;
  380. __code_start_vad = .;
  381. *(.vad_text*)
  382. . = ALIGN(512);
  383. __code_end_vad = .;
  384. __code_start_asr = .;
  385. *(.ws_text*)
  386. . = ALIGN(512);
  387. __code_end_asr = .;
  388. __code_start_bts = .;
  389. *(.text.stk.tws.txreq*)
  390. *(.text.stk.l2cap.txreq*)
  391. . = ALIGN(512);
  392. *(.text.stk.tws.send*)
  393. . = ALIGN(512);
  394. *(.text.stk.tws.recv*)
  395. . = ALIGN(512);
  396. *(.text.stk.hci.tx*)
  397. . = ALIGN(512);
  398. *(.text.bts.hci.rx*)
  399. . = ALIGN(512);
  400. *(.text.stk.bt.acl.tx*)
  401. . = ALIGN(512);
  402. __code_end_bts = .;
  403. *(.irq_init.aligned)
  404. *(.text.qtest.process)
  405. *(.text.charge.process)
  406. *(.text.charge_box.process)
  407. *(.text.ab_mate.process)
  408. *(.text.func.bt.process)
  409. . = ALIGN(512);
  410. *(.text.ble.chmap*)
  411. . = ALIGN(512);
  412. *(.text*)
  413. *(.tuya_text.md5)
  414. *(.tuya_text.aes128_cbc)
  415. *(.rodata*)
  416. *(.srodata*)
  417. *(.rela*)
  418. LONG(0)
  419. . = ALIGN(512);
  420. } > flash
  421. .stack (NOLOAD) : {
  422. __irq_stack_start = .;
  423. . = 0x400;
  424. __irq_stack = .;
  425. } > stack
  426. __irq_stack_size = __irq_stack - __irq_stack_start;
  427. .heap (NOLOAD) : {
  428. *(.mem_heap)
  429. } > heap
  430. .bss (NOLOAD) : {
  431. __bss_start = .;
  432. *(COMMON)
  433. *(.bss*)
  434. *(.sbss*)
  435. *(.buf*)
  436. *(.btmem.stack.sdp)
  437. *(.btmem.stack.spp)
  438. *(.btmem.stack.l2cap)
  439. *(.btmem.stack.hid*)
  440. *(.qtest_buf)
  441. *(.dac_obuf*)
  442. *(.adc_buf*)
  443. *(.tkey_buf.debug)
  444. *(.wav_res_buf)
  445. *(.au0out_buf*)
  446. *(.sco_enc.obuf)
  447. __tuya_data_start = .;
  448. *(.tuya_data*)
  449. __tuya_data_end = .;
  450. *(.app.buf*)
  451. #if GFPS_EN
  452. *(.gfps*)
  453. *(.ble_cache.sm*)
  454. #endif
  455. *(.opus_buf.input)
  456. __bss_end = .;
  457. } > data
  458. __tuya_data_size = __tuya_data_end - __tuya_data_start;
  459. .bram __bram_vma (NOLOAD) : {
  460. *(.btmem.bthw)
  461. *(.btmem*)
  462. *(.ble_cache*)
  463. *(.ble_buf*)
  464. *(.fot_data.com*)
  465. *(.tuya_heap*)
  466. *(.dueros_dma_data*)
  467. } > bram
  468. .dec_dbg_btmen __bram_vma (NOLOAD) : {
  469. *(.mp3_dbg_buf*)
  470. *(.aac_dbg_buf*)
  471. } > bram
  472. .cram_a2dp __cram_a2dp_vma (NOLOAD) : {
  473. *(.a2dp_play*)
  474. *(.a2dp_cache1)
  475. . = 0x5800;
  476. } > cram_a2dp
  477. .cram_aac __cram_dec_vma (NOLOAD) : {
  478. *(.aac_buf*)
  479. *(.anc_dbg_buf)
  480. *(.codecs_buf.*)
  481. *(.music_buff*)
  482. *(.opus.buf*)
  483. __cram_aac_dec_size = ABSOLUTE(.) - __cram_dec_vma;
  484. __cram_anc_alg_start = MAX(__cram_aac_dec_size, 0x2A00);
  485. . = __cram_anc_alg_start;
  486. //以下是跟MP3提示音要同时跑的
  487. #if VAD_MODE_SEL == VAD_MODE_1 && VAD_EN
  488. *(.vad.mic_buf*)
  489. #endif
  490. *(.anc_buff*)
  491. *(.sndp_sae_buf.wind_detect_fffb.fft*) //声加风噪anc硬件fft ram
  492. #if !ANC_ALG_AI_NPU_EN
  493. . = 0xA800;
  494. #else
  495. . = 0x4000; //开了ANC AI算法,cram后面的26k给ANC算法放相关代码变量
  496. #endif
  497. } > cram_dec
  498. .cram_music __cram_dec_vma (NOLOAD) : {
  499. . = 0x2000;
  500. *(.avio_buf)
  501. *(.diskio_buf)
  502. *(.pff.buf)
  503. *(.fname.buf)
  504. *(.pff_buf*)
  505. . = 0x2A00;
  506. } > cram_dec
  507. .cram_mp3enc __cram_dec_vma (NOLOAD) : {
  508. . = 0x2A00;
  509. *(.mp3_enc_buf.pcm)
  510. . = 0x3d00;
  511. *(.anc_res2_buf)
  512. } > cram_dec
  513. .cram_ldac __cram_dec_vma (NOLOAD) : {
  514. . = 0x6000;
  515. *(.ldac_buf.out) //npu ram不支持dma
  516. } > cram_dec
  517. .cram_dnn __cram_dnn_vma (NOLOAD) : {
  518. *(.dnn_buf*)
  519. . = 0xa200;
  520. } > cram_dnn
  521. .cram_dnn_pro __cram_dnn_pro_vma (NOLOAD) : {
  522. *(.dnn_pro_buf*)
  523. . = 0xa200;
  524. } > cram_dnn_pro
  525. .cram_dueros __cram_dnn_vma (NOLOAD) : {
  526. . = 0x5800;
  527. *(.dueros_dma_malloc_memory*)
  528. *(.dueros_dma_queue_memory*)
  529. } > cram_dnn
  530. .cram_aiaec_dnn __cram_aiaec_dnn_vma (NOLOAD) : {
  531. *(.aiaec_dnn_buf*)
  532. . = 0xa200;
  533. } > cram_aiaec_dnn
  534. .cram_sndp __cram_sndp_vma (NOLOAD) : {
  535. *(.sndp_comm_buf*)
  536. *(.sndp_buf*)
  537. *(.sndp_fbdm_buf*)
  538. *(.sndp_dm_buf*)
  539. . = 0x9200;
  540. } > cram_sndp
  541. .cram_dmdnn __cram_dmdnn_vma (NOLOAD) : {
  542. *(.dmdnn_buf*)
  543. . = 0x8a00;
  544. } > cram_dmdnn
  545. .cram_ldmdnn __cram_dmdnn_vma (NOLOAD) : {
  546. *(.ldmdnn_buf*)
  547. . = 0x8a00;
  548. } > cram_ldmdnn
  549. .cram_ains __cram_ains_vma (NOLOAD) : {
  550. *(.ains_buf*)
  551. . = 0x2200;
  552. } > cram_ains
  553. .cram_ains4 __cram_ains4_vma (NOLOAD) : {
  554. *(.ains4_buf*)
  555. . = 0xA000;
  556. } > cram_ains4
  557. cram_agc __cram_agc_vma (NOLOAD) : {
  558. *(.agc_buf*)
  559. . = 0x600;
  560. } > cram_agc
  561. .aram_aec __aram_vma (NOLOAD) : {
  562. *(.aec_buf)
  563. } > aram
  564. .fcc_buf __aram_vma (NOLOAD) : {
  565. . = 0x1000;
  566. *(.fcc_buf.huart)
  567. . = 0x4c00;
  568. *(.test_buf)
  569. } > aram
  570. .sbc_cache __aram_vma (NOLOAD) : {
  571. *(.sbc_cache_buf)
  572. . = 0x5000;
  573. } > aram
  574. .aram_music __aram_vma (NOLOAD) : {
  575. *(.mp3buf.dec)
  576. . = 0x1000;
  577. . = 0x2000;
  578. *(.udev_buf*)
  579. *(.usb_buf*)
  580. *(.mp3_id3_buf)
  581. *(.lrc_buf*)
  582. *(.fnav_buf)
  583. *(.pff.scan.tempbuf)
  584. . = 0x4800;
  585. } > aram
  586. .aram_msc_stm __aram_vma (NOLOAD) : {
  587. *(.stm_buf)
  588. . = 0x1000;
  589. } > aram
  590. .aram_sbcio __aram_vma (NOLOAD) : {
  591. . = 0x3800;
  592. *(.sbcio_buf*)
  593. . = 0x5000;
  594. } > aram
  595. .aram_aacio __aram_vma (NOLOAD) : {
  596. . = 0x3800;
  597. *(.aacio_buf*)
  598. *(.m4a_buf*)
  599. . = 0x5000;
  600. } > aram
  601. .aram_fmrx __aram_vma (NOLOAD) : {
  602. . = 0x2000;
  603. *(.fmrx_cb_buf)
  604. } > aram
  605. .aram_opus __aram_vma (NOLOAD) : {
  606. . = 0x3800;
  607. *(.opus_buf.dec*)
  608. . = 0x5000;
  609. } > aram
  610. .dram_upd __dram_vma (NOLOAD) : {
  611. . = 0x3800;
  612. *(.upd_ota*)
  613. *(.upd_buf*)
  614. . = 0x4500;
  615. } > dram
  616. .dram_mp3 __dram_vma (NOLOAD) : {
  617. . = 0x1000;
  618. *(.mp3_decram_buf)
  619. . = 0x4500;
  620. } > dram
  621. .dram_aac __dram_vma (NOLOAD) : {
  622. *(.aac_decram_buf)
  623. *(.aac_cache*)
  624. . = 0x4500;
  625. } > dram
  626. .dram_ape __dram_vma (NOLOAD) : {
  627. *(.apebuf.cb)
  628. *(.apebuf.filter)
  629. *(.apebuf.decode)
  630. *(.apebuf.seektbl)
  631. . = 0x3000;
  632. } > dram
  633. .dram_wma __dram_vma (NOLOAD) : {
  634. *(.wmabuf*)
  635. . = 0x3000;
  636. } > dram
  637. .dram_flac __dram_vma (NOLOAD) : {
  638. *(.flacbuf*)
  639. . = 0x3000;
  640. } > dram
  641. .dram_wav __dram_vma (NOLOAD) : {
  642. *(.wavbuf.dec)
  643. . = 0x3000;
  644. } > dram
  645. .dram_sbc __dram_vma (NOLOAD) : {
  646. *(.sbc_decram_buf)
  647. . = 0xe00;
  648. *(.sbcbuf*)
  649. *(.tsco_cache)
  650. *(.sco_cache)
  651. *(.sco_data)
  652. *(.sco_hci)
  653. *(.plc_buf)
  654. *(.plc_data)
  655. *(.sbcenc.buf)
  656. *(.nr_buf*)
  657. *(.sco_dump*)
  658. . = 0x4500;
  659. } > dram
  660. .dram_lhdc __dram_vma (NOLOAD) : {
  661. *(.lhdc_buf*)
  662. . = 0x4500;
  663. } > dram
  664. .dram_rec __dram_vma (NOLOAD) : {
  665. *(.karaok.rec)
  666. . = 0xD38;
  667. } > dram
  668. .dram_usb __dram_vma (NOLOAD) : {
  669. *(.usb.device.desc.buf)
  670. *(.ude.aubuf)
  671. . = 0x3000;
  672. } > dram
  673. .dram_spf __dram_vma (NOLOAD) : {
  674. *(.spf_buf*)
  675. . = 0x3000;
  676. } > dram
  677. .dram_i2s __dram_vma (NOLOAD) : {
  678. *(.iis_dmabuf)
  679. . = 0x3000;
  680. } > dram
  681. .dram_opus __dram_vma (NOLOAD) : {
  682. *(.opus_buf*)
  683. //. = 0x4500;
  684. } > dram
  685. .dram_eq_rec __dram_vma (NOLOAD) : {
  686. *(.eq_rec_buf)
  687. . = 0x1000;
  688. } > dram
  689. .dram_src __dram_vma (NOLOAD) : {
  690. . = 0x3000;
  691. *(.src_buf)
  692. } > dram
  693. .nrram_peri_nr __nrram_vma (NOLOAD) : {
  694. *(.peri_nr*)
  695. . = 0x2000;
  696. } > nrram
  697. .nrram_wsbc __nrram_vma (NOLOAD) : {
  698. *(.wsbc_buf*)
  699. . = 0x2000;
  700. } > nrram
  701. .eram_mp3enc __eram_vma (NOLOAD) : {
  702. *(.mp3_enc_hwbuf)
  703. . = 0xa00;
  704. } > eram
  705. .eram_mp2enc __eram_vma (NOLOAD) : {
  706. *(.l2enc_buf.cb)
  707. . = 0xa00;
  708. } > eram
  709. .eram_fot __eram_vma (NOLOAD) : {
  710. *(.fot_data.buf)
  711. . = 0xa00;
  712. } > eram
  713. .eram_qtest __eram_vma (NOLOAD) : {
  714. *(.qtest_buf)
  715. . = 0xa00;
  716. } > eram
  717. .nram_npu __nram_vma (NOLOAD) : {
  718. *(.npu_weight)
  719. *(.npu_ram0)
  720. *(.npu_ram1)
  721. . = 0x19000;
  722. } > nram
  723. .nram_npu_asr __nram_vma (NOLOAD) : {
  724. *(.npu_matrix.weight*)
  725. *(.ws_asr.offset)
  726. *(.ws_asr.buf)
  727. *(.ws_asr.feat)
  728. *(.ws_asr.data)
  729. *(.npu_matrix.ram1*)
  730. *(.ws_asr.ram0.sum.s)
  731. *(.ws_asr.test)
  732. *(.vad.mic_buf*)
  733. *(.vad.dump*)
  734. . = 0x10000;
  735. *(.npu_matrix.ram0.x)
  736. *(.ws_asr.ram0*)
  737. *(.vad*)
  738. *(.ws_asr.sum*)
  739. . = 0x14000;
  740. *(.npu_matrix.ram0.tdnn)
  741. *(.npu_matrix.code*)
  742. . = 0x19000;
  743. } > nram
  744. .lhdcv5_ram __code_end_lhdcv5_text (NOLOAD) : {
  745. *(.lhdc_lib_buf.lhdcv5*)
  746. } > lhdc_ram
  747. .lhdcv4_ram __code_end_lhdcv4_text (NOLOAD) : {
  748. *(.lhdc_lib_buf.lhdcv3*)
  749. *(.lhdc_lib_buf.lhdcv4*)
  750. } > lhdc_ram
  751. .lhdc_com_ram __lhdc_ram_vma (NOLOAD) : {
  752. . = __lhdc_ram_size - __lhdc_com_ram_size;
  753. *(.lhdc_lib_buf*)
  754. } > lhdc_ram
  755. .nram_ldac __nram_vma (NOLOAD) : {
  756. *(.ldac_buf*)
  757. . = 0x11000;
  758. } > nram
  759. .nram_a2dp __nram_vma (NOLOAD) : {
  760. . = 0x11000;
  761. *(.a2dp_excache) //LHDC和LDAC都要使用
  762. } > nram
  763. .nram_wma __nram_vma (NOLOAD) : {
  764. *(*wma_coefs_buf0)
  765. *(.wma_coefs_buf)
  766. *(.wma_ctx_buf)
  767. *(.wma_wincb_buf)
  768. *(.wma_id3_buf)
  769. *(.wmabuf*)
  770. } > nram
  771. .nram_flac __nram_vma (NOLOAD) : {
  772. *(.flac_decoded_buf)
  773. } > nram
  774. .nram_audio __nram_audio_vma (NOLOAD) : {
  775. *(.music_exbuff*)
  776. } > nram_audio
  777. .anc_alg __anc_alg_vma (NOLOAD) : {
  778. __anc_alg_start = .;
  779. *(.anc_data*)
  780. *(.sndp_sae_buf*)
  781. __anc_alg_end = .;
  782. } > anc_alg
  783. __anc_alg_size = __anc_alg_end - __anc_alg_start;
  784. .nram_ttp __nram_ttp_vma (NOLOAD) : {
  785. __nram_ttp_start = .;
  786. *(.ttp_data*)
  787. __nram_ttp_end = .;
  788. . = 0x1000;
  789. } > nram_ttp
  790. __nram_ttp_size = __nram_ttp_end - __nram_ttp_start;
  791. .anc_tool_data (NOLOAD) : {
  792. *(.anc_tool_buf*)
  793. } > anc_tool_ram
  794. }
  795. //Calc the lma
  796. __bss_size = __bss_end - __bss_start;
  797. __bank_size = SIZEOF(.flash);
  798. __comm_lma = LOADADDR(.comm);
  799. __comm_size = SIZEOF(.comm);
  800. __cram_dnn_comm_lma = LOADADDR(.cram_dnn_comm);
  801. __cram_dnn_comm_size = SIZEOF(.cram_dnn_comm);
  802. __cram_dnn_pro_comm_lma = LOADADDR(.cram_dnn_pro_comm);
  803. __cram_dnn_pro_comm_size = SIZEOF(.cram_dnn_pro_comm);
  804. __cram_aiaec_dnn_comm_lma = LOADADDR(.cram_aiaec_dnn_comm);
  805. __cram_aiaec_dnn_comm_size = SIZEOF(.cram_aiaec_dnn_comm);
  806. __cram_ldac_comm_lma = LOADADDR(.cram_ldac_comm);
  807. __cram_ldac_comm_size = SIZEOF(.cram_ldac_comm);
  808. __lhdc_comm_vma = __code_start_lhdc_com_text;
  809. __lhdc_comm_lma = LOADADDR(.lhdc_com_text);
  810. __lhdc_comm_size = SIZEOF(.lhdc_com_text);
  811. __lhdcv5_text_vma = __code_end_lhdc_com_text;
  812. __lhdcv5_text_lma = LOADADDR(.lhdcv5_text);
  813. __lhdcv5_text_size = SIZEOF(.lhdcv5_text);
  814. __lhdcv4_text_vma = __code_end_lhdc_com_text;
  815. __lhdcv4_text_lma = LOADADDR(.lhdcv4_text);
  816. __lhdcv4_text_size = SIZEOF(.lhdcv4_text);
  817. __cram_sndp_comm_lma = LOADADDR(.cram_sndp_comm);
  818. __cram_sndp_comm_size = SIZEOF(.cram_sndp_comm);
  819. __cram_dmdnn_comm_lma = LOADADDR(.cram_dmdnn_comm);
  820. __cram_dmdnn_comm_size = SIZEOF(.cram_dmdnn_comm);
  821. __cram_ldmdnn_comm_lma = LOADADDR(.cram_ldmdnn_comm);
  822. __cram_ldmdnn_comm_size = SIZEOF(.cram_ldmdnn_comm);
  823. __cram_ains_comm_lma = LOADADDR(.cram_ains_comm);
  824. __cram_ains_comm_size = SIZEOF(.cram_ains_comm);
  825. __cram_ains4_comm_lma = LOADADDR(.cram_ains4_comm);
  826. __cram_ains4_comm_size = SIZEOF(.cram_ains4_comm);
  827. __nram_audio_comm_lma = LOADADDR(.nram_audio_comm);
  828. __nram_audio_comm_size = SIZEOF(.nram_audio_comm);
  829. __anc_alg_comm_lma = LOADADDR(.anc_alg_comm);
  830. __anc_alg_comm_size = SIZEOF(.anc_alg_comm);
  831. #if !WARNING_WSBC_EN
  832. __nrram_dec_comm_lma = LOADADDR(.nrram_dec_comm);
  833. __nrram_dec_comm_size = SIZEOF(.nrram_dec_comm);
  834. #endif
  835. __anc_tool_code_vma = __anc_tool_ram_vma;
  836. __anc_tool_code_lma = LOADADDR(.anc_tool_code);
  837. __anc_tool_code_size = SIZEOF(.anc_tool_code);