1/* 2 * Copyright (c) 2021 Bestechnic (Shanghai) Co., Ltd. All rights reserved. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15#include "plat_addr_map.h" 16 17#if defined(KERNEL_LITEOS_M) 18#define CUSTOM_REBOOT_DUMP_SIZE 0x4000 19#endif 20 21#ifdef RB_CODEC 22#define HEAP_SECTION_SIZE 0x1000 23#else 24#define HEAP_SECTION_SIZE 0x2000 25#endif 26 27#if defined(NUTTX_BUILD) 28#include "nuttx/config.h" 29#define NUTTX_HEAP_SECTION_SIZE 0x20000 30#define STACK_SECTION_SIZE CONFIG_IDLETHREAD_STACKSIZE 31#undef HEAP_SECTION_SIZE 32#define HEAP_SECTION_SIZE 0x0000 33#else 34#define STACK_SECTION_SIZE 0x2000 35#endif 36#if defined(CP_ENABLE) && !defined(CP_BOOT) 37#define CP_STACK_SECTION_SIZE 0x6000 38#else 39#define CP_STACK_SECTION_SIZE 0x1000 40#endif 41 42#if defined(ROM_UTILS_ON) 43#if defined(CHIP_BEST1400) || defined(CHIP_BEST1402) 44#define ROM_UTILS_RESV_RAM_SIZE 0x64 45#else 46#define ROM_UTILS_RESV_RAM_SIZE 0x0 47#endif 48#endif 49 50#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 51#define OVERLAY_DATA_SECTION_SIZE 0x10000 52#elif defined(RB_CODEC) 53#define OVERLAY_DATA_SECTION_SIZE 0xA000 54#else 55#define OVERLAY_DATA_SECTION_SIZE 0x8000 56#endif 57 58#if !defined(FAST_XRAM_SECTION_SIZE) 59#if (RAM_SIZE >= 0x48000) 60#define RTOS_IN_RAM 61#if defined(BTUSB_AUDIO_MODE) 62#define FAST_XRAM_SECTION_SIZE 0x20000 63#elif (defined(CHIP_BEST1402) && defined(SPEECH_TX_2MIC_NS2)) 64#define FAST_XRAM_SECTION_SIZE 0xF800 65#else 66#define FAST_XRAM_SECTION_SIZE 0x16000 67#endif 68#elif (RAM_SIZE >= 0x40000) 69#if defined(CHIP_BEST1402) || defined(CHIP_BEST1400) 70#define FAST_XRAM_SECTION_SIZE 0x5200 71#else 72#define FAST_XRAM_SECTION_SIZE 0x3800 73#endif 74#else 75#define FAST_XRAM_SECTION_SIZE 0x6000 76#endif 77#endif 78#if defined(NUTTX_BUILD) && defined(ARM_CMSE) 79#undef FAST_XRAM_SECTION_SIZE 80#define FAST_XRAM_SECTION_SIZE 0x0 81#endif 82#if !defined(OTA_BOOT_SIZE) && defined(OTA_CODE_OFFSET) 83#define FLASH_REGION_BASE (FLASH_BASE + OTA_CODE_OFFSET) 84#else 85#ifdef OTA_BOOT_OFFSET 86#define FLASH_REGION_BASE (FLASH_BASE + OTA_BOOT_OFFSET) 87#else 88#define FLASH_REGION_BASE (FLASH_BASE) 89#endif 90#endif 91 92#ifndef FLASH_REGION_SIZE 93#define FLASH_REGION_SIZE (FLASH_SIZE - (FLASH_REGION_BASE - FLASH_BASE) - CP_FLASH_SIZE) 94#endif 95 96#if (FLASH_REGION_BASE + FLASH_REGION_SIZE) > (FLASH_BASE + FLASH_SIZE) 97#error "(FLASH_REGION_BASE + FLASH_REGION_SIZE) should <= (FLASH_BASE + FLASH_SIZE)" 98#endif 99 100#define FLASH_NC_REGION_BASE FLASH_C_TO_NC(FLASH_REGION_BASE) 101#define FLASHX_REGION_BASE FLASH_TO_FLASHX(FLASH_REGION_BASE) 102 103#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 104#define OVERLAY_FOR_CP 105#endif 106 107#ifdef OVERLAY_FOR_CP 108#define REGION_OVERLAY_TEXT RAMCPX 109#define REGION_OVERLAY_DATA RAMCP 110#else 111#define REGION_OVERLAY_TEXT FRAMX 112#define REGION_OVERLAY_DATA RAM 113#endif 114 115/* Linker script to configure memory regions. */ 116/* See plat_addr_map.h and common.mk for the macro definitions */ 117MEMORY 118{ 119 ROM (rx) : ORIGIN = ROM_BASE, LENGTH = ROM_SIZE 120 FLASH (r) : ORIGIN = FLASH_REGION_BASE, LENGTH = FLASH_REGION_SIZE 121 FLASH_NC (r) : ORIGIN = FLASH_NC_REGION_BASE, LENGTH = FLASH_REGION_SIZE 122 FLASHX (rx) : ORIGIN = FLASHX_REGION_BASE, LENGTH = FLASH_REGION_SIZE 123 RAM (rwx) : ORIGIN = RAM_BASE, LENGTH = RAM_SIZE - FAST_XRAM_SECTION_SIZE 124 RAMX (rx) : ORIGIN = RAMX_BASE, LENGTH = RAM_SIZE - FAST_XRAM_SECTION_SIZE 125#if defined(ARM_CMSE) && (RAM_NSC_SIZE != 0) 126 RAMX_NSC (rx) : ORIGIN = RAMX_BASE + RAM_S_SIZE, LENGTH = RAM_NSC_SIZE 127#endif 128 FRAMX (rwx) : ORIGIN = RAMX_BASE + RAM_SIZE - FAST_XRAM_SECTION_SIZE, LENGTH = FAST_XRAM_SECTION_SIZE 129#ifdef PSRAM_BASE 130 PSRAM (rwx) : ORIGIN = PSRAM_BASE, LENGTH = PSRAM_SIZE 131 PSRAM_NC (rwx) : ORIGIN = PSRAM_NC_BASE, LENGTH = PSRAM_SIZE 132 PSRAMX (rx) : ORIGIN = PSRAMX_BASE, LENGTH = PSRAM_SIZE 133#endif 134#ifdef PSRAMUHS_BASE 135 PSRAMUHS (rwx) : ORIGIN = MCU_PSRAMUHS_BASE, LENGTH = MCU_PSRAMUHS_SIZE 136 PSRAMUHS_NC (rwx) : ORIGIN = MCU_PSRAMUHS_NC_BASE, LENGTH = MCU_PSRAMUHS_SIZE 137 PSRAMUHSX (rx) : ORIGIN = MCU_PSRAMUHSX_BASE, LENGTH = MCU_PSRAMUHS_SIZE 138#endif 139#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 140 RAMCP (rwx) : ORIGIN = RAMCP_BASE, LENGTH = RAMCP_SIZE 141 RAMCPX (rwx) : ORIGIN = RAMCPX_BASE, LENGTH = RAMCPX_SIZE 142#endif 143#ifdef MEM_POOL_BASE 144 MEM_POOL (rwx) : ORIGIN = MEM_POOL_BASE, LENGTH = MEM_POOL_SIZE 145#endif 146#if defined(RAMV_BASE) && (RAMV_SIZE > 0) 147 RAMV (rwx) : ORIGIN = RAMV_BASE, LENGTH = RAMV_SIZE 148#endif 149} 150 151/* Library configurations */ 152#ifndef NUTTX_BUILD 153#ifndef NO_LIBC 154GROUP(libgcc.a libc.a libm.a libnosys.a) 155#endif 156#endif 157 158/* Linker script to place sections and symbol values. Should be used together 159 * with other linker script that defines memory regions FLASH and RAM. 160 * It references following symbols, which must be defined in code: 161 * Reset_Handler : Entry of reset handler 162 * 163 * It defines following symbols, which code can use without definition: 164 * __export_fn_rom 165 * __exidx_start 166 * __exidx_end 167 * __copy_table_start__ 168 * __copy_table_end__ 169 * __zero_table_start__ 170 * __zero_table_end__ 171 * __etext 172 * __data_start__ 173 * __preinit_array_start 174 * __preinit_array_end 175 * __init_array_start 176 * __init_array_end 177 * __fini_array_start 178 * __fini_array_end 179 * __data_end__ 180 * __bss_start__ 181 * __bss_end__ 182 * __end__ 183 * end 184 * __HeapLimit 185 * __StackLimit 186 * __StackTop 187 * __stack 188 * __free_ram 189 * __factory_start 190 * __factory_end 191 * __calib_start 192 * __calib_end 193 * __flash_start 194 * __flash_end 195 * __free_flash 196 * __boot_sram_start_flash__ 197 * __boot_sram_end_flash__ 198 * __boot_sram_start__ 199 * __boot_bss_sram_start__ 200 * __boot_bss_sram_end__ 201 * __sram_text_data_start_flash__ 202 * __sram_text_data_end_flash__ 203 * __fast_sram_text_data_start__ 204 * __fast_sram_text_data_end__ 205 * __fast_sram_text_data_start_flash__ 206 * __fast_sram_text_data_end_flash__ 207 * __sram_text_data_start__ 208 * __sram_bss_start__ 209 * __sram_bss_end__ 210 * __overlay_text_start__ 211 * __overlay_text_exec_start__ 212 * __overlay_data_start__ 213 */ 214ENTRY(Boot_Loader) 215 216SECTIONS 217{ 218 __export_fn_rom = (ORIGIN(ROM) + LENGTH(ROM) - ROM_BUILD_INFO_SECTION_SIZE - ROM_EXPORT_FN_SECTION_SIZE); 219 220 .boot_struct (ORIGIN(FLASH)) : 221 { 222 __flash_start = .; 223 KEEP(*(.boot_struct)) 224 . = ALIGN(4); 225 } > FLASH 226 227 . = FLASH_TO_FLASHX(.); 228 229 .boot_text_flash (.) : AT (FLASHX_TO_FLASH(ADDR(.boot_text_flash))) 230 { 231 __flashx_start_addr__ = .; 232 *(.boot_loader) 233 *(.boot_text_flash*) 234 *(.boot_rodata_flash*) 235 . = ALIGN(4); 236 } > FLASHX 237 238#if defined(__BES_OTA_MODE__) 239 .ota_boot_info (ALIGN(4096)) : 240 { 241 *(.ota_boot_info) 242 . = (0x1000); 243 } > FLASHX 244 245 .ota_boot_rev (ALIGN(4096)) : 246 { 247 *(.ota_boot_rev) 248 . = (0x1000); 249 } > FLASHX 250#endif 251 252 . = FLASHX_TO_FLASH(.); 253 254 .got_info (.) : 255 { 256 __got_info_start = .; 257 __got_start = .; 258 *(.got) 259 . = ALIGN(4); 260 __got_end = .; 261 __got_plt_start = .; 262 *(.got.plt) 263 . = ALIGN(4); 264 __igot_plt_start = .; 265 *(.igot.plt) 266 . = ALIGN(4); 267 __dynamic_start = .; 268 *(.dynamic) 269 . = ALIGN(4); 270 __got_info_end = .; 271 } > FLASH 272 273 .vector_table (ORIGIN(RAM)) (NOLOAD) : 274 { 275 KEEP(*(.vector_table)) 276 . = VECTOR_SECTION_SIZE; 277 . = ALIGN(4); 278 } > RAM 279 280 .reboot_param (.) (NOLOAD) : 281 { 282 KEEP(*(.reboot_param)) 283 . = REBOOT_PARAM_SECTION_SIZE; 284 . = ALIGN(4); 285 } > RAM 286 287 .userdata_pool (.) (NOLOAD) : 288 { 289 *(.userdata_pool) 290 . = ALIGN(4); 291 __userdata_pool_end__ = .; 292 } > RAM 293 294 __boot_sram_start_flash__ = LOADADDR(.got_info) + SIZEOF(.got_info); 295 __boot_sram_start__ = __userdata_pool_end__; 296 297 .boot_text_sram (RAM_TO_RAMX(__boot_sram_start__)) : AT (__boot_sram_start_flash__) 298 { 299 _stext = .; 300 /* memcpy.o or libc_nano.a(lib_a-memcpy.o/lib_a-memcpy-stub.o) */ 301 *:memcpy.o(.text*) 302 *:lib_a-memcpy*.o(.text*) 303 *:libc_rom.o(.text*) 304 *:libc_rom_mem.o(.text*) 305 306 /* memset.o or libc_nano.a(lib_a-memset.o) */ 307 *:memset.o(.text*) 308 *:lib_a-memset*.o(.text*) 309 310 *:hal_norflash*.o(.text*) 311 *:norflash_*.o(EXCLUDE_FILE(*:norflash_api.o) .text*) 312 313#ifdef BOOT_CODE_IN_RAM 314 *:hal_cmu_*.o(.text*) 315 *:hal_iomux_*.o(.text*) 316 *:hal_analogif_*.o(.text*) 317 *:hal_spi.o(.text*) 318 *:hal_timer.o(.text*) 319 *:hal_sysfreq.o(.text*) 320#endif 321 322 *:hal_mcu2cp.o(.text*) 323 *:wifi_agent.o(.text*) 324#ifndef WIFI_ON_CP 325 *:wifi_srv.o(.text*) 326#endif 327 *:ethernetif.o(.text*) 328 329#ifdef ROM_IN_FLASH 330 *:hal_cmu_*.o(.text.hal_cmu_flash*_set_freq .text.hal_cmu_reset_set .text.hal_cmu_reset_clear) 331 *:hal_cmu_common.o(.text.hal_cmu_get_crystal_freq) 332 *:hal_timer.o(.text.hal_sys_timer_delay .text.hal_sys_timer_delay_us 333 .text.hal_sys_timer_delay_ns .text.hal_sys_timer_get 334 .text.hal_fast_sys_timer_get) 335#endif 336#if defined(ARM_CMSE) && defined(INTSRAM_RUN) 337 /* BEST2003 SAU set FLASH_BASE region as nonsecure region becase of the SAU region number limitation, 338 CPU can't access FLASH_BASE region in secure state, so the text should be located in SRAM */ 339 *(EXCLUDE_FILE(*crt*) .text*) 340#endif 341 342 *psram*.o(.text*) 343 *(.boot_text_sram*) 344 . = ALIGN(4); 345 __boot_text_sram_end__ = .; 346 } > RAMX 347 348 .boot_data_sram (RAMX_TO_RAM(ADDR(.boot_text_sram) + SIZEOF(.boot_text_sram))) : 349 AT (__boot_sram_start_flash__ + SIZEOF(.boot_text_sram)) 350 { 351 __boot_data_sram_start__ = .; 352 *:hal_norflash*.o(.data* .rodata*) 353 *:norflash_*.o(EXCLUDE_FILE(*:norflash_api.o) .data* EXCLUDE_FILE(*:norflash_api.o) .rodata*) 354 *psram*.o(.data* .rodata*) 355 *:libc_rom.o(.rodata*) 356 *:libc_rom_mem.o(.rodata*) 357 358#if defined(ARM_CMSE) && defined(INTSRAM_RUN) 359 /* BEST2003 SAU set FLASH_BASE region as nonsecure region becase of the SAU region number limitation, 360 CPU can't access FLASH_BASE region in secure state, so the data and rodata should be located in SRAM */ 361 *(.data* .rodata*) 362#endif 363 /* Stack protector instrumentation rodata for functions in special sections */ 364 *(.rodata.cst4) 365 366 *(.boot_rodata_sram*) 367 *(.boot_data*) 368 . = ALIGN(4); 369#ifdef OPENAMP_SUPPORT 370 *(.resource_table) 371 . = ALIGN(4); 372#endif 373 __boot_data_sram_end__ = .; 374 } > RAM 375 376 __boot_sram_end_flash__ = __boot_sram_start_flash__ + 377 SIZEOF(.boot_text_sram) + SIZEOF(.boot_data_sram); 378 379 .boot_bss_sram (.) (NOLOAD) : AT (ADDR(.boot_bss_sram)) 380 { 381 __boot_bss_sram_start__ = .; 382 *:hal_norflash*.o(.bss*) 383 *:norflash_*.o(EXCLUDE_FILE(*:norflash_api.o) .bss*) 384 *psram*.o(.bss*) 385 *(.boot_bss*) 386 . = ALIGN(32); 387 __boot_bss_sram_end__ = .; 388 } > RAM 389 390 __sram_text_data_start_flash__ = __boot_sram_end_flash__; 391 __sram_text_data_start__ = __boot_bss_sram_end__; 392 393 .sram_text (RAM_TO_RAMX(__sram_text_data_start__)) : AT (__sram_text_data_start_flash__) 394 { 395 __sram_text_start__ = .; 396#ifdef RTOS_IN_RAM 397 *:rtos_lib.o(.text*) 398#endif 399#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 400 *:hal_memsc.o(.text*) 401 *:hal_trace.o(.text*) 402 *:hal_trace_mod.o(.text*) 403 *:mpu_armv*.o(.text*) 404 *:codec_sbc.o(.text*) 405 *:multi_heap.o(.text*) 406 *:pool_api.o(.text*) 407 *libgcc.a:(.text*) 408 409 /* for LIBC_ROM=0 */ 410 *libc_nano.a:(.text*) 411 /* for NOSTD=1 */ 412 *:atoi.o(.text*) 413 *:ctype.o(.text*) 414 *:memchr.o(.text*) 415 *:memcmp.o(.text*) 416 *:memmove.o(.text*) 417 *:strcat.o(.text*) 418 *:strchr.o(.text*) 419 *:strcmp.o(.text*) 420 *:strcpy.o(.text*) 421 *:strlen.o(.text*) 422 *:strncat.o(.text*) 423 *:strncmp.o(.text*) 424 *:strncpy.o(.text*) 425 *:strnicmp.o(.text*) 426 *:strstr.o(.text*) 427 *:strtol.o(.text*) 428 *:strtoul.o(.text*) 429 *:vsprintf.o(.text*) 430 *:vsscanf.o(.text*) 431 432 /* for SCO_CP_ACCEL=1 */ 433 *:cmsis_dsp_lib.o(.text*) 434 *libm.a:(.text*) 435 436 *:a2dp_encoder_cp.o(.text*) 437 *:a2dp_encoder_sbc_cp.o(.text*) 438#elif defined(ARM_CMSE) && (RAMCP_SIZE == 0) 439 *(.cp_text_sram*) 440#endif 441 442#ifndef LC3_IN_A7_DSP_CODEC 443#if(A2DP_LC3_ON) 444 *:adjust_global_gain.o(.text*) 445 *:al_fec.o(.text*) 446 *:apply_global_gain.o(.text*) 447 *:ari_codec.o(.text*) 448 *:attack_detector.o(.text*) 449 *:basop32.o(.text*) 450 *:basop_mpy.o(.text*) 451 *:basop_util.o(.text*) 452 *:constants.o(.text*) 453 *:cutoff_bandwidth.o(.text*) 454 *:dct2.o(.text*) 455 *:dct4.o(.text*) 456 *:dec_entropy.o(.text*) 457 *:dec_lc3.o(.text*) 458 *:detect_cutoff_warped.o(.text*) 459 *:enc_entropy.o(.text*) 460 *:enc_lc3.o(.text*) 461 *:enh1632.o(.text*) 462 *:enh40.o(.text*) 463 *:estimate_global_gain.o(.text*) 464 *:fft.o(.text*) 465 *:imdct.o(.text*) 466 *:lc3.o(.text*) 467 *:lc3_pre_encoding_process.o(.text*) 468 *:lc3_process.o(.text*) 469 *:levinson.o(.text*) 470 *:ltpf_coder.o(.text*) 471 *:ltpf_decoder.o(.text*) 472 *:mdct.o(.text*) 473 *:mdct_shaping.o(.text*) 474 *:noise_factor.o(.text*) 475 *:noise_filling.o(.text*) 476 *:olpa.o(.text*) 477 *:output_scaling.o(.text*) 478 *:pc_apply.o(.text*) 479 *:pc_classify.o(.text*) 480 *:pc_main.o(.text*) 481 *:pc_update.o(.text*) 482 *:per_band_energy.o(.text*) 483 *:plc_apply.o(.text*) 484 *:plc_classify.o(.text*) 485 *:plc_damping_scrambling.o(.text*) 486 *:plc_lpc_scaling.o(.text*) 487 *:plc_main.o(.text*) 488 *:plc_noise_substitution.o(.text*) 489 *:plc_phecu_f0_refine_first.o(.text*) 490 *:plc_phecu_fec_hq.o(.text*) 491 *:plc_phecu_lf_peak_analysis.o(.text*) 492 *:plc_phecu_peak_locator.o(.text*) 493 *:plc_phecu_setf0hz.o(.text*) 494 *:plc_phecu_tools.o(.text*) 495 *:plc_tdac.o(.text*) 496 *:plc_tdc_inverse_odft.o(.text*) 497 *:plc_tdc_lagwin.o(.text*) 498 *:plc_tdc_main.o(.text*) 499 *:plc_tdc_pre_emphasis.o(.text*) 500 *:plc_update.o(.text*) 501 *:plc_update_aft_imdct.o(.text*) 502 *:plc_xcorr.o(.text*) 503 *:pvq_dec.o(.text*) 504 *:pvq_enc.o(.text*) 505 *:pvq_index.o(.text*) 506 *:quantize_spec.o(.text*) 507 *:resamp12k8.o(.text*) 508 *:residual_coding.o(.text*) 509 *:residual_decoding.o(.text*) 510 *:rom_basop_util.o(.text*) 511 *:setup_dec_lc3.o(.text*) 512 *:setup_enc_lc3.o(.text*) 513 *:sns_compute_scf.o(.text*) 514 *:sns_interpolate_scf.o(.text*) 515 *:sns_quantize_scf.o(.text*) 516 *:tns_coder.o(.text*) 517 *:tns_decoder.o(.text*) 518 *(.overlay_a2dp_lc3*) 519#endif 520#endif 521 *:norflash_api.o(.text*) 522 *:tcp.o(.text*) 523 *:tcp_in.o(.text*) 524 . = ALIGN(0x2000); /*align for dubug hook*/ 525 *:tcp_out.o(.text*) 526 /* for SCO_CP_ACCEL=1 */ 527 *:cmsis_dsp_lib.o(.text*) 528 *libm.a:(.text*) 529 530#ifdef KWS_IN_RAM 531 *:kws_lib.o(.text*) 532#endif 533 *:tcp*.o(.text*) 534 *:net*.o(.text*) 535 *:agg*.o(.text*) 536 *:michael.o(.text*) 537 *:rx.o(.text*) 538 *:event.o(.text*) 539 *:util.o(.text*) 540 *:rate.o(.text*) 541 *:rc80211*.o(.text*) 542 *:tx.o(.text*) 543 *:status.o(.text*) 544 *:hw_crc.o(.text*) 545 *:queue.o(.text*) 546 *:hwio.o(.text*) 547 *:fwio.o(.text*) 548 *:bh.o(.text*) 549 *:txrx.o(.text*) 550 *:skbuff.o(.text*) 551 *:eth*.o(.text*) 552 *:ip*.o(.text*) 553 *:def.o(.text*) 554 *:pbuf.o(.text*) 555 *:raw.o(.text*) 556 *:sockets.o(.text*) 557 *:cmsis*.o(.text*) 558 *:list.o(.text*) 559 *:memp*.o(.text*) 560 *:mcu_slave_init.o(.text*) 561 *:dsp_code_decom.o(.text*) 562 *:lzma_decode.o(.text*) 563 *:hal_transq.o(.text*) 564 *:ftp_client.o(.text*) 565 *:port_s.o(.text*) 566 *:k_*.o(.text*) 567 *:wifi_drv*.o(.text*) 568 *:dpd*.o(.text*) 569 /* freeRTOS kernel */ 570 *:heap_5.o(.text*) 571 *:port.o(.text*) 572 *:mpu_wrappers.o(.text*) 573 *:croutine.o(.text*) 574 *:event_groups.o(.text*) 575 *:list.o(.text*) 576 *:queue.o(.text*) 577 *:stream_buffer.o(.text*) 578 *:tasks.o(.text*) 579 *:timers.o(.text*) 580 *(.sram_text*) 581 /* 582 If you want protect one section by armv8's mpu, the section should 583 be aligned to 32bytes 584 */ 585 . = ALIGN(32); 586 __sram_text_end__ = .; 587 } > RAMX 588 589 .sram_data (RAMX_TO_RAM(ADDR(.sram_text) + SIZEOF(.sram_text))) : 590 AT (__sram_text_data_start_flash__ + SIZEOF(.sram_text)) 591 { 592#ifdef RTOS_IN_RAM 593 *:rtos_lib.o(.data* .rodata*) 594#endif 595 596#if defined(GLOBAL_SRAM_KISS_FFT) 597 *:fftwrap.o(.data* .rodata*) 598 *:kiss_fft.o(.data* .rodata*) 599 *:kiss_fftr.o(.data* .rodata*) 600#endif 601 602#if defined(GLOBAL_SRAM_CMSIS_FFT) 603 *:CommonTables.o(.rodata.armBitRevIndexTable256) 604 *:CommonTables.o(.rodata.twiddleCoef_256) 605 *:CommonTables.o(.rodata.twiddleCoef_rfft_512) 606 *:CommonTables.o(.rodata.armBitRevIndexTable128) 607 *:CommonTables.o(.rodata.twiddleCoef_128) 608 *:CommonTables.o(.rodata.twiddleCoef_rfft_256) 609#endif 610 611#if defined(VOICE_ALGO_CP_ACCEL) 612 *:CommonTables.o(.rodata.armBitRevIndexTable256) 613 *:CommonTables.o(.rodata.twiddleCoef_256) 614 *:CommonTables.o(.rodata.twiddleCoef_rfft_512) 615 616#if defined(VOICE_TX_AEC) 617 *:ssp_aec.o(.data* .rodata*) 618#endif 619#if defined(APP_NOISE_ESTIMATION) 620 *:noise_estimator.o(.data* .rodata*) 621#endif 622#endif 623#if defined(NEW_NV_RECORD_ENALBED) 624 . = ALIGN(NV_EXTENSION_MIRROR_RAM_SIZE); 625 *(.nv_extension_pool) 626 . = ALIGN(NV_EXTENSION_MIRROR_RAM_SIZE); 627#endif 628#if defined(BTUSB_AUDIO_MODE) 629 *:hal_usb.o(.rodata*) 630#endif 631 632#if defined(SCO_CP_ACCEL) 633 *:plc_8000.o(.data* .rodata*) 634#if defined(_CVSD_BYPASS_) || defined(CVSD_BYPASS) 635 *:Pcm8k_Cvsd.o(.data* .rodata*) 636 *:cvsd_codec.o(.data* .rodata*) 637#endif 638 *:table.o(.data* .rodata*) 639 *:plc_16000.o(.data* .rodata*) 640 /* Move algos from overlay to here */ 641#endif 642 643 *:utils.o(.data* .rodata*) 644 *:cqueue.o(.data* .rodata*) 645 *:iir_process.o(.data* .rodata*) 646 *:sbcplc.o(.data* .rodata*) 647 *:sbc.o(.data* .rodata*) 648 *:sbc_math.o(.data* .rodata*) 649 *:crossover_filter.o(.data* .rodata*) 650 *:exp_func_tables.o(.data* .rodata*) 651#if defined(AQE_KWS) 652 *:kws_nn.o(.data* .rodata.second_conv_wt) 653 *:command_recognition.o(.data* .rodata*) 654 *:arm_bitreversal_16.o(.data* .rodata*) 655 *:arm_cfft_radix8_f32.o(.data* .rodata*) 656 *:arm_bitreversal2.o(.data* .rodata*) 657 *:arm_mult_f32.o(.data* .rodata*) 658 *:arm_cmplx_mag_squared_f32.o(.data* .rodata*) 659 *:arm_cmplx_mult_cmplx_f32.o(.data* .rodata*) 660 *:arm_abs_f32.o(.data* .rodata*) 661 *:arm_cos_f32.o(.data* .rodata*) 662 *:arm_sin_f32.o(.data* .rodata*) 663 *:nsx_core.o(.data* .rodata*) 664#endif 665 666#if defined(SPEECH_TX_NN_NS) 667 *:nn_ns_large_network.o(.data* .rodata*) 668 *:denoise_20ms.o(.data* .rodata*) 669#endif 670 671#if defined(SPEECH_TX_NN_NS2) 672 *:nn_ns_data.o(.data* .rodata*) 673#endif 674 675#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 676 *:hal_memsc.o(.rodata*) 677 *:hal_trace.o(.rodata*) 678 *:hal_trace_mod.o(.rodata*) 679 *:mpu.o(.rodata*) 680 *:multi_heap.o(.rodata*) 681 *:pool_api.o(.rodata*) 682 *:a2dp_decoder_cp.o(.rodata*) 683 *:a2dp_encoder_cp.o(.rodata*) 684 *:a2dp_encoder_sbc_cp.o(.rodata*) 685 *libgcc.a:(.rodata*) 686 687 /* for LIBC_ROM=0 */ 688 *libc_nano.a:(.rodata*) 689 /* for NOSTD=1 */ 690 *:atoi.o(.rodata*) 691 *:ctype.o(.rodata*) 692 *:memchr.o(.rodata*) 693 *:memcmp.o(.rodata*) 694 *:memmove.o(.rodata*) 695 *:strcat.o(.rodata*) 696 *:strchr.o(.rodata*) 697 *:strcmp.o(.rodata*) 698 *:strcpy.o(.rodata*) 699 *:strlen.o(.rodata*) 700 *:strncat.o(.rodata*) 701 *:strncmp.o(.rodata*) 702 *:strncpy.o(.rodata*) 703 *:strnicmp.o(.rodata*) 704 *:strstr.o(.rodata*) 705 *:strtol.o(.rodata*) 706 *:strtoul.o(.rodata*) 707 *:vsprintf.o(.rodata*) 708 *:vsscanf.o(.rodata*) 709 710 /* for SCO_CP_ACCEL=1 */ 711 *:cmsis_dsp_lib.o(.rodata*) 712 *libm.a:(.rodata*) 713#endif 714 715#if defined(GSOUND_HOTWORD_EXTERNAL) 716 *:voice_sbc.o(.data* .rodata*) 717 *:gsound_custom_audio.o(.data* .rodata*) 718 *:gsound_custom_hotword_external.o(.data* .rodata*) 719 *:libspeech*.o(.data* .rodata*) 720#endif 721 722#ifndef LC3_IN_A7_DSP_CODEC 723#if(A2DP_LC3_ON) 724 *:adjust_global_gain.o(.data* .rodata*) 725 *:al_fec.o(.data* .rodata*) 726 *:apply_global_gain.o(.data* .rodata*) 727 *:ari_codec.o(.data* .rodata*) 728 *:attack_detector.o(.data* .rodata*) 729 *:basop32.o(.data* .rodata*) 730 *:basop_mpy.o(.data* .rodata*) 731 *:basop_util.o(.data* .rodata*) 732 *:constants.o(.data* .rodata*) 733 *:cutoff_bandwidth.o(.data* .rodata*) 734 *:dct2.o(.data* .rodata*) 735 *:dct4.o(.data* .rodata*) 736 *:dec_entropy.o(.data* .rodata*) 737 *:dec_lc3.o(.data* .rodata*) 738 *:detect_cutoff_warped.o(.data* .rodata*) 739 *:enc_entropy.o(.data* .rodata*) 740 *:enc_lc3.o(.data* .rodata*) 741 *:enh1632.o(.data* .rodata*) 742 *:enh40.o(.data* .rodata*) 743 *:estimate_global_gain.o(.data* .rodata*) 744 *:fft.o(.data* .rodata*) 745 *:imdct.o(.data* .rodata*) 746 *:lc3.o(.data* .rodata*) 747 *:lc3_pre_encoding_process.o(.data* .rodata*) 748 *:lc3_process.o(.data* .rodata*) 749 *:levinson.o(.data* .rodata*) 750 *:ltpf_coder.o(.data* .rodata*) 751 *:ltpf_decoder.o(.data* .rodata*) 752 *:mdct.o(.data* .rodata*) 753 *:mdct_shaping.o(.data* .rodata*) 754 *:noise_factor.o(.data* .rodata*) 755 *:noise_filling.o(.data* .rodata*) 756 *:olpa.o(.data* .rodata*) 757 *:output_scaling.o(.data* .rodata*) 758 *:pc_apply.o(.data* .rodata*) 759 *:pc_classify.o(.data* .rodata*) 760 *:pc_main.o(.data* .rodata*) 761 *:pc_update.o(.data* .rodata*) 762 *:per_band_energy.o(.data* .rodata*) 763 *:plc_apply.o(.data* .rodata*) 764 *:plc_classify.o(.data* .rodata*) 765 *:plc_damping_scrambling.o(.data* .rodata*) 766 *:plc_lpc_scaling.o(.data* .rodata*) 767 *:plc_main.o(.data* .rodata*) 768 *:plc_noise_substitution.o(.data* .rodata*) 769 *:plc_phecu_f0_refine_first.o(.data* .rodata*) 770 *:plc_phecu_fec_hq.o(.data* .rodata*) 771 *:plc_phecu_lf_peak_analysis.o(.data* .rodata*) 772 *:plc_phecu_peak_locator.o(.data* .rodata*) 773 *:plc_phecu_setf0hz.o(.data* .rodata*) 774 *:plc_phecu_tools.o(.data* .rodata*) 775 *:plc_tdac.o(.data* .rodata*) 776 *:plc_tdc_inverse_odft.o(.data* .rodata*) 777 *:plc_tdc_lagwin.o(.data* .rodata*) 778 *:plc_tdc_main.o(.data* .rodata*) 779 *:plc_tdc_pre_emphasis.o(.data* .rodata*) 780 *:plc_update.o(.data* .rodata*) 781 *:plc_update_aft_imdct.o(.data* .rodata*) 782 *:plc_xcorr.o(.data* .rodata*) 783 *:pvq_dec.o(.data* .rodata*) 784 *:pvq_enc.o(.data* .rodata*) 785 *:pvq_index.o(.data* .rodata*) 786 *:quantize_spec.o(.data* .rodata*) 787 *:resamp12k8.o(.data* .rodata*) 788 *:residual_coding.o(.data* .rodata*) 789 *:residual_decoding.o(.data* .rodata*) 790 *:rom_basop_util.o(.data* .rodata*) 791 *:setup_dec_lc3.o(.data* .rodata*) 792 *:setup_enc_lc3.o(.data* .rodata*) 793 *:sns_compute_scf.o(.data* .rodata*) 794 *:sns_interpolate_scf.o(.data* .rodata*) 795 *:sns_quantize_scf.o(.data* .rodata*) 796 *:tns_coder.o(.data* .rodata*) 797 *:tns_decoder.o(.data* .rodata*) 798#endif 799#endif 800 801 *:norflash_api.o(.rodata*) 802#if defined(A2DP_SCALABLE_ON) 803 *:util.o(.data* .rodata*) 804#endif 805 *:tcp*.o(.data*) 806 *:net*.o(.data*) 807 *:agg*.o(.data*) 808 *:rx.o(.data*) 809 *:event.o(.data*) 810 *:util.o(.data*) 811 *:rate.o(.data*) 812 *:rc80211*.o(.data*) 813 *:tx.o(.data*) 814 *:status.o(.data*) 815 *:hw_crc.o(.data*) 816 *:queue.o(.data*) 817 *:hwio.o(.data*) 818 *:fwio.o(.data*) 819 *:bh.o(.data*) 820 *:txrx.o(.data*) 821 *:skbuff.o(.data*) 822 *:eth*.o(.data*) 823 *:ip*.o(.data*) 824 *:def.o(.data*) 825 *:pbuf.o(.data*) 826 *:raw.o(.data*) 827 *:sockets.o(.data*) 828 *:apps.o(.data*) 829 *:cmsis*.o(.data*) 830 *:list.o(.data*) 831 *:k_*.o(.data*) 832 *:mcu_slave_init.o(.data*) 833 *:dsp_code_decom.o(.data*) 834 *:lzma_decode.o(.data*) 835 *:hal_transq.o(.data*) 836 *:ftp_client.o(.data*) 837 *(.sram_data*) 838#if (RAMCP_SIZE == 0) 839 *(.cp_data*) 840#endif 841#if RTT_APP_SUPPORT > 0 842 /* section information for finsh shell */ 843 . = ALIGN(4); 844 __fsymtab_start = .; 845 KEEP(*(FSymTab)) 846 __fsymtab_end = .; 847 848 . = ALIGN(4); 849 __vsymtab_start = .; 850 KEEP(*(VSymTab)) 851 __vsymtab_end = .; 852 853 /* section information for initial. */ 854 . = ALIGN(4); 855 __rt_init_start = .; 856 KEEP(*(SORT(.rti_fn*))) 857 __rt_init_end = .; 858#endif 859#ifdef ARM_CMSE 860 . = ALIGN(4); 861 /* preinit data */ 862 PROVIDE_HIDDEN (__preinit_array_start = .); 863 KEEP(*(.preinit_array)) 864 PROVIDE_HIDDEN (__preinit_array_end = .); 865 866 . = ALIGN(4); 867 /* init data */ 868 PROVIDE_HIDDEN (__init_array_start = .); 869 KEEP(*(SORT(.init_array.*))) 870 KEEP(*(.init_array)) 871 PROVIDE_HIDDEN (__init_array_end = .); 872 873 . = ALIGN(4); 874 /* finit data */ 875 PROVIDE_HIDDEN (__fini_array_start = .); 876 KEEP(*(SORT(.fini_array.*))) 877 KEEP(*(.fini_array)) 878 PROVIDE_HIDDEN (__fini_array_end = .); 879 880 . = ALIGN(4); 881 __cust_cmd_hldr_tbl_start = .; 882 KEEP(*(.cust_cmd_hldr_tbl)) 883 __cust_cmd_hldr_tbl_end = .; 884 . = ALIGN(4); 885 __ai_gatt_server_table_start = .; 886 KEEP(*(.ai_gatt_server_table)) 887 __ai_gatt_server_table_end = .; 888 . = ALIGN(4); 889 __ai_ble_handler_table_start = .; 890 KEEP(*(.ai_ble_handler_table)) 891 __ai_ble_handler_table_end = .; 892 . = ALIGN(4); 893 __ai_spp_register_table_start = .; 894 KEEP(*(.ai_spp_register_table)) 895 __ai_spp_register_table_end = .; 896 . = ALIGN(4); 897 __tota_handler_table_start = .; 898 KEEP(*(.tota_handler_table)) 899 __tota_handler_table_end = .; 900 . = ALIGN(4); 901 __ai_handler_function_table_start = .; 902 KEEP(*(.ai_handler_function_table)) 903 __ai_handler_function_table_end = .; 904 . = ALIGN(4); 905 __custom_handler_table_start = .; 906 KEEP(*(.custom_handler_table)) 907 __custom_handler_table_end = .; 908 . = ALIGN(4); 909 __mixprompt_property_table_start = .; 910 KEEP(*(.mixprompt_property_table)) 911 __mixprompt_property_table_end = .; 912 . = ALIGN(4); 913 __core_bridge_task_cmd_table_start = .; 914 KEEP(*(.core_bridge_task_cmd_table)) 915 __core_bridge_task_cmd_table_end = .; 916 . = ALIGN(4); 917 __core_bridge_instant_cmd_table_start = .; 918 KEEP(*(.core_bridge_instant_cmd_table)) 919 __core_bridge_instant_cmd_table_end = .; 920 . = ALIGN(4); 921 __app_bt_sync_command_handler_table_start = .; 922 KEEP(*(.app_bt_sync_command_handler_table)) 923 __app_bt_sync_command_handler_table_end = .; 924 . = ALIGN(4); 925 KEEP(*(.eh_frame*)) 926 *(.note.gnu.build-id) 927#endif 928 . = ALIGN(4); 929 } > RAM 930 931 __sram_text_data_end_flash__ = __sram_text_data_start_flash__ + 932 SIZEOF(.sram_text) + SIZEOF(.sram_data); 933 934 .sram_bss (.) (NOLOAD) : AT (ADDR(.sram_bss)) 935 { 936 __sram_bss_start__ = .; 937 *:utils.o(.bss*) 938#if defined(_CVSD_BYPASS_) || defined(CVSD_BYPASS) 939 *:Pcm8k_Cvsd.o(.bss*) 940 *:cvsd_codec.o(.bss*) 941#endif 942 943#if defined(VOICE_TX_AEC) 944 *:ssp_aec.o(.bss*) 945#endif 946 947#if defined(APP_NOISE_ESTIMATION) 948 *:noise_estimator.o(.bss*) 949#endif 950 *:tcp*.o(.bss*) 951 *:net*.o(.bss*) 952 *:agg*.o(.bss*) 953 *:rx.o(.bss*) 954 *:event.o(.bss*) 955 *:util.o(.bss*) 956 *:rate.o(.bss*) 957 *:rc80211*.o(.bss*) 958 *:tx.o(.bss*) 959 *:status.o(.bss*) 960 *:hw_crc.o(.bss*) 961 *:queue.o(.bss*) 962 *:hwio.o(.bss*) 963 *:fwio.o(.bss*) 964 *:bh.o(.bss*) 965 *:txrx.o(.bss*) 966 *:skbuff.o(.bss*) 967 *:eth*.o(.bss*) 968 *:ip*.o(.bss*) 969 *:def.o(.bss*) 970 *:pbuf.o(.bss*) 971 *:raw.o(.bss*) 972 *:sockets.o(.bss*) 973 *:apps.o(.bss*) 974 *:cmsis*.o(.bss*) 975 *:list.o(.bss*) 976 *:memp*.o(.bss*) 977 *:k_*.o(.bss*) 978 *:mcu_slave_init.o(.bss*) 979 *:dsp_code_decom.o(.bss*) 980 *:lzma_decode.o(.bss*) 981 *:ftp_client.o(.bss*) 982 *:hal_transq.o(.bss*) 983 *:hal_mcu2cp.o(.bss*) 984 *:wifi_agent.o(.bss*) 985#ifndef WIFI_ON_CP 986 *:wifi_srv.o(.bss*) 987#endif 988 *:ethernetif.o(.bss*) 989 990 *(.sram_bss*) 991#if (RAMCP_SIZE == 0) 992 *(.cp_bss*) 993#endif 994 . = ALIGN(32); 995 __sram_bss_end__ = .; 996#ifdef OPENAMP_SUPPORT 997 . = ALIGN(64); 998 __share_mem_pa_start__ = .; 999 . += SHARED_MEM_SIZE; 1000 __share_mem_pa_end__ = .; 1001#endif 1002 } > RAM 1003 1004 1005#if defined(ARM_CMSE) && (RAM_NSC_SIZE != 0) 1006 __sram_nsc_text_start_flash__ = __sram_text_data_end_flash__; 1007 .gnu.sgstubs (ORIGIN(SRAM_NSC)) : AT (__sram_nsc_text_start_flash__) 1008 { 1009 __sram_nsc_text_start__ = .; 1010 . = ALIGN(4); 1011 } > RAMX_NSC 1012 __sram_nsc_text_end_flash__ = __sram_nsc_text_start_flash__ + SIZEOF(.gnu.sgstubs); 1013 __fast_sram_text_data_start_flash__ = __sram_nsc_text_end_flash__; 1014#else 1015 __fast_sram_text_data_start_flash__ = __sram_text_data_end_flash__; 1016#endif 1017 1018 .fast_text_sram (ORIGIN(FRAMX)) : AT (__fast_sram_text_data_start_flash__) 1019 { 1020 __fast_sram_text_exec_start__ = .; 1021#if defined(GLOBAL_SRAM_KISS_FFT) 1022 *:fftwrap.o(.text*) 1023 *:kiss_fft.o(.text*) 1024 *:kiss_fftr.o(.text*) 1025#endif 1026 1027#if defined(GLOBAL_SRAM_CMSIS_FFT) 1028 *:cmsis_fftwrap.o(.text*) 1029 *:arm_rfft_fast_f32.o(.text*) 1030 *:arm_cfft_f32.o(.text*) 1031#endif 1032 1033#if defined(VOICE_ALGO_CP_ACCEL) 1034 *:cmsis_fftwrap.o(.text*) 1035 *:arm_rfft_fast_f32.o(.text*) 1036 *:arm_cfft_f32.o(.text*.arm_cfft_f32) 1037 *:arm_bitreversal2.o(.text*.arm_bitreversal_32) 1038 *:arm_cfft_radix8_f32.o(.text*.arm_radix8_butterfly_f32) 1039 1040 *:voice_algo.o(.text*.voice_algo_process_impl) 1041 *:voice_algo.o(.text*.algo_process_impl) 1042#if defined(VOICE_TX_AEC) 1043 *:voice_tx_aec.o(.text*.voice_tx_aec_process) 1044 *:ssp_aec.o(.text*) 1045#endif 1046#if defined(APP_NOISE_ESTIMATION) 1047 *:voice_noise_est.o(.text*.voice_noise_est_process) 1048 *:noise_estimator.o(.text*) 1049#endif 1050#endif 1051 1052#if defined(SCO_CP_ACCEL) 1053 *:frame_resize.o(.text*) 1054 *:buffer_manager.o(.text*) 1055 *:plc_8000.o(.text*) 1056#if defined(_CVSD_BYPASS_) || defined(CVSD_BYPASS) 1057 *:Pcm8k_Cvsd.o(.text*) 1058 *:cvsd_codec.o(.text*) 1059#endif 1060 *:dspfns.o(.text*) 1061 *:lpc_plc.o(.text*) 1062 *:plc_16000.o(.text*) 1063 *:sbc_filter.o(.text*) 1064/* Move algos from overlay to here */ 1065 1066#endif 1067 1068#if defined(ROM_UTILS_ON) 1069 *:rom_utils.o(.text*) 1070#endif 1071 1072#if defined(BTUSB_AUDIO_MODE) 1073 *:hal_dma.o(.text*) 1074 *:hal_uart.o(.text*) 1075 *:hal_trace.o(.text*) 1076#endif 1077 1078#if defined(BTUSB_AUDIO_MODE) 1079 *:hal_usb.o(.text*) 1080 1081 *:usb_audio.o(.text*) 1082 *:usb_audio_sync.o(.text*) 1083 *:usb_audio_cdc.o(.text*) 1084 1085 *:usbaudio_entry.o(.text*) 1086 *:usb_audio_app.o(.text*) 1087#endif 1088 1089 /* memmove.o or libc_nano.a(lib_a-memmove.o) */ 1090 *:memmove.o(.text*) 1091 *:lib_a-memmove.o(.text*) 1092 *:utils.o(.text*) 1093 *:cqueue.o(.text*) 1094 *:audio_resample_ex.o(.text*) 1095#if defined(MIX_MIC_DURING_MUSIC) 1096 *:app_bt_stream.o(.text*) 1097#endif 1098#if defined(__SBC_FUNC_IN_ROM__) || (defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0)) 1099 *:sbc.o(.text*) 1100#else 1101 *:sbc.o(.text*.sbc_is_stream_info_valid) 1102 *:sbc.o(.text*.sbc_frame_length_get) 1103 *:sbc.o(.text*.sbc_4bit_crc_calc) 1104 *:sbc.o(.text*.sbc_bits_for_mono_alloc) 1105 *:sbc.o(.text*.sbc_bits_for_stereo_alloc) 1106 *:sbc.o(.text*.sbc_header_process) 1107 *:sbc.o(.text*.sbc_factors_process) 1108 *:sbc.o(.text*.sbc_sample_extract) 1109 *:sbc.o(.text*.sbc_sbsamples_make) 1110 *:sbc.o(.text*.sbc_joint_process) 1111 *:sbc.o(.text*.sbc_4band_synth_filter) 1112 *:sbc.o(.text*.sbc_8band_synth_filter) 1113 *:sbc.o(.text*.sbc_decoder_state_reset) 1114 *:sbc.o(.text*.sbc_frame_mute) 1115 *:sbc.o(.text*.sbc_frames_decode) 1116 *:sbc.o(.text*.sbc_frames_decode_do) 1117 *:sbc.o(.text*.sbc_frames_decode_select_channel) 1118 *:sbc.o(.text*.sbc_frames_decode) 1119 *:sbc.o(.text*.sbc_samples_quant) 1120 *:sbc.o(.text*.sbc_decoder_init) 1121 *:sbc.o(.text*.sbc_encoder_init) 1122 *:sbc.o(.text*.sbc_frames_encode) 1123#endif 1124 *:sbc_math.o(.text*) 1125#if defined(A2DP_AAC_ON) 1126 *:fixpoint_math.o(.text*) 1127 *:FDK_bitbuffer.o(.text*) 1128 *:FDK_tools_rom.o(.text*FDKgetWindowSlope*) 1129 *:FDK_tools_rom.o(.text*getBitstreamElementList*) 1130 *:dct.o(.text*dct_IV*) 1131#if !defined(__SBC_FUNC_IN_ROM_VBEST2000__) 1132 *:fft.o(.text*._Z3fftiPlPi) 1133 *:fft_rad2.o(.text*dit_fft*) 1134 *:dct.o(.text*getTables*) 1135#endif 1136#if defined(OPUS_IN_OVERLAY) 1137 *:voice_opus.o(.text*) 1138#elif defined(VOICE_DATAPATH) || defined(__ALEXA_WWE) || defined(AQE_KWS_ALEXA) 1139 *:opus_encoder.o(.text*) 1140#elif defined(__AI_VOICE__) && (RAM_SIZE >= 0x48000) 1141 *:voice_opus.o(.text*) 1142 /**:opus_encoder.o(.text*)*/ 1143 *:opus_encoder.o(.text*.frame_size_select) 1144 *:opus_encoder.o(.text*.opus_encode_native) 1145 *:opus_encoder.o(.text*.user_bitrate_to_bitrate) 1146 *:opus_encoder.o(.text*.compute_equiv_rate) 1147 *:opus_encoder.o(.text*.decide_fec) 1148 *:opus_encoder.o(.text*.dc_reject) 1149 *:opus_encoder.o(.text*.gen_toc) 1150 *:opus_encoder.o(.text*.opus_encode) 1151 *:opus_encoder.o(.text*.opus_encoder_create) 1152 *:opus_encoder.o(.text*.opus_encoder_get_size) 1153 *:opus_encoder.o(.text*.opus_encoder_init) 1154 *:opus_encoder.o(.text*.opus_encoder_ctl) 1155 *:analysis.o(.text*) 1156 /**:celt_encoder.o(.text*)*/ 1157 *:celt_encoder.o(.text*.opus_custom_encoder_ctl) 1158 *:celt_encoder.o(.text*.celt_encoder_get_size) 1159 *:celt_encoder.o(.text*.opus_custom_encoder_get_size) 1160 *:celt_encoder.o(.text*.celt_encoder_init) 1161 *:celt_encoder.o(.text*.opus_custom_encoder_init_arch) 1162 /**:repacketizer.o(.text*)*/ 1163 *:repacketizer.o(.text*.opus_packet_pad) 1164 *:repacketizer.o(.text*.opus_repacketizer_init) 1165 *:repacketizer.o(.text*.opus_repacketizer_cat) 1166 *:repacketizer.o(.text*.opus_repacketizer_cat_impl) 1167 *:repacketizer.o(.text*.opus_repacketizer_out_range_impl) 1168 *:opus.o(.text*) 1169 *:enc_API.o(.text*) 1170 /**:entenc.o(.text*)*/ 1171 *:entenc.o(.text*.ec_enc_init) 1172 *:entenc.o(.text*.ec_enc_icdf) 1173 *:entenc.o(.text*.ec_enc_normalize) 1174 *:entenc.o(.text*.ec_enc_carry_out) 1175 *:entenc.o(.text*.ec_write_byte) 1176 *:entenc.o(.text*.ec_enc_patch_initial_bits) 1177 *:entenc.o(.text*.ec_enc_done) 1178 *:control_audio_bandwidth.o(.text*) 1179 *:encode_pulses.o(.text*) 1180 *:LPC_analysis_filter.o(.text*) 1181 *:burg_modified_FIX.o(.text*.silk_burg_modified_c) 1182 *:vector_ops_FIX.o(.text*.silk_scale_copy_vector16) 1183 *:vector_ops_FIX.o(.text*.silk_inner_prod_aligned) 1184 *:vector_ops_FIX.o(.text*.silk_inner_prod16_aligned_64_c) 1185 *:NLSF_del_dec_quant.o(.text*.silk_NLSF_del_dec_quant) 1186 *:encode_frame_FIX.o(.text*.silk_encode_frame_FIX) 1187 *:encode_frame_FIX.o(.text*.silk_encode_do_VAD_FIX) 1188 *:encode_frame_FIX.o(.text*.silk_LBRR_encode_FIX) 1189 /**:pitch.o(.text*)*/ 1190 *:pitch.o(.text*.celt_pitch_xcorr_c) 1191 *:resampler.o(.text*) 1192 *:VAD.o(.text*) 1193 *:encode_indices.o(.text*) 1194 /**:control_codec.o(.text*)*/ 1195 *:control_codec.o(.text*.silk_control_encoder) 1196 *:control_codec.o(.text*.silk_setup_resamplers) 1197 *:control_codec.o(.text*.silk_setup_fs) 1198 *:control_codec.o(.text*.silk_setup_complexity) 1199 *:control_codec.o(.text*.silk_setup_LBRR) 1200 /**:celt_lpc.o(.text*)*/ 1201 *:celt_lpc.o(.text*._celt_autocorr) 1202 /**:shell_coder.o(.text*)*/ 1203 *:shell_coder.o(.text*.combine_pulses) 1204 *:shell_coder.o(.text*.silk_shell_encoder) 1205 *:shell_coder.o(.text*.encode_split) 1206 *:init_encoder.o(.text*) 1207 *:log2lin.o(.text*) 1208 *:biquad_alt.o(.text*) 1209 *:stereo_encode_pred.o(.text*) 1210 *:NLSF_unpack.o(.text*) 1211 *:code_signs.o(.text*) 1212 *:lin2log.o(.text*) 1213 *:HP_variable_cutoff.o(.text*) 1214 *:sum_sqr_shift.o(.text*) 1215 *:inner_prod_aligned.o(.text*) 1216 *:stereo_quant_pred.o(.text*) 1217 *:entcode.o(.text*) 1218 *:celt.o(.text*) 1219 *:laplace.o(.text*) 1220 /**:NSQ.o(.text*)*/ /*complexity 1*/ 1221 /**:NSQ_del_dec.o(.text*)*/ /*complexity 2*/ 1222#endif 1223#endif 1224 1225#if defined(AI_CAPTURE_DATA_AEC) 1226 *:coherence.o(.text*) 1227 *:echo_canceller.o(.text*) 1228 *:echo_suppression.o(.text*) 1229 *:lcmmse.o(.text*) 1230 *:logmmse.o(.text*) 1231 *:mdf2.o(.text*) 1232 *:noise_generator.o(.text*) 1233 *:pink_noise_gen.o(.text*) 1234 *:white_noise_gen.o(.text*) 1235#endif 1236 1237#if defined(__AUDIO_SPECTRUM__) 1238 *:spectrum_fix.o(.text*) 1239 *:audio_spectrum.o(.text*) 1240#endif 1241#if defined(A2DP_SCALABLE_ON) && defined(A2DP_AAC_ON) 1242 *:mdct.o(.text*) 1243#endif 1244 *:crossover_filter.o(.text*) 1245 *:data_compressor.o(.text*) 1246 *:drc.o(.text*) 1247 *:limiter.o(.text*) 1248#if defined(AQE_KWS) 1249 *:arm_*.o(.text*) 1250 *:aqe_mfcc.o(.text*) 1251 *:kws_nn.o(.text*) 1252 *:command_recognition.o(.text*) 1253 *:arm_radix8_butterfly_f32.o(.text*) 1254 *:arm_bitreversal_32.o(.text*) 1255 *:arm_bitreversal_16.o(.text*) 1256 *:dct.o(.text*dct_IV*) 1257 *:fft.o(.text*._Z3fftiPlPi) 1258 *:fft_rad2.o(.text*dit_fft*) 1259 *:dct.o(.text*getTables*) 1260 *:arm_cfft_radix8_f32.o(.text*) 1261 *:arm_bitreversal2.o(.text*) 1262 *:arm_mult_f32.o(.text*) 1263 *:arm_cmplx_mag_squared_f32.o(.text*) 1264 *:arm_cmplx_mult_cmplx_f32.o(.text*) 1265 *:lib_a-wf_sqrt.o(.text*) 1266 *:arm_abs_f32.o(.text*) 1267 *:arm_cos_f32.o(.text*) 1268 *:arm_sin_f32.o(.text*) 1269 1270 *:coherence.o(.text*) 1271 *:echo_canceller.o(.text*) 1272 *:echo_suppression.o(.text*) 1273 *:lcmmse.o(.text*) 1274 *:logmmse.o(.text*) 1275 *:mdf2.o(.text*) 1276 *:noise_generator.o(.text*) 1277 *:pink_noise_gen.o(.text*) 1278 *:white_noise_gen.o(.text*) 1279 1280 *:ae_common.o(.text*) 1281 *:ae_rand.o(.text*) 1282 *:fastmath.o(.text*) 1283 *:integer_delay.o(.text*) 1284 *:iirfilt.o(.text*) 1285 *:ringbuf.o(.text*) 1286 *:scale_int16.o(.text*) 1287 *:speech_conv.o(.text*) 1288 *:speech_trans_buf.o(.text*) 1289 1290 *:ns3.o(.text*) 1291 *:noise_suppression_x.o(.text*) 1292 *:nsx_core.o(.text*) 1293 *:nsx_core_c.o(.text*) 1294 *:copy_set_operations.o(.text*) 1295 *:cross_correlation.o(.text*) 1296 *:division_operations.o(.text*) 1297 *:dot_product_with_scale.o(.text*) 1298 *:downsample_fast.o(.text*) 1299 *:energy.o(.text*) 1300 *:get_scaling_square.o(.text*) 1301 *:min_max_operations.o(.text*) 1302 *:real_fft.o(.text*) 1303 *:resample_by_2.o(.text*) 1304 *:resample_by_2_internal.o(.text*) 1305 *:spl_init.o(.text*) 1306 *:spl_sqrt.o(.text*) 1307 *:spl_sqrt_floor.o(.text*) 1308 *:vector_scaling_operations.o(.text*) 1309#endif 1310#if defined(SPEECH_TX_NN_NS2) 1311 *:nn_ns_pitch.o(.text*) 1312 *:nn_ns_celt_lpc.o(.text*) 1313 *:nn_ns_model.o(.text*) 1314 *:nn_ns2.o(.text*) 1315#endif 1316 1317 1318 1319#if !defined(SCO_OPTIMIZE_FOR_RAM) 1320 :audio_prompt_sbc.o(.text*) 1321#endif 1322 1323#if defined(A2DP_SCALABLE_ON) 1324 *:util.o(.text*) 1325#endif 1326 *(.fast_text_sram*) 1327#if (RAMCP_SIZE == 0) 1328 *(.cp_text_sram*) 1329#endif 1330 /* 1331 If you want protect one section by armv8's mpu, the section should 1332 be aligned to 32bytes 1333 */ 1334 . = ALIGN(32); 1335 __fast_sram_text_exec_end__ = .; 1336 } > FRAMX 1337 1338 __fast_sram_text_data_end_flash__ = __fast_sram_text_data_start_flash__ + SIZEOF(.fast_text_sram); 1339 __fast_sram_text_data_start__ = RAMX_TO_RAM(__fast_sram_text_exec_start__); 1340 __fast_sram_text_data_end__ = RAMX_TO_RAM(__fast_sram_text_exec_end__); 1341 1342#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 1343 __cp_text_sram_start_flash__ = __fast_sram_text_data_end_flash__; 1344 1345 .cp_text_sram (ORIGIN(RAMCPX)) : AT (__cp_text_sram_start_flash__) 1346 { 1347 __cp_text_sram_exec_start__ = .; 1348 *(.cp_text_sram*) 1349 *:cp_queue.o(.text*) 1350#if defined(GSOUND_HOTWORD_EXTERNAL) 1351 //*:libspeech*.o(.text*) 1352#endif 1353 1354#ifdef MP3_DECODE_IN_CP 1355 /* mp3 */ 1356 *:mini_mp3.o(.text*) 1357#endif 1358 1359#ifdef AAC_DECODE_IN_CP 1360 /* aac */ 1361 *:aacdecoder_lib.o(.text*) 1362 *:tpdec_lib.o(.text*) 1363 *:tpdec_adts.o(.text*) 1364 *:tpdec_asc.o(.text*) 1365 *:aacdecoder.o(.text*) 1366 *:channel.o(.text*) 1367 *:channelinfo.o(.text*) 1368 *:aac_ram.o(.text*) 1369 *:aacdec_pns.o(.text*) 1370 *:aacdec_tns.o(.text*) 1371 *:stereo.o(.text*) 1372 *:fixpoint_math.o(.text*) 1373 *:FDK_bitbuffer.o(.text*) 1374 *:block.o(.text*) 1375 *:pulsedata.o(.text*) 1376 *:mdct.o(.text*) 1377 *:genericStds.o(.text*) 1378#endif 1379 1380#ifdef OPUS_DECODE_IN_CP 1381 /* opus */ 1382 *:opus_decoder.o(.text*) 1383 *:bands.o(.text*) 1384 *:celt_decoder.o(.text*) 1385 *:entenc.o(.text*) 1386 *:entdec.o(.text*) 1387 *:vq.o(.text*) 1388 *:decode_core.o(.text*) 1389 *:opus.o(.text*) 1390 *:dec_API.o(.text*) 1391 *:init_decoder.o(.text*) 1392 *:CNG.o(.text*) 1393 *:PLC.o(.text*) 1394 *:decoder_set_fs.o(.text*) 1395 *:decode_frame.o(.text*) 1396 *:decode_indices.o(.text*) 1397 *:decode_pulses.o(.text*) 1398 *:decode_parameters.o(.text*) 1399 *:decode_pitch.o(.text*) 1400 *:control_audio_bandwidth.o(.text*) 1401 *:gain_quant.o(.text*) 1402 *:NLSF_decode.o(.text*) 1403 *:NLSF_stabilize.o(.text*) 1404 *:NLSF2A.o(.text*) 1405 *:stereo_MS_to_LR.o(.text*) 1406 *:LPC_fit.o(.text*) 1407 *:bwexpander_32.o(.text*) 1408 *:LPC_inv_pred_gain.o(.text*) 1409 *:resampler_private_IIR_FIR.o(.text*) 1410 *:resampler_private_AR2.o(.text*) 1411 *:stereo_decode_pred.o(.text*) 1412 *:resampler_private_down_FIR.o(.text*) 1413 *:resampler_private_up2_HQ.o(.text*) 1414 *:bwexpander.o(.text*) 1415 *:quant_bands.o(.text*) 1416 *:opus_kiss_fft.o(.text*) 1417 *:rate.o(.text*.compute_allocation) 1418 *:cwrs.o(.text*) 1419 *:mathops.o(.text*) 1420 *:LPC_analysis_filter.o(.text*) 1421 *:burg_modified_FIX.o(.text*) 1422 *:vector_ops_FIX.o(.text*) 1423 *:NLSF_del_dec_quant.o(.text*) 1424 *:encode_frame_FIX.o(.text*) 1425 *:pitch.o(.text*) 1426 *:resampler.o(.text*) 1427 *:VAD.o(.text*) 1428 *:encode_indices.o(.text*) 1429 *:control_codec.o(.text*) 1430 *:celt_lpc.o(.text*) 1431 *:shell_coder.o(.text*) 1432 *:init_encoder.o(.text*) 1433 *:log2lin.o(.text*) 1434 *:biquad_alt.o(.text*) 1435 *:stereo_encode_pred.o(.text*) 1436 *:NLSF_unpack.o(.text*) 1437 *:code_signs.o(.text*) 1438 *:lin2log.o(.text*) 1439 *:HP_variable_cutoff.o(.text*) 1440 *:sum_sqr_shift.o(.text*) 1441 *:inner_prod_aligned.o(.text*) 1442 *:stereo_quant_pred.o(.text*) 1443 *:entcode.o(.text*) 1444 *:celt.o(.text*) 1445 *:laplace.o(.text*) 1446 *:NSQ.o(.text*) /*complexity 1*/ 1447 *:NSQ_del_dec.o(.text*) /*complexity 2*/ 1448#endif 1449 1450#ifdef OPUS_ENCODE_IN_CP 1451 /* /opus/src/src */ 1452 *:analysis.o(.text*) 1453 *:mlp.o(.text*) 1454 *:mlp_data.o(.text*) 1455 *:opus.o(.text*) 1456 /*:opus_decoder.o(.text*) */ 1457 *:opus_encoder.o(.text*) 1458 *:opus_memory.o(.text*) 1459 *:opus_multistream.o(.text*) 1460 /*:opus_multistream_decoder.o(.text*) */ 1461 *:opus_multistream_encoder.o(.text*) 1462 *:repacketizer.o(.text*) 1463 /* /opus/src/silk */ 1464 *:A2NLSF.o(.text*) 1465 *:ana_filt_bank_1.o(.text*) 1466 *:biquad_alt.o(.text*) 1467 *:bwexpander_32.o(.text*) 1468 *:bwexpander.o(.text*) 1469 *:check_control_input.o(.text*) 1470 *:CNG.o(.text*) 1471 *:code_signs.o(.text*) 1472 *:control_audio_bandwidth.o(.text*) 1473 *:control_codec.o(.text*) 1474 *:control_SNR.o(.text*) 1475 *:debug.o(.text*) 1476 /*:dec_API.o(.text*) */ 1477 /*:decode_core.o(.text*) */ 1478 /*:decode_frame.o(.text*) */ 1479 /*:decode_indices.o(.text*) */ 1480 /*:decode_parameters.o(.text*) */ 1481 /*:decode_pitch.o(.text*) */ 1482 *:decode_pulses.o(.text*) 1483 /*:decoder_set_fs.o(.text*) */ 1484 *:enc_API.o(.text*) 1485 *:encode_indices.o(.text*) 1486 *:encode_pulses.o(.text*) 1487 *:gain_quant.o(.text*) 1488 *:HP_variable_cutoff.o(.text*) 1489 /*:init_decoder.o(.text*) */ 1490 *:init_encoder.o(.text*) 1491 *:inner_prod_aligned.o(.text*) 1492 *:interpolate.o(.text*) 1493 *:lin2log.o(.text*) 1494 *:log2lin.o(.text*) 1495 *:LPC_analysis_filter.o(.text*) 1496 *:LPC_fit.o(.text*) 1497 *:LPC_inv_pred_gain.o(.text*) 1498 *:LP_variable_cutoff.o(.text*) 1499 *:NLSF2A.o(.text*) 1500 *:NLSF_decode.o(.text*) 1501 *:NLSF_del_dec_quant.o(.text*) 1502 *:NLSF_encode.o(.text*) 1503 *:NLSF_stabilize.o(.text*) 1504 *:NLSF_unpack.o(.text*) 1505 *:NLSF_VQ.o(.text*) 1506 *:NLSF_VQ_weights_laroia.o(.text*) 1507 *:NSQ.o(.text*) 1508 *:NSQ_del_dec.o(.text*) 1509 *:pitch_est_tables.o(.text*) 1510 *:PLC.o(.text*) 1511 *:process_NLSFs.o(.text*) 1512 *:quant_LTP_gains.o(.text*) 1513 *:resampler.o(.text*) 1514 *:resampler_down2_3.o(.text*) 1515 *:resampler_down2.o(.text*) 1516 *:resampler_private_AR2.o(.text*) 1517 *:resampler_private_down_FIR.o(.text*) 1518 *:resampler_private_IIR_FIR.o(.text*) 1519 *:resampler_private_up2_HQ.o(.text*) 1520 *:resampler_rom.o(.text*) 1521 *:shell_coder.o(.text*) 1522 *:sigm_Q15.o(.text*) 1523 *:sort.o(.text*) 1524 /*:stereo_decode_pred.o(.text*) */ 1525 *:stereo_encode_pred.o(.text*) 1526 *:stereo_find_predictor.o(.text*) 1527 *:stereo_LR_to_MS.o(.text*) 1528 *:stereo_MS_to_LR.o(.text*) 1529 *:stereo_quant_pred.o(.text*) 1530 *:sum_sqr_shift.o(.text*) 1531 *:table_LSF_cos.o(.text*) 1532 *:tables_gain.o(.text*) 1533 *:tables_LTP.o(.text*) 1534 *:tables_NLSF_CB_NB_MB.o(.text*) 1535 *:tables_NLSF_CB_WB.o(.text*) 1536 *:tables_other.o(.text*) 1537 *:tables_pitch_lag.o(.text*) 1538 *:tables_pulses_per_block.o(.text*) 1539 *:VAD.o(.text*) 1540 *:VQ_WMat_EC.o(.text*) 1541 /* /opus/src/silk/fixed */ 1542 *:apply_sine_window_FIX.o(.text*) 1543 *:autocorr_FIX.o(.text*) 1544 *:burg_modified_FIX.o(.text*) 1545 *:corrMatrix_FIX.o(.text*) 1546 *:encode_frame_FIX.o(.text*) 1547 *:find_LPC_FIX.o(.text*) 1548 *:find_LTP_FIX.o(.text*) 1549 *:find_pitch_lags_FIX.o(.text*) 1550 *:find_pred_coefs_FIX.o(.text*) 1551 *:k2a_FIX.o(.text*) 1552 *:k2a_Q16_FIX.o(.text*) 1553 *:LTP_analysis_filter_FIX.o(.text*) 1554 *:LTP_scale_ctrl_FIX.o(.text*) 1555 *:noise_shape_analysis_FIX.o(.text*) 1556 *:pitch_analysis_core_FIX.o(.text*) 1557 *:process_gains_FIX.o(.text*) 1558 *:regularize_correlations_FIX.o(.text*) 1559 *:residual_energy16_FIX.o(.text*) 1560 *:residual_energy_FIX.o(.text*) 1561 *:schur64_FIX.o(.text*) 1562 *:schur_FIX.o(.text*) 1563 *:vector_ops_FIX.o(.text*) 1564 *:warped_autocorrelation_FIX.o(.text*) 1565 /* /opus/src/celt */ 1566 *:bands.o(.text*) 1567 *:celt.o(.text*) 1568 /*:celt_decoder.o(.text*) */ 1569 *:celt_encoder.o(.text*) 1570 *:celt_lpc.o(.text*) 1571 *:cwrs.o(.text*) 1572 *:entcode.o(.text*) 1573 *:entdec.o(.text*) 1574 *:entenc.o(.text*) 1575 *:laplace.o(.text*) 1576 *:mathops.o(.text*) 1577 *:mdct.o(.text*) 1578 *:modes.o(.text*) 1579 *:opus_kiss_fft.o(.text*) 1580 *:pitch.o(.text*) 1581 *:quant_bands.o(.text*) 1582 *:rate.o(.text*.compute_allocation) 1583 *:vq.o(.text*) 1584#endif 1585 1586#ifdef VOIP_ALG_ALI_TEST_IN_CP 1587 /* alg voip */ 1588 *:audio_alg.o(.text*) 1589#endif 1590 1591#ifdef EQ_DRC_IN_CP 1592 /* eq */ 1593 *:iir_process.o(.text*) 1594 /* drc */ 1595 *:drc.o(*text) 1596 *:data_compressor.o(*text) 1597 /* limiter */ 1598 *:limiter.o(.text*) 1599 *:floatlimiter.o(.text*) 1600#endif 1601 1602#ifdef ALSA_RESAMPLE_IN_CP 1603 *:audio_resample_ex.o(.text*) 1604 *:resample_coef.o(.text*) 1605#endif 1606 . = ALIGN(4); 1607 __cp_text_sram_exec_end__ = .; 1608 } > RAMCPX 1609 1610 __cp_text_sram_start = RAMX_TO_RAM(__cp_text_sram_exec_start__); 1611 __cp_text_sram_end = RAMX_TO_RAM(__cp_text_sram_exec_end__); 1612 1613 .vector_table_cp (ORIGIN(RAMCP)) (NOLOAD) : 1614 { 1615 KEEP(*(.vector_table_cp)) 1616 . = VECTOR_SECTION_SIZE; 1617 . = ALIGN(4); 1618 } > RAMCP 1619 1620 __cp_data_sram_start_flash__ = __cp_text_sram_start_flash__ + SIZEOF(.cp_text_sram); 1621 1622 .cp_data_sram (.) : AT (__cp_data_sram_start_flash__) 1623 { 1624 __cp_data_sram_start = .; 1625 *(.cp_data*) 1626 *:cp_queue.o(.data* .rodata*) 1627#if defined(GSOUND_HOTWORD_EXTERNAL) 1628 //*:libspeech*.o(.data* .rodata*) 1629#endif 1630 . = ALIGN(4); 1631 1632#ifdef MP3_DECODE_IN_CP 1633 /* mp3 */ 1634 *:mini_mp3.o(.data* .rodata*) 1635#endif 1636 1637#ifdef AAC_DECODE_IN_CP 1638 /* aac */ 1639 *:block.o(.data* .rodata*) 1640 *:tpdec_lib.o(.data* .rodata*) 1641 *:tpdec_latm.o(.data* .rodata*) 1642 *:aacdec_pns.o(.data* .rodata*) 1643 *:aacdec_tns.o(.data* .rodata*) 1644 *:pulsedata.o(.data* .rodata*) 1645 *:channel.o(.data* .rodata*) 1646 *:aacdecoder.o(.data* .rodata*) 1647 *:channelinfo.o(.data* .rodata*) 1648 *:aacdecoder_lib.o(.data* .rodata*) 1649 *:stereo.o(.data* .rodata*) 1650 *:fixpoint_math.o(.data* .rodata*) 1651 *:FDK_bitbuffer.o(.data* .rodata*) 1652 *:tpdec_adts.o(.data* .rodata*) 1653 *:aac_rom.o(.data* .rodata*) 1654 *:FDK_tools_rom.o(.data* .rodata*) 1655#endif 1656 1657#ifdef OPUS_DECODE_IN_CP 1658 /* opus */ 1659 *:resampler.o(.data* .rodata*) 1660 *:tables_other.o(.data* .rodata*) 1661 *:tables_gain.o(.data* .rodata*) 1662 *:tables_LTP.o(.data* .rodata*) 1663 *:tables_NLSF_CB_NB_MB.o(.data* .rodata*) 1664 *:NLSF2A.o(.data* .rodata*) 1665 *:table_LSF_cos.o(.data* .rodata*) 1666 *:tables_pulses_per_block.o(.data* .rodata*) 1667 *:PLC.o(.data* .rodata*) 1668 *:resampler_rom.o(.data* .rodata*) 1669 *:pitch_est_tables.o(.data* .rodata*) 1670 *:tables_pitch_lag.o(.data* .rodata*) 1671 *:celt_decoder.o(.data* .rodata*) 1672 *:bands.o(.data* .rodata*) 1673 *:vq.o(.data* .rodata*) 1674 *:cwrs.o(.data* .rodata*) 1675 *:entcode.o(.data* .rodata*) 1676 *:rate.o(.rodata.LOG2_FRAC_TABLE) 1677 *:modes.o(.data* .rodata*) 1678 *:quant_bands.o(.data* .rodata*) 1679 *:opus_decoder.o(.data* .rodata*) 1680 *:dec_API.o(.data* .rodata*) 1681 *:tables_NLSF_CB_WB.o(.data* .rodata*) 1682 *:celt.o(.data* .rodata*) 1683#endif 1684 1685#ifdef OPUS_ENCODE_IN_CP 1686 /* /opus/src/src */ 1687 *:analysis.o(.data* .rodata*) 1688 *:mlp.o(.data* .rodata*) 1689 *:mlp_data.o(.data* .rodata*) 1690 *:opus.o(.data* .rodata*) 1691 /*:opus_decoder.o(.data* .rodata*) */ 1692 *:opus_encoder.o(.data* .rodata*) 1693 *:opus_memory.o(.data* .rodata*) 1694 *:opus_multistream.o(.data* .rodata*) 1695 /*:opus_multistream_decoder.o(.data* .rodata*) */ 1696 *:opus_multistream_encoder.o(.data* .rodata*) 1697 *:repacketizer.o(.data* .rodata*) 1698 /* /opus/src/silk */ 1699 *:A2NLSF.o(.data* .rodata*) 1700 *:ana_filt_bank_1.o(.data* .rodata*) 1701 *:biquad_alt.o(.data* .rodata*) 1702 *:bwexpander_32.o(.data* .rodata*) 1703 *:bwexpander.o(.data* .rodata*) 1704 *:check_control_input.o(.data* .rodata*) 1705 *:CNG.o(.data* .rodata*) 1706 *:code_signs.o(.data* .rodata*) 1707 *:control_audio_bandwidth.o(.data* .rodata*) 1708 *:control_codec.o(.data* .rodata*) 1709 *:control_SNR.o(.data* .rodata*) 1710 *:debug.o(.data* .rodata*) 1711 /*:dec_API.o(.data* .rodata*) */ 1712 /*:decode_core.o(.data* .rodata*) */ 1713 /*:decode_frame.o(.data* .rodata*) */ 1714 /*:decode_indices.o(.data* .rodata*) */ 1715 /*:decode_parameters.o(.data* .rodata*) */ 1716 /*:decode_pitch.o(.data* .rodata*) */ 1717 *:decode_pulses.o(.data* .rodata*) 1718 /*:decoder_set_fs.o(.data* .rodata*) */ 1719 *:enc_API.o(.data* .rodata*) 1720 *:encode_indices.o(.data* .rodata*) 1721 *:encode_pulses.o(.data* .rodata*) 1722 *:gain_quant.o(.data* .rodata*) 1723 *:HP_variable_cutoff.o(.data* .rodata*) 1724 /*:init_decoder.o(.data* .rodata*) */ 1725 *:init_encoder.o(.data* .rodata*) 1726 *:inner_prod_aligned.o(.data* .rodata*) 1727 *:interpolate.o(.data* .rodata*) 1728 *:lin2log.o(.data* .rodata*) 1729 *:log2lin.o(.data* .rodata*) 1730 *:LPC_analysis_filter.o(.data* .rodata*) 1731 *:LPC_fit.o(.data* .rodata*) 1732 *:LPC_inv_pred_gain.o(.data* .rodata*) 1733 *:LP_variable_cutoff.o(.data* .rodata*) 1734 *:NLSF2A.o(.data* .rodata*) 1735 *:NLSF_decode.o(.data* .rodata*) 1736 *:NLSF_del_dec_quant.o(.data* .rodata*) 1737 *:NLSF_encode.o(.data* .rodata*) 1738 *:NLSF_stabilize.o(.data* .rodata*) 1739 *:NLSF_unpack.o(.data* .rodata*) 1740 *:NLSF_VQ.o(.data* .rodata*) 1741 *:NLSF_VQ_weights_laroia.o(.data* .rodata*) 1742 *:NSQ.o(.data* .rodata*) 1743 *:NSQ_del_dec.o(.data* .rodata*) 1744 *:pitch_est_tables.o(.data* .rodata*) 1745 *:PLC.o(.data* .rodata*) 1746 *:process_NLSFs.o(.data* .rodata*) 1747 *:quant_LTP_gains.o(.data* .rodata*) 1748 *:resampler.o(.data* .rodata*) 1749 *:resampler_down2_3.o(.data* .rodata*) 1750 *:resampler_down2.o(.data* .rodata*) 1751 *:resampler_private_AR2.o(.data* .rodata*) 1752 *:resampler_private_down_FIR.o(.data* .rodata*) 1753 *:resampler_private_IIR_FIR.o(.data* .rodata*) 1754 *:resampler_private_up2_HQ.o(.data* .rodata*) 1755 *:resampler_rom.o(.data* .rodata*) 1756 *:shell_coder.o(.data* .rodata*) 1757 *:sigm_Q15.o(.data* .rodata*) 1758 *:sort.o(.data* .rodata*) 1759 /*:stereo_decode_pred.o(.data* .rodata*) */ 1760 *:stereo_encode_pred.o(.data* .rodata*) 1761 *:stereo_find_predictor.o(.data* .rodata*) 1762 *:stereo_LR_to_MS.o(.data* .rodata*) 1763 *:stereo_MS_to_LR.o(.data* .rodata*) 1764 *:stereo_quant_pred.o(.data* .rodata*) 1765 *:sum_sqr_shift.o(.data* .rodata*) 1766 *:table_LSF_cos.o(.data* .rodata*) 1767 *:tables_gain.o(.data* .rodata*) 1768 *:tables_LTP.o(.data* .rodata*) 1769 *:tables_NLSF_CB_NB_MB.o(.data* .rodata*) 1770 *:tables_NLSF_CB_WB.o(.data* .rodata*) 1771 *:tables_other.o(.data* .rodata*) 1772 *:tables_pitch_lag.o(.data* .rodata*) 1773 *:tables_pulses_per_block.o(.data* .rodata*) 1774 *:VAD.o(.data* .rodata*) 1775 *:VQ_WMat_EC.o(.data* .rodata*) 1776 /* /opus/src/silk/fixed */ 1777 *:apply_sine_window_FIX.o(.data* .rodata*) 1778 *:autocorr_FIX.o(.data* .rodata*) 1779 *:burg_modified_FIX.o(.data* .rodata*) 1780 *:corrMatrix_FIX.o(.data* .rodata*) 1781 *:encode_frame_FIX.o(.data* .rodata*) 1782 *:find_LPC_FIX.o(.data* .rodata*) 1783 *:find_LTP_FIX.o(.data* .rodata*) 1784 *:find_pitch_lags_FIX.o(.data* .rodata*) 1785 *:find_pred_coefs_FIX.o(.data* .rodata*) 1786 *:k2a_FIX.o(.data* .rodata*) 1787 *:k2a_Q16_FIX.o(.data* .rodata*) 1788 *:LTP_analysis_filter_FIX.o(.data* .rodata*) 1789 *:LTP_scale_ctrl_FIX.o(.data* .rodata*) 1790 *:noise_shape_analysis_FIX.o(.data* .rodata*) 1791 *:pitch_analysis_core_FIX.o(.data* .rodata*) 1792 *:process_gains_FIX.o(.data* .rodata*) 1793 *:regularize_correlations_FIX.o(.data* .rodata*) 1794 *:residual_energy16_FIX.o(.data* .rodata*) 1795 *:residual_energy_FIX.o(.data* .rodata*) 1796 *:schur64_FIX.o(.data* .rodata*) 1797 *:schur_FIX.o(.data* .rodata*) 1798 *:vector_ops_FIX.o(.data* .rodata*) 1799 *:warped_autocorrelation_FIX.o(.data* .rodata*) 1800 /* /opus/src/celt */ 1801 *:bands.o(.data* .rodata*) 1802 *:celt.o(.data* .rodata*) 1803 /*:celt_decoder.o(.data* .rodata*) */ 1804 *:celt_encoder.o(.data* .rodata*) 1805 *:celt_lpc.o(.data* .rodata*) 1806 *:cwrs.o(.data* .rodata*) 1807 *:entcode.o(.data* .rodata*) 1808 *:entdec.o(.data* .rodata*) 1809 *:entenc.o(.data* .rodata*) 1810 *:laplace.o(.data* .rodata*) 1811 *:mathops.o(.data* .rodata*) 1812 *:mdct.o(.data* .rodata*) 1813 *:modes.o(.data* .rodata*) 1814 *:opus_kiss_fft.o(.data* .rodata*) 1815 *:pitch.o(.data* .rodata*) 1816 *:quant_bands.o(.data* .rodata*) 1817 *:rate.o(.rodata.LOG2_FRAC_TABLE) 1818 *:vq.o(.data* .rodata*) 1819#endif 1820 1821#ifdef VOIP_ALG_ALI_TEST_IN_CP 1822 /* alg voip */ 1823 *:audio_alg.o(.data* .rodata*) 1824#endif 1825 1826#ifdef EQ_DRC_IN_CP 1827 /* drc */ 1828 *:drc.o(.data* .rodata*) 1829 *:data_compressor.o(.data* .rodata*) 1830 *:floatlimiter.o(.data* .rodata*) 1831#endif 1832 1833#ifdef ALSA_RESAMPLE_IN_CP 1834 *:audio_resample_ex.o(.data* .rodata*) 1835 *:resample_coef.o(.data* .rodata*) 1836#endif 1837 . = ALIGN(4); 1838 __cp_data_sram_end = .; 1839 } > RAMCP 1840 1841 __cp_sram_end_flash__ = __cp_data_sram_start_flash__ + SIZEOF(.cp_data_sram); 1842 1843 .cp_bss_sram (.) (NOLOAD) : AT (ADDR(.cp_bss_sram)) 1844 { 1845 __cp_bss_sram_start = .; 1846 *(.cp_bss*) 1847 . = ALIGN(4); 1848 1849#ifdef MP3_DECODE_IN_CP 1850 /* mp3 */ 1851 *:mini_mp3.o(.bss*) 1852#endif 1853 1854#ifdef AAC_DECODE_IN_CP 1855 /* aac */ 1856 *:aacdecoder.o(.bss*) 1857#endif 1858 1859#ifdef OPUS_DECODE_IN_CP 1860 /* opus */ 1861 *:celt.o(.bss*) 1862#endif 1863 1864#ifdef OPUS_ENCODE_IN_CP 1865 /* /opus/src/src */ 1866 *:analysis.o(.bss*) 1867 *:mlp.o(.bss*) 1868 *:mlp_data.o(.bss*) 1869 *:opus.o(.bss*) 1870 /*:opus_decoder.o(.bss*) */ 1871 *:opus_encoder.o(.bss*) 1872 *:opus_memory.o(.bss*) 1873 *:opus_multistream.o(.bss*) 1874 /*:opus_multistream_decoder.o(.bss*) */ 1875 *:opus_multistream_encoder.o(.bss*) 1876 *:repacketizer.o(.bss*) 1877 /* /opus/src/silk */ 1878 *:A2NLSF.o(.bss*) 1879 *:ana_filt_bank_1.o(.bss*) 1880 *:biquad_alt.o(.bss*) 1881 *:bwexpander_32.o(.bss*) 1882 *:bwexpander.o(.bss*) 1883 *:check_control_input.o(.bss*) 1884 *:CNG.o(.bss*) 1885 *:code_signs.o(.bss*) 1886 *:control_audio_bandwidth.o(.bss*) 1887 *:control_codec.o(.bss*) 1888 *:control_SNR.o(.bss*) 1889 *:debug.o(.bss*) 1890 /*:dec_API.o(.bss*) */ 1891 /*:decode_core.o(.bss*) */ 1892 /*:decode_frame.o(.bss*) */ 1893 /*:decode_indices.o(.bss*) */ 1894 /*:decode_parameters.o(.bss*) */ 1895 /*:decode_pitch.o(.bss*) */ 1896 *:decode_pulses.o(.bss*) 1897 /*:decoder_set_fs.o(.bss*) */ 1898 *:enc_API.o(.bss*) 1899 *:encode_indices.o(.bss*) 1900 *:encode_pulses.o(.bss*) 1901 *:gain_quant.o(.bss*) 1902 *:HP_variable_cutoff.o(.bss*) 1903 /*:init_decoder.o(.bss*) */ 1904 *:init_encoder.o(.bss*) 1905 *:inner_prod_aligned.o(.bss*) 1906 *:interpolate.o(.bss*) 1907 *:lin2log.o(.bss*) 1908 *:log2lin.o(.bss*) 1909 *:LPC_analysis_filter.o(.bss*) 1910 *:LPC_fit.o(.bss*) 1911 *:LPC_inv_pred_gain.o(.bss*) 1912 *:LP_variable_cutoff.o(.bss*) 1913 *:NLSF2A.o(.bss*) 1914 *:NLSF_decode.o(.bss*) 1915 *:NLSF_del_dec_quant.o(.bss*) 1916 *:NLSF_encode.o(.bss*) 1917 *:NLSF_stabilize.o(.bss*) 1918 *:NLSF_unpack.o(.bss*) 1919 *:NLSF_VQ.o(.bss*) 1920 *:NLSF_VQ_weights_laroia.o(.bss*) 1921 *:NSQ.o(.bss*) 1922 *:NSQ_del_dec.o(.bss*) 1923 *:pitch_est_tables.o(.bss*) 1924 *:PLC.o(.bss*) 1925 *:process_NLSFs.o(.bss*) 1926 *:quant_LTP_gains.o(.bss*) 1927 *:resampler.o(.bss*) 1928 *:resampler_down2_3.o(.bss*) 1929 *:resampler_down2.o(.bss*) 1930 *:resampler_private_AR2.o(.bss*) 1931 *:resampler_private_down_FIR.o(.bss*) 1932 *:resampler_private_IIR_FIR.o(.bss*) 1933 *:resampler_private_up2_HQ.o(.bss*) 1934 *:resampler_rom.o(.bss*) 1935 *:shell_coder.o(.bss*) 1936 *:sigm_Q15.o(.bss*) 1937 *:sort.o(.bss*) 1938 /*:stereo_decode_pred.o(.bss*) */ 1939 *:stereo_encode_pred.o(.bss*) 1940 *:stereo_find_predictor.o(.bss*) 1941 *:stereo_LR_to_MS.o(.bss*) 1942 *:stereo_MS_to_LR.o(.bss*) 1943 *:stereo_quant_pred.o(.bss*) 1944 *:sum_sqr_shift.o(.bss*) 1945 *:table_LSF_cos.o(.bss*) 1946 *:tables_gain.o(.bss*) 1947 *:tables_LTP.o(.bss*) 1948 *:tables_NLSF_CB_NB_MB.o(.bss*) 1949 *:tables_NLSF_CB_WB.o(.bss*) 1950 *:tables_other.o(.bss*) 1951 *:tables_pitch_lag.o(.bss*) 1952 *:tables_pulses_per_block.o(.bss*) 1953 *:VAD.o(.bss*) 1954 *:VQ_WMat_EC.o(.bss*) 1955 /* /opus/src/silk/fixed */ 1956 *:apply_sine_window_FIX.o(.bss*) 1957 *:autocorr_FIX.o(.bss*) 1958 *:burg_modified_FIX.o(.bss*) 1959 *:corrMatrix_FIX.o(.bss*) 1960 *:encode_frame_FIX.o(.bss*) 1961 *:find_LPC_FIX.o(.bss*) 1962 *:find_LTP_FIX.o(.bss*) 1963 *:find_pitch_lags_FIX.o(.bss*) 1964 *:find_pred_coefs_FIX.o(.bss*) 1965 *:k2a_FIX.o(.bss*) 1966 *:k2a_Q16_FIX.o(.bss*) 1967 *:LTP_analysis_filter_FIX.o(.bss*) 1968 *:LTP_scale_ctrl_FIX.o(.bss*) 1969 *:noise_shape_analysis_FIX.o(.bss*) 1970 *:pitch_analysis_core_FIX.o(.bss*) 1971 *:process_gains_FIX.o(.bss*) 1972 *:regularize_correlations_FIX.o(.bss*) 1973 *:residual_energy16_FIX.o(.bss*) 1974 *:residual_energy_FIX.o(.bss*) 1975 *:schur64_FIX.o(.bss*) 1976 *:schur_FIX.o(.bss*) 1977 *:vector_ops_FIX.o(.bss*) 1978 *:warped_autocorrelation_FIX.o(.bss*) 1979 /* /opus/src/celt */ 1980 *:bands.o(.bss*) 1981 *:celt.o(.bss*) 1982 /*:celt_decoder.o(.bss*) */ 1983 *:celt_encoder.o(.bss*) 1984 *:celt_lpc.o(.bss*) 1985 *:cwrs.o(.bss*) 1986 *:entcode.o(.bss*) 1987 *:entdec.o(.bss*) 1988 *:entenc.o(.bss*) 1989 *:laplace.o(.bss*) 1990 *:mathops.o(.bss*) 1991 *:mdct.o(.bss*) 1992 *:modes.o(.bss*) 1993 *:opus_kiss_fft.o(.bss*) 1994 *:pitch.o(.bss*) 1995 *:quant_bands.o(.bss*) 1996 /*:rate.o(.bss*)*/ 1997 *:vq.o(.bss*) 1998#endif 1999 2000#ifdef VOIP_ALG_ALI_TEST_IN_CP 2001 /* alg voip */ 2002 *:audio_alg.o(.bss*) 2003#endif 2004 2005#ifdef EQ_DRC_IN_CP 2006 *:data_compressor.o(.bss*) 2007 *:floatlimiter.o(.bss*) 2008#endif 2009 2010#ifdef ALSA_RESAMPLE_IN_CP 2011 *:audio_resample_ex.o(.bss*) 2012 *:resample_coef.o(.bss*) 2013#endif 2014 . = ALIGN(4); 2015 __cp_bss_sram_end = .; 2016 } > RAMCP 2017 2018 __overlay_text_start_flash__ = __cp_sram_end_flash__; 2019#else 2020 __overlay_text_start_flash__ = __fast_sram_text_data_end_flash__; 2021#endif 2022 2023#ifdef OVERLAY_FOR_CP 2024 __overlay_text_start__ = __cp_text_sram_end; 2025#else 2026 __overlay_text_start__ = __fast_sram_text_data_end__; 2027#endif 2028 __overlay_text_exec_start__ = RAM_TO_RAMX(__overlay_text_start__); 2029 2030 OVERLAY (__overlay_text_exec_start__) : NOCROSSREFS AT (__overlay_text_start_flash__) 2031 { 2032#ifndef NO_OVERLAY 2033 .overlay_text0 2034 { 2035 LONG(0); 2036#if !defined(GLOBAL_SRAM_KISS_FFT) 2037 *:kiss_fft.o(.text*) 2038 *:kiss_fftr.o(.text*) 2039 *:fftwrap.o(.text*) 2040#endif 2041 2042#if !defined(GLOBAL_SRAM_CMSIS_FFT) 2043 *:cmsis_fftwrap.o(.text*) 2044 *:arm_rfft_fast_f32.o(.text*) 2045 *:arm_cfft_f32.o(.text*) 2046#endif 2047 2048#if defined(SCO_OPTIMIZE_FOR_RAM) 2049 *:arm_biquad_cascade_df1_f32.o(.text*) 2050 *:integer_delay.o(.text*) 2051 *:lc_mmse_ns_float.o(.text*.speech_ns2float_process) 2052 *:coherence.o(.text*) 2053 *:echo_suppression.o(.text*.float_cmp) 2054 *:echo_suppression.o(.text*.es_process) 2055 *:lcmmse.o(.text*.lcmmse_noise_estimate) 2056 *:lcmmse.o(.text*.lcmmse_get_speech_prob) 2057 *:logmmse.o(.text*.filterbank_compute_bank_pflt) 2058 *:logmmse.o(.text*.filterbank_compute_psd_pflt) 2059 *:logmmse.o(.text*.logmmse_analysis) 2060 *:logmmse.o(.text*.logmmse_process) 2061#if defined(CHIP_BEST1402) || defined(CHIP_BEST1400) 2062 *:lpc_plc.o(.text*.WB_PLC_common) 2063 *:lpc_plc.o(.text*.WB_PLC_erasure) 2064 *:lpc_plc.o(.text*.apfilterQ1_Q0) 2065 *:lpc_plc.o(.text*.apfilterQ0_Q0) 2066 *:lpc_plc.o(.text*.azfilterQ0_Q1) 2067 *:lpc_plc.o(.text*.decim) 2068 *:lpc_plc.o(.text*.merit) 2069#endif 2070#else 2071 /* common */ 2072#if !defined(AUDIO_ANC_FB_ADJ_MC) 2073 *:ae_common.o(.text*) 2074 *:ae_rand.o(.text*) 2075 *:fastmath.o(.text*) 2076 *:integer_delay.o(.text*) 2077 *:iirfilt.o(.text*) 2078 *:ringbuf.o(.text*) 2079#endif 2080 *:scale_int16.o(.text*) 2081 *:speech_conv.o(.text*) 2082 *:speech_trans_buf.o(.text*) 2083 2084#if !defined(SCO_CP_ACCEL) 2085 *:frame_resize.o(.text*) 2086 *:buffer_manager.o(.text*) 2087 *:plc_8000.o(.text*) 2088#if defined(_CVSD_BYPASS_) || defined(CVSD_BYPASS) 2089 *:Pcm8k_Cvsd.o(.text*) 2090 *:cvsd_codec.o(.text*) 2091#endif 2092 *:dspfns.o(.text*) 2093 *:lpc_plc.o(.text*) 2094 *:plc_16000.o(.text*) 2095 *:sbc_filter.o(.text*) 2096#endif 2097 *:preprocess.o(.text*) 2098 *:filterbank.o(.text*) 2099 *:mdf.o(.text*) 2100#if defined(SPEECH_TX_2MIC_NS) 2101 *:webrtc_vad.o(.text*.WebRtcVad_Process) 2102 *:webrtc_vad.o(.text*.WebRtcVad_ValidRateAndFrameLength) 2103 *:webrtc_vad.o(.text*.WebRtcVad_CalcVad16khz) 2104 *:webrtc_vad.o(.text*.WebRtcVad_Downsampling) 2105 *:webrtc_vad.o(.text*.WebRtcVad_CalcVad8khz) 2106 *:vad_filterbank.o(.text*) 2107 *:energy.o(.text*) 2108 *:get_scaling_square.o(.text*) 2109 *:dual_mic_denoise.o(.text*) 2110 *:cross_correlation.o(.text*) 2111 *:min_max_operations.o(.text*) 2112 *:resample_by_2_internal.o(.text*) 2113 *:division_operations.o(.text*) 2114 *:downsample_fast.o(.text*) 2115 *:resample_fractional.o(.text*) 2116 *:resample_48khz.o(.text*) 2117 *:vad_sp.o(.text*) 2118 *:vad_core.o(.text*) 2119 *:webrtc_vad.o(.text*) 2120 *:vad_gmm.o(.text*) 2121#endif 2122#if defined(SPEECH_TX_2MIC_NS2) 2123 *:speech_2mic_ns2_denoise.o(.text*) 2124 *:speech_2mic_ns2_denoise_float.o(.text*) 2125#endif 2126#if defined(SPEECH_TX_2MIC_NS4) 2127 *:sensormic_denoise.o(.text*) 2128#endif 2129#if defined(SPEECH_TX_2MIC_NS5) 2130 *:leftright_denoise.o(.text*) 2131#endif 2132#if defined(SPEECH_TX_NS2) || defined(SPEECH_RX_NS2) 2133 *:lc_mmse_ns.o(.text*) 2134#endif 2135#if defined(SPEECH_TX_NS2FLOAT) || defined(SPEECH_RX_NS2FLOAT) 2136 *:lc_mmse_ns_float.o(.text*) 2137#endif 2138#if defined(SPEECH_TX_NS3) || defined(SPEECH_RX_NS3) 2139 *:ns3.o(.text*) 2140 *:noise_suppression_x.o(.text*) 2141 *:nsx_core.o(.text*) 2142 *:nsx_core_c.o(.text*) 2143 *:copy_set_operations.o(.text*) 2144 *:cross_correlation.o(.text*) 2145 *:division_operations.o(.text*) 2146 *:dot_product_with_scale.o(.text*) 2147 *:downsample_fast.o(.text*) 2148 *:energy.o(.text*) 2149 *:get_scaling_square.o(.text*) 2150 *:min_max_operations.o(.text*) 2151 *:real_fft.o(.text*) 2152 *:resample_by_2.o(.text*) 2153 *:resample_by_2_internal.o(.text*) 2154 *:spl_init.o(.text*) 2155 *:spl_sqrt.o(.text*) 2156 *:spl_sqrt_floor.o(.text*) 2157 *:vector_scaling_operations.o(.text*) 2158#endif 2159#if defined(SPEECH_TX_AEC2FLOAT) && !defined(AUDIO_ANC_FB_ADJ_MC) 2160 *:coherence.o(.text*) 2161 *:echo_canceller.o(.text*) 2162 *:echo_suppression.o(.text*) 2163 *:lcmmse.o(.text*) 2164 *:logmmse.o(.text*) 2165 *:mdf2.o(.text*) 2166 *:noise_generator.o(.text*) 2167 *:pink_noise_gen.o(.text*) 2168 *:white_noise_gen.o(.text*) 2169#endif 2170#if defined(SPEECH_TX_AEC3) 2171 *:SubBandBasedAEC.o(.text*) 2172#endif 2173#if defined(SPEECH_TX_3MIC_NS) 2174 *:speech_3mic_ns.o(.text*) 2175#endif 2176#if defined(SPEECH_CODEC_FIXED_SAMPLE_RATE) 2177 *:iir_resample.o(.text*) 2178#endif 2179#if defined(SPEECH_TX_COMPEXP) 2180 *:compexp.o(.text*) 2181#endif 2182#if defined(SPEECH_TX_EQ) || defined(SPEECH_RX_EQ) || defined(SPEECH_CODEC_FIXED_SAMPLE_RATE) 2183 *:speech_eq.o(.text*) 2184 *:speech_arm_eq.o(.text*) 2185 *:arm_biquad_cascade_df1_f32.o(.text*) 2186 *:arm_biquad_cascade_df1_ex_f32.o(.text*) 2187#endif 2188#if defined(SPEECH_TX_POST_GAIN) || defined(SPEECH_RX_POST_GAIN) 2189 *:speech_gain.o(.text*) 2190#endif 2191#if defined(__SMARTVOICE__) 2192#if defined(SPEECH_TX_2MIC_NS2) || defined(SPEECH_TX_NS2) 2193 *:app_smartvoice.o(.text*._Z23mic_data_process_deinitv) 2194 *:app_smartvoice.o(.text*._Z21mic_data_process_initv) 2195 *:app_smartvoice.o(.text*._Z20mic_data_process_runPsm) 2196#endif 2197#endif 2198 2199#endif // #if !defined(SCO_OPTIMIZE_FOR_RAM) 2200 *(.overlay_text0) 2201 . = ALIGN(4); 2202 } 2203 .overlay_text1 2204 { 2205 LONG(0); 2206#if !defined(RB_CODEC) 2207 *:fixedpoint.o(.text*) 2208 *:replaygain.o(.text*) 2209 *:dsp_core.o(.text*) 2210 *:dsp_misc.o(.text*) 2211 *:dsp_filter.o(.text*) 2212 *:dsp_sample_input.o(.text*) 2213 *:dsp_sample_output.o(.text*) 2214 *:eq.o(.text*) 2215 *:pga.o(.text*) 2216#if !defined(A2DP_AAC_ON) && !defined(A2DP_LHDC_ON) 2217 *:fir_process.o(.text*) 2218 *:iir_process.o(.text*.iir_run .text*.*iir_run_per_*) 2219#endif 2220#endif 2221#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 2222#endif 2223 *(.overlay_a2dp_sbc*) 2224 *(.overlay_text1) 2225 . = ALIGN(4); 2226 } 2227 .overlay_text2 2228 { 2229 LONG(0); 2230 *:fmdec.o(.text* .data* .rodata* .bss*) 2231 *(.overlay_text2) 2232 . = ALIGN(4); 2233 } 2234 .overlay_text3 2235 { 2236 LONG(0); 2237 *:fft128dot.o(.text*) 2238 *(.overlay_text3) 2239 . = ALIGN(4); 2240 } 2241 .overlay_text4 2242 { 2243 LONG(0); 2244#ifdef A2DP_SOURCE_AAC_ON 2245 *:adj_thr.o(.text.*FDKaacEnc_AdjThrClose*) 2246 *:bit_cnt.o(.text*) 2247 *:quantize.o(.text*FDKaacEnc_quantizeLines*) 2248 *:adj_thr.o(.text*CalcRedValPower*) 2249 *:tpenc_lib.o(.text.*transportEnc_GetStaticBits*) 2250 *:tpenc_latm.o(.text.*transportEnc_LatmCountTotalBitDemandHeader*) 2251 *:tpenc_lib.o(.text.*transportEnc_GetBitstream*) 2252 *:line_pe.o(.text.*FDKaacEnc_calcSfbPe*) 2253 *:adj_thr.o(.text.*FDKaacEnc_calcPe*) 2254 *:spreading.o(.text.*FDKaacEnc_SpreadingMax*) 2255 *:bitenc.o(.text.*FDKaacEnc_writeExtensionData*) 2256 *:bitenc.o(.text.*FDKaacEnc_ChannelElementWrite*) 2257 *:qc_main.o(.text.*FDKaacEnc_getTotalConsumedBits*) 2258 *:adj_thr.o(.text.*FDKaacEnc_reduceThresholdsCBR*) 2259 *:band_nrg.o(.text.*FDKaacEnc_CalcSfbMaxScaleSpec*) 2260 *:aacenc_tns.o(.text.*FDKaacEnc_AutoToParcor*) 2261 *:aacenc_tns.o(.text.*FDKaacEnc_Parcor2Index*) 2262 *:aacenc_tns.o(.text.*FDKaacEnc_TnsDetect*) 2263 *:aacenc_tns.o(.text.*FDKaacEnc_TnsEncode*) 2264 *:pre_echo_control.o(.text.*FDKaacEnc_PreEchoControl*) 2265 *:transform.o(.text.*FDKaacEnc_Transform_Real*) 2266 *:band_nrg.o(.text.*FDKaacEnc_CheckBandEnergyOptim*) 2267 *:tpenc_latm.o(.text.*AdvanceAudioMuxElement*) 2268 *:aacenc.o(.text.*FDKaacEnc_EncodeFrame*) 2269 *:aacenc_pns.o(.text.*FDKaacEnc_PnsDetect*) 2270#else 2271#if defined(A2DP_AAC_ON) 2272 *:block.o(.text*.*CBlock_GetEscape*) 2273 *:tpdec_lib.o(.text*.*transportDec_GetBitstream*) 2274 *:tpdec_lib.o(.text*.*transportDec_GetAuBitsRemaining*) 2275 *:tpdec_latm.o(.text*.*CLatmDemux_GetValue*) 2276 *:tpdec_latm.o(.text*.*CLatmDemux_Read*) 2277 *:tpdec_lib.o(.text*.*transportDec_FillData*) 2278 *:tpdec_lib.o(.text*.*transportDec_ReadAccessUnit*) 2279 *:tpdec_lib.o(.text*.*transportDec_readHeader*) 2280 *:block.o(.text*.*ApplyTools*) 2281 *:aacdec_pns.o(.text*.*CPns_Apply*) 2282 *:aacdec_tns.o(.text*.*CTns_Apply*) 2283 *:aacdec_tns.o(.text*.*CTns_Reset*) 2284 *:aacdec_pns.o(.text*.*CPns_ResetData*) 2285 *:pulsedata.o(.text*.*CPulseData_Read*) 2286#if !defined(AAC_TEXT_PARTIAL_IN_FLASH) 2287 *:channel.o(.text*.*CChannelElement_Read*) 2288 *:tpdec_asc.o(.text*.*CProgramConfig_Reset*) 2289 *:tpdec_lib.o(.text*.*transportDec_CrcCheck*) 2290 *:block.o(.text*.*CBlock_FrequencyToTime*) 2291 *:block.o(.text*.*CBlock_ReadSectionData*) 2292 *:channel.o(.text*.*CChannelElement_Decode*) 2293 *:tpdec_lib.o(.text*.*transportDec_CrcEndReg*) 2294 *:aacdecoder.o(.text*.*CAacDecoder_DecodeFrame*) 2295 *:aac_mdct.o(.text*) 2296#endif 2297 2298#if !defined(__SBC_FUNC_IN_ROM_VBEST2000__) && !defined(AAC_TEXT_PARTIAL_IN_FLASH) 2299 *:block.o(.text*.*CBlock_ReadSpectralData*) 2300 *:block.o(.text*.*CBlock_ScaleSpectralData*) 2301 *:aacdec_tns.o(.text*.*CTns_ReadDataPresentFlag*) 2302 *:tpdec_lib.o(.text*.*transportDec_CrcStartReg*) 2303 *:block.o(.text*.*CBlock_ReadScaleFactorData*) 2304 *:tpdec_lib.o(.text*.*transportDec_EndAccessUnit*) 2305 *:tpdec_latm.o(.text*.*CLatmDemux_GetNrOfSubFrames*) 2306 *:tpdec_lib.o(.text*.*transportDec_GetAuBitsTotal*) 2307 *:tpdec_asc.o(.text*.*CProgramConfig_LookupElement*) 2308 *:tpdec_latm.o(.text*.*CLatmDemux_GetFrameLengthInBits*) 2309 *:tpdec_latm.o(.text*.*CLatmDemux_ReadPayloadLengthInfo*) 2310 *:block.o(.text*.*CBlock_InverseQuantizeSpectralData*) 2311 *:channelinfo.o(.text*.*IcsRead*) 2312 *:aacdec_tns.o(.text*.*CTns_Read*) 2313 *:tpdec_lib.o(.text*.*transportDec_AdjustEndOfAccessUnit*) 2314 *:pulsedata.o(.text*.*CPulseData_Apply*) 2315 *:tpdec_asc.o(.text*.*AudioSpecificConfig_Init*) 2316 *:tpdec_asc.o(.text*.*AudioSpecificConfig_Parse*) 2317 *:tpdec_latm.o(.text*.*CLatmDemux_ReadStreamMuxConfig*) 2318 *:tpdec_asc.o(.text*.*getSampleRate*) 2319 *:tpdec_asc.o(.text*.*getAOT*) 2320 *:aacdecoder.o(.text*.*CAacDecoder_Init*) 2321 *:tpdec_asc.o(.text*.*CProgramConfig_Init*) 2322 *:aacdecoder_lib.o(.text*.*aacDecoder_ConfigCallback*) 2323 *:aacdecoder.o(.text*.*CAacDecoder_ExtPayloadParse*) 2324 *:stereo.o(.text*.*CJointStereo_Read*) 2325#endif 2326#endif 2327#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 2328 *:a2dp_decoder_aac_lc.o(.text*) 2329 *:fdkaac_codec.o(.text*) 2330#endif 2331 *(.overlay_a2dp_aac*) 2332#endif 2333 *(.overlay_text4) 2334 . = ALIGN(4); 2335 } 2336 .overlay_text5 2337 { 2338 LONG(0); 2339 *:mpa.o(.text*) 2340 *:bit.o(.text*) 2341 *:frame.o(.text*) 2342 *:huffman.o(.text*) 2343 *:layer12.o(.text*) 2344 *:layer3.o(.text*) 2345 *:stream.o(.text*) 2346 *:synth.o(.text*) 2347 *(.overlay_text5) 2348 . = ALIGN(4); 2349 } 2350 .overlay_text6 2351 { 2352 LONG(0); 2353#if defined(A2DP_SCALABLE_ON) 2354 *:rc_decode.o(.text*) 2355 *:audio_int32.o(.text*) 2356 *:ssc_ifft.o(.text*) 2357 *:vector_quant.o(.text*) 2358 *:ssc_quant.o(.text*) 2359 *:ssc_pulsealloc.o(.text*) 2360 *:audio.o(.text*) 2361 *:set_sbm.o(.text*) 2362 *:rc_code.o(.text*) 2363 *:SBM_pitchBased.o(.text*) 2364 *:ssc_imdct.o(.text*) 2365 *:audio_decoder.o(.text*) 2366 *:SoundBooster_DRC_classic.o(.text*) 2367 *:ssc_cwrs.o(.text*) 2368 *:ssc_mode.o(.text*) 2369 *:ssc_math.o(.text*) 2370 *:ssc_lap.o(.text*) 2371 *:SeamlessBufferManagement.o(.text*) 2372#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 2373 *:a2dp_decoder_scalable.o(.text*) 2374#endif 2375 *(.overlay_a2dp_ssc*) 2376#endif 2377 2378#if defined(A2DP_LHDC_ON) 2379 *(.overlay_a2dp_lhdc*) 2380 *:a2dp_decoder_lhdc.o(.text*) 2381 *:testkey.o(.text*) 2382 *:lhdcUtil.o(.text*) 2383 *:lzh_dec.o(.text*) 2384 *:licdecrypt.o(.text*) 2385 *:lic_check.o(.text*) 2386 *:fast_upsampling_2x.o(.text*) 2387 *:encdec.o(.text*) 2388 *:dec.o(.text*) 2389 *:cirbuf.o(.text*) 2390 *:DecodeUps2xLPF.o(.text*) 2391 *:Arc.o(.text*) 2392#endif 2393#if defined(A2DP_LDAC_ON) 2394 *:a2dp_decoder_ldac.o(.text*) 2395 *:bitalloc_ldac.o(.text*) 2396 *:bitalloc_sub_ldac.o(.text*) 2397 *:encode_ldac.o(.text*) 2398 *:ldacBT.o(.text*) 2399 *:ldaclib.o(.text*) 2400 *:pack_ldac.o(.text*) 2401 *:quant_ldac.o(.text*) 2402 *:mdct_ldac.o(.text*) 2403 *:ldacBT_api.o(.text*) 2404 *:decode_ldac.o(.text*) 2405 *:dequant_ldac.o(.text*) 2406 *:imdct_ldac.o(.text*) 2407 *:ldacBT_internal.o(.text*) 2408 *:ldaclib_api.o(.text*) 2409 *:memory_ldac.o(.text*) 2410 *:setpcm_ldac.o(.text*) 2411 *:sigana_ldac.o(.text*) 2412 *:tables_ldac.o(.text*) 2413 *:tables_sigproc_ldac.o(.text*) 2414 *:unpack_ldac.o(.text*) 2415 *(.overlay_a2dp_ldac*) 2416#endif 2417 2418 *(.overlay_text6) 2419 . = ALIGN(4); 2420 } 2421 .overlay_text7 2422 { 2423 LONG(0); 2424#if defined(OPUS_IN_OVERLAY) 2425 /**:voice_opus.o(.text*)*/ 2426 *:opus_encoder.o(.text*) 2427 *:analysis.o(.text*) 2428 /**:celt_encoder.o(.text*)*/ 2429 *:celt_encoder.o(.text*.opus_custom_encoder_ctl) 2430 *:celt_encoder.o(.text*.celt_encoder_get_size) 2431 *:celt_encoder.o(.text*.opus_custom_encoder_get_size) 2432 *:celt_encoder.o(.text*.celt_encoder_init) 2433 *:celt_encoder.o(.text*.opus_custom_encoder_init_arch) 2434 *:celt_encoder.o(.text*.transient_analysis) 2435 *:celt_encoder.o(.text*.patch_transient_decision) 2436 *:celt_encoder.o(.text*.celt_preemphasis) 2437 *:celt_encoder.o(.text*.l1_metric) 2438 *:celt_encoder.o(.text*.tf_analysis) 2439 *:celt_encoder.o(.text*.tf_encode) 2440 *:celt_encoder.o(.text*.alloc_trim_analysis) 2441 *:celt_encoder.o(.text*.stereo_analysis) 2442 *:celt_encoder.o(.text*.median_of_5) 2443 *:celt_encoder.o(.text*.median_of_3) 2444 *:celt_encoder.o(.text*.dynalloc_analysis) 2445 *:celt_encoder.o(.text*.run_prefilter) 2446 *:celt_encoder.o(.text*.compute_vbr) 2447 *:celt_encoder.o(.text*.celt_encode_with_ec) 2448 *:celt_encoder.o(.text*.opus_custom_encoder_ctl) 2449 *:repacketizer.o(.text*) 2450 *:opus.o(.text*) 2451 *:enc_API.o(.text*) 2452 *:entenc.o(.text*) 2453 *:control_audio_bandwidth.o(.text*) 2454 *:encode_pulses.o(.text*) 2455 *:LPC_analysis_filter.o(.text*) 2456 *:burg_modified_FIX.o(.text*) 2457 *:vector_ops_FIX.o(.text*) 2458 *:NLSF_del_dec_quant.o(.text*) 2459 *:encode_frame_FIX.o(.text*) 2460 *:pitch.o(.text*) 2461 *:resampler.o(.text*) 2462 *:VAD.o(.text*) 2463 *:encode_indices.o(.text*) 2464 *:control_codec.o(.text*) 2465 *:celt_lpc.o(.text*) 2466 *:shell_coder.o(.text*) 2467 *:init_encoder.o(.text*) 2468 *:log2lin.o(.text*) 2469 *:biquad_alt.o(.text*) 2470 *:stereo_encode_pred.o(.text*) 2471 *:NLSF_unpack.o(.text*) 2472 *:code_signs.o(.text*) 2473 *:lin2log.o(.text*) 2474 *:HP_variable_cutoff.o(.text*) 2475 *:sum_sqr_shift.o(.text*) 2476 *:inner_prod_aligned.o(.text*) 2477 *:stereo_quant_pred.o(.text*) 2478 *:entcode.o(.text*) 2479 *:celt.o(.text*) 2480 *:laplace.o(.text*) 2481 *:NSQ.o(.text*) /*complexity 1*/ 2482 *:NSQ_del_dec.o(.text*) /*complexity 2*/ 2483#endif 2484 *(.overlay_text7) 2485 . = ALIGN(4); 2486 } 2487#endif 2488 .overlay_text_last 2489 { 2490#ifndef NO_OVERLAY 2491 LONG(0); 2492#endif 2493 . = ALIGN(4); 2494 } 2495 } > REGION_OVERLAY_TEXT 2496 2497 .dummy_overlay_text_end (.) (NOLOAD) : AT (ADDR(.dummy_overlay_text_end)) 2498 { 2499 __overlay_text_exec_end__ = .; 2500 } > REGION_OVERLAY_TEXT 2501 2502#ifdef OVERLAY_FOR_CP 2503 __fast_sram_end__ = __fast_sram_text_data_end__; 2504#else 2505 __fast_sram_end__ = RAMX_TO_RAM(__overlay_text_exec_end__); 2506#endif 2507 2508 ASSERT(__fast_sram_end__ - __fast_sram_text_data_start__ <= FAST_XRAM_SECTION_SIZE, "fast xram sections too large") 2509 __free_fram = FAST_XRAM_SECTION_SIZE - (__fast_sram_end__ - __fast_sram_text_data_start__); 2510 2511#ifdef OVERLAY_FOR_CP 2512 __overlay_data_start__ = __cp_bss_sram_end; 2513#else 2514 __overlay_data_start__ = __sram_bss_end__; 2515#endif 2516 2517 OVERLAY (__overlay_data_start__) : NOCROSSREFS AT (__load_stop_overlay_text_last) 2518 { 2519#ifndef NO_OVERLAY 2520 .overlay_data0 2521 { 2522 /* Explicitly place 4 bytes at section start to avoid "section type changed to PROGBITS" warnings */ 2523 LONG(0); 2524#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 2525 *:bt_sco_chain.o(.data* .rodata*) 2526 *:bt_sco_chain_cp.o(.data* .rodata*) 2527#endif 2528#if !defined(SCO_OPTIMIZE_FOR_RAM) 2529#if !defined(GLOBAL_SRAM_KISS_FFT) 2530 *:fftwrap.o(.data* .rodata*) 2531 *:kiss_fft.o(.data* .rodata*) 2532 *:kiss_fftr.o(.data* .rodata*) 2533#endif 2534 2535#if !defined(GLOBAL_SRAM_CMSIS_FFT) 2536 *:CommonTables.o(.rodata.armBitRevIndexTable256) 2537 *:CommonTables.o(.rodata.twiddleCoef_256) 2538 *:CommonTables.o(.rodata.twiddleCoef_rfft_512) 2539 *:CommonTables.o(.rodata.armBitRevIndexTable128) 2540 *:CommonTables.o(.rodata.twiddleCoef_128) 2541 *:CommonTables.o(.rodata.twiddleCoef_rfft_256) 2542#endif 2543 2544 /* common */ 2545 *:fastmath_const.o(.data* .rodata*) 2546 2547 *:preprocess.o(.data* .rodata*) 2548 *:filterbank.o(.data* .rodata*) 2549 2550#if !defined(SCO_CP_ACCEL) 2551 *:plc_8000.o(.data* .rodata*) 2552#if defined(_CVSD_BYPASS_) || defined(CVSD_BYPASS) 2553 *:Pcm8k_Cvsd.o(.data* .rodata* .bss*) 2554 *:cvsd_codec.o(.data* .rodata* .bss*) 2555#endif 2556 *:table.o(.data* .rodata*) 2557 *:plc_16000.o(.data* .rodata*) 2558#endif 2559#if !defined(AUDIO_ANC_FB_ADJ_MC) 2560 *:mdf.o(.data* .rodata*) 2561#endif 2562#if defined(SPEECH_TX_2MIC_NS) 2563 *:dual_mic_denoise.o(.data* .rodata*) 2564 *:vad_filterbank.o(.data* .rodata*) 2565 *:energy.o(.data* .rodata*) 2566 *:get_scaling_square.o(.data* .rodata*) 2567 2568 *:cross_correlation.o(.data* .rodata*) 2569 *:min_max_operations.o(.data* .rodata*) 2570 *:resample_by_2_internal.o(.data* .rodata*) 2571 *:division_operations.o(.data* .rodata*) 2572 *:downsample_fast.o(.data* .rodata*) 2573 *:resample_fractional.o(.data* .rodata*) 2574 *:resample_48khz.o(.data* .rodata*) 2575 *:vad_sp.o(.data* .rodata*) 2576 *:vad_core.o(.data* .rodata*) 2577 *:webrtc_vad.o(.data* .rodata*) 2578 *:vad_gmm.o(.data* .rodata*) 2579#endif 2580#if defined(SPEECH_TX_2MIC_NS2) 2581 *:speech_2mic_ns2_denoise.o(.data* .rodata*) 2582 *:speech_2mic_ns2_denoise_float.o(.data* .rodata*) 2583#endif 2584#if defined(SPEECH_TX_2MIC_NS4) 2585 *:sensormic_denoise.o(.data* .rodata*) 2586#endif 2587#if defined(SPEECH_TX_2MIC_NS5) 2588 *:leftright_denoise.o(.data* .rodata*) 2589#endif 2590#if defined(SPEECH_TX_NS2) || defined(SPEECH_RX_NS2) 2591 *:lc_mmse_ns.o(.data* .rodata*) 2592#endif 2593#if defined(SPEECH_TX_NS3) || defined(SPEECH_RX_NS3) 2594 *:nsx_core.o(.data* .rodata*) 2595#endif 2596#if defined(SPEECH_TX_NS2FLOAT) || defined(SPEECH_RX_NS2FLOAT) 2597 *:lc_mmse_ns_float.o(.data* .rodata*) 2598#endif 2599#if defined(SPEECH_TX_3MIC_NS) 2600 *:speech_3mic_ns.o(.data* .rodata*) 2601#endif 2602#if defined(SPEECH_TX_AEC3) 2603 *:SubBandBasedAEC.o(.data* .rodata*) 2604#endif 2605#if defined(SPEECH_CODEC_FIXED_SAMPLE_RATE) 2606 *:iir_resample.o(.data* .rodata*) 2607#endif 2608 2609#endif // #if !defined(SCO_OPTIMIZE_FOR_RAM) 2610 2611#if defined(SCO_CP_ACCEL) 2612 *:speech_win.o(.rodata.conj_fwin_60_128_cp) 2613 *:speech_win.o(.rodata.conj_fwin_120_256_cp) 2614 *:speech_win.o(.rodata.conj_fwin_128_256_cp) 2615 *:speech_win.o(.rodata.conj_fwin_240_512_cp) 2616 *:speech_win.o(.rodata.conj_fwin_256_512_cp) 2617#endif 2618 *(.overlay_data0 .overlay_rodata0) 2619 . = ALIGN(4); 2620 *(.overlay_sco_cache*) 2621 . = ALIGN(4); 2622 } 2623 .overlay_data1 2624 { 2625 LONG(0); 2626#if !defined(RB_CODEC) 2627 *:fixedpoint.o(.data* .rodata*) 2628 *:replaygain.o(.data* .rodata*) 2629 *:dsp_core.o(.data* .rodata*) 2630 *:dsp_misc.o(.data* .rodata*) 2631 *:dsp_filter.o(.data* .rodata*) 2632 *:dsp_sample_input.o(.data* .rodata*) 2633 *:dsp_sample_output.o(.data* .rodata*) 2634 *:eq.o(.data* .rodata*) 2635 *:pga.o(.data* .rodata*) 2636#if !defined(A2DP_AAC_ON) 2637 *:fir_process.o(.data* .rodata*) 2638#endif 2639#endif 2640#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 2641 *:a2dp_decoder_sbc.o(.rodata*) 2642#endif 2643 *(.overlay_data1 .overlay_rodata1) 2644 . = ALIGN(4); 2645 } 2646 .overlay_data2 2647 { 2648 LONG(0); 2649 *(.overlay_data2 .overlay_rodata2) 2650 . = ALIGN(4); 2651 } 2652 .overlay_data3 2653 { 2654 LONG(0); 2655 *:fft128dot.o(.data* .rodata*) 2656 *(.overlay_data3 .overlay_rodata3) 2657 . = ALIGN(4); 2658 } 2659 .overlay_data4 2660 { 2661 LONG(0); 2662#ifdef A2DP_SOURCE_AAC_ON 2663 *:aacenc_lib.o(.data* .rodata*) 2664 *:aacenc.o(.data* .rodata*) 2665 *:adj_thr.o(.data* .rodata*) 2666 *:bit_cnt.o(.data* .rodata*) 2667 *:quantize.o(.data* .rodata*) 2668 *:tpenc_lib.o(.data* .rodata*) 2669 *:tpenc_latm.o(.data* .rodata*) 2670 *:line_pe.o(.data* .rodata*) 2671 *:spreading.o(.data* .rodata*) 2672 *:bitenc.o(.data* .rodata*) 2673 *:qc_main.o(.data* .rodata*) 2674 *:band_nrg.o(.data* .rodata*) 2675 *:aacenc_tns.o(.data* .rodata*) 2676 *:pre_echo_control.o(.data* .rodata*) 2677 2678 *:transform.o(.data* .rodata*) 2679 *:dyn_bits.o(.data* .rodata*) 2680 *:aacenc_pns.o(.data* .rodata*) 2681 *:aacEnc_ram.o(.data* .rodata*) 2682 *:aacEnc_rom.o(.data* .rodata*) 2683 *:bandwidth.o(.data* .rodata*) 2684 *:block_switch.o(.data* .rodata*) 2685 *:channel_map.o(.data* .rodata*) 2686 *:chaosmeasure.o(.data* .rodata*) 2687 *:grp_data.o(.data* .rodata*) 2688 *:intensity.o(.data* .rodata*) 2689 *:metadata_compressor.o(.data* .rodata*) 2690 *:metadata_main.o(.data* .rodata*) 2691 *:ms_stereo.o(.data* .rodata*) 2692 *:noisedet.o(.data* .rodata*) 2693 *:pnsparam.o(.data* .rodata*) 2694 *:psy_configuration.o(.data* .rodata*) 2695 *:psy_main.o(.data* .rodata*) 2696 *:sf_estim.o(.data* .rodata*) 2697 *:tonality.o(.data* .rodata*) 2698#else 2699#if defined(A2DP_AAC_ON) 2700 *:block.o(.data* .rodata*) 2701 *:tpdec_lib.o(.data* .rodata*) 2702 *:tpdec_latm.o(.data* .rodata*) 2703 *:aacdec_pns.o(.data* .rodata*) 2704 *:aacdec_tns.o(.data* .rodata*) 2705 *:pulsedata.o(.data* .rodata*) 2706 *:channel.o(.data* .rodata*) 2707 *:tpdec_asc.o(.data* .rodata*) 2708 *:aacdecoder.o(.data* .rodata*) 2709 *:channelinfo.o(.data* .rodata*) 2710 *:aacdecoder_lib.o(.data* .rodata*) 2711 *:stereo.o(.data* .rodata*) 2712 *:fixpoint_math.o(.data* .rodata*) 2713 *:FDK_bitbuffer.o(.data* .rodata*) 2714#endif 2715#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 2716 *:a2dp_decoder_aac_lc.o(.rodata*) 2717 *:fdkaac_codec.o(.rodata*) 2718#endif 2719#endif 2720 *(.overlay_data4 .overlay_rodata4) 2721 . = ALIGN(4); 2722 } 2723 .overlay_data5 2724 { 2725 LONG(0); 2726 *:mpa.o(.data* .bss*) 2727 *:bit.o(.data* .bss*) 2728 *:frame.o(.data* .bss*) 2729 *:huffman.o(.data* .bss*) 2730 *:layer12.o(.data* .bss*) 2731 *:layer3.o(.data* .bss*) 2732 *:stream.o(.data* .bss*) 2733 *:synth.o(.data* .bss*) 2734 *(.overlay_data5 .overlay_rodata5) 2735 . = ALIGN(4); 2736 } 2737 .overlay_data6 2738 { 2739 LONG(0); 2740#if defined(A2DP_SCALABLE_ON) 2741 *:rc_decode.o(.data* .rodata*) 2742 *:audio_int32.o(.data* .rodata*) 2743 *:ssc_ifft.o(.data* .rodata*) 2744 *:vector_quant.o(.data* .rodata*) 2745 *:ssc_quant.o(.data* .rodata*) 2746 *:ssc_pulsealloc.o(.data* .rodata*) 2747 *:audio.o(.data* .rodata*) 2748 *:set_sbm.o(.data* .rodata*) 2749 *:rc_code.o(.data* .rodata*) 2750 *:SBM_pitchBased.o(.data* .rodata*) 2751 *:ssc_imdct.o(.data* .rodata*) 2752 *:audio_decoder.o(.data* .rodata*) 2753 *:SoundBooster_DRC_classic.o(.data* .rodata*) 2754 *:ssc_cwrs.o(.data* .rodata*) 2755 *:ssc_mode.o(.data* .rodata*) 2756 *:ssc_math.o(.data* .rodata*) 2757 *:ssc_lap.o(.data* .rodata*) 2758 *:SeamlessBufferManagement.o(.data* .rodata*) 2759#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 2760 *:a2dp_decoder_scalable.o(.rodata*) 2761#endif 2762#endif 2763#if defined(A2DP_LHDC_ON) 2764 *:a2dp_decoder_lhdc.o(.data* .rodata*) 2765 *:testkey.o(.data* .rodata*) 2766 *:lhdcUtil.o(.data* .rodata*) 2767 *:lzh_dec.o(.data* .rodata*) 2768 *:licdecrypt.o(.data* .rodata*) 2769 *:lic_check.o(.data* .rodata*) 2770 *:fast_upsampling_2x.o(.data* .rodata*) 2771 *:encdec.o(.data* .rodata*) 2772 *:dec.o(.data* .rodata*) 2773 *:cirbuf.o(.data* .rodata*) 2774 *:DecodeUps2xLPF.o(.data* .rodata*) 2775 *:Arc.o(.data* .rodata*) 2776#endif 2777#if defined(A2DP_LDAC_ON) 2778 *:a2dp_decoder_ldac.o(.data* .rodata*) 2779 *:bitalloc_ldac.o(.data* .rodata*) 2780 *:bitalloc_sub_ldac.o(.data* .rodata*) 2781 *:encode_ldac.o(.data* .rodata*) 2782 *:ldacBT.o(.data* .rodata*) 2783 *:ldaclib.o(.data* .rodata*) 2784 *:pack_ldac.o(.data* .rodata*) 2785 *:quant_ldac.o(.data* .rodata*) 2786 *:mdct_ldac.o(.data* .rodata*) 2787 *:ldacBT_api.o(.data* .rodata*) 2788 *:decode_ldac.o(.data* .rodata*) 2789 *:dequant_ldac.o(.data* .rodata*) 2790 *:imdct_ldac.o(.data* .rodata*) 2791 *:ldacBT_internal.o(.data* .rodata*) 2792 *:ldaclib_api.o(.data* .rodata*) 2793 *:memory_ldac.o(.data* .rodata*) 2794 *:setpcm_ldac.o(.data* .rodata*) 2795 *:sigana_ldac.o(.data* .rodata*) 2796 *:tables_ldac.o(.data* .rodata*) 2797 *:tables_sigproc_ldac.o(.data* .rodata*) 2798 *:unpack_ldac.o(.data* .rodata*) 2799#endif 2800 *(.overlay_data6 .overlay_rodata6) 2801 . = ALIGN(4); 2802 } 2803 .overlay_data7 2804 { 2805 LONG(0); 2806#if defined(OPUS_IN_OVERLAY) 2807 *:voice_opus.o(.data* .rodata*) 2808 *:opus_encoder.o(.data* .rodata*) 2809 *:analysis.o(.data* .rodata*) 2810 *:celt_encoder.o(.data* .rodata*) 2811 *:repacketizer.o(.data* .rodata*) 2812 *:opus.o(.data* .rodata*) 2813 *:enc_API.o(data* .rodata) 2814 *:entenc.o(.data* .rodata*) 2815 *:control_audio_bandwidth.o(.data* .rodata*) 2816 *:encode_pulses.o(.data* .rodata*) 2817 *:LPC_analysis_filter.o(.data* .rodata*) 2818 *:burg_modified_FIX.o(.data* .rodata*) 2819 *:vector_ops_FIX.o(.data* .rodata*) 2820 *:NLSF_del_dec_quant.o(.data* .rodata*) 2821 *:encode_frame_FIX.o(.data* .rodata*) 2822 *:pitch.o(.data* .rodata*) 2823 *:resampler.o(.data* .rodata*) 2824 *:VAD.o(.data* .rodata*) 2825 *:encode_indices.o(.data* .rodata*) 2826 *:control_codec.o(.data* .rodata*) 2827 *:celt_lpc.o(.data* .rodata*) 2828 *:shell_coder.o(.data* .rodata*) 2829 *:init_encoder.o(.data* .rodata*) 2830 *:log2lin.o(.data* .rodata*) 2831 *:biquad_alt.o(.data* .rodata*) 2832 *:stereo_encode_pred.o(.data* .rodata*) 2833 *:NLSF_unpack.o(.data* .rodata*) 2834 *:code_signs.o(.data* .rodata*) 2835 *:lin2log.o(.data* .rodata*) 2836 *:HP_variable_cutoff.o(.data* .rodata*) 2837 *:sum_sqr_shift.o(.data* .rodata*) 2838 *:inner_prod_aligned.o(.data* .rodata*) 2839 *:stereo_quant_pred.o(.data* .rodata*) 2840 *:entcode.o(.data* .rodata*) 2841 *:celt.o(.data* .rodata*) 2842 *:laplace.o(.data* .rodata*) 2843 *:NSQ.o(.data* .rodata*) /*complexity 1*/ 2844 *:NSQ_del_dec.o(.data* .rodata*) /*complexity 2*/ 2845#endif 2846 *(.overlay_data7 .overlay_rodata7) 2847 . = ALIGN(4); 2848 } 2849#endif 2850 .overlay_data_last 2851 { 2852#ifndef NO_OVERLAY 2853 LONG(0); 2854#endif 2855 . = ALIGN(4); 2856 } 2857 } > REGION_OVERLAY_DATA 2858 2859 .dummy_overlay_data_end (.) (NOLOAD) : AT (ADDR(.dummy_overlay_data_end)) 2860 { 2861 __overlay_data_end__ = .; 2862 } > REGION_OVERLAY_DATA 2863 2864 ASSERT(__overlay_data_end__ - __overlay_data_start__ <= OVERLAY_DATA_SECTION_SIZE, "overlay data sections too large") 2865 2866#if defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) 2867 .cp_ramx_last_dummy (NOLOAD) : AT (ADDR(.cp_ramx_last_dummy)) 2868 { 2869 __cp_ramx_last_dummy_start = .; 2870 } > RAMCPX 2871 2872 .cp_ram_last_dummy (NOLOAD) : AT (ADDR(.cp_ram_last_dummy)) 2873 { 2874 . = ALIGN(8); 2875 __cp_ram_last_dummy_start = .; 2876 } > RAMCP 2877 2878 __cp_stack_top = ORIGIN(RAMCP) + LENGTH(RAMCP); 2879 __cp_stack_limit = __cp_stack_top - CP_STACK_SECTION_SIZE; 2880 2881 /* LD v2.24 (GCC 4.9) cannot handle address conversion correctly if involving immediate value. 2882 E.g., <absolute_addr> + <immediate_val> + <relative_addr> */ 2883 __free_ramcpx = ORIGIN(RAMCPX) + LENGTH(RAMCPX) - ABSOLUTE(__cp_ramx_last_dummy_start); 2884 ASSERT(__cp_stack_limit >= __cp_ram_last_dummy_start, "region RAMCP overflowed with stack") 2885 __free_ramcp = __cp_stack_limit - __cp_ram_last_dummy_start; 2886 2887#ifdef MEM_POOL_IN_CP_RAM 2888 __cp_mem_pool_start__ = __cp_ram_last_dummy_start; 2889 __cp_mem_pool_end__ = __cp_ram_last_dummy_start; 2890 __mem_pool_start__ = __cp_ram_last_dummy_start; 2891 __mem_pool_end__ = __cp_stack_limit; 2892#else 2893 __cp_mem_pool_start__ = __cp_ram_last_dummy_start; 2894 __cp_mem_pool_end__ = __cp_stack_limit; 2895#endif 2896#endif 2897 2898 __flash_text_data_start__ = __load_stop_overlay_data_last; 2899 2900 .flashx_text (FLASH_TO_FLASHX(__flash_text_data_start__)) : AT (__flash_text_data_start__) 2901 { 2902 __flashx_text_start__ = .; 2903 *:notify.o(.text*) 2904 *:scan.o(.text*) 2905 *:wifi_conf_nvrecord.o(.text*) 2906 *:blacklist.o(.text*) 2907 *:ap.o(.text*) 2908 *:wpa_sme.o(.text*) 2909 *:wpas_glue.o(.text*) 2910 *:offchannel.o(.text*) 2911 *:wpa_supplicant.o(.text*) 2912 *:eap_register.o(.text*) 2913 *:wpa_interface.o(.text*) 2914 *:p2p_supplicant.o(.text*) 2915 *:config.o(.text*) 2916 *:sme.o(.text*) 2917 *:wps_supplicant.o(.text*) 2918 *:bss.o(.text*) 2919 *:trace.o(.text*) 2920 *:wpa_debug.o(.text*) 2921 *:wpabuf.o(.text*) 2922 *:common.o(.text*) 2923 *:bitfield.o(.text*) 2924 *:eloop.o(.text*) 2925 *:wpa_os.o(.text*) 2926 *:uuid.o(.text*) 2927 *:ieee802_11_common.o(.text*) 2928 *:wpa_common.o(.text*) 2929 *:ieee802_11_auth.o(.text*) 2930 *:wpa_auth_glue.o(.text*) 2931 *:eap_user_db.o(.text*) 2932 *:wnm_ap.o(.text*) 2933 *:sta_info.o(.text*) 2934 *:ieee802_1x.o(.text*) 2935 *:ctrl_iface_ap.o(.text*) 2936 *:wpa_auth_ft.o(.text*) 2937 *:wpa_auth_ie.o(.text*) 2938 *:preauth_auth.o(.text*) 2939 *:ieee802_11_ht.o(.text*) 2940 *:wpa_auth.o(.text*) 2941 *:ap_mlme.o(.text*) 2942 *:wmm.o(.text*) 2943 *:ieee802_11.o(.text*) 2944 *:dfs.o(.text*) 2945 *:hostapd.o(.text*) 2946 *:ieee802_11_vht.o(.text*) 2947 *:wps_hostapd.o(.text*) 2948 *:p2p_hostapd.o(.text*) 2949 *:drv_callbacks.o(.text*) 2950 *:ap_config.o(.text*) 2951 *:ieee802_11_shared.o(.text*) 2952 *:ap_drv_ops.o(.text*) 2953 *:tkip_countermeasures.o(.text*) 2954 *:peerkey_auth.o(.text*) 2955 *:hw_features.o(.text*) 2956 *:beacon.o(.text*) 2957 *:pmksa_cache_auth.o(.text*) 2958 *:utils.o(.text*) 2959 *:p2p_parse.o(.text*) 2960 *:p2p_utils.o(.text*) 2961 *:p2p_invitation.o(.text*) 2962 *:p2p.o(.text*) 2963 *:p2p_build.o(.text*) 2964 *:p2p_group.o(.text*) 2965 *:p2p_pd.o(.text*) 2966 *:p2p_dev_disc.o(.text*) 2967 *:p2p_go_neg.o(.text*) 2968 *:pmksa_cache.o(.text*) 2969 *:wpa_ie.o(.text*) 2970 *:wpa.o(.text*) 2971 *:preauth.o(.text*) 2972 *:driver_nl80211.o(.text*) 2973 *:nl80211.o(.text*) 2974 *:wpa_events.o(.text*) 2975 *:eap_common.o(.text*) 2976 *:eap_wsc_common.o(.text*) 2977 *:eap.o(.text*) 2978 *:eap_wsc.o(.text*) 2979 *:eap_methods.o(.text*) 2980 *:eapol_auth_sm.o(.text*) 2981 *:eapol_auth_dump.o(.text*) 2982 *:eapol_supp_sm.o(.text*) 2983 *:wps_attr_process.o(.text*) 2984 *:ndef.o(.text*) 2985 *:wps_validate.o(.text*) 2986 *:wps_attr_parse.o(.text*) 2987 *:wps_dev_attr.o(.text*) 2988 *:wps.o(.text*) 2989 *:wps_common.o(.text*) 2990 *:wps_registrar.o(.text*) 2991 *:wps_attr_build.o(.text*) 2992 *:wps_enrollee.o(.text*) 2993 *:tlsv1_server.o(.text*) 2994 *:pkcs8.o(.text*) 2995 *:x509v3.o(.text*) 2996 *:tlsv1_cred.o(.text*) 2997 *:tlsv1_client_read.o(.text*) 2998 *:tlsv1_client.o(.text*) 2999 *:rsa.o(.text*) 3000 *:tlsv1_client_write.o(.text*) 3001 *:asn1.o(.text*) 3002 *:tlsv1_server_read.o(.text*) 3003 *:pkcs1.o(.text*) 3004 *:pkcs5.o(.text*) 3005 *:tlsv1_record.o(.text*) 3006 *:bignum.o(.text*) 3007 *:tlsv1_server_write.o(.text*) 3008 *:tlsv1_common.o(.text*) 3009 *:eap_server.o(.text*) 3010 *:eap_server_identity.o(.text*) 3011 *:eap_server_methods.o(.text*) 3012 *:eap_server_wsc.o(.text*) 3013 *:hostapd_interface.o(.text*) 3014 *(EXCLUDE_FILE(*hal_*.o *cmsis_nvic.o *system_ARMCM4.o *system_utils.o *system_cp.o *cp_accel.o *bpabi.o *div*.o *_dvmd_tls.o *best*.o wifi_drv*.o) .text*) 3015 . = ALIGN(4); 3016 __flashx_text_end__ = .; 3017 } 3018 __flash_text_data_start__ += SIZEOF(.flashx_text); 3019 3020#if defined(PSRAM_BASE) && (PSRAM_SIZE > 0) 3021 __psram_text_data_start__ = ORIGIN(PSRAM); 3022 __psram_text_data_start_flash__ = __flash_text_data_start__; 3023 .psram_text (PSRAM_TO_PSRAMX(__psram_text_data_start__)) : AT (__psram_text_data_start_flash__) 3024 { 3025/* 3026 __psramx_text_start__ .; 3027 3028 *(EXCLUDE_FILE(*hal_*.o *cmsis_nvic.o *system_ARMCM4.o *system_utils.o *system_cp.o *cp_accel.o *bpabi.o *div*.o *_dvmd_tls.o *best*.o) .text*) 3029 *(.psram_text*) 3030 . = ALIGN(4); 3031 __psramx_text_end__ = .; 3032*/ 3033 } > PSRAMX 3034 3035 .psram_data (__psram_text_data_start__ + SIZEOF(.psram_text)) : 3036 AT (__psram_text_data_start_flash__ + SIZEOF(.psram_text)) 3037 { 3038 *(EXCLUDE_FILE(*hal_*.o *cmsis_nvic.o *system_ARMCM4.o *system_utils.o *system_cp.o *cp_accel.o *bpabi.o *div*.o *_dvmd_tls.o *best*.o ) .data*) 3039 *(.psram_data*) 3040 . = ALIGN(4); 3041 } > PSRAM 3042 3043 __psram_text_data_end_flash__ = __psram_text_data_start_flash__ + SIZEOF(.psram_text)+ SIZEOF(.psram_data); 3044 3045 .psram_bss (.) (NOLOAD) : AT (ADDR(.psram_bss)) 3046 { 3047 __psram_bss_start__ = .; 3048 *(EXCLUDE_FILE(*hal_*.o *cmsis_nvic.o *system_ARMCM4.o *system_utils.o *system_cp.o *cp_accel.o *bpabi.o *div*.o *_dvmd_tls.o *best*.o ) .bss*) 3049 *:*ffmpeg*.o(COMMON) 3050 *(.psram_bss*) 3051 *(.bss*) 3052#ifdef __BT_RAMRUN__ 3053 . = ALIGN(4); 3054 __mem_pool_start__ = .; 3055 . += 128*1000; 3056 __mem_pool_end__ = .; 3057#endif 3058#ifdef BLE_AUDIO_ENABLED 3059 . = ALIGN(4); 3060 __le_audio_mem_pool_start__ = .; 3061 . += 160*1024; 3062 __le_audio_mem_pool_end__ = .; 3063#endif 3064#ifdef OS_HEAP_LINK_NAME 3065 . = ALIGN(64); 3066 __os_heap_start__ = .; 3067 OS_HEAP_LINK_NAME = .; 3068 . += OS_HEAP_SIZE; 3069 __os_heap_end__ = .; 3070#endif 3071 . = ALIGN(4); 3072 __psram_bss_end__ = .; 3073#if defined(NUTTX_BUILD) 3074 . = ALIGN(8); 3075 _nuttx_heap_start = .; 3076 _nuttx_heap_end = ABSOLUTE(PSRAM_BASE+PSRAM_SIZE); 3077#endif 3078 } > PSRAM 3079 __flash_text_data_start__ = __psram_text_data_end_flash__; 3080#endif 3081 3082#if defined(PSRAMUHS_BASE) && (MCU_PSRAMUHS_SIZE > 0) 3083 __psramuhs_text_data_start__ = ORIGIN(PSRAMUHS); 3084 __psramuhs_text_data_start_flash__ = __flash_text_data_start__; 3085 .psramuhs_text (PSRAMUHS_TO_PSRAMUHSX(__psramuhs_text_data_start__)) : AT (__psramuhs_text_data_start_flash__) 3086 { 3087 __psramux_text_start__ = .; 3088/* 3089 *(EXCLUDE_FILE(*hal_*.o *cmsis_nvic.o *system_ARMCM4.o *system_utils.o *system_cp.o *cp_accel.o *bpabi.o *div*.o *_dvmd_tls.o *best*.o wifi_drv*.o) .text*) 3090*/ 3091 *(.psramuhs_text*) 3092 . = ALIGN(4); 3093 __psramux_text_end__ = .; 3094 } > PSRAMUHSX 3095 3096 .psramuhs_data (__psramuhs_text_data_start__ + SIZEOF(.psramuhs_text)) : 3097 AT (__psramuhs_text_data_start_flash__ + SIZEOF(.psramuhs_text)) 3098 { 3099/* 3100 *(EXCLUDE_FILE(*hal_*.o *cmsis_nvic.o *system_ARMCM4.o *system_utils.o *system_cp.o *cp_accel.o *bpabi.o *div*.o *_dvmd_tls.o *best*.o wifi_drv*.o) .data*) 3101*/ 3102 *(.psramuhs_data*) 3103 . = ALIGN(4); 3104 } > PSRAMUHS 3105 3106 __psramuhs_text_data_end_flash__ = __psramuhs_text_data_start_flash__ + SIZEOF(.psramuhs_text)+ SIZEOF(.psramuhs_data); 3107 3108 .psramuhs_bss (.) (NOLOAD) : AT (ADDR(.psramuhs_bss)) 3109 { 3110 __psramuhs_bss_start__ = .; 3111/* 3112 *(EXCLUDE_FILE(*hal_*.o *cmsis_nvic.o *system_ARMCM4.o *system_utils.o *system_cp.o *cp_accel.o *bpabi.o *div*.o *_dvmd_tls.o *best*.o wifi_drv*.o) .bss*) 3113*/ 3114 *(.psramuhs_bss*) 3115 . = ALIGN(4); 3116 __psramuhs_bss_end__ = .; 3117 } > PSRAMUHS 3118 __flash_text_data_start__ = __psramuhs_text_data_end_flash__; 3119#endif 3120 3121 .text (FLASH_TO_FLASHX(__flash_text_data_start__)) : AT (FLASHX_TO_FLASH(ADDR(.text))) 3122 { 3123 __text_start__ = .; 3124 *(.text*) 3125 *(.flash_text*) 3126 3127 KEEP(*(.init)) 3128 KEEP(*(.fini)) 3129 _sinit = ABSOLUTE(.); 3130 3131 /* .ctors */ 3132 *crtbegin.o(.ctors) 3133 *crtbegin?.o(.ctors) 3134 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) 3135 *(SORT(.ctors.*)) 3136 *(.ctors) 3137 _einit = ABSOLUTE(.); 3138 3139 /* .dtors */ 3140 *crtbegin.o(.dtors) 3141 *crtbegin?.o(.dtors) 3142 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) 3143 *(SORT(.dtors.*)) 3144 *(.dtors) 3145 __text_end__ = .; 3146 } > FLASHX 3147#if defined(ARM_CMNS) || defined(ARM_CMSE) 3148 . = ALIGN(32); 3149 __nsc_text_start__ = .; 3150 .gnu.sgstubs (.) : AT (FLASHX_TO_FLASH(ADDR(.gnu.sgstubs))) 3151 { 3152 . = ALIGN(4); 3153 *(.gnu.sgstubs.*) 3154 } > FLASHX 3155 . = ALIGN(32); 3156 __nsc_text_end__ = .; 3157#endif 3158 .ARM.extab (.) : AT (FLASHX_TO_FLASH(ADDR(.ARM.extab))) 3159 { 3160 *(.ARM.extab* .gnu.linkonce.armextab.*) 3161 } > FLASHX 3162 3163 __exidx_start = .; 3164 /* .ARM.exidx contains R_ARM_PREL31 (+-0x40000000) offset to functions, which means 3165 * the session location cannot be too far away from the function addresses */ 3166 .ARM.exidx (.) : AT (FLASHX_TO_FLASH(ADDR(.ARM.exidx))) 3167 { 3168 *(.ARM.exidx* .gnu.linkonce.armexidx.*) 3169 __flashx_text_end__ = .; 3170 } > FLASHX 3171 __exidx_end = .; 3172 3173#ifdef ARM_CMSE 3174 /* BEST2003 SAU set FLASH_BASE region as nonsecure region becase of the SAU region number limitation, 3175 CPU can't access FLASH_BASE region in secure state, so the rodata should be located in SRAM or FLASHX*/ 3176 .sec_rodata (.) : AT (FLASHX_TO_FLASH(ADDR(.sec_rodata))) 3177 { 3178 *(.rodata*) 3179 } > FLASHX 3180#endif 3181 __flash_text_end__ = .; 3182 3183 . = FLASHX_TO_FLASH(.); 3184#ifdef TRACE_STR_SECTION 3185 .rodata_str (.): 3186 { 3187 __rodata_str_start__ = .; 3188 *(.rodata.__func__.*) 3189 *(.rodata.*__func__) 3190 *(.rodata.str1*) 3191 *(.rodata.*.str1*) 3192 *(.rodata.__FUNCTION__.*) 3193 *(.rodata.*__FUNCTION__) 3194 __rodata_str_end__ = .; 3195 } > FLASH 3196 3197 RODATA_ADDRESS = .; 3198 . = 0xFFFC0000; 3199 .trc_str (.): 3200 { 3201 *(.rodata.__func__.*) 3202 *(.rodata.*__func__) 3203 *(.rodata.__FUNCTION__.*) 3204 *(.rodata.*__FUNCTION__) 3205 *(.trc_str*) 3206 } 3207 . = RODATA_ADDRESS; 3208#endif 3209 .rodata (.) : 3210 { 3211 *(.rodata*) 3212 *(.flash_rodata*) 3213 *(.constdata) 3214#ifdef CONFIG_HAVE_CXX 3215 . = ALIGN(4); 3216 /* preinit data */ 3217 PROVIDE_HIDDEN (__preinit_array_start = .); 3218 KEEP(*(.preinit_array)) 3219 PROVIDE_HIDDEN (__preinit_array_end = .); 3220 3221 . = ALIGN(4); 3222 /* init data */ 3223 PROVIDE(__ctors_start__ = .); 3224 PROVIDE_HIDDEN (__init_array_start = .); 3225 KEEP(*(SORT(.init_array.*))) 3226 KEEP(*(.init_array)) 3227 PROVIDE_HIDDEN (__init_array_end = .); 3228 PROVIDE(__ctors_end__ = .); 3229#endif 3230 . = ALIGN(4); 3231 /* finit data */ 3232 PROVIDE_HIDDEN (__fini_array_start = .); 3233 KEEP(*(SORT(.fini_array.*))) 3234 KEEP(*(.fini_array)) 3235 PROVIDE_HIDDEN (__fini_array_end = .); 3236 3237 . = ALIGN(4); 3238 __cust_cmd_hldr_tbl_start = .; 3239 KEEP(*(.cust_cmd_hldr_tbl)) 3240 __cust_cmd_hldr_tbl_end = .; 3241 . = ALIGN(4); 3242 __ai_gatt_server_table_start = .; 3243 KEEP(*(.ai_gatt_server_table)) 3244 __ai_gatt_server_table_end = .; 3245 . = ALIGN(4); 3246 __ai_ble_handler_table_start = .; 3247 KEEP(*(.ai_ble_handler_table)) 3248 __ai_ble_handler_table_end = .; 3249 . = ALIGN(4); 3250 __ai_spp_register_table_start = .; 3251 KEEP(*(.ai_spp_register_table)) 3252 __ai_spp_register_table_end = .; 3253 . = ALIGN(4); 3254 __tota_handler_table_start = .; 3255 KEEP(*(.tota_handler_table)) 3256 __tota_handler_table_end = .; 3257 . = ALIGN(4); 3258 __ai_handler_function_table_start = .; 3259 KEEP(*(.ai_handler_function_table)) 3260 __ai_handler_function_table_end = .; 3261 . = ALIGN(4); 3262 __custom_handler_table_start = .; 3263 KEEP(*(.custom_handler_table)) 3264 __custom_handler_table_end = .; 3265 . = ALIGN(4); 3266 __mixprompt_property_table_start = .; 3267 KEEP(*(.mixprompt_property_table)) 3268 __mixprompt_property_table_end = .; 3269 . = ALIGN(4); 3270 __core_bridge_task_cmd_table_start = .; 3271 KEEP(*(.core_bridge_task_cmd_table)) 3272 __core_bridge_task_cmd_table_end = .; 3273 . = ALIGN(4); 3274 __core_bridge_instant_cmd_table_start = .; 3275 KEEP(*(.core_bridge_instant_cmd_table)) 3276 __core_bridge_instant_cmd_table_end = .; 3277 __eshell_command_table_start = .; 3278 KEEP(*(.eshell_command_table)) 3279 __eshell_command_table_end = .; 3280 . = ALIGN(4); 3281 __app_bt_sync_command_handler_table_start = .; 3282 KEEP(*(.app_bt_sync_command_handler_table)) 3283 __app_bt_sync_command_handler_table_end = .; 3284 . = ALIGN(4); 3285 . = ALIGN(4); 3286 KEEP(*(.eh_frame*)) 3287 *(.note.gnu.build-id) 3288 3289 . = ALIGN(4); 3290 __test_cases_table_start = .; 3291 KEEP(*(.test_cases_table)) 3292 __test_cases_table_end = .; 3293 . = ALIGN(4); 3294 _etext = .; 3295 } > FLASH 3296 3297#if ALIOS_APP_SUPPORT > 0 3298 .FSymTab (.) : 3299 { 3300 _syscall_table_begin = .; 3301 KEEP(*(FSymTab)) 3302 . = ALIGN(4); 3303 _syscall_table_end = .; 3304 } > FLASH 3305#endif 3306 3307#ifdef TRACE_STR_SECTION 3308 .trc_str (.) : 3309 { 3310 *(.trc_str*) 3311 } > FLASH 3312#endif 3313 3314#if defined(FIRMWARE_REV) 3315 .firmware_rev (.) : 3316 { 3317 . = ALIGN(64); 3318 *(.fw_rev) 3319 } > FLASH 3320#endif 3321/* zInit code and data - will be freed after init */ 3322 .zInit (.) : 3323 { 3324 __zinitcall_bsp_start = .; 3325 KEEP (*(.zinitcall.bsp0.init)) 3326 KEEP (*(.zinitcall.bsp1.init)) 3327 KEEP (*(.zinitcall.bsp2.init)) 3328 KEEP (*(.zinitcall.bsp3.init)) 3329 KEEP (*(.zinitcall.bsp4.init)) 3330 __zinitcall_bsp_end = .; 3331 . = ALIGN(4); 3332 __zinitcall_device_start = .; 3333 KEEP (*(.zinitcall.device0.init)) 3334 KEEP (*(.zinitcall.device1.init)) 3335 KEEP (*(.zinitcall.device2.init)) 3336 KEEP (*(.zinitcall.device3.init)) 3337 KEEP (*(.zinitcall.device4.init)) 3338 __zinitcall_device_end = .; 3339 . = ALIGN(4); 3340 __zinitcall_core_start = .; 3341 KEEP (*(.zinitcall.core0.init)) 3342 KEEP (*(.zinitcall.core1.init)) 3343 KEEP (*(.zinitcall.core2.init)) 3344 KEEP (*(.zinitcall.core3.init)) 3345 KEEP (*(.zinitcall.core4.init)) 3346 __zinitcall_core_end = .; 3347 . = ALIGN(4); 3348 __zinitcall_sys_service_start = .; 3349 KEEP (*(.zinitcall.sys.service0.init)) 3350 KEEP (*(.zinitcall.sys.service1.init)) 3351 KEEP (*(.zinitcall.sys.service2.init)) 3352 KEEP (*(.zinitcall.sys.service3.init)) 3353 KEEP (*(.zinitcall.sys.service4.init)) 3354 __zinitcall_sys_service_end = .; 3355 . = ALIGN(4); 3356 __zinitcall_sys_feature_start = .; 3357 KEEP (*(.zinitcall.sys.feature0.init)) 3358 KEEP (*(.zinitcall.sys.feature1.init)) 3359 KEEP (*(.zinitcall.sys.feature2.init)) 3360 KEEP (*(.zinitcall.sys.feature3.init)) 3361 KEEP (*(.zinitcall.sys.feature4.init)) 3362 __zinitcall_sys_feature_end = .; 3363 . = ALIGN(4); 3364 __zinitcall_run_start = .; 3365 KEEP (*(.zinitcall.run0.init)) 3366 KEEP (*(.zinitcall.run1.init)) 3367 KEEP (*(.zinitcall.run2.init)) 3368 KEEP (*(.zinitcall.run3.init)) 3369 KEEP (*(.zinitcall.run4.init)) 3370 __zinitcall_run_end = .; 3371 . = ALIGN(4); 3372 __zinitcall_app_service_start = .; 3373 KEEP (*(.zinitcall.app.service0.init)) 3374 KEEP (*(.zinitcall.app.service1.init)) 3375 KEEP (*(.zinitcall.app.service2.init)) 3376 KEEP (*(.zinitcall.app.service3.init)) 3377 KEEP (*(.zinitcall.app.service4.init)) 3378 __zinitcall_app_service_end = .; 3379 . = ALIGN(4); 3380 __zinitcall_app_feature_start = .; 3381 KEEP (*(.zinitcall.app.feature0.init)) 3382 KEEP (*(.zinitcall.app.feature1.init)) 3383 KEEP (*(.zinitcall.app.feature2.init)) 3384 KEEP (*(.zinitcall.app.feature3.init)) 3385 KEEP (*(.zinitcall.app.feature4.init)) 3386 __zinitcall_app_feature_end = .; 3387 . = ALIGN(4); 3388 __zinitcall_test_start = .; 3389 KEEP (*(.zinitcall.test0.init)) 3390 KEEP (*(.zinitcall.test1.init)) 3391 KEEP (*(.zinitcall.test2.init)) 3392 KEEP (*(.zinitcall.test3.init)) 3393 KEEP (*(.zinitcall.test4.init)) 3394 __zinitcall_test_end = .; 3395 . = ALIGN(4); 3396 __zinitcall_exit_start = .; 3397 KEEP (*(.zinitcall.exit0.init)) 3398 KEEP (*(.zinitcall.exit1.init)) 3399 KEEP (*(.zinitcall.exit2.init)) 3400 KEEP (*(.zinitcall.exit3.init)) 3401 KEEP (*(.zinitcall.exit4.init)) 3402 __zinitcall_exit_end = .; 3403 . = ALIGN(4); 3404 } > FLASH 3405 3406 3407 3408 .interp (.) : 3409 { 3410 KEEP(*(interp)) 3411 . = ALIGN(4); 3412 } > FLASH 3413 3414 .dynstr (.) : 3415 { 3416 KEEP(*(dynstr)) 3417 . = ALIGN(4); 3418 } > FLASH 3419 3420 /* To copy multiple FLASH to RAM sections, 3421 * uncomment .copy.table section and, 3422 * define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */ 3423 /* 3424 .copy.table (.) : 3425 { 3426 . = ALIGN(4); 3427 __copy_table_start__ = .; 3428 LONG (__etext) 3429 LONG (__data_start__) 3430 LONG (__data_end__ - __data_start__) 3431 LONG (__etext2) 3432 LONG (__data2_start__) 3433 LONG (__data2_end__ - __data2_start__) 3434 __copy_table_end__ = .; 3435 } > FLASH 3436 */ 3437 3438 /* To clear multiple BSS sections, 3439 * uncomment .zero.table section and, 3440 * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */ 3441 /* 3442 .zero.table (.) : 3443 { 3444 . = ALIGN(4); 3445 __zero_table_start__ = .; 3446 LONG (__bss_start__) 3447 LONG (__bss_end__ - __bss_start__) 3448 LONG (__bss2_start__) 3449 LONG (__bss2_end__ - __bss2_start__) 3450 __zero_table_end__ = .; 3451 } > FLASH 3452 */ 3453 3454 /* Location counter can end up 2byte aligned with narrow Thumb code but 3455 __etext is assumed by startup code to be the LMA of a section in RAM 3456 which must be 4byte aligned */ 3457 __etext = ALIGN(4); 3458 3459 /* The VMA is either the end of overlay_data or the end of sram bss */ 3460 3461 .data : AT (__etext) 3462 { 3463 __data_start__ = .; 3464 _sdata = .; 3465 *(vtable) 3466 . = ALIGN(4); 3467 *(.data*) 3468 3469 . = ALIGN(4); 3470 /* preinit data */ 3471 PROVIDE_HIDDEN (__preinit_array_start = .); 3472 KEEP(*(.preinit_array)) 3473 PROVIDE_HIDDEN (__preinit_array_end = .); 3474 3475 . = ALIGN(4); 3476 /* finit data */ 3477 PROVIDE_HIDDEN (__fini_array_start = .); 3478 KEEP(*(SORT(.fini_array.*))) 3479 KEEP(*(.fini_array)) 3480 PROVIDE_HIDDEN (__fini_array_end = .); 3481 3482 KEEP(*(.jcr*)) 3483 3484 /* All data end */ 3485 . = ALIGN(4); 3486 *(*.got*) 3487 3488 /* section information for finsh shell */ 3489 . = ALIGN(4); 3490 __fsymtab_start = .; 3491 KEEP(*(FSymTab)) 3492 __fsymtab_end = .; 3493 3494 . = ALIGN(4); 3495 __vsymtab_start = .; 3496 KEEP(*(VSymTab)) 3497 __vsymtab_end = .; 3498 3499 /* section information for initial. */ 3500 . = ALIGN(4); 3501 __rt_init_start = .; 3502 KEEP(*(SORT(.rti_fn*))) 3503 __rt_init_end = .; 3504 3505 _hdf_drivers_start = .; 3506 KEEP(*(.hdf.driver)) 3507 _hdf_drivers_end = .; 3508 3509 __data_end__ = .; 3510 _edata = .; 3511 __shell_root_cmds_start = .; 3512 KEEP(*(SORT(.shell_root_cmd_*))); 3513 __shell_root_cmds_end = .; 3514 } > RAM 3515 3516 .bss (.) (NOLOAD) : AT (ADDR(.bss)) 3517 { 3518 . = ALIGN(4); 3519 __bss_start__ = .; 3520 _sbss = .; 3521 *(COMMON) 3522 . = ALIGN(4); 3523 __bss_end__ = .; 3524#if defined(OS_HEAP_SIZE) && (!defined(PSRAM_BASE) || (PSRAM_SIZE == 0)) 3525 __os_heap_start__ = .; 3526 OS_HEAP_LINK_NAME = .; 3527 . += OS_HEAP_SIZE; 3528 __os_heap_end__ = .; 3529#endif 3530 _ebss = .; 3531 } > RAM 3532#if defined(NUTTX_BUILD) && (!defined(PSRAM_BASE) || (PSRAM_SIZE == 0)) && defined(CONFIG_USE_BES_BT_STACK) 3533 .nuttx_heap (.) (NOLOAD) : 3534 { 3535 _nuttx_heap_start = .; 3536 . = ALIGN(8); 3537 . += NUTTX_HEAP_SECTION_SIZE; 3538 . = ALIGN(8); 3539 _nuttx_heap_end = .; 3540 } > RAM 3541#endif 3542 .reboot_custom_param (.) (NOLOAD) : 3543 { 3544 KEEP(*(.reboot_custom_param*)) 3545 . = ALIGN(4); 3546#if defined(CUSTOM_REBOOT_DUMP_SIZE) 3547 __custom_reboot_dump_start__ = .; 3548 . += CUSTOM_REBOOT_DUMP_SIZE; 3549 __custom_reboot_dump_end__ = .; 3550#endif 3551 __reboot_custom_param_end__ = .; 3552 } > RAM 3553 3554 .heap (.) (NOLOAD) : 3555 { 3556 . = ALIGN(8); 3557 __HeapBase = .; 3558 __end__ = .; 3559 end = __end__; 3560 . += HEAP_SECTION_SIZE; 3561 . = ALIGN(8); 3562 __HeapLimit = .; 3563 } > RAM 3564 3565#ifdef ROM_IN_FLASH 3566 .scratch_buf (.) (NOLOAD) : 3567 { 3568 . = ALIGN(4); 3569 *(.scratch_buf) 3570 . = ALIGN(4); 3571 } > RAM 3572#endif 3573 3574 /* ramv will be occupied by nts heap of cp if WIFI_ON_CP defined */ 3575#if defined(RAMV_BASE) && (RAMV_SIZE > 0) && !defined(WIFI_ON_CP) 3576 .cp_vram_bss (ORIGIN(RAMV)) (NOLOAD) : AT (ADDR(.cp_vram_bss)) 3577 { 3578 . = ALIGN(4); 3579 *(.vram_bss*) 3580 } > RAMV 3581#endif 3582 3583 /* .stack_dummy section doesn't contains any symbols. It is only 3584 * used for linker to calculate size of stack sections, and assign 3585 * values to stack symbols later */ 3586 .stack_dummy (.) (COPY) : 3587 { 3588 . = STACK_SECTION_SIZE; 3589 . = ALIGN(8); 3590 } > RAM 3591 3592 /* Set stack top to end of RAM, and stack limit move down by 3593 * size of stack_dummy section */ 3594#if defined(ROM_UTILS_ON) 3595 __StackTop = ORIGIN(RAM) + LENGTH(RAM) - ROM_UTILS_RESV_RAM_SIZE; 3596#else 3597 __StackTop = ORIGIN(RAM) + LENGTH(RAM); 3598#endif 3599 __StackLimit = __StackTop - SIZEOF(.stack_dummy); 3600 PROVIDE(__stack = __StackTop); 3601 _sstack = __StackLimit; 3602 _estack = __stack; 3603#if defined(NUTTX_BUILD) && (!defined(PSRAM_BASE) || (PSRAM_SIZE == 0)) && !defined(CONFIG_USE_BES_BT_STACK) 3604 _nuttx_heap_start = __HeapLimit; 3605 _nuttx_heap_end = __StackLimit - 4; 3606#endif 3607 /* Check if data + heap + stack exceeds RAM limit */ 3608 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") 3609 __free_ram = __StackLimit - __HeapLimit; 3610 3611#ifndef __BT_RAMRUN__ 3612#ifdef MEM_POOL_BASE 3613 .mem_pool (ORIGIN(MEM_POOL)) (NOLOAD) : 3614 { 3615 __mem_pool_start__ = .; 3616 . = LENGTH(MEM_POOL); 3617 __mem_pool_end__ = .; 3618 } > MEM_POOL 3619#elif !(defined(CHIP_HAS_CP) && (RAMCP_SIZE > 0) && defined(MEM_POOL_IN_CP_RAM)) 3620 __mem_pool_start__ = __HeapLimit; 3621 __mem_pool_end__ = __StackLimit; 3622#endif 3623#endif 3624 3625 . = __etext + SIZEOF(.data); 3626 3627 .system_info (.) : 3628 { 3629 KEEP(*(.system_info_list_size)) 3630 KEEP(*(.system_info_list)) 3631 . = ALIGN(4); 3632 } > FLASH 3633 3634 .build_info (.) : 3635 { 3636 KEEP(*(.build_info)) 3637 . = ALIGN(4); 3638 } > FLASH = 0x00000000 3639 3640#ifdef SLAVE_BIN_FLASH_OFFSET 3641 .slave_code (ORIGIN(FLASH) + SLAVE_BIN_FLASH_OFFSET): 3642 { 3643 KEEP(*(.slave_code_flash_rodata)) 3644 } > FLASH 3645#endif 3646 3647 /* The following section MUST be the last loaded section */ 3648 .code_start_addr (.) : 3649 { 3650#ifdef TRACE_STR_SECTION 3651 LONG(ABSOLUTE(__rodata_str_start__)); 3652#else 3653 LONG(0); 3654#endif 3655 LONG(BUILD_INFO_MAGIC); 3656 LONG(ABSOLUTE(__flash_start)); 3657 } > FLASH 3658 3659 __flash_end = .; 3660 3661#if 0 3662 /* file system fixed to 0x4B8000 space, start addr:0xB38000 */ 3663 .filesystem (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC)- 0x4C8000) : 3664 { 3665 __file_system_flash_start = .; 3666 . = FILE_SYSTEM_SECTION_SIZE; 3667 __file_system_flash_stop = .; 3668 } > FLASH_NC 3669#endif 3670 .combo (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3671 AUD_SECTION_SIZE - USERDATA_SECTION_SIZE*2 - CUSTOM_PARAMETER_SECTION_SIZE - 3672 LHDC_LICENSE_SECTION_SIZE - CRASH_DUMP_SECTION_SIZE - LOG_DUMP_SECTION_SIZE - 3673 OTA_UPGRADE_LOG_SIZE - CORE_DUMP_SECTION_SIZE - HOTWORD_SECTION_SIZE - PROMPT_SECTION_SIZE - 3674 COMBO_SECTION_SIZE) (NOLOAD): 3675 { 3676 __combo_start = .; 3677 . = COMBO_SECTION_SIZE; 3678 __combo_end = .; 3679 } > FLASH_NC 3680 3681 .prompt (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3682 AUD_SECTION_SIZE - USERDATA_SECTION_SIZE*2 - CUSTOM_PARAMETER_SECTION_SIZE - 3683 LHDC_LICENSE_SECTION_SIZE - CRASH_DUMP_SECTION_SIZE - LOG_DUMP_SECTION_SIZE - 3684 OTA_UPGRADE_LOG_SIZE - CORE_DUMP_SECTION_SIZE - HOTWORD_SECTION_SIZE - PROMPT_SECTION_SIZE) (NOLOAD): 3685 { 3686 __prompt_start = .; 3687 . = PROMPT_SECTION_SIZE; 3688 __prompt_end = .; 3689 } > FLASH_NC 3690 3691 .hotword_model (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3692 AUD_SECTION_SIZE - USERDATA_SECTION_SIZE*2 - CUSTOM_PARAMETER_SECTION_SIZE - 3693 LHDC_LICENSE_SECTION_SIZE - CRASH_DUMP_SECTION_SIZE - LOG_DUMP_SECTION_SIZE - 3694 OTA_UPGRADE_LOG_SIZE - CORE_DUMP_SECTION_SIZE - HOTWORD_SECTION_SIZE) (NOLOAD): 3695 { 3696 __hotword_model_start = .; 3697 . = HOTWORD_SECTION_SIZE; 3698 __hotword_model_end = .; 3699 } > FLASH_NC 3700 3701 .coredump_section (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3702 AUD_SECTION_SIZE - USERDATA_SECTION_SIZE*2 - CUSTOM_PARAMETER_SECTION_SIZE - 3703 LHDC_LICENSE_SECTION_SIZE - CRASH_DUMP_SECTION_SIZE - LOG_DUMP_SECTION_SIZE - 3704 OTA_UPGRADE_LOG_SIZE - CORE_DUMP_SECTION_SIZE) (NOLOAD) : 3705 { 3706 __coredump_section_start = .; 3707 . = CORE_DUMP_SECTION_SIZE; 3708 __coredump_section_end = .; 3709 } > FLASH_NC 3710 3711 .ota_upgrade_log (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3712 AUD_SECTION_SIZE - USERDATA_SECTION_SIZE*2 - CUSTOM_PARAMETER_SECTION_SIZE - 3713 LHDC_LICENSE_SECTION_SIZE - CRASH_DUMP_SECTION_SIZE - LOG_DUMP_SECTION_SIZE - 3714 OTA_UPGRADE_LOG_SIZE) (NOLOAD) : 3715 { 3716 __ota_upgrade_log_start = .; 3717 . = OTA_UPGRADE_LOG_SIZE; 3718 __ota_upgrade_log_end = .; 3719 } > FLASH_NC 3720 3721 .log_dump (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3722 AUD_SECTION_SIZE - USERDATA_SECTION_SIZE*2 - CUSTOM_PARAMETER_SECTION_SIZE - 3723 LHDC_LICENSE_SECTION_SIZE - CRASH_DUMP_SECTION_SIZE - LOG_DUMP_SECTION_SIZE) (NOLOAD) : 3724 { 3725 __log_dump_start = .; 3726 . = LOG_DUMP_SECTION_SIZE; 3727 __log_dump_end = .; 3728 } > FLASH_NC 3729 3730 .crash_dump (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3731 AUD_SECTION_SIZE - USERDATA_SECTION_SIZE*2 - CUSTOM_PARAMETER_SECTION_SIZE - 3732 LHDC_LICENSE_SECTION_SIZE - CRASH_DUMP_SECTION_SIZE) (NOLOAD) : 3733 { 3734 __crash_dump_start = .; 3735 . = CRASH_DUMP_SECTION_SIZE; 3736 __crash_dump_end = .; 3737 } > FLASH_NC 3738 3739 .custom_parameter (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3740 AUD_SECTION_SIZE - USERDATA_SECTION_SIZE*2 - CUSTOM_PARAMETER_SECTION_SIZE - 3741 LHDC_LICENSE_SECTION_SIZE) (NOLOAD) : 3742 { 3743 __custom_parameter_start = .; 3744 . = CUSTOM_PARAMETER_SECTION_SIZE; 3745 __custom_parameter_end = .; 3746 } > FLASH_NC 3747 3748 .lhdc_license (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3749 AUD_SECTION_SIZE - USERDATA_SECTION_SIZE*2 - CUSTOM_PARAMETER_SECTION_SIZE) (NOLOAD) : 3750 { 3751 __lhdc_license_start = .; 3752 . = LHDC_LICENSE_SECTION_SIZE; 3753 __lhdc_license_end = .; 3754 } > FLASH_NC 3755 3756 .userdata (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3757 AUD_SECTION_SIZE - USERDATA_SECTION_SIZE*2) (NOLOAD) : 3758 { 3759 __userdata_start = .; 3760 . = USERDATA_SECTION_SIZE*2; 3761 __userdata_end = .; 3762 } > FLASH_NC 3763 3764 .audio (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE - 3765 AUD_SECTION_SIZE) (NOLOAD) : 3766 { 3767 __aud_start = .; 3768 . = AUD_SECTION_SIZE; 3769 __aud_end = .; 3770 } > FLASH_NC 3771 3772 .reserved (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE - RESERVED_SECTION_SIZE) (NOLOAD) : 3773 { 3774 __reserved_start = .; 3775 . = RESERVED_SECTION_SIZE; 3776 __reserved_end = .; 3777 } > FLASH_NC 3778 3779 .factory (ORIGIN(FLASH_NC) + LENGTH(FLASH_NC) - FACTORY_SECTION_SIZE) (NOLOAD) : 3780 { 3781 __factory_start = .; 3782 . = FACTORY_SECTION_SIZE; 3783 __factory_end = .; 3784 } > FLASH_NC 3785 3786#ifdef OTA_BOOT_SIZE 3787#ifndef OTA_BOOT_OFFSET 3788#error "OTA_BOOT_OFFSET should be set along with OTA_BOOT_SIZE" 3789#endif 3790#if (OTA_BOOT_SIZE > FLASH_REGION_SIZE) 3791#error "OTA_BOOT_SIZE should <= FLASH_REGION_SIZE" 3792#endif 3793#if defined(OTA_CODE_OFFSET) && ((OTA_BOOT_OFFSET + OTA_BOOT_SIZE) > OTA_CODE_OFFSET) 3794#error "(OTA_BOOT_OFFSET + OTA_BOOT_SIZE) should <= OTA_CODE_OFFSET" 3795#endif 3796 __tail_section_start = FLASH_NC_BASE + OTA_BOOT_OFFSET + OTA_BOOT_SIZE; 3797#else 3798 __tail_section_start = __prompt_start; 3799#endif 3800 3801 ASSERT(FLASH_NC_TO_C(__tail_section_start) >= __flash_end, "region FLASH overflowed") 3802 __free_flash = FLASH_NC_TO_C(__tail_section_start) - __flash_end; 3803 3804#ifdef OTA_REMAP_OFFSET 3805#ifndef OTA_CODE_OFFSET 3806#error "OTA_CODE_OFFSET should be set along with OTA_REMAP_OFFSET" 3807#endif 3808#ifndef OTA_BOOT_SIZE 3809 /* This is not an OTA booting code, but a normal working code */ 3810 ASSERT((FLASH_BASE & 0x03FFFFFF) == 0, "bad FLASH_BASE") 3811#ifdef CHIP_BEST2300P 3812 ASSERT((FLASH_SIZE & (FLASH_SIZE - 1)) == 0, "bad FLASH_SIZE") 3813 ASSERT(__flash_end <= FLASH_BASE + OTA_REMAP_OFFSET, "flash code size too large to remap") 3814 ASSERT(__flash_start - FLASH_BASE >= FLASH_NC_BASE + FLASH_SIZE - __tail_section_start, "flash code conflicted with tail sections in remap") 3815 ASSERT(__flash_start - FLASH_BASE >= FLASH_SIZE / (1 << (4 + 1)), "flash code cannot remap within 4 regions (max code size is half of flash size)") 3816 ASSERT((__flash_start - FLASH_BASE) % (FLASH_SIZE / (1 << (4 + 1))) == 0, "flash code start address not aligned with remap region boundary") 3817#else 3818 ASSERT(((OTA_REMAP_OFFSET) & (0x8000 - 1)) == 0, "OTA_REMAP_OFFSET not aligned with 32K sector boundary") 3819 ASSERT(__flash_end <= FLASH_BASE + (OTA_CODE_OFFSET + OTA_REMAP_OFFSET), "flash code size too large to remap") 3820 ASSERT((__tail_section_start & (0x1000 - 1)) == 0, "__tail_section_start not aligned with 4K sector boundary") 3821 ASSERT(__flash_end + (OTA_REMAP_OFFSET) <= FLASH_NC_TO_C(__tail_section_start), "flash code conflicted with tail sections in remap") 3822#endif 3823#endif 3824#endif 3825} 3826 3827