#include "config.h" ENTRY(_start) /* Define the flash max size */ __max_flash_size = FLASH_CODE_SIZE; __base = 0x10000000; /* Define the area */ __bram_vma = 0x10C00; __sram_vma = 0x16400; __disp_vma = 0x27000; __aram_vma = 0x36000; __dram_vma = 0x3B000; __eram_vma = 0x3E000; __comm_vma = __sram_vma; __sram_size = 67k; MEMORY { init : org = __base, len = 512 flash(rx) : org = __base + 512, len = __max_flash_size stack : org = 0x10800, len = 1k sram : org = __sram_vma, len = __sram_size disp : org = __disp_vma, len = 60K aram : org = __aram_vma, len = 20k bram : org = __bram_vma, len = 22k dram : org = __dram_vma, len = 12k eram : org = __eram_vma, len = 2560 } SECTIONS { .init : { __code_start_eq = .; KEEP(*(.reset)) *(.text.com_eq.*) . = ALIGN(512); __code_end_eq = .; . = ALIGN(512); } > init .btcom_flash : { __code_start_bt_comm = .; *(.bcom_text*) *(.bcom_rodata*) . = ALIGN(512); __code_end_bt_comm = .; } > flash .comm : { __comm_start = .; KEEP(*(.vector)) *(.plt) *(.com_text*) *(.com_text.bb.leisr) *(.com_text.stack.handler) *(.com_rodata*) *(.srodata*) *bsp_halt.o(.rodata*) *debug.o(.rodata*) *(.data*) *(.sdata*) *\ext_scan.o(.rodata*) *\ble_evt.o(.rodata*) *\hci_transport_h3.o(.rodata*) *gui.o(.rodata*) __comm_end = .; . = ALIGN(512); } > sram AT > flash .flash : { __code_start_stream = .; *(.com_stream.text*) . = ALIGN(512); __code_end_stream = .; __code_start_record = .; *(.com_rec*) . = ALIGN(512); __code_end_record = .; __code_start_usbdev = .; *(.usbdev*) . = ALIGN(512); __code_end_usbdev = .; __code_start_sniff = .; *(.text.sniff.bb.entry) . = ALIGN(512); __code_end_sniff = .; __code_start_sleep = .; *(.saradc_text*) *(.sleep_text*) *(.text.sleep.rf) *(.text.charge_com*) . = ALIGN(512); __code_end_sleep = .; __code_start_pwrsave = .; *(.text.pwroff*) . = ALIGN(512); __code_end_pwrsave = .; __code_start_update = .; *(.text.update*) . = ALIGN(512); __code_end_update = .; //__code_start_rf = .; //*(.text.rf_init*) //. = ALIGN(512); //__code_end_rf = .; __code_start_ttf = .; *(.text.ttf.*) __code_end_ttf = .; *(.irq_init.aligned) *(.text*) *(.rodata*) *(.rela*) LONG(0) . = ALIGN(512); } > flash .stack (NOLOAD) : { __irq_stack_start = .; . = 0x400; __irq_stack = .; } > stack __irq_stack_size = __irq_stack - __irq_stack_start; .disp (NOLOAD) : { *(.disp.*) } > disp .bss (NOLOAD) : { __bss_start = .; *(COMMON) *(.bss*) *(.sbss*) *(.buf*) *(.dac_obuf) *(.sdadc_buf) *(.ble_cache*) *(.sbcbuf.dec) //通话msbc解码会用到, 故不能复用 *(.sco_hci) *(.plc_buf) *(.mavsco_buf*) *(.nr_far_buf.*) *(.usb_buf.bulk) *(.heap.os) *(.heap.func) __hr_start = .; __hr_3300_3605_start = .; *algo.o(.bss*) *modle5_13.o(.bss*) *modle5_17.o(.bss*) *modle5_18.o(.bss*) *modle5_2.o(.bss*) *modle5_5.o(.bss*) *modle5_6.o(.bss*) *spo2Algo.o(.bss*) *spo2_cal.o(.bss*) *acPower_add_doublefre.o(.bss*) *(.hrs3300_buf) *(.hr_buf) *(.hr_data*) *hx3605_hrs_agc.o(.bss*) *hx3605_spo2_agc.o(.bss*) __hr_3300_3605_stop = .; __hr_stop = .; __bss_end = .; } > sram __bss_size = __bss_end - __bss_start; .bram __bram_vma (NOLOAD) : { *(.btmem.bthw) *(.btmem*) *(.btstack_hci.buf) *(.ble_buf*) } > bram .aec_ram __aram_vma (NOLOAD) : { *(.aec_buf) . = 0x5000; } > aram .aram_sbc __aram_vma (NOLOAD) : { . = 0x600; *(.sbc_cache_buf) *(.a2dp_buf*) *(.a2dp_play) *(.bt_id3_buf) . = 0x5000; } > aram .aram_music __aram_vma (NOLOAD) : { *(.fname.buf) *(.pff.buf) *(.pff_buf*) . = 0x600; *(.mp3buf.dec) *(.mp3_id3_buf) *(.avio_buf) //aram不支持USB DMA, 放此处不能使用USB *(.diskio_buf) *(.usb_buf.*) *(.udev_buf*) *(.wavres.buf) *(.lrc_buf*) *(.pff.scan.tempbuf) . = 0x3000; } > aram .aram_wma __aram_vma (NOLOAD) : { . = 0x600; *(.wma_coefs_buf0) *(.wma_coefs_buf) *(.wma_ctx_buf) *(.wma_wincb_buf) *(.wma_id3_buf) } > aram .aram_flac __aram_vma (NOLOAD) : { . = 0x600; *(.flac_decoded_buf) . = 0x3000; } > aram .aram_fcc __aram_vma (NOLOAD) : { . = 0x1000; *(.fcc_buf.huart) *(.fcc_buf*) } > aram .aram_upd __aram_vma (NOLOAD) : { . = 0x3200; *(.upd_buf*) . = 0x3800; } > aram .dram_upd __dram_vma (NOLOAD) : { *(.ota_buf*) } > dram .dram_mp3 __dram_vma (NOLOAD) : { *(.mp3_decram_buf) . = 0x3000; } > dram .dram_ape __dram_vma (NOLOAD) : { *(.apebuf.cb) *(.apebuf.filter) *(.apebuf.decode) *(.apebuf.seektbl) . = 0x3000; } > dram .dram_wma __dram_vma (NOLOAD) : { *(.wmabuf*) . = 0x3000; } > dram .dram_flac __dram_vma (NOLOAD) : { *(.flacbuf*) *(.flac_decoded_buf1) *(.wavbuf.dec) . = 0x3000; } > dram .dram_sbc __dram_vma (NOLOAD) : { *(.sbc_decram_buf) . = 0xD38; } > dram .dram_sco __dram_vma (NOLOAD) : { *(.wavenc.sco) . = 0xD38; //0xd38之前为msbc解码空间 *(.sco_cache) *(.sco_data) *(.sco_hci) *(.plc_buf) *(.plc_data) . = 0x3000; } > dram .dram_rec __dram_vma (NOLOAD) : { . = 0xD38; *(.rec.wave.header) *(.recenc.obuf) *(.rec.obuf) *(.l2enc_bit_buf) *(.l2enc.buf*) . = 0x3000; } > dram .dram_usb __dram_vma (NOLOAD) : { *(.fot_data*) . = 0x3000; } > dram } /* Calc the lma */ __bank_size = SIZEOF(.flash); __comm_lma = LOADADDR(.comm); __comm_size = SIZEOF(.comm);