2025-10-29 13:10:02 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-10-30 16:14:14 +08:00
|
|
|
|
2025-10-29 13:10:02 +08:00
|
|
|
lp_signature_set = ABSOLUTE(0x1fd6c);
|
|
|
|
|
memmem = ABSOLUTE(0x1fd70);
|
|
|
|
|
memcpy = ABSOLUTE(0x1fd74);
|
|
|
|
|
memmove = ABSOLUTE(0x1fd78);
|
|
|
|
|
memcmp = ABSOLUTE(0x1fd7c);
|
|
|
|
|
memset = ABSOLUTE(0x1fd80);
|
|
|
|
|
strcmp = ABSOLUTE(0x1fd84);
|
|
|
|
|
strcpy = ABSOLUTE(0x1fd88);
|
|
|
|
|
strlen = ABSOLUTE(0x1fd8c);
|
|
|
|
|
strncmp = ABSOLUTE(0x1fd90);
|
|
|
|
|
strstr = ABSOLUTE(0x1fd94);
|
|
|
|
|
strchr = ABSOLUTE(0x1fd98);
|
|
|
|
|
__divdi3 = ABSOLUTE(0x1fd9c);
|
|
|
|
|
__udivmoddi4 = ABSOLUTE(0x1fda0);
|
|
|
|
|
__adddf3 = ABSOLUTE(0x1fda4);
|
|
|
|
|
__fixdfsi = ABSOLUTE(0x1fda8);
|
|
|
|
|
flush_dcache = ABSOLUTE(0x1fdac);
|
|
|
|
|
flushinv_dcache = ABSOLUTE(0x1fdb0);
|
|
|
|
|
IcuWaitIdle = ABSOLUTE(0x1fdb4);
|
|
|
|
|
DcuWaitIdle = ABSOLUTE(0x1fdb8);
|
|
|
|
|
IcuInitial = ABSOLUTE(0x1fdbc);
|
|
|
|
|
DcuInitial = ABSOLUTE(0x1fdc0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sfc_drop_cache = ABSOLUTE(0x1fdcc);
|
|
|
|
|
chip_crc16 = ABSOLUTE(0x1fdd0);
|
|
|
|
|
CrcDecode = ABSOLUTE(0x1fdd4);
|
|
|
|
|
get_flash_file_key = ABSOLUTE(0x1fdd8);
|
|
|
|
|
dec_isd_cfg_ini = ABSOLUTE(0x1fddc);
|
|
|
|
|
_jlfs_mount = ABSOLUTE(0x1fde0);
|
|
|
|
|
sfc_boot = ABSOLUTE(0x1fde4);
|
|
|
|
|
mask_init = ABSOLUTE(0x1fde8);
|
|
|
|
|
|
|
|
|
|
nvram_set_boot_state = ABSOLUTE(0x1fdf0);
|
|
|
|
|
chip_reset = ABSOLUTE(0x1fdf4);
|
|
|
|
|
the_debug_isr = ABSOLUTE(0x1fdf8);
|
|
|
|
|
print = ABSOLUTE(0x1fdfc);
|
|
|
|
|
sprintf = ABSOLUTE(0x1fe00);
|
|
|
|
|
printf = ABSOLUTE(0x1fe04);
|
|
|
|
|
puts = ABSOLUTE(0x1fe08);
|
|
|
|
|
doe = ABSOLUTE(0x1fe0c);
|
|
|
|
|
spi_get_port = ABSOLUTE(0x1fe10);
|
|
|
|
|
_pll_init = ABSOLUTE(0x1fe14);
|
|
|
|
|
flash_poweron = ABSOLUTE(0x1fe18);
|
|
|
|
|
spi_unmount = ABSOLUTE(0x1fe1c);
|
|
|
|
|
spi_port_io_init = ABSOLUTE(0x1fe20);
|
|
|
|
|
usb_slave_mode = ABSOLUTE(0x1fe24);
|
|
|
|
|
LZ4_setStreamDecode = ABSOLUTE(0x1fe28);
|
|
|
|
|
LZ4_decompress_safe_continue = ABSOLUTE(0x1fe2c);
|
|
|
|
|
LZ4_decompress_generic = ABSOLUTE(0x1fe30);
|
|
|
|
|
_sdk_mkey_lock = ABSOLUTE(0x1fe34);
|
|
|
|
|
g_hash_function = ABSOLUTE(0x1fe38);
|
|
|
|
|
f1_hash_function = ABSOLUTE(0x1fe3c);
|
|
|
|
|
f2_hash_function = ABSOLUTE(0x1fe40);
|
|
|
|
|
f3_hash_function = ABSOLUTE(0x1fe44);
|
|
|
|
|
h2_hash_function = ABSOLUTE(0x1fe48);
|
|
|
|
|
h3_hash_function = ABSOLUTE(0x1fe4c);
|
|
|
|
|
h4_hash_function = ABSOLUTE(0x1fe50);
|
|
|
|
|
h5_hash_function = ABSOLUTE(0x1fe54);
|
|
|
|
|
g_function = ABSOLUTE(0x1fe58);
|
|
|
|
|
f1_function = ABSOLUTE(0x1fe5c);
|
|
|
|
|
f2_function = ABSOLUTE(0x1fe60);
|
|
|
|
|
f3_function = ABSOLUTE(0x1fe64);
|
|
|
|
|
sha256Compute = ABSOLUTE(0x1fe68);
|
|
|
|
|
uECC_compute_public_key = ABSOLUTE(0x1fe6c);
|
|
|
|
|
uECC_shared_secret = ABSOLUTE(0x1fe70);
|
|
|
|
|
bi_initialize = ABSOLUTE(0x1fe74);
|
|
|
|
|
bi_read_from_byte = ABSOLUTE(0x1fe78);
|
|
|
|
|
bi_poly_mod2 = ABSOLUTE(0x1fe7c);
|
|
|
|
|
bi_poly_mul = ABSOLUTE(0x1fe80);
|
|
|
|
|
trim = ABSOLUTE(0x1fe84);
|
|
|
|
|
bi_wirte_to_byte = ABSOLUTE(0x1fe88);
|
|
|
|
|
bi_free = ABSOLUTE(0x1fe8c);
|
|
|
|
|
bi_terminate = ABSOLUTE(0x1fe90);
|
|
|
|
|
get_cvsd_codec_ops = ABSOLUTE(0x1fe94);
|
|
|
|
|
wtgv2_silk_NLSF_CB_NB_MB = ABSOLUTE(0x18590);
|
|
|
|
|
wtgv2_LSFCosTab_FIX_Q12 = ABSOLUTE(0x1848c);
|
|
|
|
|
icdf_global_table = ABSOLUTE(0x18a88);
|
|
|
|
|
get_wtgv2dec_ops = ABSOLUTE(0x1fe98);
|
|
|
|
|
wtgv2_silk_Decode = ABSOLUTE(0x1fe9c);
|
|
|
|
|
wtgv2_silk_decode_frame = ABSOLUTE(0x1fea0);
|
|
|
|
|
wtgv2_silk_decoder_set_fs = ABSOLUTE(0x1fea4);
|
|
|
|
|
wtgv2_silk_decode_indices = ABSOLUTE(0x1fea8);
|
|
|
|
|
wtgv2_silk_decode_pulses = ABSOLUTE(0x1feac);
|
|
|
|
|
wtgv2_silk_decode_parameters = ABSOLUTE(0x1feb0);
|
|
|
|
|
wtgv2_silk_decode_core = ABSOLUTE(0x1feb4);
|
|
|
|
|
logAprx_CORDIC_float = ABSOLUTE(0x1feb8);
|
|
|
|
|
expAprx_CORDIC_float = ABSOLUTE(0x1febc);
|
|
|
|
|
magnAprx_float = ABSOLUTE(0x1fec0);
|
|
|
|
|
MatrixCopy_float_c_c = ABSOLUTE(0x1fec4);
|
|
|
|
|
MatrixCopy_float_f_f = ABSOLUTE(0x1fec8);
|
|
|
|
|
MatrixEwMulAndSumOneDim_float_c_c_c_s0 = ABSOLUTE(0x1fecc);
|
|
|
|
|
MatrixEwMulAndSumOneDim_float_c_c_c_s1 = ABSOLUTE(0x1fed0);
|
|
|
|
|
MatrixEwMulAndSumOneDim_float_f_f_f_s0 = ABSOLUTE(0x1fed4);
|
|
|
|
|
MatrixEwMulAndSumOneDim_float_f_f_f_s1 = ABSOLUTE(0x1fed8);
|
|
|
|
|
MatrixEwConjMulAndSumOneDim_float_c_c_c_s0 = ABSOLUTE(0x1fedc);
|
|
|
|
|
MatrixEwConjMulAndSumOneDim_float_c_c_c_s1 = ABSOLUTE(0x1fee0);
|
|
|
|
|
VecMeanSq_s16_f32 = ABSOLUTE(0x1fee4);
|
|
|
|
|
VecOverShift_s16_f32 = ABSOLUTE(0x1fee8);
|
|
|
|
|
VecMinus_s16_f32_f32 = ABSOLUTE(0x1feec);
|
|
|
|
|
VectorCopy_f32_s16 = ABSOLUTE(0x1fef0);
|
|
|
|
|
VecEleMul_s16_s16_f32 = ABSOLUTE(0x1fef4);
|
|
|
|
|
VecEleMul_f32_s16_f32 = ABSOLUTE(0x1fef8);
|
|
|
|
|
VecMeanSq_float_f_f = ABSOLUTE(0x1fefc);
|
|
|
|
|
VectorSet_float_f_f = ABSOLUTE(0x1ff00);
|
|
|
|
|
VecMagRecAve_float_c_f_f = ABSOLUTE(0x1ff04);
|
|
|
|
|
VecMulScalar_float_c_f_c = ABSOLUTE(0x1ff08);
|
|
|
|
|
VecConjEleMul_float_c_c_c = ABSOLUTE(0x1ff0c);
|
|
|
|
|
VecPlus_float_f_f_f = ABSOLUTE(0x1ff10);
|
|
|
|
|
VecDivide_float_c_f_c_f = ABSOLUTE(0x1ff14);
|
|
|
|
|
VecPlus_float_c_c_c = ABSOLUTE(0x1ff18);
|
|
|
|
|
VecConjMulRecAve_float_c_c_c_f = ABSOLUTE(0x1ff1c);
|
|
|
|
|
VecGetMag_float_c_f = ABSOLUTE(0x1ff20);
|
|
|
|
|
VecMax_float_f_f = ABSOLUTE(0x1ff24);
|
|
|
|
|
VecRecAve_float_f_f_f = ABSOLUTE(0x1ff28);
|
|
|
|
|
VecEleMul_float_f_f_f = ABSOLUTE(0x1ff2c);
|
|
|
|
|
VecMagAndDiv_float_c_f_f_f = ABSOLUTE(0x1ff30);
|
|
|
|
|
VecMin_float_f_f = ABSOLUTE(0x1ff34);
|
|
|
|
|
VecMinus_float_f_f_f = ABSOLUTE(0x1ff38);
|
|
|
|
|
VecMean_float_f_f = ABSOLUTE(0x1ff3c);
|
|
|
|
|
VecEleMul_float_c_f_c = ABSOLUTE(0x1ff40);
|
|
|
|
|
VecMeanSqu_float_c_f = ABSOLUTE(0x1ff44);
|
|
|
|
|
VecCopy_float_f_f = ABSOLUTE(0x1ff48);
|
|
|
|
|
VecMin_float_f_f_f = ABSOLUTE(0x1ff4c);
|
|
|
|
|
VecDivide_float_f_f_f_f = ABSOLUTE(0x1ff50);
|
|
|
|
|
VecCompBT_float_f_f_f = ABSOLUTE(0x1ff54);
|
|
|
|
|
VecCondCopy_float_f_f_f = ABSOLUTE(0x1ff58);
|
|
|
|
|
VecMulScalar_float_f_f_f = ABSOLUTE(0x1ff5c);
|
|
|
|
|
VecPlusScalar_float_f_f_f = ABSOLUTE(0x1ff60);
|
|
|
|
|
VecMinScalar_float_f_f_f = ABSOLUTE(0x1ff64);
|
|
|
|
|
VecOpposite_float_f_f = ABSOLUTE(0x1ff68);
|
|
|
|
|
VecEleMla_float_f_f_f = ABSOLUTE(0x1ff6c);
|
|
|
|
|
VecEleMla_float_c_c_c = ABSOLUTE(0x1ff70);
|
|
|
|
|
VecMinus_float_c_c_c = ABSOLUTE(0x1ff74);
|
|
|
|
|
VecDotProduct_float_f_f_f = ABSOLUTE(0x1ff78);
|
|
|
|
|
VecDotProduct_float_c_c_c = ABSOLUTE(0x1ff7c);
|
|
|
|
|
VecDotProduct_float_c_f_c = ABSOLUTE(0x1ff80);
|
|
|
|
|
VecCopy_float_c_c = ABSOLUTE(0x1ff84);
|
|
|
|
|
VecCopy_float_f_c = ABSOLUTE(0x1ff88);
|
|
|
|
|
VecConjDotProduct_float_c_c_c = ABSOLUTE(0x1ff8c);
|
|
|
|
|
VecNormalize_float_c_c_f = ABSOLUTE(0x1ff90);
|
|
|
|
|
VecRecAve_float_c_c_f = ABSOLUTE(0x1ff94);
|
|
|
|
|
VecOverlapShift_float_f_f_i = ABSOLUTE(0x1ff98);
|
|
|
|
|
VecMax_float_f_f_f = ABSOLUTE(0x1ff9c);
|
|
|
|
|
VecConjEwMulAndDiv_float_c_c_f_f_c = ABSOLUTE(0x1ffa0);
|
|
|
|
|
VecPlusMulScalar_float_c_c_f_c = ABSOLUTE(0x1ffa4);
|
|
|
|
|
VecCondCopy_float_c_i_c = ABSOLUTE(0x1ffa8);
|
|
|
|
|
VecEleMulAndDiv_float_f_f_f_f_f = ABSOLUTE(0x1ffac);
|
|
|
|
|
VectorSet_float_f_c = ABSOLUTE(0x1ffb0);
|
|
|
|
|
VecDivScalar_float_f_f_f = ABSOLUTE(0x1ffb4);
|
|
|
|
|
VecDivScalar_float_c_f_c = ABSOLUTE(0x1ffb8);
|
|
|
|
|
VecPlusScalar_float_c_f_c = ABSOLUTE(0x1ffbc);
|
|
|
|
|
VecMinScalar_float_c_f_c = ABSOLUTE(0x1ffc0);
|
|
|
|
|
mdct_tab_256 = ABSOLUTE(0x19000);
|
|
|
|
|
mdct_tab_2048 = ABSOLUTE(0x19200);
|
|
|
|
|
sine_long_1024 = ABSOLUTE(0x1a200);
|
|
|
|
|
sine_short_128 = ABSOLUTE(0x1b200);
|
|
|
|
|
kbd_long_1024 = ABSOLUTE(0x1b400);
|
|
|
|
|
kbd_short_128 = ABSOLUTE(0x1c400);
|
|
|
|
|
Huffmancb_SCL = ABSOLUTE(0x1c634);
|
|
|
|
|
num_swb_960_window = ABSOLUTE(0x1c844);
|
|
|
|
|
num_swb_1024_window = ABSOLUTE(0x1c850);
|
|
|
|
|
num_swb_128_window = ABSOLUTE(0x1c85c);
|
|
|
|
|
swb_offset_1024_96 = ABSOLUTE(0x1c868);
|
|
|
|
|
swb_offset_128_96 = ABSOLUTE(0x1c8bc);
|
|
|
|
|
swb_offset_1024_64 = ABSOLUTE(0x1c8d6);
|
|
|
|
|
swb_offset_128_64 = ABSOLUTE(0x1c936);
|
|
|
|
|
swb_offset_1024_48 = ABSOLUTE(0x1c950);
|
|
|
|
|
swb_offset_128_48 = ABSOLUTE(0x1c9b4);
|
|
|
|
|
swb_offset_1024_32 = ABSOLUTE(0x1c9d2);
|
|
|
|
|
swb_offset_1024_24 = ABSOLUTE(0x1ca3a);
|
|
|
|
|
swb_offset_128_24 = ABSOLUTE(0x1ca9a);
|
|
|
|
|
swb_offset_1024_16 = ABSOLUTE(0x1caba);
|
|
|
|
|
swb_offset_128_16 = ABSOLUTE(0x1cb12);
|
|
|
|
|
swb_offset_1024_8 = ABSOLUTE(0x1cb32);
|
|
|
|
|
swb_offset_128_8 = ABSOLUTE(0x1cb84);
|
|
|
|
|
swb_offset_1024_window = ABSOLUTE(0x1cba4);
|
|
|
|
|
swb_offset_128_window = ABSOLUTE(0x1cbd4);
|
|
|
|
|
iq_table = ABSOLUTE(0x1cc04);
|
|
|
|
|
tns_coef_0_3 = ABSOLUTE(0x1d008);
|
|
|
|
|
tns_coef_0_4 = ABSOLUTE(0x1d048);
|
|
|
|
|
tns_coef_1_3 = ABSOLUTE(0x1d088);
|
|
|
|
|
tns_coef_1_4 = ABSOLUTE(0x1d0c8);
|
|
|
|
|
pow05_table = ABSOLUTE(0x1d108);
|
|
|
|
|
sample_rates = ABSOLUTE(0x1d124);
|
|
|
|
|
pred_sfb_max = ABSOLUTE(0x1d154);
|
|
|
|
|
tns_sbf_max = ABSOLUTE(0x1d160);
|
|
|
|
|
Huffmancb_1 = ABSOLUTE(0x1d1a0);
|
|
|
|
|
Huffmancb_2 = ABSOLUTE(0x1d338);
|
|
|
|
|
Huffmancb_3 = ABSOLUTE(0x1d470);
|
|
|
|
|
Huffmancb_4 = ABSOLUTE(0x1d5a8);
|
|
|
|
|
Huffmancb_5 = ABSOLUTE(0x1d6d8);
|
|
|
|
|
Huffmancb_6 = ABSOLUTE(0x1d820);
|
|
|
|
|
Huffmancb_7 = ABSOLUTE(0x1d960);
|
|
|
|
|
Huffmancb_8 = ABSOLUTE(0x1da58);
|
|
|
|
|
Huffmancb_9 = ABSOLUTE(0x1db50);
|
|
|
|
|
Huffmancb_10 = ABSOLUTE(0x1ddf0);
|
|
|
|
|
Huffmancb_11 = ABSOLUTE(0x1e080);
|
|
|
|
|
AACcodeBookDTable = ABSOLUTE(0x1e540);
|
|
|
|
|
AAC_SFHUFF_TAB = ABSOLUTE(0x1c83c);
|
|
|
|
|
get_aac_ops = ABSOLUTE(0x1ffc4);
|
|
|
|
|
silk_NLSF_CB_WB = ABSOLUTE(0x1e5b8);
|
|
|
|
|
silk_LTP_vq_ptrs_Q7 = ABSOLUTE(0x1ea5c);
|
|
|
|
|
get_opus_enc_ops = ABSOLUTE(0x1ffc8);
|
|
|
|
|
opus_encode = ABSOLUTE(0x1ffcc);
|
|
|
|
|
silk_Encode = ABSOLUTE(0x1ffd0);
|
|
|
|
|
silk_encode_do_VAD_FIX = ABSOLUTE(0x1ffd4);
|
|
|
|
|
silk_encode_frame_FIX = ABSOLUTE(0x1ffd8);
|
|
|
|
|
silk_find_pitch_lags_FIX = ABSOLUTE(0x1ffdc);
|
|
|
|
|
silk_noise_shape_analysis_FIX = ABSOLUTE(0x1ffe0);
|
|
|
|
|
silk_find_pred_coefs_FIX = ABSOLUTE(0x1ffe4);
|
|
|
|
|
silk_process_gains_FIX = ABSOLUTE(0x1ffe8);
|
|
|
|
|
silk_prefilter_FIX = ABSOLUTE(0x1ffec);
|
|
|
|
|
silk_NSQ_del_dec_c = ABSOLUTE(0x1fff0);
|
|
|
|
|
silk_encode_indices = ABSOLUTE(0x1fff4);
|
|
|
|
|
silk_encode_pulses = ABSOLUTE(0x1fff8);
|
|
|
|
|
silk_ana_filt_bank_1 = ABSOLUTE(0x1fffc);
|
|
|
|
|
STFT_Win_FixHalf_M512_D160 = ABSOLUTE(0x3804);
|
|
|
|
|
STFT_Win_FixHalf_M256_D160 = ABSOLUTE(0x3c04);
|
|
|
|
|
STFT_Win_FixHalf_M256_D80 = ABSOLUTE(0x3e04);
|
|
|
|
|
STFT_Win_FixHalf_M128_D80 = ABSOLUTE(0x4004);
|
|
|
|
|
WOLAAnalysisFilter_Float_M64_m4_r1 = ABSOLUTE(0x4);
|
|
|
|
|
WOLASynthesisFilter_Float_M64_m4_r1 = ABSOLUTE(0x404);
|
|
|
|
|
WOLAAnalysisFilter_Float_M128_m4_r1 = ABSOLUTE(0x804);
|
|
|
|
|
WOLASynthesisFilter_Float_M128_m4_r1 = ABSOLUTE(0x1004);
|
|
|
|
|
WOLAAnalysisFilter_Float_M256_m4_r1 = ABSOLUTE(0x1804);
|
|
|
|
|
WOLASynthesisFilter_Float_M256_m4_r1 = ABSOLUTE(0x2804);
|
|
|
|
|
quantize_intervals_LF = ABSOLUTE(0x9914);
|
|
|
|
|
invert_quantize_dither_factors_LF = ABSOLUTE(0x9a18);
|
|
|
|
|
quantize_dither_factors_LF = ABSOLUTE(0x9b1c);
|
|
|
|
|
quantize_factor_select_offset_LF = ABSOLUTE(0x9c20);
|
|
|
|
|
hd_quantize_intervals_LF = ABSOLUTE(0x9ca4);
|
|
|
|
|
boot_arg_list = ABSOLUTE(0x19fc28);
|
|
|
|
|
_IRQ_MEM_ADDR = ABSOLUTE(0x19fe00);
|
|
|
|
|
_MASK_MEM_BEGIN = ABSOLUTE(0x19fc00);
|
|
|
|
|
_MASK_MEM_SIZE = ABSOLUTE(0x1a4);
|
|
|
|
|
|
|
|
|
|
EXTERN(
|
|
|
|
|
_start
|
|
|
|
|
|
|
|
|
|
sdfile_vfs_ops
|
|
|
|
|
sbc_decoder
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
msbc_decoder
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sbc_hwaccel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cvsd_decoder
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pcm_decoder
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mp3_decoder
|
|
|
|
|
wtgv2_decoder
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
aac_decoder
|
|
|
|
|
cvsd_encoder
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
msbc_encoder
|
|
|
|
|
audio_dac_driver
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
UPDATA_SIZE = 0x80;
|
|
|
|
|
UPDATA_BEG = _MASK_MEM_BEGIN - UPDATA_SIZE;
|
|
|
|
|
UPDATA_BREDR_BASE_BEG = 0x1A0000;
|
|
|
|
|
|
|
|
|
|
RAM_LIMIT_L = 0x100000;
|
|
|
|
|
RAM_LIMIT_H = UPDATA_BEG;
|
|
|
|
|
PHY_RAM_SIZE = RAM_LIMIT_H - RAM_LIMIT_L;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ISR_BASE = _IRQ_MEM_ADDR;
|
|
|
|
|
ROM_RAM_SIZE = _MASK_MEM_SIZE;
|
|
|
|
|
ROM_RAM_BEG = _MASK_MEM_BEGIN;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RAM0_BEG = RAM_LIMIT_L + (128K * 3);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RAM0_END = RAM_LIMIT_H;
|
|
|
|
|
RAM0_SIZE = RAM0_END - RAM0_BEG;
|
|
|
|
|
|
|
|
|
|
RAM1_BEG = RAM_LIMIT_L;
|
|
|
|
|
RAM1_END = RAM0_BEG;
|
|
|
|
|
RAM1_SIZE = RAM1_END - RAM1_BEG;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CODE_BEG = 0x6000100;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EQ_PRIV_COEFF_BASE =0x1A0600;
|
|
|
|
|
EQ_PRIV_SECTION_NUM = 10;
|
|
|
|
|
EQ_PRIV_COEFF_END = EQ_PRIV_COEFF_BASE + 4 * EQ_PRIV_SECTION_NUM * (5+3)*2;
|
|
|
|
|
EQ_SECTION_NUM = 10;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MEMORY
|
|
|
|
|
{
|
|
|
|
|
code0(rx) : ORIGIN = CODE_BEG, LENGTH = 0x100000
|
|
|
|
|
ram0(rwx) : ORIGIN = RAM0_BEG, LENGTH = RAM0_SIZE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
psr_ram(rwx) : ORIGIN = 0x2000000, LENGTH = 8*1024*1024
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENTRY(_start)
|
|
|
|
|
|
|
|
|
|
SECTIONS
|
|
|
|
|
{
|
|
|
|
|
. = ORIGIN(code0);
|
|
|
|
|
.text ALIGN(4):
|
|
|
|
|
{
|
|
|
|
|
PROVIDE(text_rodata_begin = .);
|
|
|
|
|
|
|
|
|
|
*(.startup.text)
|
|
|
|
|
|
|
|
|
|
*(.text)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
update_target_begin = .;
|
|
|
|
|
PROVIDE(update_target_begin = .);
|
|
|
|
|
KEEP(*(.update_target))
|
|
|
|
|
update_target_end = .;
|
|
|
|
|
PROVIDE(update_target_end = .);
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
*(.LOG_TAG_CONST*)
|
|
|
|
|
*(.rodata*)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
PROVIDE(text_rodata_end = .);
|
|
|
|
|
|
|
|
|
|
clock_critical_handler_begin = .;
|
|
|
|
|
KEEP(*(.clock_critical_txt))
|
|
|
|
|
clock_critical_handler_end = .;
|
|
|
|
|
|
|
|
|
|
chargestore_handler_begin = .;
|
|
|
|
|
KEEP(*(.chargestore_callback_txt))
|
|
|
|
|
chargestore_handler_end = .;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*(.opcore_table_maskrom)
|
|
|
|
|
*(.bfilt_table_maskroom)
|
|
|
|
|
*(.opcore_maskrom)
|
|
|
|
|
*(.bfilt_code)
|
|
|
|
|
*(.bfilt_const)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. = 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);
|
|
|
|
|
__VERSION_BEGIN = .;
|
|
|
|
|
KEEP(*(.sys.version))
|
|
|
|
|
__VERSION_END = .;
|
|
|
|
|
|
|
|
|
|
*(.noop_version)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
tool_interface_begin = .;
|
|
|
|
|
KEEP(*(.tool_interface))
|
|
|
|
|
tool_interface_end = .;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
cmd_interface_begin = .;
|
|
|
|
|
KEEP(*(.eff_cmd))
|
|
|
|
|
cmd_interface_end = .;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. = ALIGN(32);
|
|
|
|
|
m_code_addr = . ;
|
|
|
|
|
*(.m.code*)
|
|
|
|
|
*(.movable.code*)
|
|
|
|
|
m_code_size = ABSOLUTE(. - m_code_addr) ;
|
|
|
|
|
. = ALIGN(32);
|
|
|
|
|
} > code0
|
|
|
|
|
|
|
|
|
|
. = ORIGIN(ram0);
|
|
|
|
|
|
|
|
|
|
.mmu_tlb ALIGN(0x10000):
|
|
|
|
|
{
|
|
|
|
|
*(.mmu_tlb_segment);
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.boot_info ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
*(.boot_info)
|
|
|
|
|
. = ALIGN(32);
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.irq_stack ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
_cpu0_sstack_begin = .;
|
|
|
|
|
*(.cpu0_stack)
|
|
|
|
|
_cpu0_sstack_end = .;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
_cpu1_sstack_begin = .;
|
|
|
|
|
*(.cpu1_stack)
|
|
|
|
|
_cpu1_sstack_end = .;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.data ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.data_magic)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
audio_sync_data_begin = .;
|
|
|
|
|
*(.audio_sync_data)
|
|
|
|
|
audio_sync_data_end = .;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
*(.sbc_data)
|
|
|
|
|
*(.msbc_data)
|
|
|
|
|
*(.cvsd_data)
|
|
|
|
|
*(.aac_data)
|
|
|
|
|
*(.sbc_eng_data)
|
|
|
|
|
*(.bt_audioplc_data)
|
|
|
|
|
*(.lc3_decoder_data)
|
|
|
|
|
*(.lc3_dec_data)
|
|
|
|
|
*(.wtgv2_data)
|
|
|
|
|
*(.wtgv2dec_data)
|
|
|
|
|
|
|
|
|
|
*(.anc_data)
|
|
|
|
|
*(.anc_core_data)
|
|
|
|
|
*(.anc_user_data)
|
|
|
|
|
*(.anc_box_data)
|
|
|
|
|
*(.anc_btspp_data)
|
|
|
|
|
|
|
|
|
|
*(.sms_data)
|
|
|
|
|
*(.audio_track_data)
|
|
|
|
|
*(.audio_adc_data)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.data*)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.bss ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.bss)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.volatile_ram)
|
|
|
|
|
|
|
|
|
|
*(.btstack_pool)
|
|
|
|
|
|
|
|
|
|
*(.mem_heap)
|
|
|
|
|
*(.memp_memory_x)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.non_volatile_ram)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(32);
|
|
|
|
|
|
|
|
|
|
*(.usb_h_dma)
|
|
|
|
|
*(.usb_ep0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*(.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)
|
|
|
|
|
. = ALIGN(32);
|
|
|
|
|
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.data_code ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
data_code_pc_limit_begin = .;
|
|
|
|
|
*(.flushinv_icache)
|
|
|
|
|
*(.cache)
|
|
|
|
|
*(.os_critical_code)
|
|
|
|
|
*(.volatile_ram_code)
|
|
|
|
|
*(.chargebox_code)
|
|
|
|
|
*(.fat_data_code)
|
|
|
|
|
*(.fat_data_code_ex)
|
|
|
|
|
|
|
|
|
|
*(.ui_ram)
|
|
|
|
|
*(.math_fast_funtion_code)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.pSOUND360TD_cal_const)
|
|
|
|
|
*(.pSOUND360TD_cal_code)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.SpatialAudio.text.const)
|
|
|
|
|
*(.SpatialAudio.text)
|
|
|
|
|
*(.SpatialAudio.text.cache.L1)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
_SPI_CODE_START = . ;
|
|
|
|
|
*(.spi_code)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
_SPI_CODE_END = . ;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.moveable_slot ALIGN(4):
|
|
|
|
|
{
|
|
|
|
|
*(movable.slot.*)
|
|
|
|
|
|
|
|
|
|
} >ram0
|
|
|
|
|
|
|
|
|
|
__report_overlay_begin = .;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OVERLAY : AT(0x200000) SUBALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
.overlay_aec
|
|
|
|
|
{
|
|
|
|
|
aec_code_begin = . ;
|
|
|
|
|
*(.text._*)
|
|
|
|
|
*(.data._*)
|
|
|
|
|
*(.aec_code)
|
|
|
|
|
*(.aec_const)
|
|
|
|
|
*(.res_code)
|
|
|
|
|
*(.res_const)
|
|
|
|
|
*(.ns_code)
|
|
|
|
|
*(.ns_const)
|
|
|
|
|
*(.bark_const)
|
|
|
|
|
*(.fft_code)
|
|
|
|
|
*(.fft_const)
|
|
|
|
|
*(.agc_code)
|
|
|
|
|
*(.dms_code)
|
|
|
|
|
*(.dms_const)
|
|
|
|
|
*(.dms_sparse_code)
|
|
|
|
|
aec_code_end = . ;
|
|
|
|
|
aec_code_size = aec_code_end - aec_code_begin ;
|
|
|
|
|
|
|
|
|
|
*(.msbc_enc)
|
|
|
|
|
*(.cvsd_codec)
|
|
|
|
|
*(.aec_bss)
|
|
|
|
|
*(.aec_data)
|
|
|
|
|
*(.res_data)
|
|
|
|
|
*(.ns_data)
|
|
|
|
|
*(.dns_common_data)
|
|
|
|
|
*(.dns_param_data_single)
|
|
|
|
|
*(.dns_param_data_dual)
|
|
|
|
|
*(.jlsp_nlp_code)
|
|
|
|
|
*(.jlsp_nlp_const)
|
|
|
|
|
*(.jlsp_aec_code)
|
|
|
|
|
*(.jlsp_aec_const)
|
|
|
|
|
*(.jlsp_prep_code)
|
|
|
|
|
*(.jlsp_prep_const)
|
|
|
|
|
*(.jlsp_enc_code)
|
|
|
|
|
*(.jlsp_enc_const)
|
|
|
|
|
*(.jlsp_wn_code)
|
|
|
|
|
*(.jlsp_wn_const)
|
|
|
|
|
*(.jlsp_tri_code)
|
|
|
|
|
*(.jlsp_tri_const)
|
|
|
|
|
*(.jlsp_agc_code)
|
|
|
|
|
*(.jlsp_agc_const)
|
|
|
|
|
*(.res_bss)
|
|
|
|
|
*(.ns_bss)
|
|
|
|
|
*(.aec_mem)
|
|
|
|
|
}
|
|
|
|
|
.overlay_aac
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
.overlay_mp3
|
|
|
|
|
{
|
|
|
|
|
*(.mp3_mem)
|
|
|
|
|
*(.mp3_ctrl_mem)
|
|
|
|
|
*(.mp3pick_mem)
|
|
|
|
|
*(.mp3pick_ctrl_mem)
|
|
|
|
|
*(.dec2tws_mem)
|
|
|
|
|
}
|
|
|
|
|
.overlay_wma
|
|
|
|
|
{
|
|
|
|
|
*(.wma_mem)
|
|
|
|
|
*(.wma_ctrl_mem)
|
|
|
|
|
*(.wmapick_mem)
|
|
|
|
|
*(.wmapick_ctrl_mem)
|
|
|
|
|
}
|
|
|
|
|
.overlay_wav
|
|
|
|
|
{
|
|
|
|
|
*(.wav_mem)
|
|
|
|
|
*(.wav_ctrl_mem)
|
|
|
|
|
}
|
|
|
|
|
.overlay_ape
|
|
|
|
|
{
|
|
|
|
|
*(.ape_mem)
|
|
|
|
|
*(.ape_ctrl_mem)
|
|
|
|
|
}
|
|
|
|
|
.overlay_flac
|
|
|
|
|
{
|
|
|
|
|
*(.flac_mem)
|
|
|
|
|
*(.flac_ctrl_mem)
|
|
|
|
|
}
|
|
|
|
|
.overlay_m4a
|
|
|
|
|
{
|
|
|
|
|
*(.m4a_mem)
|
|
|
|
|
*(.m4a_ctrl_mem)
|
|
|
|
|
}
|
|
|
|
|
.overlay_amr
|
|
|
|
|
{
|
|
|
|
|
*(.amr_mem)
|
|
|
|
|
*(.amr_ctrl_mem)
|
|
|
|
|
}
|
|
|
|
|
.overlay_dts
|
|
|
|
|
{
|
|
|
|
|
*(.dts_mem)
|
|
|
|
|
*(.dts_ctrl_mem)
|
|
|
|
|
}
|
|
|
|
|
.overlay_fm
|
|
|
|
|
{
|
|
|
|
|
*(.fm_mem)
|
|
|
|
|
}
|
|
|
|
|
.overlay_pc
|
|
|
|
|
{
|
|
|
|
|
*(.usb_audio_play_dma)
|
|
|
|
|
*(.usb_audio_rec_dma)
|
|
|
|
|
*(.uac_rx)
|
|
|
|
|
*(.mass_storage)
|
|
|
|
|
|
|
|
|
|
*(.usb_ep0)
|
|
|
|
|
*(.usb_msd_dma)
|
|
|
|
|
*(.usb_hid_dma)
|
|
|
|
|
*(.usb_iso_dma)
|
|
|
|
|
*(.usb_cdc_dma)
|
|
|
|
|
*(.uac_var)
|
|
|
|
|
*(.usb_config_var)
|
|
|
|
|
*(.cdc_var)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
data_code_pc_limit_end = .;
|
|
|
|
|
__report_overlay_end = .;
|
|
|
|
|
|
|
|
|
|
_HEAP_BEGIN = . ;
|
|
|
|
|
_HEAP_END = RAM0_END;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. = ORIGIN(psr_ram);
|
|
|
|
|
.psr_data_code ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
*(.psram_data_code)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
} > psr_ram
|
|
|
|
|
|
|
|
|
|
.psr_bss_code ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
} > psr_ram
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SECTIONS
|
|
|
|
|
{
|
|
|
|
|
.text : ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
gsensor_dev_begin = .;
|
|
|
|
|
KEEP(*(.gsensor_dev))
|
|
|
|
|
gsensor_dev_end = .;
|
|
|
|
|
|
|
|
|
|
fm_dev_begin = .;
|
|
|
|
|
KEEP(*(.fm_dev))
|
|
|
|
|
fm_dev_end = .;
|
|
|
|
|
|
|
|
|
|
fm_emitter_dev_begin = .;
|
|
|
|
|
KEEP(*(.fm_emitter_dev))
|
|
|
|
|
fm_emitter_dev_end = .;
|
|
|
|
|
|
|
|
|
|
storage_device_begin = .;
|
|
|
|
|
KEEP(*(.storage_device))
|
|
|
|
|
storage_device_end = .;
|
|
|
|
|
|
|
|
|
|
imusensor_dev_begin = .;
|
|
|
|
|
KEEP(*(.imusensor_dev))
|
|
|
|
|
imusensor_dev_end = .;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
aac_dec_code_begin = .;
|
|
|
|
|
*(.bt_aac_dec_code)
|
|
|
|
|
*(.bt_aac_dec_sparse_code)
|
|
|
|
|
aac_dec_code_end = .;
|
|
|
|
|
aac_dec_code_size = aac_dec_code_end - aac_dec_code_begin ;
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
bt_aac_dec_const_begin = .;
|
|
|
|
|
*(.bt_aac_dec_const)
|
|
|
|
|
*(.bt_aac_dec_sparse_const)
|
|
|
|
|
bt_aac_dec_const_end = .;
|
|
|
|
|
bt_aac_dec_const_size = bt_aac_dec_const_end - bt_aac_dec_const_begin ;
|
|
|
|
|
|
|
|
|
|
*(.bt_aac_dec_data)
|
|
|
|
|
*(.bt_aac_dec_bss)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.aac_mem)
|
|
|
|
|
*(.aac_ctrl_mem)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. = ALIGN(32);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.data ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.bss ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.data_code ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
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 = .;
|
|
|
|
|
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.bss (NOLOAD) :ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
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 = .;
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.text : 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);
|
|
|
|
|
} > code0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BTSTACK_LE_HOST_MESH_RAM_TOTAL = BTSTACK_LE_HOST_MESH_DATA_SIZE + BTSTACK_LE_HOST_MESH_BSS_SIZE;
|
|
|
|
|
BTSTACK_LE_HOST_MESH_FLASH_TOTAL = BTSTACK_LE_HOST_MESH_CODE_SIZE;
|
|
|
|
|
|
|
|
|
|
BTSTACK_CODE_SIZE = (btstack_code_end - btstack_code_start) + (btstack_data_end - btstack_data_start);
|
|
|
|
|
SECTIONS
|
|
|
|
|
{
|
|
|
|
|
.data : 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 = .);
|
|
|
|
|
|
|
|
|
|
*(.crypto_ecdh_data)
|
|
|
|
|
*(.crypto_data)
|
|
|
|
|
|
|
|
|
|
*(.mem_data)
|
|
|
|
|
*(.os_port_data)
|
|
|
|
|
|
|
|
|
|
*(.os_str)
|
|
|
|
|
*(.os_data)
|
|
|
|
|
|
|
|
|
|
*(.uECC_data)
|
|
|
|
|
*(.ECDH_sample_data)
|
|
|
|
|
|
|
|
|
|
__movable_slot_start = .;
|
|
|
|
|
*(movable.slot.*);
|
|
|
|
|
__movable_slot_end = .;
|
|
|
|
|
|
|
|
|
|
system_data_end = .;
|
|
|
|
|
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.bss (NOLOAD) :ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
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 = .;
|
|
|
|
|
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.text : 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 = .);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
*(.os_const)
|
|
|
|
|
|
|
|
|
|
*(.math_fast_funtion_code)
|
|
|
|
|
|
|
|
|
|
__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;
|
|
|
|
|
} > code0
|
|
|
|
|
|
|
|
|
|
.data_code ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
*(.os_code)
|
|
|
|
|
} > ram0
|
|
|
|
|
}
|
|
|
|
|
SECTIONS
|
|
|
|
|
{
|
|
|
|
|
.data : 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)
|
|
|
|
|
*(.ble_rf_data)
|
|
|
|
|
BTCTLER_LE_CONTROLLER_DATA_SIZE = ABSOLUTE(. - BTCTLER_LE_CONTROLLER_DATA_START);
|
|
|
|
|
|
|
|
|
|
BTCTLER_CL_DATA_START = .;
|
|
|
|
|
*(.classic_hci_data)
|
|
|
|
|
*(.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 = .;
|
|
|
|
|
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.bss (NOLOAD) :ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
btctler_bss_start = .;
|
|
|
|
|
|
|
|
|
|
BTCTLER_CONTROLLER_BSS_START = .;
|
|
|
|
|
|
|
|
|
|
*(.bd_base)
|
|
|
|
|
*(.bredr_rxtx_bulk)
|
|
|
|
|
*(.bredr_tx_bulk)
|
|
|
|
|
*(.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 = .;
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.text : 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_hci_const)
|
|
|
|
|
*(.classic_hci_code)
|
|
|
|
|
*(.classic_lmp_const)
|
|
|
|
|
*(.classic_lmp_auth_const)
|
|
|
|
|
*(.classic_lmp_bigint_const)
|
|
|
|
|
*(.classic_lmp_crypt_const)
|
|
|
|
|
*(.classic_lmp_ecdh_const)
|
|
|
|
|
*(.classic_lmp_hmac_const)
|
|
|
|
|
*(.classic_lmp_code)
|
|
|
|
|
*(.classic_lmp_auth_code)
|
|
|
|
|
*(.classic_lmp_bigint_code)
|
|
|
|
|
*(.classic_lmp_crypt_code)
|
|
|
|
|
*(.classic_lmp_ecdh_code)
|
|
|
|
|
*(.classic_lmp_hmac_code)
|
|
|
|
|
*(.classic_rf_const)
|
|
|
|
|
*(.classic_rf_code)
|
|
|
|
|
*(.classic_bb_const)
|
|
|
|
|
*(.classic_bb_code)
|
|
|
|
|
BTCTLER_CL_CODE_SIZE = ABSOLUTE(. - BTCTLER_CL_CODE_START);
|
|
|
|
|
|
|
|
|
|
*(.classic_tws_const)
|
|
|
|
|
*(.classic_tws_code)
|
|
|
|
|
*(.classic_tws_code.esco)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
} > code0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.data_code ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
*(.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_func_stub_begin = .;
|
|
|
|
|
KEEP(*(.tws_func_stub))
|
|
|
|
|
tws_func_stub_end = .;
|
|
|
|
|
|
|
|
|
|
*(.tws_media_sync_code)
|
|
|
|
|
*(.tws_media_sync_const)
|
|
|
|
|
|
|
|
|
|
*(.tws_data_forward_code)
|
|
|
|
|
*(.tws_data_forward_const)
|
|
|
|
|
|
|
|
|
|
. = 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);
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BTCTLER_LE_RAM_TOTAL = BTCTLER_LE_CONTROLLER_DATA_SIZE + BTCTLER_LE_CONTROLLER_BSS_SIZE;
|
|
|
|
|
BTCTLER_LE_CODE_TOTAL = BTCTLER_LE_CONTROLLER_CODE_SIZE;
|
|
|
|
|
|
|
|
|
|
BTCTLER_CL_RAM_TOTAL = BTCTLER_CL_DATA_SIZE + BTCTLER_CL_BSS_SIZE;
|
|
|
|
|
BTCTLER_CL_CODE_TOTAL = BTCTLER_CL_CODE_SIZE;
|
|
|
|
|
|
|
|
|
|
BTCTLER_COMMON_RAM_TOTAL = BTCTLER_CONTROLLER_BSS_SIZE + BTCTLER_CONTROLLER_DATA_SIZE;
|
|
|
|
|
BTCTLER_COMMON_CODE_TOTAL = BTCTLER_CONTROLLER_CODE_SIZE ;
|
|
|
|
|
|
|
|
|
|
BTCTLER_RAM_TOTAL = (btctler_data_end - btctler_data_start) + (btctler_bss_end - btctler_bss_start);
|
|
|
|
|
BTCTLER_CODE_TOTAL = (btctler_code_end - btctler_code_start);
|
|
|
|
|
}
|
|
|
|
|
SECTIONS
|
|
|
|
|
{
|
|
|
|
|
.data : ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
driver_data_start = .;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLOCK_DATA_START = .;
|
|
|
|
|
*(.clock_data)
|
|
|
|
|
CLOCK_DATA_SIZE = ABSOLUTE(. - CLOCK_DATA_START);
|
|
|
|
|
|
|
|
|
|
*(.debug_data)
|
|
|
|
|
|
|
|
|
|
*(.uart_data)
|
|
|
|
|
|
|
|
|
|
*(.power_driver.data)
|
|
|
|
|
*(.power_reset.data)
|
|
|
|
|
*(.power_wakeup.data)
|
|
|
|
|
|
|
|
|
|
driver_data_end = .;
|
|
|
|
|
. = ALIGN(32);
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.bss (NOLOAD) :ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
driver_bss_start = .;
|
|
|
|
|
|
|
|
|
|
CLOCK_BSS_START = .;
|
|
|
|
|
*(.clock_bss)
|
|
|
|
|
CLOCK_BSS_SIZE = ABSOLUTE(. - CLOCK_BSS_START);
|
|
|
|
|
|
|
|
|
|
*(.debug_bss)
|
|
|
|
|
|
|
|
|
|
*(.uart_bss)
|
|
|
|
|
|
|
|
|
|
*(.sd_var)
|
|
|
|
|
|
|
|
|
|
*(.power_driver.data.bss)
|
|
|
|
|
*(.power_reset.data.bss)
|
|
|
|
|
*(.power_wakeup.data.bss)
|
|
|
|
|
|
|
|
|
|
driver_bss_end = .;
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.text : ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
driver_code_start = .;
|
|
|
|
|
|
|
|
|
|
*(.fm_code)
|
|
|
|
|
|
|
|
|
|
CLOCK_CODE_START = .;
|
|
|
|
|
*(.clock_code)
|
|
|
|
|
*(.clock_const)
|
|
|
|
|
CLOCK_CODE_SIZE = ABSOLUTE(. - CLOCK_CODE_START);
|
|
|
|
|
|
|
|
|
|
*(.debug_code)
|
|
|
|
|
*(.debug_const)
|
|
|
|
|
|
|
|
|
|
*(.uart_code)
|
|
|
|
|
*(.uart_const)
|
|
|
|
|
|
|
|
|
|
*(.power_driver.text)
|
|
|
|
|
*(.power_driver.text.const)
|
|
|
|
|
|
|
|
|
|
*(.power_reset.text)
|
|
|
|
|
*(.power_reset.text.const)
|
|
|
|
|
|
|
|
|
|
*(.power_wakeup.text)
|
|
|
|
|
*(.power_wakeup.text.const)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
lp_target_begin = .;
|
|
|
|
|
PROVIDE(lp_target_begin = .);
|
|
|
|
|
KEEP(*(.lp_target))
|
|
|
|
|
lp_target_end = .;
|
|
|
|
|
PROVIDE(lp_target_end = .);
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
lp_request_begin = .;
|
|
|
|
|
PROVIDE(lp_request_begin = .);
|
|
|
|
|
KEEP(*(.lp_request))
|
|
|
|
|
lp_request_end = .;
|
|
|
|
|
PROVIDE(lp_request_end = .);
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
deepsleep_target_begin = .;
|
|
|
|
|
PROVIDE(deepsleep_target_begin = .);
|
|
|
|
|
KEEP(*(.deepsleep_target))
|
|
|
|
|
deepsleep_target_end = .;
|
|
|
|
|
PROVIDE(deepsleep_target_end = .);
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
p2m_msg_handler_begin = .;
|
|
|
|
|
PROVIDE(p2m_msg_handler_begin = .);
|
|
|
|
|
KEEP(*(.p2m_msg_handler))
|
|
|
|
|
PROVIDE(p2m_msg_handler_end = .);
|
|
|
|
|
p2m_msg_handler_end = .;
|
|
|
|
|
|
|
|
|
|
driver_code_end = .;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
} > code0
|
|
|
|
|
|
|
|
|
|
.data_code : ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
driver_data_code_start = .;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLOCK_CACHE_L1_CODE_START = .;
|
|
|
|
|
*(.clock.text.cache.L1)
|
|
|
|
|
CLOCK_CACHE_L1_SIZE = ABSOLUTE(. - CLOCK_CACHE_L1_CODE_START);
|
|
|
|
|
|
|
|
|
|
*(.vm.text.cache.L1)
|
|
|
|
|
|
|
|
|
|
*(.power_driver.text.cache.L1)
|
|
|
|
|
*(.timer.text.cache.L1)
|
|
|
|
|
*(.gpio.text.cache.L1)
|
|
|
|
|
*(.iic_hw.text.cache.L1)
|
|
|
|
|
driver_data_code_end = .;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DRIVER_RAM_TOTAL = (driver_data_end - driver_data_start) + (driver_bss_end - driver_bss_start);
|
|
|
|
|
DRIVER_CODE_TOTAL = (driver_code_end - driver_code_start);
|
|
|
|
|
DRIVER_DATA_CODE_TOTAL = (driver_data_code_end - driver_data_code_start);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
SECTIONS
|
|
|
|
|
{
|
|
|
|
|
.data : ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
audio_sync_data_begin = .;
|
|
|
|
|
*(.audio_sync_data)
|
|
|
|
|
audio_sync_data_end = .;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
*(.sbc_data)
|
|
|
|
|
*(.msbc_data)
|
|
|
|
|
*(.cvsd_data)
|
|
|
|
|
*(.aac_data)
|
|
|
|
|
*(.ldac_decoder_data)
|
|
|
|
|
*(.sbc_eng_data)
|
|
|
|
|
*(.bt_audioplc_data)
|
|
|
|
|
*(.lc3_decoder_data)
|
|
|
|
|
*(.lc3_dec_data)
|
|
|
|
|
*(.wtgv2_data)
|
|
|
|
|
*(.wtgv2dec_data)
|
|
|
|
|
*(.opus_encoder_data)
|
|
|
|
|
*(.speex_encoder_data)
|
|
|
|
|
|
|
|
|
|
*(.anc_data)
|
|
|
|
|
*(.anc_user_data)
|
|
|
|
|
*(.anc_box_data)
|
|
|
|
|
*(.anc_btspp_data)
|
|
|
|
|
*(.audio_adc_data)
|
|
|
|
|
*(.audio_cfifo_data)
|
|
|
|
|
|
|
|
|
|
*(.sms_data)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.pSOUND360TD_cal_data)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.jlsp_data)
|
|
|
|
|
*(.jlsp_aec_data)
|
|
|
|
|
*(.jlsp_nlp_data)
|
|
|
|
|
*(.jlsp_dns_data)
|
|
|
|
|
*(.jlsp_enc_data)
|
|
|
|
|
*(.jlsp_prep_data)
|
|
|
|
|
*(.jlsp_wn_data)
|
|
|
|
|
*(.jlsp_tri_data)
|
|
|
|
|
*(.jlsp_agc_data)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.bss (NOLOAD) :ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
audio_sync_bss_begin = .;
|
|
|
|
|
*(.audio_sync_bss)
|
|
|
|
|
audio_sync_bss_end = .;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
*(.cvsd_bss)
|
|
|
|
|
*(.aac_bss)
|
|
|
|
|
*(.ldac_decoder_bss)
|
|
|
|
|
*(.sbc_eng_bss)
|
|
|
|
|
*(.bt_audioplc_bss)
|
|
|
|
|
*(.lc3_decoder_bss)
|
|
|
|
|
*(.lc3_dec_bss)
|
|
|
|
|
*(.wtgv2_bss)
|
|
|
|
|
*(.wtgv2dec_bss)
|
|
|
|
|
*(.speex_encoder_bss)
|
|
|
|
|
*(.opus_encoder_bss)
|
|
|
|
|
|
|
|
|
|
*(.anc_bss)
|
|
|
|
|
*(.anc_user_bss)
|
|
|
|
|
*(.anc_box_bss)
|
|
|
|
|
*(.anc_btspp_bss)
|
|
|
|
|
*(.audio_adc_bss)
|
|
|
|
|
*(.audio_cfifo_bss)
|
|
|
|
|
|
|
|
|
|
*(.audio_dec_bss)
|
|
|
|
|
*(.audio_buf)
|
|
|
|
|
*(.src_filt)
|
|
|
|
|
*(.src_dma)
|
|
|
|
|
|
|
|
|
|
*(.jlsp_bss)
|
|
|
|
|
*(.jlsp_aec_bss)
|
|
|
|
|
*(.jlsp_nlp_bss)
|
|
|
|
|
*(.jlsp_dns_bss)
|
|
|
|
|
*(.jlsp_enc_bss)
|
|
|
|
|
*(.jlsp_prep_bss)
|
|
|
|
|
*(.jlsp_wn_bss)
|
|
|
|
|
*(.jlsp_tri_bss)
|
|
|
|
|
*(.jlsp_agc_bss)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.pSOUND360TD_cal_bss)
|
|
|
|
|
|
|
|
|
|
} > ram0
|
|
|
|
|
|
|
|
|
|
.text : ALIGN(4)
|
|
|
|
|
{
|
|
|
|
|
media_text_start = .;
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.stream_code)
|
|
|
|
|
*(.howlings_phf_code)
|
|
|
|
|
*(.notchhowling_sparse_code)
|
|
|
|
|
*(.notchhowling_code)
|
|
|
|
|
*(.howlings_phf_sparse_code)
|
|
|
|
|
*(.notchhowling_const)
|
|
|
|
|
*(.howlings_phf_const)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.llns.text)
|
|
|
|
|
*(.llns.text.const)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.aec_code)
|
|
|
|
|
*(.aec_const)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.res_code)
|
|
|
|
|
*(.res_const)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.ns_code)
|
|
|
|
|
*(.ns_const)
|
|
|
|
|
*(.bark_const)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.jlsp_code)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.jlsp_const)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.dns_16k_data)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.dns_8k_data)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.jlsp_dns_code)
|
|
|
|
|
*(.jlsp_dns_const)
|
|
|
|
|
*(.dns_param_data_wind)
|
|
|
|
|
*(.dns_common_data_wind)
|
|
|
|
|
|
|
|
|
|
*(.agc_code)
|
|
|
|
|
*(.dms_code)
|
|
|
|
|
*(.dms_sparse_code)
|
|
|
|
|
|
|
|
|
|
*(.nlp_code)
|
|
|
|
|
*(.nlp_const)
|
|
|
|
|
*(.der_code)
|
|
|
|
|
*(.der_const)
|
|
|
|
|
*(.qmf_code)
|
|
|
|
|
*(.qmf_const)
|
|
|
|
|
*(.fft_code)
|
|
|
|
|
*(.fft_const)
|
|
|
|
|
*(.drc_sparse_code)
|
|
|
|
|
*(.drc_code)
|
|
|
|
|
*(.drc_const)
|
|
|
|
|
|
|
|
|
|
*(.audio_gain_code)
|
|
|
|
|
*(.audio_gain_const)
|
|
|
|
|
|
|
|
|
|
*(.ns_sparse_code )
|
|
|
|
|
*(.aec_sparse_code)
|
|
|
|
|
*(.nlp_sparse_code)
|
|
|
|
|
*(.der_sparse_code)
|
|
|
|
|
*(.qmf_sparse_code)
|
|
|
|
|
*(.bt_audioplc_code)
|
|
|
|
|
*(.bt_audioplc_sparse_code)
|
|
|
|
|
*(.bt_audioplc_const)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.lf_audioplc_code)
|
|
|
|
|
*(.lf_audioplc_sparse_code)
|
|
|
|
|
*(.lf_audioplc_const)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.pcm_code)
|
|
|
|
|
*(.pcm_const)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*(.wtg_dec_code)
|
|
|
|
|
*(.wtg_dec_sparse_code)
|
|
|
|
|
*(.wtg_dec_const)
|
|
|
|
|
*(.wtgv2_code)
|
|
|
|
|
*(.wtgv2_const)
|
|
|
|
|
*(.wtgv2dec_code)
|
|
|
|
|
*(.wtgv2dec_const)
|
|
|
|
|
*(.wtgv2dec_str)
|
|
|
|
|
*(.wtg_decv2_sparse_code)
|
|
|
|
|
*(.speex_dec_code)
|
|
|
|
|
*(.speex_dec_const)
|
|
|
|
|
*(.speex_const)
|
|
|
|
|
*(.speex_code)
|
|
|
|
|
*(.speex_encoder_code)
|
|
|
|
|
*(.speex_encoder_const)
|
|
|
|
|
*(.opus_code)
|
|
|
|
|
*(.opus_const)
|
|
|
|
|
*(.opus_encoder_code)
|
|
|
|
|
*(.opus_encoder_const)
|
|
|
|
|
*(.mp3_code)
|
|
|
|
|
*(.mp3_const)
|
|
|
|
|
*(.mp3_dec_sparse_code)
|
|
|
|
|
*(.mp3_dec_sparse_const)
|
|
|
|
|
*(.mp3_dec_code)
|
|
|
|
|
*(.mp3_dec_const)
|
|
|
|
|
*(.bfilt_code)
|
|
|
|
|
*(.msbc_code)
|
|
|
|
|
*(.msbc_const)
|
|
|
|
|
*(.mty_code)
|
|
|
|
|
*(.mp3tsy_dec_code)
|
|
|
|
|
*(.mp3tsy_dec_sparse_code)
|
|
|
|
|
*(.mp3tsy_dec_const)
|
|
|
|
|
*(.sbc_code)
|
|
|
|
|
*(.sbc_const)
|
|
|
|
|
*(.sine_code)
|
|
|
|
|
*(.sine_const)
|
|
|
|
|
*(.wav_code)
|
|
|
|
|
*(.wav_const)
|
|
|
|
|
*(.wav_dec_code)
|
|
|
|
|
*(.wav_dec_const)
|
|
|
|
|
*(.wav_dec_sparse_code)
|
|
|
|
|
*(.wav_dec_sparse_const)
|
|
|
|
|
*(.wma_code)
|
|
|
|
|
*(.wma_const)
|
|
|
|
|
*(.wma_dec_code)
|
|
|
|
|
*(.wma_dec_sparse_code)
|
|
|
|
|
*(.wma_dec_const)
|
|
|
|
|
*(.aac_code)
|
|
|
|
|
*(.aac_const)
|
|
|
|
|
*(.ldac_decoder_code)
|
|
|
|
|
*(.ldac_decoder_const)
|
|
|
|
|
*(.bt_ldac_dec_code)
|
|
|
|
|
*(.bt_ldac_dec_const)
|
|
|
|
|
*(.amr_code)
|
|
|
|
|
*(.amr_const)
|
|
|
|
|
*(.amr_dec_code)
|
|
|
|
|
*(.amr_dec_const)
|
|
|
|
|
*(.amr_dec_sparse_code)
|
|
|
|
|
*(.ape_code)
|
|
|
|
|
*(.ape_const)
|
|
|
|
|
*(.ape_dec_code)
|
|
|
|
|
*(.ape_dec_sparse_code)
|
|
|
|
|
*(.ape_dec_const)
|
|
|
|
|
*(.dts_code)
|
|
|
|
|
*(.dts_const)
|
|
|
|
|
*(.dts_dec_sparse_code)
|
|
|
|
|
*(.dts_dec_code)
|
|
|
|
|
*(.dts_dec_const)
|
|
|
|
|
*(.dts_dec_ff_const)
|
|
|
|
|
*(.flac_code)
|
|
|
|
|
*(.flac_const)
|
|
|
|
|
*(.flac_dec_code)
|
|
|
|
|
*(.flac_dec_const)
|
|
|
|
|
*(.flac_dec_sparse_code)
|
|
|
|
|
*(.audio_decoder_code)
|
|
|
|
|
*(.audio_decoder_const)
|
|
|
|
|
*(.audio_track_const)
|
|
|
|
|
*(.audio_track_code)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*(.m4a_code)
|
|
|
|
|
*(.m4a_const)
|
|
|
|
|
*(.m4a_dec_code)
|
|
|
|
|
*(.m4a_dec_sparse_code)
|
|
|
|
|
*(.m4a_dec_sparse_const)
|
|
|
|
|
*(.bt_aac_dec_core_sparse_const)
|
|
|
|
|
*(.bt_aac_dec_core_sparse_code)
|
|
|
|
|
*(.bt_aac_dec_core_code)
|
|
|
|
|
*(.bt_aac_dec_eng_code)
|
|
|
|
|
*(.bt_aac_dec_eng_const)
|
|
|
|
|
*(.alac_code)
|
|
|
|
|
*(.alac_const)
|
|
|
|
|
*(.alac_dec_code)
|
|
|
|
|
*(.media_device_code)
|
|
|
|
|
*(.media_device_const)
|
|
|
|
|
*(.audio_encoder_code)
|
|
|
|
|
*(.audio_encoder_const)
|
|
|
|
|
*(.mixer_code)
|
|
|
|
|
*(.mixer_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)
|
|
|
|
|
*(.sbc_eng_code)
|
|
|
|
|
*(.sbc_eng_const)
|
|
|
|
|
|
|
|
|
|
anc_code_begin = .;
|
|
|
|
|
*(.anc_user_const)
|
|
|
|
|
*(.anc_user_code)
|
|
|
|
|
*(.anc_const)
|
|
|
|
|
*(.anc_code)
|
|
|
|
|
*(.anc_core_const)
|
|
|
|
|
*(.anc_core_code)
|
|
|
|
|
*(.anc_box_const)
|
|
|
|
|
*(.anc_box_code)
|
|
|
|
|
*(.anc_btspp_const)
|
|
|
|
|
*(.anc_btspp_code)
|
|
|
|
|
anc_code_end = .;
|
|
|
|
|
anc_code_size = anc_code_end - anc_code_begin;
|
|
|
|
|
|
|
|
|
|
*(.audio_codec_code)
|
|
|
|
|
*(.audio_adc_code)
|
|
|
|
|
*(.audio_adc_const)
|
|
|
|
|
*(.audio_cfifo_code)
|
|
|
|
|
*(.audio_cfifo_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)
|
|
|
|
|
|
|
|
|
|
*(.lib_pitchshift_code)
|
|
|
|
|
*(.lib_pitchshift_const)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
_audio_decoder_begin = .;
|
|
|
|
|
PROVIDE(audio_decoder_begin = .);
|
|
|
|
|
*(.audio_decoder)
|
|
|
|
|
_audio_decoder_end = .;
|
|
|
|
|
PROVIDE(audio_decoder_end = .);
|
|
|
|
|
|
|
|
|
|
_audio_encoder_begin = .;
|
|
|
|
|
PROVIDE(audio_encoder_begin = .);
|
|
|
|
|
*(.audio_encoder)
|
|
|
|
|
_audio_encoder_end = .;
|
|
|
|
|
PROVIDE(audio_encoder_end = .);
|
|
|
|
|
|
|
|
|
|
_audio_package_begin = .;
|
|
|
|
|
PROVIDE(audio_package_begin = .);
|
|
|
|
|
*(.audio_package)
|
|
|
|
|
_audio_package_end = .;
|
|
|
|
|
PROVIDE(audio_package_end = .);
|
|
|
|
|
|
|
|
|
|
_audio_dev_begin = .;
|
|
|
|
|
PROVIDE(audio_dev_begin = .);
|
|
|
|
|
*(.audio_device)
|
|
|
|
|
_audio_dev_end = .;
|
|
|
|
|
PROVIDE(audio_dev_end = .);
|
|
|
|
|
|
|
|
|
|
_audio_hwaccel_begin = .;
|
|
|
|
|
PROVIDE(audio_hwaccel_begin = .);
|
|
|
|
|
*(.audio_hwaccel)
|
|
|
|
|
_audio_hwaccel_end = .;
|
|
|
|
|
PROVIDE(audio_hwaccel_end = .);
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
media_code_begin = .;
|
|
|
|
|
*(.media.*.text)
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
*(.compressor_code)
|
|
|
|
|
*(.compressor_const)
|
|
|
|
|
*(.bt_compressor_const)
|
|
|
|
|
*(.bt_compressor_code)
|
|
|
|
|
|
|
|
|
|
*(.crossOver_code)
|
|
|
|
|
*(.crossOver_const)
|
|
|
|
|
*(.bt_crossOver_const)
|
|
|
|
|
*(.bt_crossOver_code)
|
|
|
|
|
|
|
|
|
|
*(.limiter_code)
|
|
|
|
|
*(.limiter_const)
|
|
|
|
|
*(.bt_limiter_const)
|
|
|
|
|
*(.bt_limiter_code)
|
|
|
|
|
|
|
|
|
|
*(.lc3_decoder_const)
|
|
|
|
|
*(.lc3_decoder_code)
|
|
|
|
|
*(.lc3_dec_const)
|
|
|
|
|
*(.lc3_dec_code)
|
|
|
|
|
|
|
|
|
|
*(.audio_vbass_code)
|
|
|
|
|
*(.audio_vbass_const)
|
|
|
|
|
*(.vbss_code)
|
|
|
|
|
*(.vbss_const)
|
|
|
|
|
*(.vbss_sparse_code)
|
|
|
|
|
*(.vbss_sparse_const)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.pSOUND360TD_cal_sparse_code)
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
*(.g729_code)
|
|
|
|
|
*(.g729_const)
|
|
|
|
|
*(.cvsd_code)
|
|
|
|
|
*(.cvsd_const)
|
|
|
|
|
|
|
|
|
|
*(.media.audio*)
|
|
|
|
|
*(.media.mixer*)
|
|
|
|
|
*(.media.media*)
|
|
|
|
|
|
|
|
|
|
*( .lib_wtg_dec_code )
|
|
|
|
|
*( .lib_wtg_dec_const)
|
|
|
|
|
|
|
|
|
|
*(.audio_resample_code)
|
|
|
|
|
*(.audio_resample_const)
|
|
|
|
|
|
|
|
|
|
*(.resample_fastcal_sparse_code)
|
|
|
|
|
*(.resample_fastcal_code)
|
|
|
|
|
*(.resample_fastcal_const)
|
|
|
|
|
|
|
|
|
|
audio_sync_code_begin = .;
|
|
|
|
|
*(.audio_sync_code)
|
|
|
|
|
audio_sync_code_end = .;
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
|
|
media_code_end = .;
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
media_code_size = media_code_end - media_code_begin;
|
|
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
media_text_end = .;
|
|
|
|
|
} > code0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.data_code ALIGN(32):
|
|
|
|
|
{
|
|
|
|
|
*(.media.aec.text)
|
|
|
|
|
} > ram0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
text_begin = ADDR(.text);
|
|
|
|
|
text_size = SIZEOF(.text);
|
|
|
|
|
text_end = text_begin + text_size;
|
|
|
|
|
|
|
|
|
|
bss_begin = ADDR(.bss);
|
|
|
|
|
bss_size = SIZEOF(.bss);
|
|
|
|
|
bss_end = bss_begin + bss_size;
|
|
|
|
|
|
|
|
|
|
data_addr = ADDR(.data);
|
|
|
|
|
data_begin = text_begin + text_size;
|
|
|
|
|
data_size = SIZEOF(.data);
|
|
|
|
|
|
|
|
|
|
moveable_slot_addr = ADDR(.moveable_slot);
|
|
|
|
|
moveable_slot_begin = data_begin + data_size;
|
|
|
|
|
moveable_slot_size = SIZEOF(.moveable_slot);
|
|
|
|
|
|
|
|
|
|
data_code_addr = ADDR(.data_code);
|
|
|
|
|
data_code_begin = moveable_slot_begin + moveable_slot_size;
|
|
|
|
|
data_code_size = SIZEOF(.data_code);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
aec_addr = ADDR(.overlay_aec);
|
|
|
|
|
aec_begin = data_code_begin + data_code_size;
|
|
|
|
|
aec_size = SIZEOF(.overlay_aec);
|
|
|
|
|
|
|
|
|
|
aac_addr = ADDR(.overlay_aac);
|
|
|
|
|
aac_begin = aec_begin + aec_size;
|
|
|
|
|
aac_size = SIZEOF(.overlay_aac);
|
|
|
|
|
|
|
|
|
|
psr_data_code_addr = ADDR(.psr_data_code);
|
|
|
|
|
psr_data_code_begin = aac_begin + aac_size;
|
|
|
|
|
psr_data_code_size = SIZEOF(.psr_data_code);
|
|
|
|
|
ASSERT(_HEAP_BEGIN > bss_begin,"_HEAP_BEGIN < bss_begin");
|
|
|
|
|
ASSERT(_HEAP_BEGIN > data_addr,"_HEAP_BEGIN < data_addr");
|
|
|
|
|
ASSERT(_HEAP_BEGIN > data_code_addr,"_HEAP_BEGIN < data_code_addr");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROVIDE(HEAP_BEGIN = _HEAP_BEGIN);
|
|
|
|
|
PROVIDE(HEAP_END = _HEAP_END);
|
|
|
|
|
_MALLOC_SIZE = _HEAP_END - _HEAP_BEGIN;
|
|
|
|
|
PROVIDE(MALLOC_SIZE = _HEAP_END - _HEAP_BEGIN);
|
|
|
|
|
|
|
|
|
|
ASSERT(MALLOC_SIZE >= 0x8000, "heap space too small !")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
report_text_beign = ADDR(.text);
|
|
|
|
|
report_text_size = SIZEOF(.text);
|
|
|
|
|
report_text_end = report_text_beign + report_text_size;
|
|
|
|
|
|
|
|
|
|
report_mmu_tlb_begin = ADDR(.mmu_tlb);
|
|
|
|
|
report_mmu_tlb_size = SIZEOF(.mmu_tlb);
|
|
|
|
|
report_mmu_tlb_end = report_mmu_tlb_begin + report_mmu_tlb_size;
|
|
|
|
|
|
|
|
|
|
report_boot_info_begin = ADDR(.boot_info);
|
|
|
|
|
report_boot_info_size = SIZEOF(.boot_info);
|
|
|
|
|
report_boot_info_end = report_boot_info_begin + report_boot_info_size;
|
|
|
|
|
|
|
|
|
|
report_irq_stack_begin = ADDR(.irq_stack);
|
|
|
|
|
report_irq_stack_size = SIZEOF(.irq_stack);
|
|
|
|
|
report_irq_stack_end = report_irq_stack_begin + report_irq_stack_size;
|
|
|
|
|
|
|
|
|
|
report_data_begin = ADDR(.data);
|
|
|
|
|
report_data_size = SIZEOF(.data);
|
|
|
|
|
report_data_end = report_data_begin + report_data_size;
|
|
|
|
|
|
|
|
|
|
report_bss_begin = ADDR(.bss);
|
|
|
|
|
report_bss_size = SIZEOF(.bss);
|
|
|
|
|
report_bss_end = report_bss_begin + report_bss_size;
|
|
|
|
|
|
|
|
|
|
report_data_code_begin = ADDR(.data_code);
|
|
|
|
|
report_data_code_size = SIZEOF(.data_code);
|
|
|
|
|
report_data_code_end = report_data_code_begin + report_data_code_size;
|
|
|
|
|
|
|
|
|
|
report_overlay_begin = __report_overlay_begin;
|
|
|
|
|
report_overlay_size = __report_overlay_end - __report_overlay_begin;
|
|
|
|
|
report_overlay_end = __report_overlay_end;
|
|
|
|
|
|
|
|
|
|
report_heap_beign = _HEAP_BEGIN;
|
|
|
|
|
report_heap_size = _HEAP_END - _HEAP_BEGIN;
|
|
|
|
|
report_heap_end = _HEAP_END;
|
|
|
|
|
|
|
|
|
|
BR28_PHY_RAM_SIZE = PHY_RAM_SIZE;
|
|
|
|
|
BR28_SDK_RAM_SIZE = report_mmu_tlb_size + report_boot_info_size + report_irq_stack_size + report_data_size + report_bss_size + report_overlay_size + report_data_code_size + report_heap_size;
|