sdk_ld.c 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715
  1. // *INDENT-OFF*
  2. #include "app_config.h"
  3. /* ================= BR34 SDK memory ========================
  4. _______________ ___ 0x2C000(176K)
  5. | isr base |
  6. |_______________|___ _IRQ_MEM_ADDR(size = 0x100)
  7. |rom export ram |
  8. |_______________|
  9. | update |
  10. |_______________|___ RAM_LIMIT_H
  11. | HEAP |
  12. |_______________|___ data_code_pc_limit_H
  13. | audio overlay |
  14. |_______________|
  15. | data_code |
  16. |_______________|___ data_code_pc_limit_L
  17. | bss |
  18. |_______________|
  19. | data |
  20. |_______________|
  21. | irq_stack |
  22. |_______________|
  23. | boot info |
  24. |_______________|
  25. | TLB |
  26. |_______________|0 RAM_LIMIT_L
  27. =========================================================== */
  28. #include "maskrom_stubs.ld"
  29. EXTERN(
  30. _start
  31. #include "sdk_used_list.c"
  32. );
  33. //============ About RAM ================
  34. UPDATA_SIZE = 0x80;
  35. UPDATA_BEG = _MASK_MEM_BEGIN - UPDATA_SIZE;
  36. UPDATA_BREDR_BASE_BEG = 0xeb60;
  37. RAM_LIMIT_L = 0;
  38. RAM_LIMIT_H = UPDATA_BEG;
  39. PHY_RAM_SIZE = RAM_LIMIT_H - RAM_LIMIT_L;
  40. //from mask export
  41. ISR_BASE = _IRQ_MEM_ADDR;
  42. ROM_RAM_SIZE = _MASK_MEM_SIZE;
  43. ROM_RAM_BEG = _MASK_MEM_BEGIN;
  44. RAM0_BEG = RAM_LIMIT_L;
  45. RAM0_END = RAM_LIMIT_H;
  46. RAM0_SIZE = RAM0_END - RAM0_BEG;
  47. //=============== About BT RAM ===================
  48. //CONFIG_BT_RX_BUFF_SIZE = (1024 * 18);
  49. //============ About CODE ================
  50. CODE_BEG = 0x1E00120;
  51. MEMORY
  52. {
  53. code0(rx) : ORIGIN = CODE_BEG, LENGTH = CONFIG_FLASH_SIZE
  54. ram0(rwx) : ORIGIN = RAM0_BEG, LENGTH = RAM0_SIZE
  55. }
  56. ENTRY(_start)
  57. SECTIONS
  58. {
  59. . = ORIGIN(code0);
  60. .text ALIGN(4):
  61. {
  62. PROVIDE(text_rodata_begin = .);
  63. *(.entry_text)
  64. *(.startup.text)
  65. *(.text)
  66. #include "btstack/btstack_lib_text.ld"
  67. #include "system/system_lib_text.ld"
  68. . = ALIGN(4);
  69. update_target_begin = .;
  70. PROVIDE(update_target_begin = .);
  71. KEEP(*(.update_target))
  72. update_target_end = .;
  73. PROVIDE(update_target_end = .);
  74. . = ALIGN(4);
  75. *(.LOG_TAG_CONST*)
  76. *(.rodata*)
  77. *(.fat_data_code_ex)
  78. . = ALIGN(4); // must at tail, make rom_code size align 4
  79. PROVIDE(text_rodata_end = .);
  80. clock_critical_handler_begin = .;
  81. KEEP(*(.clock_critical_txt))
  82. clock_critical_handler_end = .;
  83. chargestore_handler_begin = .;
  84. KEEP(*(.chargestore_callback_txt))
  85. chargestore_handler_end = .;
  86. gsensor_dev_begin = .;
  87. KEEP(*(.gsensor_dev))
  88. gsensor_dev_end = .;
  89. . = ALIGN(4);
  90. //mouse sensor dev begin
  91. OMSensor_dev_begin = .;
  92. KEEP(*(.omsensor_dev))
  93. OMSensor_dev_end = .;
  94. storage_device_begin = .;
  95. KEEP(*(.storage_device))
  96. storage_device_end = .;
  97. /********maskrom arithmetic ****/
  98. *(.opcore_table_maskrom)
  99. *(.bfilt_table_maskroom)
  100. *(.opcore_maskrom)
  101. *(.bfilt_code)
  102. *(.bfilt_const)
  103. /********maskrom arithmetic end****/
  104. . = ALIGN(4);
  105. *(.audio_decoder_code)
  106. *(.audio_decoder_const)
  107. *(.audio_encoder_code)
  108. *(.audio_encoder_const)
  109. *(.audio_codec_code)
  110. . = ALIGN(4);
  111. *(.media.audio_decoder.text)
  112. *(.media.audio_encoder.text)
  113. . = ALIGN(4);
  114. *(.usbc_encoder_code)
  115. *(.usbc_decoder_code)
  116. *(.resample_fastcal_const)
  117. *(.resample_fastcal_code)
  118. *(.resample_fastcal_sparse_code)
  119. #if (TCFG_ENC_USBC_ENABLE || TCFG_DEC_USBC_ENABLE)
  120. *(.usbc_codec_code)
  121. *(.usbc_codec_const)
  122. #endif
  123. *(.adpcm_encode_sparse_code)
  124. *(.adpcm_encode_code)
  125. *(.adpcm_encode_const)
  126. *(.pcm_code)
  127. . = ALIGN(4);
  128. *(.wav_code)
  129. *(.wav_const)
  130. *(.wav_dec_sparse_code)
  131. *(.wav_dec_const)
  132. *(.wav_dec_code)
  133. *(.wtgv2_code)
  134. *(.wtgv2_const)
  135. *(.wtgv2dec_code)
  136. *(.wtgv2dec_const)
  137. *(.wtgv2dec_str)
  138. *(.wtg_decv2_sparse_code)
  139. *(.lc3_decoder_code)
  140. *(.msbc_codec_const)
  141. *(.msbc_codec_code)
  142. *(.msbc_const)
  143. *(.msbc_code)
  144. *(.audio_pwm_code)
  145. *(.opus_code)
  146. *(.opus_encoder_code)
  147. *(.opus_encoder_const)
  148. *(.opus_enc_const)
  149. *(.opus_enc_code)
  150. #if (TCFG_ENC_LC3_ENABLE || TCFG_DEC_LC3_ENABLE)
  151. *(.lc3_codec_ari_c_const)
  152. *(.lc3_codec_c_const)
  153. *(.lc3_codec_c_sparse_code)
  154. *(.lc3_codec_d_code)
  155. *(.lc3_codec_c_code)
  156. *(.lc3_codec_e_code)
  157. *(.lc3_codec_ari_c_code)
  158. *(.lc3_codec_t16k_code)
  159. #endif
  160. . = ALIGN(4);
  161. _audio_decoder_begin = .;
  162. PROVIDE(audio_decoder_begin = .);
  163. KEEP(*(.audio_decoder))
  164. _audio_decoder_end = .;
  165. PROVIDE(audio_decoder_end = .);
  166. _audio_encoder_begin = .;
  167. PROVIDE(audio_encoder_begin = .);
  168. KEEP(*(.audio_encoder))
  169. _audio_encoder_end = .;
  170. PROVIDE(audio_encoder_end = .);
  171. . = ALIGN(4);
  172. __VERSION_BEGIN = .;
  173. KEEP(*(.sys.version))
  174. __VERSION_END = .;
  175. *(.noop_version)
  176. . = ALIGN(32);
  177. m_code_addr = . ;
  178. *(.m.code*)
  179. *(.movable.code*)
  180. m_code_size = ABSOLUTE(. - m_code_addr) ;
  181. . = ALIGN(32);
  182. } > code0
  183. . = ORIGIN(ram0);
  184. //TLB 起始需要16K 对齐;
  185. .mmu_tlb ALIGN(0x4000):
  186. {
  187. *(.mmu_tlb_segment);
  188. } > ram0
  189. .boot_info ALIGN(32):
  190. {
  191. *(.boot_info)
  192. . = ALIGN(32);
  193. } > ram0
  194. .data ALIGN(32):
  195. {
  196. //cpu start
  197. *(.data*)
  198. . = ALIGN(32);
  199. #include "btstack/btstack_lib_data.ld"
  200. . = ALIGN(4);
  201. #include "system/system_lib_data.ld"
  202. . = ALIGN(4);
  203. *(.wav_data)
  204. *(.usbc_encoder_data)
  205. *(.usbc_decoder_data)
  206. *(.resample_fastcal_data)
  207. *(.wtgv2_data)
  208. *(.wtgv2dec_data)
  209. *(.opus_encoder_data)
  210. *(.opus_enc_data)
  211. #if (TCFG_ENC_LC3_ENABLE || TCFG_DEC_LC3_ENABLE)
  212. *(.lc3_codec_ari_c_data)
  213. *(.lc3_codec_c_data)
  214. #endif
  215. *(.msbc_data)
  216. *(.msbc_codec_data)
  217. . = ALIGN(4);
  218. #if (TCFG_ENC_LC3_ENABLE || TCFG_DEC_LC3_ENABLE)
  219. *(.lc3_codec_ari_c_data)
  220. *(.lc3_codec_c_data)
  221. #endif
  222. . = ALIGN(4);
  223. } > ram0
  224. .irq_stack ALIGN(32):
  225. {
  226. *(.stack_magic)
  227. _cpu0_sstack_begin = .;
  228. PROVIDE(cpu0_sstack_begin = .);
  229. *(.stack)
  230. _cpu0_sstack_end = .;
  231. PROVIDE(cpu0_sstack_end = .);
  232. _stack_end = . ;
  233. *(.stack_magic0)
  234. . = ALIGN(4);
  235. } > ram0
  236. .bss ALIGN(32):
  237. {
  238. *(.usb_audio_play_dma)
  239. *(.usb_audio_rec_dma)
  240. *(.uac_rx)
  241. *(.mass_storage)
  242. *(.usb_h_dma)
  243. *(.usb_ep0)
  244. *(.usb_msd_dma)
  245. *(.usb_hid_dma)
  246. *(.usb_iso_dma)
  247. *(.usb_cdc_dma)
  248. *(.uac_var)
  249. *(.usb_config_var)
  250. *(.cdc_var)
  251. . = ALIGN(4);
  252. *(.wav_bss)
  253. *(.wtgv2_bss)
  254. *(.wtgv2dec_bss)
  255. *(.opus_encoder_bss)
  256. *(.opus_enc_bss)
  257. *(.resample_fastcal_bss)
  258. #if (TCFG_ENC_LC3_ENABLE || TCFG_DEC_LC3_ENABLE)
  259. *(.lc3_codec_ari_c_bss)
  260. *(.lc3_codec_c_bss)
  261. #endif
  262. *(.msbc_bss)
  263. *(.msbc_codec_bss)
  264. . = ALIGN(4);
  265. #include "btstack/btstack_lib_bss.ld"
  266. . = ALIGN(4);
  267. #include "system/system_lib_bss.ld"
  268. . = ALIGN(4);
  269. *(.bss)
  270. . = ALIGN(4);
  271. *(.os_bss)
  272. *(.volatile_ram)
  273. *(.btstack_pool)
  274. *(.mem_heap)
  275. *(.memp_memory_x)
  276. . = ALIGN(32);
  277. } > ram0
  278. .data_code ALIGN(32):
  279. {
  280. data_code_pc_limit_begin = .;
  281. *(.flushinv_icache)
  282. *(.cache)
  283. *(.os_critical_code)
  284. *(.volatile_ram_code)
  285. *(.chargebox_code)
  286. *(.os_code)
  287. *(.os_str)
  288. *(.fat_data_code)
  289. . = ALIGN(4);
  290. _SPI_CODE_START = . ;
  291. *(.spi_code)
  292. . = ALIGN(4);
  293. _SPI_CODE_END = . ;
  294. . = ALIGN(4);
  295. } > ram0
  296. /* .moveable_slot ALIGN(4): */
  297. /* { */
  298. /* *(movable.slot.*) */
  299. /* } >ram0 */
  300. .nv_bss ALIGN(32) :
  301. {
  302. NVRAM_DATA_START = .;
  303. *(.non_volatile_ram)
  304. NVRAM_DATA_SIZE = ABSOLUTE(. - NVRAM_DATA_START);
  305. . = ALIGN(4);
  306. NVRAM_END = .;
  307. _nv_pre_begin = . ;
  308. } > ram0
  309. __report_overlay_begin = .;
  310. OVERLAY : AT(0x200000) SUBALIGN(4)
  311. {
  312. .overlay_aec
  313. {
  314. . = ALIGN(4);
  315. aec_code_begin = . ;
  316. *(.text._*)
  317. *(.data._*)
  318. *(.aec_code)
  319. *(.aec_const)
  320. *(.res_code)
  321. *(.res_const)
  322. *(.ns_code)
  323. *(.ns_const)
  324. *(.fft_code)
  325. *(.fft_const)
  326. *(.nlp_code)
  327. *(.nlp_const)
  328. *(.der_code)
  329. *(.der_const)
  330. *(.qmf_code)
  331. *(.qmf_const)
  332. *(.aec_data)
  333. *(.res_data)
  334. *(.ns_data)
  335. *(.nlp_data)
  336. *(.der_data)
  337. *(.qmf_data)
  338. *(.fft_data)
  339. *(.dms_code)
  340. *(.dms_const)
  341. *(.dms_data)
  342. . = ALIGN(4);
  343. *(.aec_mux)
  344. . = ALIGN(4);
  345. aec_code_end = . ;
  346. aec_code_size = aec_code_end - aec_code_begin ;
  347. }
  348. .overlay_aac
  349. {
  350. . = ALIGN(4);
  351. aac_dec_code_begin = .;
  352. *(.bt_aac_dec_code)
  353. *(.bt_aac_dec_sparse_code)
  354. aac_dec_code_end = .;
  355. aac_dec_code_size = aac_dec_code_end - aac_dec_code_begin ;
  356. . = ALIGN(4);
  357. bt_aac_dec_const_begin = .;
  358. *(.bt_aac_dec_const)
  359. *(.bt_aac_dec_sparse_const)
  360. . = ALIGN(4);
  361. bt_aac_dec_const_end = .;
  362. bt_aac_dec_const_size = bt_aac_dec_const_end - bt_aac_dec_const_begin ;
  363. *(.bt_aac_dec_data)
  364. . = ALIGN(4);
  365. }
  366. } > ram0
  367. //加个空段防止下面的OVERLAY地址不对
  368. .ram0_empty0 ALIGN(4) :
  369. {
  370. . = . + 4;
  371. } > ram0
  372. //__report_overlay_begin = .;
  373. OVERLAY : AT(0x210000) SUBALIGN(4)
  374. {
  375. .overlay_aec_ram
  376. {
  377. . = ALIGN(4);
  378. *(.msbc_enc)
  379. *(.cvsd_codec)
  380. *(.aec_bss)
  381. *(.res_bss)
  382. *(.ns_bss)
  383. *(.nlp_bss)
  384. *(.der_bss)
  385. *(.qmf_bss)
  386. *(.fft_bss)
  387. *(.aec_mem)
  388. *(.dms_bss)
  389. }
  390. .overlay_aac_ram
  391. {
  392. . = ALIGN(4);
  393. *(.bt_aac_dec_bss)
  394. . = ALIGN(4);
  395. *(.aac_mem)
  396. *(.aac_ctrl_mem)
  397. /* . += 0x5fe8 ; */
  398. /* . += 0xef88 ; */
  399. }
  400. .overlay_mp3
  401. {
  402. *(.mp3_mem)
  403. *(.mp3_ctrl_mem)
  404. *(.mp3pick_mem)
  405. *(.mp3pick_ctrl_mem)
  406. *(.dec2tws_mem)
  407. }
  408. .overlay_wma
  409. {
  410. *(.wma_mem)
  411. *(.wma_ctrl_mem)
  412. *(.wmapick_mem)
  413. *(.wmapick_ctrl_mem)
  414. }
  415. .overlay_ape
  416. {
  417. *(.ape_mem)
  418. *(.ape_ctrl_mem)
  419. }
  420. .overlay_flac
  421. {
  422. *(.flac_mem)
  423. *(.flac_ctrl_mem)
  424. }
  425. .overlay_m4a
  426. {
  427. *(.m4a_mem)
  428. *(.m4a_ctrl_mem)
  429. }
  430. .overlay_amr
  431. {
  432. *(.amr_mem)
  433. *(.amr_ctrl_mem)
  434. }
  435. .overlay_dts
  436. {
  437. *(.dts_mem)
  438. *(.dts_ctrl_mem)
  439. }
  440. .overlay_fm
  441. {
  442. *(.fm_mem)
  443. }
  444. .overlay_pc
  445. {
  446. }
  447. /* .overlay_moveable */
  448. /* { */
  449. /* . += 0xa000 ; */
  450. /* } */
  451. } > ram0
  452. #ifdef CONFIG_CODE_BANK_ENABLE
  453. //bank code addr
  454. bank_code_run_addr = .;
  455. OVERLAY : AT(0x300000) SUBALIGN(4)
  456. {
  457. .overlay_bank0
  458. {
  459. *(.bank.code.0*)
  460. *(.bank.const.0*)
  461. . = ALIGN(4);
  462. }
  463. .overlay_bank1
  464. {
  465. *(.bank.code.1*)
  466. *(.bank.const.1*)
  467. . = ALIGN(4);
  468. }
  469. .overlay_bank2
  470. {
  471. *(.bank.code.2*)
  472. *(.bank.const.2*)
  473. *(.bank.ecdh.*)
  474. . = ALIGN(4);
  475. }
  476. .overlay_bank3
  477. {
  478. *(.bank.code.3*)
  479. *(.bank.const.3*)
  480. *(.bank.enc.*)
  481. . = ALIGN(4);
  482. }
  483. .overlay_bank4
  484. {
  485. *(.bank.code.4*)
  486. *(.bank.const.4*)
  487. . = ALIGN(4);
  488. }
  489. .overlay_bank5
  490. {
  491. *(.bank.code.5*)
  492. *(.bank.const.5*)
  493. . = ALIGN(4);
  494. }
  495. .overlay_bank6
  496. {
  497. *(.bank.code.6*)
  498. *(.bank.const.6*)
  499. . = ALIGN(4);
  500. }
  501. .overlay_bank7
  502. {
  503. *(.bank.code.7*)
  504. *(.bank.const.7*)
  505. . = ALIGN(4);
  506. }
  507. .overlay_bank8
  508. {
  509. *(.bank.code.8*)
  510. *(.bank.const.8*)
  511. . = ALIGN(4);
  512. }
  513. .overlay_bank9
  514. {
  515. *(.bank.code.9*)
  516. *(.bank.const.9*)
  517. . = ALIGN(4);
  518. }
  519. } > ram0
  520. //common bank code addr
  521. common_code_run_addr = .;
  522. .common ALIGN(4):
  523. {
  524. *(.common*)
  525. . = ALIGN(4);
  526. } > ram0
  527. #endif
  528. /* maskrom area */
  529. NVRAM_LIMIT = 0xc000 - 0x100 - 0x400;
  530. _nv_pre_end = 0xc000 - 0x100 - 0x400;
  531. ASSERT(NVRAM_END <= NVRAM_LIMIT, "NVRAM space overflow!")
  532. data_code_pc_limit_end = .;
  533. __report_overlay_end = .;
  534. _HEAP_BEGIN = . ;
  535. _HEAP_END = RAM0_END;
  536. }
  537. #include "btctrler/port/bd19/btctler_lib.ld"
  538. #include "update/update.ld"
  539. #include "driver/cpu/bd19/driver_lib.ld"
  540. //================== Section Info Export ====================//
  541. text_begin = ADDR(.text);
  542. text_size = SIZEOF(.text);
  543. text_end = text_begin + text_size;
  544. ASSERT((text_size % 4) == 0,"!!! text_size Not Align 4 Bytes !!!");
  545. bss_begin = ADDR(.bss);
  546. bss_size = SIZEOF(.bss);
  547. bss_end = bss_begin + bss_size;
  548. ASSERT((bss_size % 4) == 0,"!!! bss_size Not Align 4 Bytes !!!");
  549. nvbss_begin = NVRAM_DATA_START;
  550. nvbss_size = NVRAM_LIMIT - nvbss_begin;
  551. ASSERT((nvbss_size % 4) == 0,"!!! nvbss_size Not Align 4 Bytes !!!");
  552. data_addr = ADDR(.data);
  553. data_begin = text_begin + text_size;
  554. data_size = SIZEOF(.data);
  555. ASSERT((data_size % 4) == 0,"!!! data_size Not Align 4 Bytes !!!");
  556. /* moveable_slot_addr = ADDR(.moveable_slot); */
  557. /* moveable_slot_begin = data_begin + data_size; */
  558. /* moveable_slot_size = SIZEOF(.moveable_slot); */
  559. data_code_addr = ADDR(.data_code);
  560. data_code_begin = data_begin + data_size;
  561. data_code_size = SIZEOF(.data_code);
  562. ASSERT((data_code_size % 4) == 0,"!!! data_code_size Not Align 4 Bytes !!!");
  563. //================ OVERLAY Code Info Export ==================//
  564. aec_addr = ADDR(.overlay_aec);
  565. aec_begin = data_code_begin + data_code_size;
  566. aec_size = SIZEOF(.overlay_aec);
  567. aac_addr = ADDR(.overlay_aac);
  568. aac_begin = aec_begin + aec_size;
  569. aac_size = SIZEOF(.overlay_aac);
  570. //================ BANK ==================//
  571. bank_code_load_addr = aac_begin + aac_size;
  572. /* moveable_addr = ADDR(.overlay_moveable) ; */
  573. /* moveable_size = SIZEOF(.overlay_moveable) ; */
  574. //===================== HEAP Info Export =====================//
  575. PROVIDE(HEAP_BEGIN = _HEAP_BEGIN);
  576. PROVIDE(HEAP_END = _HEAP_END);
  577. _MALLOC_SIZE = _HEAP_END - _HEAP_BEGIN;
  578. PROVIDE(MALLOC_SIZE = _HEAP_END - _HEAP_BEGIN);
  579. /* ASSERT(MALLOC_SIZE >= 0x8000, "heap space too small !") */
  580. //============================================================//
  581. //=== report section info begin:
  582. //============================================================//
  583. report_text_beign = ADDR(.text);
  584. report_text_size = SIZEOF(.text);
  585. report_text_end = report_text_beign + report_text_size;
  586. report_mmu_tlb_begin = ADDR(.mmu_tlb);
  587. report_mmu_tlb_size = SIZEOF(.mmu_tlb);
  588. report_mmu_tlb_end = report_mmu_tlb_begin + report_mmu_tlb_size;
  589. report_boot_info_begin = ADDR(.boot_info);
  590. report_boot_info_size = SIZEOF(.boot_info);
  591. report_boot_info_end = report_boot_info_begin + report_boot_info_size;
  592. report_irq_stack_begin = ADDR(.irq_stack);
  593. report_irq_stack_size = SIZEOF(.irq_stack);
  594. report_irq_stack_end = report_irq_stack_begin + report_irq_stack_size;
  595. report_data_begin = ADDR(.data);
  596. report_data_size = SIZEOF(.data);
  597. report_data_end = report_data_begin + report_data_size;
  598. report_bss_begin = ADDR(.bss);
  599. report_bss_size = SIZEOF(.bss);
  600. report_bss_end = report_bss_begin + report_bss_size;
  601. report_data_code_begin = ADDR(.data_code);
  602. report_data_code_size = SIZEOF(.data_code);
  603. report_data_code_end = report_data_code_begin + report_data_code_size;
  604. report_overlay_begin = __report_overlay_begin;
  605. report_overlay_size = __report_overlay_end - __report_overlay_begin;
  606. report_overlay_end = __report_overlay_end;
  607. report_heap_beign = _HEAP_BEGIN;
  608. report_heap_size = _HEAP_END - _HEAP_BEGIN;
  609. report_heap_end = _HEAP_END;
  610. BD19_PHY_RAM_SIZE = PHY_RAM_SIZE;
  611. BD19_SDK_RAM_SIZE = report_mmu_tlb_size + \
  612. report_boot_info_size + \
  613. report_irq_stack_size + \
  614. report_data_size + \
  615. report_bss_size + \
  616. report_overlay_size + \
  617. report_data_code_size + \
  618. report_heap_size;
  619. //============================================================//
  620. //=== report section info end
  621. //============================================================//