USER_SECTIONS .nds_vector USER_SECTIONS .itcm_sec_code USER_SECTIONS .dtcm_sec_data USER_SECTIONS .dtcm_sec_bss USER_SECTIONS .bt_spec_data USER_SECTIONS .ble_bss_data USER_SECTIONS .video_spec_data USER_SECTIONS .media_bss_data USER_SECTIONS .swap_data USER_SECTIONS .itcm USER_SECTIONS .interrupt.text USER_SECTIONS .interrupt.HalTrapVector.text.HalTrapVector DEFINE CPU0_FLASH_START 0x10000 DEFINE CPU0_FLASH_SIZE 0x1d0000 CPU0_LOAD1 CPU0_FLASH_START CPU0_FLASH_SIZE { FLASH1 +0 { * KEEP (.nds_vector) * KEEP (.interrupt.text) * KEEP (.interrupt.HalTrapVector.text.HalTrapVector) * KEEP (.itcm) * (+RO) } ITCM 0x10000000 0x8000 { LOADADDR NEXT _itcm_lma_start ADDR NEXT _itcm_ema_start * KEEP (.itcm_sec_code LMA_FORCE_ALIGN) LOADADDR _itcm_lma_end ADDR _itcm_ema_end } DTCM 0x20000400 0x6C00 { LOADADDR NEXT _dtcm_lma_start ADDR NEXT _dtcm_ema_start * KEEP (.dtcm_sec_data LMA_FORCE_ALIGN) ;WiFi Data Path *bam.c.obj *ke_env.c.obj *hal_dma.c.obj *hal_machw.c.obj *txu_cntrl.c.obj *bam_task.c.obj(*data* LMA_FORCE_ALIGN) *rxl_cntrl.c.obj *tx_swdesc.c.obj *txl_cfm.c.obj *txl_cntrl.c.obj (*data* LMA_FORCE_ALIGN) ;WiFi SM/MM/RC/VIF/TD/CHAN/PS *sta_mgmt.c.obj *vif_mgmt.c.obj *rc.c.obj *rwnx.c.obj *me_task.c.obj *sm.c.obj(*data* LMA_FORCE_ALIGN) *sm_task.c.obj *me.c.obj *mm.c.obj *mm_bcn.c.obj *mm_task.c.obj *mm_timer.c.obj(*data* LMA_FORCE_ALIGN) *td.c.obj *chan.c.obj *ps.c.obj(*data* LMA_FORCE_ALIGN) ;WiFi SCAN/APM *scan_task.c.obj *scan.c.obj *scanu.c.obj *scanu_task.c.obj(*data* LMA_FORCE_ALIGN) ;Flowling obj can't move to DTCM ;*hal_desc.c.obj *rxu_cntrl.c.obj *txl_agg.c.obj *txl_he.c.obj *txl_buffer_shared.c.obj *txl_frame_shared.c.obj(*data* LMA_FORCE_ALIGN) ;*rxl_hwdesc.c.obj *scanu_shared.c.obj *scan_shared.c.obj *apm_task.c.obj(*data* LMA_FORCE_ALIGN) LOADADDR _dtcm_lma_end ADDR _dtcm_ema_end ADDR _dtcm_bss_start * KEEP (.dtcm_sec_bss) ;WiFi Data Path *bam.c.obj *ke_env.c.obj *hal_dma.c.obj *hal_machw.c.obj *txu_cntrl.c.obj *bam_task.c.obj(+ZI) *rxl_cntrl.c.obj *tx_swdesc.c.obj *txl_cfm.c.obj *txl_cntrl.c.obj (+ZI) ;WiFi SM/MM/RC/VIF/TD/CHAN/PS *sta_mgmt.c.obj *vif_mgmt.c.obj *rc.c.obj *rwnx.c.obj *me_task.c.obj *sm.c.obj(+ZI) *sm_task.c.obj *me.c.obj *mm.c.obj *mm_bcn.c.obj *mm_task.c.obj *mm_timer.c.obj(+ZI) *td.c.obj *chan.c.obj *ps.c.obj(+ZI) ;WiFi SCAN/APM *scan_task.c.obj *scan.c.obj *scanu.c.obj *scanu_task.c.obj(+ZI) ;Flowling obj can't move to DTCM ;*hal_desc.c.obj *rxu_cntrl.c.obj *txl_agg.c.obj *txl_he.c.obj *txl_buffer_shared.c.obj *txl_frame_shared.c.obj(+ZI) ;*rxl_hwdesc.c.obj *scanu_shared.c.obj *scan_shared.c.obj apm_task.c.obj(+ZI) ADDR _dtcm_bss_end } SRAM_VIDEO 0x30000000 0xA000 { ADDR NEXT _video_start * KEEP (.video_spec_data) } SRAM_BT 0x3000A000 0x16000 { LOADADDR NEXT _bt_data_lmastart ADDR NEXT _bt_data_start * KEEP (.bt_spec_data LMA_FORCE_ALIGN) * KEEP (.ble_bss_data LMA_FORCE_ALIGN) *rwip.c.obj *rwip_driver.c.obj *uart_ble.c.obj *hci_packet_parser.c.obj(+ZI) *sdp_common.c.obj *app_ble.c.obj *prf.c.obj *gapm.c.obj(+ZI) *ble_util_buf.c.obj *sch_prog.c.obj *sch_slice.c.obj *llm.c.obj(+ZI) ADDR _bt_data_end } SRAM_DATA 0x30020000 0x58C00 { LOADADDR NEXT _data_lmastart ADDR NEXT _data_start *(+RW,+ZI LMA_FORCE_ALIGN) STACK = 0x20007FE0 } SWAP 0x3007FC00 0x400 { ADDR NEXT _swap_start * KEEP (.swap_data) } }