370 lines
9.7 KiB
C
370 lines
9.7 KiB
C
// *INDENT-OFF*
|
|
|
|
EXTERN(
|
|
_start
|
|
#include "sdk_used_list.c"
|
|
);
|
|
|
|
#include "app_config.h"
|
|
|
|
#if defined CONFIG_NO_SDRAM_ENABLE && !defined CONFIG_SFC_ENABLE
|
|
#error "IF DEFINE CONFIG_NO_SDRAM_ENABLE ,MUST DEFINE CONFIG_SFC_ENABLE"
|
|
#endif
|
|
|
|
BOOT_INFO_SIZE = 52;
|
|
|
|
#if defined CONFIG_MMU_ENABLE
|
|
TLB_SIZE =(0X1000 * 2);
|
|
#else
|
|
TLB_SIZE =0;
|
|
#endif
|
|
|
|
SDRAM_SIZE = __SDRAM_SIZE__;
|
|
RAM0_SIZE = 0x1c7fe00 - 0x1c00000 - TLB_SIZE - BOOT_INFO_SIZE - 128;
|
|
UPDATA_BEG = 0x1c7fe00 - 128;
|
|
|
|
#if !defined CONFIG_DYNAMIC_SDRAM_ONOFF_ENABLE
|
|
FREE_DACHE_WAY = 7; //max is 7
|
|
#else
|
|
FREE_DACHE_WAY = 0; //max is 7
|
|
#endif
|
|
FREE_IACHE_WAY = 0; //max is 7
|
|
CACHE_RAM_SIZE = FREE_DACHE_WAY*4K+FREE_IACHE_WAY*4K;
|
|
|
|
MEMORY
|
|
{
|
|
rom(rx) : ORIGIN = 0x2000120, LENGTH = __FLASH_SIZE__
|
|
sdram(rwx) : ORIGIN = 0x4000120, LENGTH = SDRAM_SIZE
|
|
ram0(rwx) : ORIGIN = 0x1c00000 + TLB_SIZE, LENGTH = RAM0_SIZE
|
|
boot_info(rwx) : ORIGIN = 0x1c00000 + TLB_SIZE + RAM0_SIZE, LENGTH = BOOT_INFO_SIZE
|
|
cache_ram(rw) : ORIGIN = 0x1f20000+((8-FREE_IACHE_WAY)*4K), LENGTH = CACHE_RAM_SIZE
|
|
}
|
|
|
|
SECTIONS
|
|
{
|
|
/********************************************/
|
|
. = ORIGIN(rom);
|
|
.text ALIGN(4):
|
|
{
|
|
_text_rodata_begin = .;
|
|
PROVIDE(text_rodata_begin = .);
|
|
|
|
*startup.S.o(.text)
|
|
*(.boot_code)
|
|
*(.text*)
|
|
*(.rodata*)
|
|
|
|
#include "system/system_lib_text.ld"
|
|
#include "common/movable/movable_text.ld"
|
|
#include "driver/cpu/wl82/media_text.ld"
|
|
#if defined CONFIG_BT_ENABLE
|
|
. = ALIGN(4);
|
|
#include "btctrler/btctler_lib_text.ld"
|
|
. = ALIGN(4);
|
|
#include "btstack/btstack_lib_text.ld"
|
|
#endif
|
|
. = ALIGN(4);
|
|
#include "driver/cpu/wl82/system.ld"
|
|
. = ALIGN(4);
|
|
#include "server/media.ld"
|
|
. = ALIGN(4);
|
|
#include "ui/ui/ui.ld"
|
|
#if defined CONFIG_UI_ENABLE
|
|
. = ALIGN(4);
|
|
*(.ui_ram)
|
|
#endif
|
|
#if !defined CONFIG_RF_TRIM_CODE_AT_RAM && !defined CONFIG_RF_TRIM_CODE_MOVABLE
|
|
*(*.rf.text.cache.L2.rf_trim)
|
|
#endif
|
|
. = ALIGN(32);
|
|
_text_rodata_end = .;
|
|
PROVIDE(text_rodata_end = .);
|
|
} >rom
|
|
|
|
. = ORIGIN(sdram);
|
|
.data ALIGN(32):
|
|
{
|
|
. = ALIGN(4);
|
|
} > sdram
|
|
|
|
.bss ALIGN(32):
|
|
{
|
|
. = ALIGN(4);
|
|
} > sdram
|
|
|
|
/********************************************/
|
|
. =ORIGIN(ram0);
|
|
.ram0_data ALIGN(4):
|
|
{
|
|
_ram_text_rodata_begin = .;
|
|
PROVIDE(ram_text_rodata_begin = .);
|
|
_VM_CODE_START = . ;
|
|
*(.vm)
|
|
_VM_CODE_END = . ;
|
|
. = ALIGN(4);
|
|
_SPI_CODE_START = . ;
|
|
*(.spi_code)
|
|
. = ALIGN(4);
|
|
_SPI_CODE_END = . ;
|
|
*(.flushinv_icache)
|
|
*(.volatile_ram_code)
|
|
#if defined CONFIG_RF_TRIM_CODE_AT_RAM
|
|
*(*.rf.text.cache.L2.rf_trim)
|
|
#endif
|
|
#include "common/movable/movable_data.ld"
|
|
. = ALIGN(4);
|
|
_ram_text_rodata_end = .;
|
|
PROVIDE(ram_text_rodata_end = .);
|
|
|
|
. = ALIGN(4);
|
|
*(.data)
|
|
|
|
. = ALIGN(4);
|
|
*(.volatile_ram)
|
|
*(.non_volatile_ram)
|
|
*(.fft_data)
|
|
*(.deepsleep_target)
|
|
*(.os_data)
|
|
*(.os_port_data)
|
|
|
|
#if defined CONFIG_DNS_ENC_ENABLE
|
|
. = ALIGN(4);
|
|
*(.jlsp_data)
|
|
#endif
|
|
#if defined CONFIG_DYNAMIC_SDRAM_ONOFF_ENABLE
|
|
. = ALIGN(4);
|
|
#include "driver/cpu/wl82/system_data.ld"
|
|
#endif
|
|
. = ALIGN(4);
|
|
#include "net/server/net_server_data.ld"
|
|
#if defined CONFIG_BT_ENABLE
|
|
. = ALIGN(4);
|
|
#include "btctrler/btctler_lib_data.ld"
|
|
. = ALIGN(4);
|
|
#include "btstack/btstack_lib_data.ld"
|
|
#endif
|
|
|
|
. = ALIGN(4); // must at tail, make ram0_data size align 4
|
|
} > ram0
|
|
|
|
.ram0_bss ALIGN(4) (NOLOAD):
|
|
{
|
|
#if defined CONFIG_BT_ENABLE
|
|
. = ALIGN(4);
|
|
#include "btctrler/btctler_lib_bss.ld"
|
|
. = ALIGN(4);
|
|
#include "btstack/btstack_lib_bss.ld"
|
|
#endif
|
|
|
|
*(.bss)
|
|
#if defined CONFIG_CXX_SUPPORT
|
|
*(.bss.*)
|
|
#endif
|
|
*(COMMON)
|
|
*(.mem_heap)
|
|
#if defined CONFIG_DYNAMIC_SDRAM_ONOFF_ENABLE
|
|
*(.memp_memory_x)
|
|
#endif
|
|
|
|
. = ALIGN(4);
|
|
*(.os_port_bss)
|
|
*(.os_bss)
|
|
*(.update_bss)
|
|
|
|
. = ALIGN(4);
|
|
*(.the_debug_isr_stack_c0)
|
|
*(.the_debug_isr_stack_c1)
|
|
*(.stack_magic)
|
|
*(.stack_magic0)
|
|
|
|
. = ALIGN(4);
|
|
_stack_info_begin = .;
|
|
PROVIDE(stack_info_begin = .);
|
|
*(.cpu0_ustack)
|
|
_cpu0_sstack_begin = .;
|
|
PROVIDE(cpu0_sstack_begin = .);
|
|
*(.cpu0_sstack)
|
|
_cpu0_sstack_end = .;
|
|
PROVIDE(cpu0_sstack_end = .);
|
|
*(.cpu1_ustack)
|
|
_cpu1_sstack_begin = .;
|
|
PROVIDE(cpu1_sstack_begin = .);
|
|
*(.cpu1_sstack)
|
|
_cpu1_sstack_end = .;
|
|
PROVIDE(cpu1_sstack_end = .);
|
|
_stack_info_end = .;
|
|
PROVIDE(stack_info_end = .);
|
|
|
|
*(.sram)
|
|
|
|
. = ALIGN(4);
|
|
#include "device/usb/usb_data.ld"
|
|
|
|
. = ALIGN(4); // must at tail, make ram0_data size align 4
|
|
} > ram0
|
|
|
|
_HEAP_BEGIN = ( . + 31 ) / 32 * 32 ;
|
|
PROVIDE(HEAP_BEGIN = (. + 31) / 32 * 32);
|
|
_HEAP_END = 0x1c00000 + RAM0_SIZE - 32;
|
|
PROVIDE(HEAP_END = 0x1c00000 + RAM0_SIZE - 32);
|
|
_MALLOC_SIZE = _HEAP_END - _HEAP_BEGIN;
|
|
PROVIDE(MALLOC_SIZE = _HEAP_END - _HEAP_BEGIN);
|
|
|
|
PROVIDE(RAM_HEAP_BEGIN = 0);
|
|
PROVIDE(RAM_HEAP_END = 0);
|
|
PROVIDE(RAM_MALLOC_SIZE = 0);
|
|
|
|
. =ORIGIN(boot_info);
|
|
.boot_info ALIGN(4):
|
|
{
|
|
*(.boot_info)
|
|
. = ALIGN(4); // must at tail, make ram0_data size align 4
|
|
} > boot_info
|
|
|
|
/********************************************/
|
|
. =ORIGIN(cache_ram);
|
|
.cache_ram_data ALIGN(4):
|
|
{
|
|
#if !defined CONFIG_DYNAMIC_SDRAM_ONOFF_ENABLE
|
|
#include "driver/cpu/wl82/system_data.ld"
|
|
#endif
|
|
. = ALIGN(4); // must at tail, make ram0_data size align 4
|
|
} > cache_ram
|
|
|
|
.cache_ram_bss ALIGN(4):
|
|
{
|
|
#if !defined CONFIG_DYNAMIC_SDRAM_ONOFF_ENABLE
|
|
*(.memp_memory_x)
|
|
#endif
|
|
. = ALIGN(4); // must at tail, make ram0_data size align 4
|
|
} > cache_ram
|
|
|
|
/********************************************/
|
|
}
|
|
|
|
text_begin = ADDR(.text);
|
|
text_size = SIZEOF(.text);
|
|
PROVIDE(text_size = SIZEOF(.text));
|
|
bss_begin = ADDR(.bss);
|
|
bss_size = SIZEOF(.bss);
|
|
PROVIDE(bss_size = SIZEOF(.bss));
|
|
|
|
data_vma = ADDR(.data);
|
|
data_lma = text_begin + SIZEOF(.text);
|
|
data_size = SIZEOF(.data);
|
|
PROVIDE(data_size = SIZEOF(.data));
|
|
|
|
/********************************************/
|
|
_ram0_bss_vma = ADDR(.ram0_bss);
|
|
_ram0_bss_size = SIZEOF(.ram0_bss);
|
|
PROVIDE(ram0_bss_size = SIZEOF(.ram0_bss));
|
|
|
|
_ram0_data_vma = ADDR(.ram0_data);
|
|
_ram0_data_lma = text_begin + SIZEOF(.text) + SIZEOF(.data);
|
|
_ram0_data_size = SIZEOF(.ram0_data);
|
|
PROVIDE(ram0_data_size = SIZEOF(.ram0_data));
|
|
/********************************************/
|
|
|
|
PROVIDE(cache_ram_bss_vma = ADDR(.cache_ram_bss));
|
|
PROVIDE(cache_ram_bss_size = SIZEOF(.cache_ram_bss));
|
|
PROVIDE(cache_ram_data_vma = ADDR(.cache_ram_data));
|
|
PROVIDE(cache_ram_data_lma = text_begin + SIZEOF(.text) + SIZEOF(.data) + SIZEOF(.ram0_data));
|
|
PROVIDE(cache_ram_data_size = SIZEOF(.cache_ram_data));
|
|
|
|
|
|
#if defined CONFIG_BT_ENABLE
|
|
/*代码统计 Code & RAM : 蓝牙协议栈*/
|
|
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);
|
|
|
|
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;
|
|
#endif
|
|
|
|
// *INDENT-ON*
|
|
|
|
EXTERN(
|
|
lib_audio_server_version
|
|
lib_system_version
|
|
lib_btstack_version
|
|
lib_btctler_version
|
|
lib_btmesh_version
|
|
lib_cfg_tool_version
|
|
lib_common_version
|
|
lib_crcm_version
|
|
lib_cryto_toolbox_version
|
|
lib_event_version
|
|
lib_finsh_version
|
|
lib_fs_version
|
|
lib_driver_version
|
|
lib_video_dec_version
|
|
lib_video_rec_version
|
|
lib_update_version
|
|
lib_ui_font_version
|
|
lib_wifi_version
|
|
lib_wl82_rf_version
|
|
lib_httpcli_version
|
|
lib_airplay_version
|
|
lib_aliyun_version
|
|
lib_cjson_version
|
|
lib_dcl_version
|
|
lib_wpa_supplicant_version
|
|
lib_device_vad_version
|
|
lib_dlna_version
|
|
lib_dui_version
|
|
lib_echocloud_version
|
|
lib_ftp_client_version
|
|
lib_hsm_version
|
|
lib_http_server_version
|
|
lib_profile_version
|
|
lib_iperf_version
|
|
lib_jl_cloud_version
|
|
lib_json_c_version
|
|
lib_kcp_version
|
|
lib_coap_version
|
|
lib_duer_version
|
|
lib_mpeg_version
|
|
lib_lwip_2_0_3_version
|
|
lib_lwip_2_1_2_version
|
|
lib_lwip_2_1_3_version
|
|
lib_mbedtls_2_2_1_version
|
|
lib_mbedtls_2_26_0_version
|
|
lib_mdns_version
|
|
lib_mongoose_version
|
|
lib_mqtt_version
|
|
lib_network_download_version
|
|
lib_rtp_version
|
|
lib_net_server_version
|
|
lib_media_server_version
|
|
lib_stupid_ftpd_version
|
|
lib_ftpserver_version
|
|
lib_telecom_version
|
|
lib_tencent_version
|
|
lib_tmallgenie_version
|
|
lib_tunnel_version
|
|
lib_turing_version
|
|
lib_uc_httpc_version
|
|
lib_uip_version
|
|
lib_websocket_version
|
|
lib_wolfmqtt_version
|
|
lib_wolfssl_version
|
|
lib_wt_version
|
|
lib_zliblite_version
|
|
app_wifi_story_machine_version
|
|
app_wifi_camera_version
|
|
app_scan_box_version
|
|
lib_font_version
|
|
lib_res_version
|
|
lib_ui_draw_version
|
|
lib_ui_version
|
|
)
|