RAM1_LIMIT_L = 0x2C000; RAM1_LIMIT_H = 0x30000; UPDATA_SIZE = 0x80; UPDATA_BEG = RAM1_LIMIT_H - UPDATA_SIZE; RAM1_BEGIN = RAM1_LIMIT_L; RAM1_END = RAM1_LIMIT_H - UPDATA_SIZE; RAM1_SIZE = RAM1_END - RAM1_BEGIN; RAM_LIMIT_L = 0x00000; RAM_LIMIT_H = 0x2C000; ISR_SIZE = 0x100; ISR_BASE = RAM_LIMIT_H - ISR_SIZE; RAM_BEGIN = RAM_LIMIT_L; RAM_END = RAM_LIMIT_H - ISR_SIZE; RAM_SIZE = RAM_END - RAM_BEGIN; BANK_SIZE = 5*1024; PSRAM_BEG = 0x800000; PSRAM_SIZE = 2M; CODE_BEG = 0X1E000C0; UPDATA_BREDR_BASE_BEG = 0xF9000; MIC_EFFECT_EQ_SECTION = 3; EQ_SECTION_NUM = 20 +MIC_EFFECT_EQ_SECTION; MEMORY { psram(rwx) : ORIGIN = PSRAM_BEG , LENGTH = PSRAM_SIZE code0(rx) : ORIGIN = 0x1E00100, LENGTH = (1024 * 1024) ram0(rwx) : ORIGIN = RAM_BEGIN , LENGTH = RAM_SIZE ram1(rwx) : ORIGIN = RAM1_BEGIN , LENGTH = RAM1_SIZE } memmem = ABSOLUTE(0x1127a4); memcpy = ABSOLUTE(0x1127a8); memmove = ABSOLUTE(0x1127ac); memcmp = ABSOLUTE(0x1127b0); memset = ABSOLUTE(0x1127b4); strcmp = ABSOLUTE(0x1127b8); strcpy = ABSOLUTE(0x1127bc); strlen = ABSOLUTE(0x1127c0); strncmp = ABSOLUTE(0x1127c4); strstr = ABSOLUTE(0x1127c8); flush_dcache = ABSOLUTE(0x1127cc); flushinv_dcache = ABSOLUTE(0x1127d0); sfc_suspend = ABSOLUTE(0x1127d4); sfc_resume = ABSOLUTE(0x1127d8); chip_crc16 = ABSOLUTE(0x1127e0); nvram_set_boot_state = ABSOLUTE(0x1127f0); _IRQ_MEM_ADDR = ABSOLUTE(0x2bf00); _MASK_MEM_BEGIN = ABSOLUTE(0x2bdc0); _MASK_MEM_SIZE = ABSOLUTE(0x12c); EXTERN( _start fat_vfs_ops sdfile_vfs_ops sbc_decoder msbc_decoder sbc_hwaccel cvsd_decoder pcm_decoder mp3_decoder wma_decoder flac_decoder ape_decoder m4a_decoder alac_decoder amr_decoder dts_decoder g729_decoder wav_decoder cvsd_encoder msbc_encoder mp3_encoder g726_encoder adpcm_encoder pcm_encoder sbc_encoder eff_adj_target ); ENTRY(_start) EXTERN( lib_update_version ) SECTIONS { . =ORIGIN(psram); .psram_text ALIGN(4): { } > psram .psram ALIGN(32): { } > psram . = ORIGIN(code0); .text ALIGN(4): { text_code_begin = .; PROVIDE(text_rodata_begin = .); *(.startup.text) bank_stub_start = .; *(.bank.stub.*) bank_stub_size = . - bank_stub_start; *(.aac_const) *(.aac_code) *(.alac_const) *(.alac_code) *(.alac_dec_code) *(.bt_aac_dec_eng_const) *(.bt_aac_dec_eng_code) *(.bt_aac_dec_core_code) *(.bt_aac_dec_core_sparse_code) *(.dts_dec_const) *(.cvsd_const) *(.cvsd_code) . = ALIGN(4); gsensor_dev_begin = .; KEEP(*(.gsensor_dev)) gsensor_dev_end = .; . = ALIGN(4); hrsensor_dev_begin = .; KEEP(*(.hrsensor_dev)) hrsensor_dev_end = .; . = ALIGN(4); fm_dev_begin = .; KEEP(*(.fm_dev)) fm_dev_end = .; . = ALIGN(4); fm_emitter_dev_begin = .; KEEP(*(.fm_emitter_dev)) fm_emitter_dev_end = .; . = ALIGN(4); tool_interface_begin = .; KEEP(*(.tool_interface)) tool_interface_end = .; . = ALIGN(4); cmd_interface_begin = .; KEEP(*(.eff_cmd)) cmd_interface_end = .; . = ALIGN(4); chargeIc_dev_begin = .; KEEP(*(.chargeIc_dev)) chargeIc_dev_end = .; . = ALIGN(4); *(.opcore_table_maskrom) *(.bfilt_table_maskroom) *(.opcore_maskrom) *(.bfilt_code) *(.bfilt_const) . = ALIGN(4); btctler_code_start = .; BTCTLER_CONTROLLER_CODE_START = .; *(.bt_rf_const) *(.bt_rf_code) *(.vendor_manager_const) *(.vendor_manager_code) *(.device_manager_const) *(.device_manager_code) *(.hci_controller_const) *(.hci_controller_code) *(.hci_interface_const) *(.hci_interface_code) BTCTLER_CONTROLLER_CODE_SIZE = ABSOLUTE(. - BTCTLER_CONTROLLER_CODE_START); BTCTLER_LE_CONTROLLER_CODE_START = .; *(.ble_rf_const) *(.ble_rf_code) *(.ble_ll_const) *(.ble_ll_code) *(.ble_hci_const) *(.ble_hci_code) BTCTLER_LE_CONTROLLER_CODE_SIZE = ABSOLUTE(. - BTCTLER_LE_CONTROLLER_CODE_START); BTCTLER_CL_CODE_START = .; *(.bredr_irq) *(.bredr_irq_code) *(.bredr_irq_const) *(.classic_lmp_const) *(.classic_lmp_linkbulk_const) *(.classic_lmp_code) *(.classic_lmp_linkbulk_code) *(.classic_hci_const) *(.classic_hci_code) LMP_ENC_CODE_START = .; *(.classic_lmp_auth_const) *(.classic_lmp_bigint_const) *(.classic_lmp_crypt_const) *(.classic_lmp_ecdh_const) *(.classic_lmp_hmac_const) *(.classic_lmp_auth_code) *(.classic_lmp_bigint_code) *(.classic_lmp_crypt_code) *(.classic_lmp_ecdh_code) *(.classic_lmp_hmac_code) LMP_ENC_CODE_SIZE = ABSOLUTE(. - LMP_ENC_CODE_START); *(.classic_rf_const) *(.classic_rf_code) *(.classic_bb_const) *(.classic_bb_code) BTCTLER_CL_CODE_SIZE = ABSOLUTE(. - BTCTLER_CL_CODE_START); . = ALIGN(4); *(.classic_tws_const) *(.classic_tws_code) *(.classic_tws_code.esco) *(.tws_media_sync_code) *(.tws_media_sync_const) *(.tws_data_forward_code) *(.tws_data_forward_const) . = ALIGN(4); tws_func_stub_begin = .; KEEP(*(.tws_func_stub)) tws_func_stub_end = .; *(.lmp_irq_code) *(.link_bulk_code) *(.frame_irq_code) . = ALIGN(4); *(.link_task_const) *(.link_task_code) . = ALIGN(4); *(.classic_irq_const) *(.classic_irq_code) . = ALIGN(4); *(.tws_irq_code) . = ALIGN(4); tws_sync_call_begin = .; KEEP(*(.tws_sync_call)) tws_sync_call_end = .; . = ALIGN(4); tws_sync_channel_begin = .; KEEP(*(.tws_sync_channel.0)) KEEP(*(.tws_sync_channel.1)) KEEP(*(.tws_sync_channel.2)) KEEP(*(.tws_sync_channel.3)) KEEP(*(.tws_sync_channel.4)) KEEP(*(.tws_sync_channel.5)) KEEP(*(.tws_sync_channel.6)) KEEP(*(.tws_sync_channel.7)) KEEP(*(.tws_sync_channel.8)) KEEP(*(.tws_sync_channel.9)) KEEP(*(.tws_sync_channel.10)) KEEP(*(.tws_sync_channel.11)) KEEP(*(.tws_sync_channel.12)) KEEP(*(.tws_sync_channel.13)) tws_sync_channel_end = .; btctler_code_end = .; . = ALIGN(4); . = ALIGN(4); btstack_code_start = .; . = ALIGN(4); a2dp_source_media_codec_begin = .; KEEP(*(.a2dp_source_media_codec)) a2dp_source_media_codec_end = .; a2dp_sink_media_probe_begin = .; KEEP(*(.a2dp_sink_media_probe)) a2dp_sink_media_probe_end = .; a2dp_sink_media_codec_begin = .; KEEP(*(.a2dp_sink_media_codec)) a2dp_sink_media_codec_end = .; a2dp_event_handler_begin = .; KEEP(*(.a2dp_event_handler)) a2dp_event_handler_end = .; sdp_record_item_begin = .; KEEP(*(.sdp_record_item)) sdp_record_item_end = .; bt_sleep_begin = .; KEEP(*(.bt_sleep)) bt_sleep_end = .; *(.bt_stack_const) *(.bt_stack_code) *(.ble_db_const) *(.ble_db_code) *(.ble_sm_const) *(.ble_sm_code) *(.ble_att_const) *(.ble_att_code) *(.ble_gatt_const) *(.ble_gatt_code) BTSTACK_LE_HOST_MESH_CODE_START = .; *(.ble_mesh_code) *(.ble_mesh_tinycrypt_code) *(.ble_mesh_const) *(.ble_mesh_tinycrypt_const) BTSTACK_LE_HOST_MESH_CODE_SIZE = ABSOLUTE(. - BTSTACK_LE_HOST_MESH_CODE_START); btstack_code_end = .; . = ALIGN(4); BTSTACK_CODE_TOTAL_SIZE = btstack_code_end - btstack_code_start; . = ALIGN(4); . = ALIGN(4); system_text_start = .; _device_node_begin = .; PROVIDE(device_node_begin = .); KEEP(*(.device)) _device_node_end = .; PROVIDE(device_node_end = .); config_target_begin = .; PROVIDE(config_target_begin = .); KEEP(*(.config_target)) config_target_end = .; PROVIDE(config_target_end = .); system_code_begin = .; KEEP(*(.system.*.text)) system_code_end = .; . = ALIGN(4); system_code_size = system_code_end - system_code_begin; vfs_ops_begin = .; KEEP(*(.vfs_operations)) vfs_ops_end = .; _lib_version_begin = .; PROVIDE(lib_version_begin = .); KEEP(*(.lib_version)) _lib_version_end = .; PROVIDE(lib_version_end = .); _initcall_begin = .; PROVIDE(initcall_begin = .); KEEP(*(.initcall)) _initcall_end = .; PROVIDE(initcall_end = .); _early_initcall_begin = .; PROVIDE(early_initcall_begin = .); KEEP(*(.early.initcall)) _early_initcall_end = .; PROVIDE(early_initcall_end = .); _late_initcall_begin = .; PROVIDE(late_initcall_begin = .); KEEP(*(.late.initcall)) _late_initcall_end = .; PROVIDE(late_initcall_end = .); _platform_initcall_begin = .; PROVIDE(platform_initcall_begin = .); KEEP(*(.platform.initcall)) _platform_initcall_end = .; PROVIDE(platform_initcall_end = .); _module_initcall_begin = .; PROVIDE(module_initcall_begin = .); KEEP(*(.module.initcall)) _module_initcall_end = .; PROVIDE(module_initcall_end = .); _sys_event_handler_begin = .; PROVIDE(sys_event_handler_begin = .); KEEP(*(.sys_event.4.handler)) KEEP(*(.sys_event.3.handler)) KEEP(*(.sys_event.2.handler)) KEEP(*(.sys_event.1.handler)) KEEP(*(.sys_event.0.handler)) _sys_event_handler_end = .; PROVIDE(sys_event_handler_end = .); _syscfg_arg_begin = .; PROVIDE(syscfg_arg_begin = .); KEEP(*(.syscfg.arg)) _syscfg_arg_end = .; PROVIDE(syscfg_arg_end = .); _syscfg_handler_begin = .; PROVIDE(syscfg_handler_begin = .); KEEP(*(.syscfg.handler)) _syscfg_handler_end = .; PROVIDE(syscfg_handler_end = .); _syscfg_ops_begin = .; PROVIDE(syscfg_ops_begin = .); KEEP(*(.syscfg.2.ops)) KEEP(*(.syscfg.1.ops)) KEEP(*(.syscfg.0.ops)) _syscfg_ops_end = .; PROVIDE(syscfg_ops_end = .); _server_info_begin = .; PROVIDE(server_info_begin = .); KEEP(*(.server_info)) _server_info_end = .; PROVIDE(server_info_end = .); _bus_device_begin = .; PROVIDE(bus_device_begin = .); KEEP(*(.bus_device)) _bus_device_end = .; PROVIDE(bus_device_end = .); _sys_power_hal_ops_begin = .; PROVIDE(sys_power_hal_ops_begin = .); KEEP(*(.sys_power_hal_ops)) _sys_power_hal_ops_end = .; PROVIDE(sys_power_hal_ops_end = .); . = ALIGN(4); lp_target_begin = .; PROVIDE(lp_target_begin = .); KEEP(*(.lp_target)) lp_target_end = .; PROVIDE(lp_target_end = .); . = ALIGN(4); deepsleep_target_begin = .; PROVIDE(deepsleep_target_begin = .); KEEP(*(.deepsleep_target)) deepsleep_target_end = .; PROVIDE(deepsleep_target_end = .); crypto_begin = .; *(.crypto_ecdh_code) *(.crypto_ecdh_const) *(.crypto_bigint_code) *(.crypto_bigint_const) *(.crypto_code) *(.crypto_const) *(.ECDH_sample_code) *(.ECDH_sample_const) *(.uECC_code) *(.uECC_const) *(.hmac_code) *(.hmac_const) *(.hash_sample_code) *(.hash_sample_const) *(.aes_cmac_sample_code) *(.aes_cmac_sample_const) crypto_end = .; crypto_size = . - crypto_begin; *(.mem_code) *(.mem_const) *(.os_port_code) *(.os_port_const) __movable_function_start = .; *(movable.text.*); *(movable.stub.*); *(movable.region.*); __movable_function_end = .; __movable_function_size = __movable_function_end - __movable_function_start; system_text_end = .; system_code_total_size = system_text_end - system_text_start; . = ALIGN(4); lcd_interface_begin = .; KEEP(*(.lcd_if_info)) lcd_interface_end = .; ui_style_begin = .; KEEP(*(.ui_style)) ui_style_end = .; elm_event_handler_begin_JL = .; KEEP(*(.elm_event_handler_JL)) elm_event_handler_end_JL = .; elm_event_handler_begin_UPGRADE = .; KEEP(*(.elm_event_handler_UPGRADE)) elm_event_handler_end_UPGRADE = .; elm_event_handler_begin_DIAL = .; KEEP(*(.elm_event_handler_DIAL)) elm_event_handler_end_DIAL = .; control_event_handler_begin = .; KEEP(*(.control_event_handler)) control_event_handler_end = .; control_ops_begin = .; KEEP(*(.control_ops)) control_ops_end = .; battery_notify_begin = .; *(.battery_notify) battery_notify_end = .; . = ALIGN(4); media_text_start = .; . = ALIGN(4); *(.dns_16k_data) *(.dns_8k_data) *(.jlsp_const) *(.jlsp_code) *(.aec_code) *(.aec_const) *(.der_code) *(.der_const) *(.nlp_code) *(.nlp_const) *(.qmf_code) *(.qmf_const) *(.bt_audioplc_sparse_code) *(.bt_audioplc_code) *(.bt_audioplc_const) . = ALIGN(4); *(.res_code) *(.res_const) . = ALIGN(4); *(.ns_code) *(.ns_const) *(.opcore_maskrom) *(.bark_const) . = ALIGN(4); *(.g729_code) *(.g729_const) *(.g726_code) *(.g726_const) *(.wtg_dec_code) *(.wtg_dec_const) *(.wtg_dec_sparse_code) *(.wtg_dec_sparse_const) *(.wtgv2_code) *(.wtgv2_const) *(.wtgv2dec_code) *(.wtgv2dec_const) *(.wtgv2dec_str) *(.wtg_decv2_sparse_code) *(.bfilt_code) . = ALIGN(4); *(.mp3_decstream_const) *(.mp3_decstream_code) *(.mp3_decstream_sparse_code) *(.mp3_decstream_sparse_const) *(.mp3_dec_sparse_code) *(.mp3_dec_sparse_const) *(.mp3_dec_code) *(.mp3_dec_const) *(.mp3_const) *(.mp3_code) *(.msbc_code) *(.msbc_const) *(.mty_code) *(.mty_const) *(.mp3tsy_dec_code) *(.mp3tsy_dec_const) *(.mp3tsy_dec_sparse_code) *(.mp3tsy_dec_sparse_const) *(.sbc_code) *(.sbc_const) *(.sine_code) *(.sine_const) *(.wma_code) *(.wma_const) *(.wma_dec_code) *(.wma_dec_const) *(.wma_dec_sparse_code) *(.wma_dec_sparse_const) *(.wma_decstream_const) *(.wma_decstream_code) *(.wma_decstream_sparse_code) *(.wma_decstream_sparse_const) *(.amr_code) *(.amr_const) *(.midi_code) *(.midi_const) *(.audio_decoder_code) *(.audio_decoder_const) *(.mp3_encode_code) *(.mp3_encode_const) *(.media_device_code) *(.media_device_const) *(.audio_encoder_code) *(.audio_encoder_const) *(.mixer_code) *(.mixer_const) *(.stream_code) *(.stream_const) *(.dec_server_code) *(.dec_server_const) *(.rec_server_code) *(.rec_server_const) *(.auto_mute_code) *(.auto_mute_const) *(.plc_code) *(.plc_const) *(.wireless_sync_code) *(.wireless_sync_const) *(.fft_code) *(.fft_const) *(.mp3_enc_code) *(.mp3_enc_const) *(.mp3_enc_sparse_code) *(.mp3_enc_sparse_const) . = ALIGN(4); *(.mp2_encode_code) *(.mp2_encode_const) *(.mp2_encode_sparse_code) *(.mp2_encode_sparse_const) . = ALIGN(4); *(.adpcm_encode_code) *(.adpcm_encode_const) *(.adpcm_encode_sparse_code) *(.adpcm_encode_sparse_const) . = ALIGN(4); *(.m4a_dec_sparse_code) *(.m4a_dec_sparse_const) *(.aac_dec_sparse_code) *(.aac_dec_sparse_const) *(.bt_aac_dec_core_const) *(.amr_dec_const) *(.dts_dec_ff_const) *(.dts_dec_sparse_code) *(.dts_dec_sparse_const) *(.res_sparse_code) *(.ns_sparse_code ) *(.aec_sparse_code) *(.nlp_sparse_code) *(.der_sparse_code) *(.qmf_sparse_code) *(.sms_const); *(.sms_sparse_code); *(.sms_code); *(.resample_cal_code) *(.resample_cal_sparse_code) *(.resample_cal_const) *(.bt_compressor_sparse_const) *(.bt_compressor_sparse_code) *(.compressor_sparse_code) *(.compressor_sparse_const) *(.bt_limiter_sparse_const) *(.bt_limiter_sparse_code) *(.limiter_sparse_code) *(.limiter_sparse_const) *(.bt_crossOver_sparse_const) *(.bt_crossOver_sparse_code) *(.crossOver_sparse_code) *(.crossOver_sparse_const) *(.iap_code) *(.iap_const) *(.audio_bfilt_code) *(.audio_bfilt_const) *(.audio_buf_sync_code) *(.audio_buf_sync_const) *(.audio_dec_app_code) *(.audio_dec_app_const) *(.audio_dec_app_sync_code) *(.audio_dec_app_sync_const) *(.audio_dec_app_event_callback) *(.audio_dec_app_dec_run) *(.audio_dec_app_normal_run) *(.audio_dec_tone_event_callback) *(.audio_dig_vol_code) *(.audio_dig_vol_const) *(.audio_echo_reverb_code) *(.audio_echo_reverb_const) *(.echo_cal_code) *(.echo_cal_const) *(.platereverb_code) *(.platereverb_const) *(.reverb0_code) *(.reverb0_const) *(.reverb_cal_sparse_code) *(.audio_echo_src_code) *(.audio_echo_src_const) *(.audio_energy_detect_code) *(.audio_energy_detect_const) *(.audio_drc_code) *(.audio_drc_const) *(.drc_const) *(.drc_code) *(.audio_eq_drc_apply_code) *(.audio_eq_drc_apply_const) *(.audio_equalloudness_code) *(.audio_equalloudness_const) *(.audio_howling_code) *(.audio_howling_const) *(.howlings_phf_sparse_code) *(.audio_noisegate_code) *(.audio_noisegate_const) *(.noisegate_code) *(.noisegate_const) *(.noisegate_sparse_code) *(.noisegate_sparse_const) *(.audio_output_dac_code) *(.audio_output_dac_const) *(.audio_pemafrow_code) *(.audio_pemafrow_const) *(.audio_pitch_code) *(.audio_pitch_const) *(.audio_pitchspeed_code) *(.audio_pitchspeed_const) *(.audio_surround_code) *(.audio_surround_const) *(.audio_vbass_code) *(.audio_vbass_const) *(.audio_vocal_remove_code) *(.audio_vocal_remove_const) *(.audio_vocal_tract_synthesis_code) *(.audio_vocal_tract_synthesis_const) *(.eq_config_code) *(.eq_config_const) *(.eq_config_protocol_code) *(.eq_config_protocol_const) *(.spectrum_eq_code) *(.spectrum_eq_const) *(.spectrum_fft_code) *(.spectrum_fft_const) *(.audio_localtws_code) *(.audio_localtws_const) *(.audio_dec_localtws_code) *(.audio_dec_localtws_const) *(.audio_dec_a2dp_code) *(.audio_dec_a2dp_const) *(.audio_dec_esco_code) *(.audio_dec_esco_const) *(.audio_dec_file_code) *(.audio_dec_file_const) *(.audio_resample_code) *(.audio_resample_const) *(.audio_splicing_code) *(.audio_splicing_const) *(.channel_switch_code) *(.channel_switch_const) *(.sw_drc_code) *(.sw_drc_const) *(.aptx_decoder_code) *(.aptx_decoder_const) *(.ldac_decoder_code) *(.ldac_decoder_const) *(.speex_encoder_code) *(.speex_encoder_const) *(.sbc_encoder_code) *(.sbc_encoder_const) *(.opus_encoder_code) *(.opus_encoder_const) *(.prevent_task_fill_code) *(.prevent_task_fill_const) *(.audio_cfifo_code) *(.audio_cfifo_const) *(.audio_adc_code) *(.audio_adc_const) *(.audio_dac_code) *(.audio_dac_const) *(.audio_linein_code) *(.audio_linein_const) *(.audio_link_code) *(.audio_link_const) *(.audio_sample_sync_code) *(.audio_sample_sync_const) *(.audio_wireless_sync_code) *(.audio_wireless_sync_const) *(.audio_spdif_code) *(.audio_spdif_const) *(.audio_src_code) *(.audio_src_const) *(.audio_src_base_code) *(.audio_src_base_const) *(.effectrs_sync_code) *(.effectrs_sync_const) *(.eq_design_code) *(.eq_design_const) *(.hw_eq_code) *(.hw_eq_const) *(.iic_code) *(.iic_const) *(.mic_cap_code) *(.mic_cap_const) *(.sbc_hwaccel_code) *(.sbc_hwaccel_const) . = ALIGN(4); _audio_decoder_begin = .; PROVIDE(audio_decoder_begin = .); KEEP(*(.audio_decoder)) _audio_decoder_end = .; PROVIDE(audio_decoder_end = .); _audio_encoder_begin = .; PROVIDE(audio_encoder_begin = .); KEEP(*(.audio_encoder)) _audio_encoder_end = .; PROVIDE(audio_encoder_end = .); _audio_package_begin = .; PROVIDE(audio_package_begin = .); KEEP(*(.audio_package)) _audio_package_end = .; PROVIDE(audio_package_end = .); _audio_dev_begin = .; PROVIDE(audio_dev_begin = .); KEEP(*(.audio_device)) _audio_dev_end = .; PROVIDE(audio_dev_end = .); _audio_hwaccel_begin = .; PROVIDE(audio_hwaccel_begin = .); KEEP(*(.audio_hwaccel)) _audio_hwaccel_end = .; PROVIDE(audio_hwaccel_end = .); . = ALIGN(4); media_code_begin = .; *(.media.*.text) . = ALIGN(4); *(.crossOver_code) *(.crossOver_const) *(.bt_crossOver_const) *(.bt_crossOver_code) . = ALIGN(4); *(.compressor_code) *(.compressor_const) *(.bt_compressor_const) *(.bt_compressor_code) . = ALIGN(4); *(.limiter_code) *(.limiter_const) *(.bt_limiter_const) *(.bt_limiter_code) *(.drc_sparse_code) *(.drc_sparse_const) . = ALIGN(4); *(.lib_pitchshift_code) *(.lib_pitchshift_const) . = ALIGN(4); *(.sur_cal_const) *(.sur_cal_code) . = ALIGN(4); *(.reverb_cal_sparse_code) . = ALIGN(4); *(.dvol_ram_code) . = ALIGN(4); *(.reverb_cal_const) . = ALIGN(4); *(.reverb_cal_code) . = ALIGN(4); *(.stream_code_copy_run) *(.mixer_code_out_run) *(.audio_codec_code_frame_file) *(.buf_sync_code_nor_run) *(.resample_fastcal_const) *(.resample_fastcal_code) *(.resample_fastcal_sparse_code) *(.dynamic_eq_code) *(.dynamic_eq_const) *(.dynamic_eq_detect_code) *(.dynamic_eq_detect_const) *(.dynamic_eq_sparse_code) *(.dynamic_eq_sparse_const) *(.dynamic_eq_detect_sparse_code) *(.dynamic_eq_detect_sparse_const) *(.audio_mic_effect_const) *(.audio_mic_effect_code) *(.audio_mic_stream_const) *(.audio_mic_stream_code) *(.audio_effect_adj_const) *(.audio_effect_adj_code) *(.pitchshifter_code) *(.pitchshifter_const) *(.pitchshifter_sparse_code) *(.vbss_code) *(.vbss_sparse_code) *(.vbss_sparse_const) *(.wav_dec_sparse_code) *(.wav_dec_sparse_const) *(.wav_dec_code) *(.wav_dec_const) *(.wav_dec_data) *(.wav_data) *(.wav_const) *(.wav_code) *(.flac_dec_sparse_code) *(.flac_dec_sparse_const) *(.flac_dec_code) *(.flac_dec_const) *(.flac_dec_data) *(.flac_data) *(.flac_const) *(.flac_code) . = ALIGN(4); media_code_end = .; . = ALIGN(4); media_code_size = media_code_end - media_code_begin; . = ALIGN(4); media_text_end = .; media_code_total_size = media_text_end - media_text_start; . = ALIGN(4); update_target_begin = .; PROVIDE(update_target_begin = .); KEEP(*(.update_target)) update_target_end = .; PROVIDE(update_target_end = .); . = ALIGN(4); *(.text*) *(.LOG_TAG_CONST*) *(.rodata*) . = ALIGN(4); __VERSION_BEGIN = .; KEEP(*(.version)) __VERSION_END = .; . = ALIGN(4); text_code_end = .; } >code0 . = ORIGIN(ram0); _data_code_begin = . ; bank_code_run_addr = .; common_code_run_addr = .; .data ALIGN(4): { *(.data_magic) . = ALIGN(4); *(.flushinv_icache) *(.volatile_ram_code) *(.os_critical_code) *(.chargebox_code) *(.os_code) *(.os_const) *(.ui_ram) *(.fat_data_code) *(.gpio_ram) *(.LED_code) *(.LED_const) . = ALIGN(4); *(.usr_timer_const) *(.usr_timer_code) *(.timer_const) *(.timer_code) *(.cbuf_const) *(.cbuf_code) *(.fm_data_code) *(.fm_data_const) . = ALIGN(4); *(.fm_code) . = ALIGN(4); media_data_code_start = .; . = ALIGN(4); *(.sbc_eng_code) *(.pcm_code) *(.pcm_const) *(.audio_dec_pcm_code) *(.audio_dec_pcm_const) *(.stream_code_nor_run) *(.mixer_code_nor_run) *(.audio_codec_code) *(.audio_codec_code_read_file) *(.audio_src_code_nor_run) *(.src_base_code_nor_run) *(.audio_dac_code_nor_run) *(.audio_cfifo_code_nor_run) *(.audio_track_code) *(.audio_track_const) . = ALIGN(4); AudioEffects_data_code_begin = .; *(.howlings_phf_code) *(.howlings_phf_const) *(.notchhowling_code) *(.notchhowling_const) *(.notchhowling_sparse_code) *(.notchhowling_sparse_const) *(.audio_eq_code) *(.audio_eq_const) AudioEffects_data_code_end = .; AudioEffects_data_code_size = AudioEffects_data_code_end - AudioEffects_data_code_begin; media_data_code_end = .; . = ALIGN(4); _data_code_end = . ; _cpu_store_begin = . ; . = ALIGN(4); *(.data*) *(.cvsd_data) . = ALIGN(4); dec_board_param_mem_begin = .; KEEP(*(.dec_board_param_mem)) dec_board_param_mem_end = .; . = ALIGN(4); *(.sbc_eng_code) . = ALIGN(4); . = ALIGN(32); btstack_data_start = .; *(.bt_stack_data) *(.ble_db_data) *(.ble_sm_data) *(.ble_att_data) *(.ble_gatt_data) BTSTACK_LE_HOST_MESH_DATA_START = .; . = (. +3) & ~ 3; _net_buf_pool_list = .; *(._net_buf_pool.static.*) *(.ble_mesh_data) *(.ble_mesh_tinycrypt_data) BTSTACK_LE_HOST_MESH_DATA_SIZE = ABSOLUTE(. - BTSTACK_LE_HOST_MESH_DATA_START); btstack_data_end = .; . = ALIGN(4); btctler_data_start = .; BTCTLER_CONTROLLER_DATA_START = .; *(.bt_rf_data) *(.vendor_manager_data) *(.device_manager_data) *(.hci_controller_data) *(.hci_interface_data) BTCTLER_CONTROLLER_DATA_SIZE = ABSOLUTE(. - BTCTLER_CONTROLLER_DATA_START); BTCTLER_LE_CONTROLLER_DATA_START = .; *(.ble_ll_data) *(.ble_hci_data) *(.classic_hci_data) *(.ble_rf_data) BTCTLER_LE_CONTROLLER_DATA_SIZE = ABSOLUTE(. - BTCTLER_LE_CONTROLLER_DATA_START); BTCTLER_CL_DATA_START = .; *(.classic_lmp_data) *(.classic_lmp_auth_data) *(.classic_lmp_bigint_data) *(.classic_lmp_crypt_data) *(.classic_lmp_ecdh_data) *(.classic_lmp_linkbulk_data) *(.classic_lmp_hmac_data) *(.classic_rf_data) *(.classic_bb_data) BTCTLER_CL_DATA_SIZE = ABSOLUTE(. - BTCTLER_CL_DATA_START); btctler_data_end = .; . = ALIGN(4); . = ALIGN(4); system_data_start = .; _video_subdev_begin = .; PROVIDE(video_subdev_begin = .); KEEP(*(.video_subdev.0)) KEEP(*(.video_subdev.1)) KEEP(*(.video_subdev.2)) KEEP(*(.video_subdev.3)) KEEP(*(.video_subdev.4)) KEEP(*(.video_subdev.5)) _video_subdev_end = .; PROVIDE(video_subdev_end = .); _audio_subdev_begin = .; PROVIDE(audio_subdev_begin = .); KEEP(*(.audio_subdev.0)) KEEP(*(.audio_subdev.1)) KEEP(*(.audio_subdev.2)) KEEP(*(.audio_subdev.3)) _audio_subdev_end = .; PROVIDE(audio_subdev_end = .); _iic_device_begin = .; PROVIDE(iic_device_begin = .); KEEP(*(.iic)) _iic_device_end = .; PROVIDE(iic_device_end = .); _avin_spi_device_begin = .; PROVIDE(avin_spi_device_begin = .); KEEP(*(.sw_spi)) _avin_spi_device_end = .; PROVIDE(avin_spi_device_end = .); _video_dev_begin = .; PROVIDE(video_dev_begin = .); KEEP(*(.video_device)) _video_dev_end = .; PROVIDE(video_dev_end = .); _key_driver_ops_begin = .; PROVIDE(key_driver_ops_begin = .); KEEP(*(.key_driver_ops)) _key_driver_ops_end = .; PROVIDE(key_driver_ops_end = .); _touch_driver_begin = .; PROVIDE(touch_driver_begin = .); KEEP(*(.touch_driver)) _touch_driver_end = .; PROVIDE(touch_driver_end = .); _static_hi_timer_begin = .; PROVIDE(static_hi_timer_begin = .); KEEP(*(.hi_timer)) _static_hi_timer_end = .; PROVIDE(static_hi_timer_end = .); _sys_cpu_timer_begin = .; PROVIDE(sys_cpu_timer_begin = .); KEEP(*(.sys_cpu_timer)) _sys_cpu_timer_end = .; PROVIDE(sys_cpu_timer_end = .); _sys_config_begin = .; PROVIDE(sys_config_begin = .); KEEP(*(.sys_cfg)) _sys_config_end = .; PROVIDE(sys_config_end = .); _sys_fat_begin = .; PROVIDE(sys_fat_begin = .); KEEP(*(.fs_fat)) _sys_fat_end = .; PROVIDE(sys_fat_end = .); _app_begin = .; PROVIDE(app_begin = .); KEEP(*(.app)) _app_end = .; PROVIDE(app_end = .); _os_begin = .; PROVIDE(os_begin = .); *(.os_str) *(.os_data) _os_end = .; PROVIDE(os_end = .); *(.crypto_ecdh_data) *(.crypto_data) *(.mem_data) *(.os_port_data) *(.uECC_data) *(.ECDH_sample_data) __movable_slot_start = .; *(movable.slot.*); __movable_slot_end = .; system_data_end = .; . = ALIGN(4); media_data_start = .; . = ALIGN(4); EQ_COEFF_BASE = . ; . = EQ_COEFF_BASE + 4 * EQ_SECTION_NUM * 14; . = ALIGN(4); *(.jlsp_data) . = ALIGN(4); *(.dns_common_data) *(.dns_param_data_single) *(.dns_param_data_dual) . = ALIGN(4); *(.aec_data) . = ALIGN(4); *(.res_data) . = ALIGN(4); *(.ns_data) . = ALIGN(4); *(.der_data) . = ALIGN(4); *(.nlp_data) . = ALIGN(4); *(.qmf_data) . = ALIGN(4); *(.fft_data) . = ALIGN(4); *(.bt_audioplc_data) *(.sms_data) *(.pcm_data) *(.g729_data) *(.g726_data) *(.wtg_dec_data) *(.wtgv2_data) *(.wtgv2dec_data) *(.mp3_data) *(.mp3_dec_data) *(.msbc_data) *(.mty_data) *(.mp3tsy_dec_data) *(.sbc_data) *(.sine_data) *(.wma_data) *(.wma_dec_data) *(.amr_data) *(.midi_data) *(.audio_decoder_data) *(.mp3_encode_data) *(.media_device_data) *(.audio_encoder_data) *(.mixer_data) *(.stream_data) *(.dec_server_data) *(.rec_server_data) *(.auto_mute_data) *(.plc_data) *(.wireless_sync_data) *(.resample_cal_data) *(.bt_compressor_data) *(.bt_crossOver_data) *(.bt_limiter_data) *(.bt_compressor_sparse_data) *(.bt_limiter_sparse_data) *(.bt_crossOver_sparse_data) *(.iap_data) *(.audio_bfilt_data) *(.audio_buf_sync_data) *(.audio_dec_app_data) *(.audio_dec_app_sync_data) *(.audio_dig_vol_data) *(.audio_echo_reverb_data) *(.echo_cal_data) *(.reverb_cal_data) *(.reverb0_data) *(.platereverb_data) *(.audio_echo_src_data) *(.audio_energy_detect_data) *(.audio_eq_data) *(.audio_drc_data) *(.audio_eq_drc_apply_data) *(.audio_equalloudness_data) *(.audio_howling_data) *(.howlings_phf_data) *(.audio_noisegate_data) *(.audio_output_dac_data) *(.audio_pemafrow_data) *(.audio_pitch_data) *(.audio_pitchspeed_data) *(.audio_surround_data) *(.audio_vbass_data) *(.audio_vocal_remove_data) *(.audio_vocal_tract_synthesis_data) *(.eq_config_data) *(.eq_config_protocol_data) *(.spectrum_eq_data) *(.spectrum_fft_data) *(.audio_localtws_data) *(.audio_dec_localtws_data) *(.audio_dec_a2dp_data) *(.audio_dec_esco_data) *(.audio_dec_file_data) *(.audio_dec_pcm_data) *(.audio_resample_data) *(.audio_splicing_data) *(.channel_switch_data) *(.sw_drc_data) *(.aptx_decoder_data) *(.ldac_decoder_data) *(.speex_encoder_data) *(.sbc_encoder_data) *(.opus_encoder_data) *(.prevent_task_fill_data) *(.audio_cfifo_data) *(.audio_track_data) *(.audio_adc_data) *(.audio_dac_data) *(.audio_linein_data) *(.audio_link_data) *(.audio_sample_sync_data) *(.audio_wireless_sync_data) *(.audio_spdif_data) *(.audio_src_data) *(.audio_src_base_data) *(.effectrs_sync_data) *(.eq_design_data) *(.hw_eq_data) *(.iic_data) *(.mic_cap_data) *(.sbc_hwaccel_data) *(.resample_fastcal_data) *(.aac_data) *(.alac_data) . = ALIGN(4); *(.dec2tws_mem) . = ALIGN(4); *(.midi_mem) *(.midi_ctrl_mem) *(.lfwordana_data) *(.pitchshifter_data) media_data_end = .; . = ALIGN(4); } > ram0 .irq_stack ALIGN(32) : { *(.stack_magic) _cpu0_sstack_begin = .; PROVIDE(cpu0_sstack_begin = .); *(.stack) _cpu0_sstack_end = .; PROVIDE(cpu0_sstack_end = .); _stack_end = . ; *(.stack_magic0) . = ALIGN(4); *(.boot_info) } > ram0 .bss ALIGN(32) : { *(.usb_h_dma) *(.usb_ep0) *(.dec_mix_buff) *(.sd0_var) *(.sd1_var) *(.dac_buff) *(.bss) *(COMMON) *(.cvsd_bss) *(.volatile_ram) btctler_bss_start = .; BTCTLER_CONTROLLER_BSS_START = .; *(.bd_base) *(.bredr_rxtx_bulk) acl_tx_pool = .; *(.bredr_tx_bulk) acl_tx_pool_end = acl_tx_pool + (3 * 1024); . = acl_tx_pool_end; acl_rx_pool = .; *(.bredr_rx_bulk) acl_rx_pool_end = acl_rx_pool + (12 * 1024); . = acl_rx_pool_end; tws_bulk_pool = .; tws_bulk_pool_end = tws_bulk_pool; . = tws_bulk_pool_end; *(.bt_rf_bss) *(.hci_controller_bss) *(.hci_interface_bss) *(.device_manager_bss) *(.vendor_manager_bss) BTCTLER_CONTROLLER_BSS_SIZE = ABSOLUTE(. - BTCTLER_CONTROLLER_BSS_START); BTCTLER_LE_CONTROLLER_BSS_START = .; *(.ble_hci_bss) *(.ble_ll_bss) *(.ble_rf_bss) BTCTLER_LE_CONTROLLER_BSS_SIZE = ABSOLUTE(. - BTCTLER_LE_CONTROLLER_BSS_START); BTCTLER_CL_BSS_START = .; *(.classic_rf_bss) *(.classic_lmp_bss) *(.classic_lmp_auth_bss) *(.classic_lmp_bigint_bss) *(.classic_lmp_crypt_bss) *(.classic_lmp_ecdh_bss) *(.classic_lmp_linkbulk_bss) *(.classic_lmp_hmac_bss) *(.classic_bb_bss) *(.classic_hci_bss) BTCTLER_CL_BSS_SIZE = ABSOLUTE(. - BTCTLER_CL_BSS_START); btctler_bss_end = .; btstack_bss_start = .; *(.bt_stack_bss) *(.ble_db_bss) *(.ble_sm_bss) *(.ble_att_bss) *(.ble_gatt_bss) *(.btstack_pool) BTSTACK_LE_HOST_MESH_BSS_START = .; *(.ble_mesh_bss) *(.ble_mesh_tinycrypt_bss) BTSTACK_LE_HOST_MESH_BSS_SIZE = ABSOLUTE(. - BTSTACK_LE_HOST_MESH_BSS_START); btstack_bss_end = .; system_bss_start = .; . = ALIGN(4); *(.os_bss) *(.mem_heap) *(.memp_memory_x) *(.mem_bss) *(.os_port_bss) *(.uECC_bss) *(.ECDH_sample_bss) system_bss_end = .; media_bss_start = .; . = ALIGN(4); *(.jlsp_bss) *(.aec_bss) *(.res_bss) *(.ns_bss) *(.der_bss) *(.nlp_bss) *(.qmf_bss) *(.bt_audioplc_bss) *(.fft_bss) *(.sms_bss) *(.pcm_bss) *(.g729_bss) *(.g726_bss) *(.wtg_dec_bss) *(.wtgv2_bss) *(.wtgv2dec_bss) *(.mp3_bss) *(.mp3_dec_bss) *(.msbc_bss) *(.mty_bss) *(.mp3tsy_dec_bss) *(.sbc_bss) *(.sine_bss) *(.wma_bss) *(.wma_dec_bss) *(.amr_bss) *(.midi_bss) *(.audio_decoder_bss) *(.mp3_encode_bss) *(.media_device_bss) *(.audio_encoder_bss) *(.mixer_bss) *(.stream_bss) *(.dec_server_bss) *(.rec_server_bss) *(.auto_mute_bss) *(.plc_bss) *(.wireless_sync_bss) *(.audio_buf) *(.resample_cal_bss) *(.bt_crossOver_bss) *(.bt_compressor_bss) *(.bt_limiter_bss) *(.bt_limiter_sparse_bss) *(.bt_crossOver_sparse_bss) *(.bt_compressor_sparse_bss) *(.iap_bss) *(.audio_bfilt_bss) *(.audio_buf_sync_bss) *(.audio_dec_app_bss) *(.audio_dec_app_sync_bss) *(.audio_dig_vol_bss) *(.audio_echo_reverb_bss) *(.echo_cal_bss) *(.reverb_cal_bss) *(.reverb0_bss) *(.platereverb_bss) *(.audio_echo_src_bss) *(.audio_energy_detect_bss) *(.audio_eq_bss) *(.audio_drc_bss) *(.audio_eq_drc_apply_bss) *(.audio_equalloudness_bss) *(.audio_howling_bss) *(.howlings_phf_bss) *(.audio_noisegate_bss) *(.audio_output_dac_bss) *(.audio_pemafrow_bss) *(.audio_pitch_bss) *(.audio_pitchspeed_bss) *(.audio_surround_bss) *(.audio_vbass_bss) *(.audio_vocal_remove_bss) *(.audio_vocal_tract_synthesis_bss) *(.eq_config_bss) *(.eq_config_protocol_bss) *(.spectrum_eq_bss) *(.spectrum_fft_bss) *(.audio_localtws_bss) *(.audio_dec_localtws_bss) *(.audio_dec_a2dp_bss) *(.audio_dec_esco_bss) *(.audio_dec_file_bss) *(.audio_dec_pcm_bss) *(.audio_resample_bss) *(.audio_splicing_bss) *(.channel_switch_bss) *(.sw_drc_bss) *(.aptx_decoder_bss) *(.ldac_decoder_bss) *(.speex_encoder_bss) *(.sbc_encoder_bss) *(.opus_encoder_bss) *(.prevent_task_fill_bss) *(.audio_cfifo_bss) *(.audio_track_bss) *(.audio_adc_bss) *(.audio_dac_bss) *(.audio_linein_bss) *(.audio_link_bss) *(.audio_sample_sync_bss) *(.audio_wireless_sync_bss) *(.audio_spdif_bss) *(.audio_src_bss) *(.audio_src_base_bss) *(.effectrs_sync_bss) *(.eq_design_bss) *(.hw_eq_bss) *(.iic_bss) *(.mic_cap_bss) *(.sbc_hwaccel_bss) *(.resample_fastcal_bss) *(.lfwordana_bss) media_bss_end = .; . = (( . + 31) / 32 * 32); . = ALIGN(4); } > ram0 _cpu_store_end = . ; _prp_store_begin = . ; .prp_bss ALIGN(32) : { . = (( . + 31) / 32 * 32); } > ram0 _prp_store_end = . ; .bss ALIGN(32) : { NVRAM_DATA_START = .; *(.non_volatile_ram) NVRAM_DATA_SIZE = ABSOLUTE(. - NVRAM_DATA_START); . = ALIGN(4); NVRAM_END = .; _nv_pre_begin = . ; *(.src_filt) *(.src_dma) . = ALIGN(4); } > ram0 overlay_begin = .; OVERLAY : NOCROSSREFS AT(0x200000) SUBALIGN(4) { .overlay_aec { LONG(0xFFFFFFFF); o_aec_end = .; *(.aec_mem) *(.msbc_enc) } .overlay_mp3 { LONG(0xFFFFFFFF); o_mp3_end = .; *(.mp3_mem) *(.mp3_ctrl_mem) *(.mp3pick_mem) *(.mp3pick_ctrl_mem) } .overlay_wma { LONG(0xFFFFFFFF); o_wma_end = .; *(.wma_mem) *(.wma_ctrl_mem) *(.wmapick_mem) *(.wmapick_ctrl_mem) } .overlay_wav { LONG(0xFFFFFFFF); *(.wav_bss) *(.wav_dec_bss) *(.wav_mem) *(.wav_ctrl_mem) } .overlay_ape { *(.ape_mem) *(.ape_ctrl_mem) *(.ape_dec_sparse_code) *(.ape_dec_sparse_const) *(.ape_dec_code) *(.ape_dec_const) *(.ape_dec_data) *(.ape_dec_bss) LONG(0xFFFFFFFF); *(.ape_bss) *(.ape_data) *(.ape_const) *(.ape_code) } .overlay_flac { LONG(0xFFFFFFFF); *(.flac_mem) *(.flac_ctrl_mem) *(.flac_dec_bss) *(.flac_bss) } .overlay_m4a { *(.m4a_dec_code) *(.m4a_dec_ff_const) *(.m4a_dec_const) *(.m4a_dec_data) *(.m4a_data) *(.m4a_const) *(.m4a_code) *(.m4apick_mem) *(.m4apick_ctrl_mem) LONG(0xFFFFFFFF); *(.m4a_mem) *(.m4a_ctrl_mem) *(.m4a_dec_bss) *(.m4a_bss) *(.aac_ctrl_mem) *(.aac_bss) *(.alac_ctrl_mem) *(.alac_bss) } .overlay_amr { *(.amr_dec_sparse_code) *(.amr_dec_sparse_const) *(.amr_dec_code) *(.amr_dec_data) LONG(0xFFFFFFFF); *(.amr_mem) *(.amr_ctrl_mem) *(.amr_dec_bss) } .overlay_dts { *(.dts_dec_code) *(.dts_dec_data) *(.dts_data) *(.dts_const) *(.dts_code) LONG(0xFFFFFFFF); *(.dts_mem) *(.dts_ctrl_mem) *(.dts_dec_bss) *(.dts_bss) } .overlay_fm { LONG(0xFFFFFFFF); o_fm_end = .; *(.fm_mem) *(.linein_pcm_mem) } .overlay_pc { *(.usb_audio_play_dma) *(.usb_audio_rec_dma) *(.uac_rx) *(.mass_storage) *(.usb_msd_dma) *(.usb_hid_dma) *(.usb_iso_dma) *(.usb_cdc_dma) *(.uac_var) *(.usb_config_var) *(.cdc_var) } } > ram0 overlay_end = .; ASSERT(overlay_end <= overlay_begin + 64k, "overlay overflow 64k!") RAM_USED = .; . =ORIGIN(ram1); .mmu_tlb ALIGN(0x4000): { *(.mmu_tlb_segment); } > ram1 .bss1 ALIGN(32) : { } > ram1 RAM1_USED = .; } SECTIONS { .data : ALIGN(4) { update_data_start = .; update_data_end = .; } > ram0 .bss (NOLOAD) :ALIGN(4) { update_bss_start = .; *(.update_bss) update_bss_end = .; } > ram0 .text : ALIGN(4) { update_code_start = .; *(.bt_updata_ram_code) *(.update_const) *(.update_code) update_code_end = .; } > code0 UPDATE_CODE_TOTAL_SIZE = update_code_end - update_code_start; } SECTIONS { .data : ALIGN(4) { driver_data_start = .; CLOCK_DATA_START = .; *(.clock_data) CLOCK_DATA_SIZE = ABSOLUTE(. - CLOCK_DATA_START); *(.debug_data) *(.power_data) *(.uart_data) driver_data_end = .; } > ram0 .bss (NOLOAD) :ALIGN(4) { driver_bss_start = .; CLOCK_BSS_START = .; *(.clock_bss) CLOCK_BSS_SIZE = ABSOLUTE(. - CLOCK_BSS_START); *(.debug_bss) *(.power_bss) *(.uart_bss) *(.sd_var) driver_bss_end = .; } > ram0 .text : ALIGN(4) { driver_code_start = .; . = ALIGN(4); _SPI_CODE_START = . ; *(.spi_code) . = ALIGN(4); _SPI_CODE_END = . ; clock_critical_handler_begin = .; KEEP(*(.clock_critical_txt)) clock_critical_handler_end = .; CLOCK_CODE_START = .; *(.clock_code) *(.clock_const) CLOCK_CODE_SIZE = ABSOLUTE(. - CLOCK_CODE_START); *(.debug_code) *(.debug_const) *(.power_code) *(.power_const) *(.uart_code) *(.uart_const) driver_code_end = .; . = ALIGN(4); } > code0 DRIVER_RAM_TOTAL = (driver_data_end - driver_data_start) + (driver_bss_end - driver_bss_start); DRIVER_CODE_TOTAL = (driver_code_end - driver_code_start); } text_begin = ADDR(.text) ; text_size = SIZEOF(.text) ; text_end = ADDR(.text) + SIZEOF(.text) ; bss_begin = ADDR(.bss) ; bss_size = SIZEOF(.bss); bss1_begin = ADDR(.bss1) ; bss1_size = SIZEOF(.bss1); data_addr = ADDR(.data) ; data_begin = text_begin + text_size; data_size = SIZEOF(.data) ; psram_vaddr = ADDR(.psram_text) ; psram_laddr = text_begin + text_size + data_size; psram_text_size = SIZEOF(.psram_text) ; bank_code_load_addr = data_begin + data_size; aec_addr = ADDR(.overlay_aec); aec_begin = text_begin + text_size + data_size; aec_size = o_aec_end - aec_addr; wav_addr = ADDR(.overlay_wav); wav_begin = aec_begin + aec_size; wav_size = SIZEOF(.overlay_wav); ape_addr = ADDR(.overlay_ape); ape_begin = wav_begin + wav_size; ape_size = SIZEOF(.overlay_ape); flac_addr = ADDR(.overlay_flac); flac_begin = ape_begin + ape_size; flac_size = SIZEOF(.overlay_flac); m4a_addr = ADDR(.overlay_m4a); m4a_begin = flac_begin + flac_size; m4a_size = SIZEOF(.overlay_m4a); amr_addr = ADDR(.overlay_amr); amr_begin = m4a_begin + m4a_size; amr_size = SIZEOF(.overlay_amr); dts_addr = ADDR(.overlay_dts); dts_begin = amr_begin + amr_size; dts_size = SIZEOF(.overlay_dts); fm_addr = ADDR(.overlay_fm); fm_begin = dts_begin + dts_size; fm_size = o_fm_end - fm_addr; _HEAP_BEGIN = RAM_USED; PROVIDE(HEAP_BEGIN = RAM_USED); _HEAP_END = RAM_END; PROVIDE(HEAP_END = RAM_END); _HEAP_SIZE = HEAP_END - HEAP_BEGIN; PROVIDE(HEAP_SIZE = HEAP_END - HEAP_BEGIN); _HEAP1_BEGIN = RAM1_USED; PROVIDE(HEAP1_BEGIN = RAM1_USED); _HEAP1_END = RAM1_END; PROVIDE(HEAP1_END = RAM1_END); _HEAP1_SIZE = HEAP1_END - HEAP1_BEGIN; PROVIDE(HEAP1_SIZE = HEAP1_END - HEAP1_BEGIN); _MALLOC_SIZE = HEAP_SIZE + HEAP1_SIZE; PROVIDE(MALLOC_SIZE = HEAP_SIZE + HEAP1_SIZE);