[chore][ld] update ld config

This commit is contained in:
jzlv 2021-08-25 18:46:15 +08:00
parent 5d9e51d889
commit da549faf2d
10 changed files with 183 additions and 301 deletions

View file

@ -1,9 +1,9 @@
/**************************************************************************************** /****************************************************************************************
* @file map.txt * @file bl706_camera.ld
* *
* @brief This file is the map file (gnuarm or armgcc). * @brief This file is the map file (gnuarm or armgcc).
* *
* Copyright (C) BouffaloLab 2018 * Copyright (C) BouffaloLab 2021
* *
**************************************************************************************** ****************************************************************************************
*/ */
@ -18,7 +18,6 @@ INPUT(-lgcc)
ENTRY(_enter) ENTRY(_enter)
StackSize = 0x1000; /* 4KB */ StackSize = 0x1000; /* 4KB */
HeapSize = 0x1000; /* 4KB */
MEMORY MEMORY
{ {
@ -39,11 +38,16 @@ SECTIONS
KEEP (*(.text.metal.init.enter)) KEEP (*(.text.metal.init.enter))
KEEP (*(SORT_NONE(.init))) KEEP (*(SORT_NONE(.init)))
/* section information for finsh shell */ /* section information for shell */
. = ALIGN(4); . = ALIGN(4);
_shell_command_start = .; __fsymtab_start = .;
KEEP(*(shellCommand)) KEEP(*(FSymTab))
_shell_command_end = .; __fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
/* section information for usb desc */ /* section information for usb desc */
. = ALIGN(4); . = ALIGN(4);
@ -114,22 +118,6 @@ SECTIONS
__tcm_data_end__ = .; __tcm_data_end__ = .;
} > dtcm_memory } > dtcm_memory
/* .heap_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of heap sections, and assign
* values to heap symbols later */
.heap_dummy (NOLOAD):
{
. = ALIGN(0x4);
. = . + HeapSize;
. = ALIGN(0x4);
} > dtcm_memory
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
_HeapSize = HeapSize;
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
/*************************************************************************/ /*************************************************************************/
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
@ -214,14 +202,15 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
__HeapBase = .; __HeapBase = .;
/*__end__ = .;*/
/*end = __end__;*/
KEEP(*(.heap*)) KEEP(*(.heap*))
. = ALIGN(4); . = ALIGN(4);
__HeapLimit = .; __HeapLimit = .;
} > ram_memory } > ram_memory
PROVIDE (__heap_min_size = 0x400);
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
} ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
}

View file

@ -1,9 +1,9 @@
/**************************************************************************************** /****************************************************************************************
* @file map.txt * @file bl706_camera_psram.ld
* *
* @brief This file is the map file (gnuarm or armgcc). * @brief This file is the map file (gnuarm or armgcc).
* *
* Copyright (C) BouffaloLab 2018 * Copyright (C) BouffaloLab 2021
* *
**************************************************************************************** ****************************************************************************************
*/ */
@ -18,7 +18,6 @@ INPUT(-lgcc)
ENTRY(_enter) ENTRY(_enter)
StackSize = 0x1000; /* 4KB */ StackSize = 0x1000; /* 4KB */
HeapSize = 0x1000; /* 4KB */
MEMORY MEMORY
{ {
@ -28,6 +27,7 @@ MEMORY
ram_memory (!rx) : ORIGIN = 0x42019800, LENGTH = 18K ram_memory (!rx) : ORIGIN = 0x42019800, LENGTH = 18K
} }
SECTIONS SECTIONS
{ {
PROVIDE(__metal_chicken_bit = 0); PROVIDE(__metal_chicken_bit = 0);
@ -39,11 +39,16 @@ SECTIONS
KEEP (*(.text.metal.init.enter)) KEEP (*(.text.metal.init.enter))
KEEP (*(SORT_NONE(.init))) KEEP (*(SORT_NONE(.init)))
/* section information for finsh shell */ /* section information for shell */
. = ALIGN(4); . = ALIGN(4);
_shell_command_start = .; __fsymtab_start = .;
KEEP(*(shellCommand)) KEEP(*(FSymTab))
_shell_command_end = .; __fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
/* section information for usb desc */ /* section information for usb desc */
. = ALIGN(4); . = ALIGN(4);
@ -114,22 +119,6 @@ SECTIONS
__tcm_data_end__ = .; __tcm_data_end__ = .;
} > dtcm_memory } > dtcm_memory
/* .heap_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of heap sections, and assign
* values to heap symbols later */
.heap_dummy (NOLOAD):
{
. = ALIGN(0x4);
. = . + HeapSize;
. = ALIGN(0x4);
} > dtcm_memory
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
_HeapSize = HeapSize;
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
/*************************************************************************/ /*************************************************************************/
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
@ -214,14 +203,15 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
__HeapBase = .; __HeapBase = .;
/*__end__ = .;*/
/*end = __end__;*/
KEEP(*(.heap*)) KEEP(*(.heap*))
. = ALIGN(4); . = ALIGN(4);
__HeapLimit = .; __HeapLimit = .;
} > ram_memory } > ram_memory
PROVIDE (__heap_min_size = 0x400);
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
} ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
}

View file

@ -1,9 +1,9 @@
/**************************************************************************************** /****************************************************************************************
* @file map.txt * @file bl706_camera_psram.ld
* *
* @brief This file is the map file (gnuarm or armgcc). * @brief This file is the map file (gnuarm or armgcc).
* *
* Copyright (C) BouffaloLab 2018 * Copyright (C) BouffaloLab 2021
* *
**************************************************************************************** ****************************************************************************************
*/ */
@ -18,7 +18,6 @@ INPUT(-lgcc)
ENTRY(_enter) ENTRY(_enter)
StackSize = 0x1000; /* 4KB */ StackSize = 0x1000; /* 4KB */
HeapSize = 0x1000; /* 4KB */
MEMORY MEMORY
{ {
@ -39,11 +38,16 @@ SECTIONS
KEEP (*(.text.metal.init.enter)) KEEP (*(.text.metal.init.enter))
KEEP (*(SORT_NONE(.init))) KEEP (*(SORT_NONE(.init)))
/* section information for finsh shell */ /* section information for shell */
. = ALIGN(4); . = ALIGN(4);
_shell_command_start = .; __fsymtab_start = .;
KEEP(*(shellCommand)) KEEP(*(FSymTab))
_shell_command_end = .; __fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
/* section information for usb desc */ /* section information for usb desc */
. = ALIGN(4); . = ALIGN(4);
@ -114,22 +118,6 @@ SECTIONS
__tcm_data_end__ = .; __tcm_data_end__ = .;
} > dtcm_memory } > dtcm_memory
/* .heap_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of heap sections, and assign
* values to heap symbols later */
.heap_dummy (NOLOAD):
{
. = ALIGN(0x4);
. = . + HeapSize;
. = ALIGN(0x4);
} > dtcm_memory
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
_HeapSize = HeapSize;
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
/*************************************************************************/ /*************************************************************************/
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
@ -214,14 +202,15 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
__HeapBase = .; __HeapBase = .;
/*__end__ = .;*/
/*end = __end__;*/
KEEP(*(.heap*)) KEEP(*(.heap*))
. = ALIGN(4); . = ALIGN(4);
__HeapLimit = .; __HeapLimit = .;
} > ram_memory } > ram_memory
PROVIDE (__heap_min_size = 0x400);
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
} ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
}

View file

@ -1,9 +1,9 @@
/**************************************************************************************** /****************************************************************************************
* @file map.txt * @file bl702_dac_flash.ld
* *
* @brief This file is the map file (gnuarm or armgcc). * @brief This file is the map file (gnuarm or armgcc).
* *
* Copyright (C) BouffaloLab 2018 * Copyright (C) BouffaloLab 2021
* *
**************************************************************************************** ****************************************************************************************
*/ */
@ -18,7 +18,6 @@ INPUT(-lgcc)
ENTRY(_enter) ENTRY(_enter)
StackSize = 0x1000; /* 4KB */ StackSize = 0x1000; /* 4KB */
HeapSize = 0x6000; /* 4KB */
MEMORY MEMORY
{ {
@ -39,11 +38,16 @@ SECTIONS
KEEP (*(.text.metal.init.enter)) KEEP (*(.text.metal.init.enter))
KEEP (*(SORT_NONE(.init))) KEEP (*(SORT_NONE(.init)))
/* section information for finsh shell */ /* section information for shell */
. = ALIGN(4); . = ALIGN(4);
_shell_command_start = .; __fsymtab_start = .;
KEEP(*(shellCommand)) KEEP(*(FSymTab))
_shell_command_end = .; __fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
/* section information for usb desc */ /* section information for usb desc */
. = ALIGN(4); . = ALIGN(4);
@ -114,22 +118,6 @@ SECTIONS
__tcm_data_end__ = .; __tcm_data_end__ = .;
} > dtcm_memory } > dtcm_memory
/* .heap_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of heap sections, and assign
* values to heap symbols later */
.heap_dummy (NOLOAD):
{
. = ALIGN(0x4);
. = . + HeapSize;
. = ALIGN(0x4);
} > dtcm_memory
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
_HeapSize = HeapSize;
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
/*************************************************************************/ /*************************************************************************/
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
@ -214,14 +202,15 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
__HeapBase = .; __HeapBase = .;
/*__end__ = .;*/
/*end = __end__;*/
KEEP(*(.heap*)) KEEP(*(.heap*))
. = ALIGN(4); . = ALIGN(4);
__HeapLimit = .; __HeapLimit = .;
} > ram_memory } > ram_memory
PROVIDE (__heap_min_size = 0x400);
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
} ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
}

View file

@ -1,5 +1,5 @@
/**************************************************************************************** /****************************************************************************************
* @file bl702_flash.ld * @file usb_audio_mouse.ld
* *
* @brief This file is the map file (gnuarm or armgcc). * @brief This file is the map file (gnuarm or armgcc).
* *
@ -18,7 +18,6 @@ OUTPUT_ARCH( "riscv" )
ENTRY(_enter) ENTRY(_enter)
StackSize = 0x1000; /* 4KB */ StackSize = 0x1000; /* 4KB */
HeapSize = 0x1000; /* 4KB */
MEMORY MEMORY
{ {
@ -39,11 +38,16 @@ SECTIONS
KEEP (*(.text.metal.init.enter)) KEEP (*(.text.metal.init.enter))
KEEP (*(SORT_NONE(.init))) KEEP (*(SORT_NONE(.init)))
/* section information for finsh shell */ /* section information for shell */
. = ALIGN(4); . = ALIGN(4);
_shell_command_start = .; __fsymtab_start = .;
KEEP(*(shellCommand)) KEEP(*(FSymTab))
_shell_command_end = .; __fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
/* section information for usb desc */ /* section information for usb desc */
. = ALIGN(4); . = ALIGN(4);
@ -70,13 +74,6 @@ SECTIONS
*(.srodata) *(.srodata)
*(.srodata.*) *(.srodata.*)
_bt_gatt_service_static_list_start = .;
KEEP(*(SORT_BY_NAME("._bt_gatt_service_static.static.*")))
_bt_gatt_service_static_list_end = .;
_bt_l2cap_fixed_chan_list_start = .;
KEEP(*(SORT_BY_NAME("._bt_l2cap_fixed_chan.static.*")))
_bt_l2cap_fixed_chan_list_end = .;
. = ALIGN(4); . = ALIGN(4);
__text_code_end__ = .; __text_code_end__ = .;
} > xip_memory } > xip_memory
@ -121,22 +118,6 @@ SECTIONS
__tcm_data_end__ = .; __tcm_data_end__ = .;
} > dtcm_memory } > dtcm_memory
/* .heap_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of heap sections, and assign
* values to heap symbols later */
.heap_dummy (NOLOAD):
{
. = ALIGN(0x4);
. = . + HeapSize;
. = ALIGN(0x4);
} > dtcm_memory
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
_HeapSize = HeapSize;
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
/*************************************************************************/ /*************************************************************************/
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
@ -221,14 +202,15 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
__HeapBase = .; __HeapBase = .;
/*__end__ = .;*/
/*end = __end__;*/
KEEP(*(.heap*)) KEEP(*(.heap*))
. = ALIGN(4); . = ALIGN(4);
__HeapLimit = .; __HeapLimit = .;
} > ram_memory } > ram_memory
PROVIDE (__heap_min_size = 0x400);
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
} ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
}

View file

@ -18,7 +18,6 @@ INPUT(-lgcc)
ENTRY(_enter) ENTRY(_enter)
StackSize = 0x1000; /* 4KB */ StackSize = 0x1000; /* 4KB */
HeapSize = 0x1000; /* 4KB */
MEMORY MEMORY
{ {
@ -39,11 +38,16 @@ SECTIONS
KEEP (*(.text.metal.init.enter)) KEEP (*(.text.metal.init.enter))
KEEP (*(SORT_NONE(.init))) KEEP (*(SORT_NONE(.init)))
/* section information for finsh shell */ /* section information for shell */
. = ALIGN(4); . = ALIGN(4);
_shell_command_start = .; __fsymtab_start = .;
KEEP(*(shellCommand)) KEEP(*(FSymTab))
_shell_command_end = .; __fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
/* section information for usb desc */ /* section information for usb desc */
. = ALIGN(4); . = ALIGN(4);
@ -114,22 +118,6 @@ SECTIONS
__tcm_data_end__ = .; __tcm_data_end__ = .;
} > dtcm_memory } > dtcm_memory
/* .heap_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of heap sections, and assign
* values to heap symbols later */
.heap_dummy (NOLOAD):
{
. = ALIGN(0x4);
. = . + HeapSize;
. = ALIGN(0x4);
} > dtcm_memory
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
_HeapSize = HeapSize;
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
/*************************************************************************/ /*************************************************************************/
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
@ -214,13 +202,15 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
__HeapBase = .; __HeapBase = .;
/*__end__ = .;*/
/*end = __end__;*/
KEEP(*(.heap*)) KEEP(*(.heap*))
. = ALIGN(4); . = ALIGN(4);
__HeapLimit = .; __HeapLimit = .;
} > ram_memory } > ram_memory
PROVIDE (__heap_min_size = 0x400);
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
} }

View file

@ -1,9 +1,9 @@
/**************************************************************************************** /****************************************************************************************
* @file map.txt * @file usb_cdc_video.ld
* *
* @brief This file is the map file (gnuarm or armgcc). * @brief This file is the map file (gnuarm or armgcc).
* *
* Copyright (C) BouffaloLab 2018 * Copyright (C) BouffaloLab 2021
* *
**************************************************************************************** ****************************************************************************************
*/ */
@ -18,7 +18,6 @@ INPUT(-lgcc)
ENTRY(_enter) ENTRY(_enter)
StackSize = 0x400; /* 4KB */ StackSize = 0x400; /* 4KB */
HeapSize = 0x400; /* 4KB */
MEMORY MEMORY
{ {
@ -39,11 +38,16 @@ SECTIONS
KEEP (*(.text.metal.init.enter)) KEEP (*(.text.metal.init.enter))
KEEP (*(SORT_NONE(.init))) KEEP (*(SORT_NONE(.init)))
/* section information for finsh shell */ /* section information for shell */
. = ALIGN(4); . = ALIGN(4);
_shell_command_start = .; __fsymtab_start = .;
KEEP(*(shellCommand)) KEEP(*(FSymTab))
_shell_command_end = .; __fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
/* section information for usb desc */ /* section information for usb desc */
. = ALIGN(4); . = ALIGN(4);
@ -56,14 +60,14 @@ SECTIONS
*(.text.*) *(.text.*)
/*put .rodata**/ /*put .rodata**/
*(EXCLUDE_FILE( *bl602_glb.o \ *(EXCLUDE_FILE( *bl702_glb.o \
*bl602_pds.o \ *bl702_pds.o \
*bl602_common.o \ *bl702_common.o \
*bl602_sf_cfg.o \ *bl702_sf_cfg.o \
*bl602_sf_ctrl.o \ *bl702_sf_ctrl.o \
*bl602_sflash.o \ *bl702_sflash.o \
*bl602_xip_sflash.o \ *bl702_xip_sflash.o \
*bl602_ef_ctrl.o) .rodata*) *bl702_ef_ctrl.o) .rodata*)
*(.rodata) *(.rodata)
*(.rodata.*) *(.rodata.*)
@ -87,14 +91,14 @@ SECTIONS
*(.sclock_rlt_code) *(.sclock_rlt_code)
*(.sclock_rlt_const) *(.sclock_rlt_const)
*bl602_glb.o*(.rodata*) *bl702_glb.o*(.rodata*)
*bl602_pds.o*(.rodata*) *bl702_pds.o*(.rodata*)
*bl602_common.o*(.rodata*) *bl702_common.o*(.rodata*)
*bl602_sf_cfg.o*(.rodata*) *bl702_sf_cfg.o*(.rodata*)
*bl602_sf_ctrl.o*(.rodata*) *bl702_sf_ctrl.o*(.rodata*)
*bl602_sflash.o*(.rodata*) *bl702_sflash.o*(.rodata*)
*bl602_xip_sflash.o*(.rodata*) *bl702_xip_sflash.o*(.rodata*)
*bl602_ef_ctrl.o*(.rodata*) *bl702_ef_ctrl.o*(.rodata*)
. = ALIGN(4); . = ALIGN(4);
__tcm_code_end__ = .; __tcm_code_end__ = .;
@ -114,22 +118,6 @@ SECTIONS
__tcm_data_end__ = .; __tcm_data_end__ = .;
} > dtcm_memory } > dtcm_memory
/* .heap_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of heap sections, and assign
* values to heap symbols later */
.heap_dummy (NOLOAD):
{
. = ALIGN(0x4);
. = . + HeapSize;
. = ALIGN(0x4);
} > dtcm_memory
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
_HeapSize = HeapSize;
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
/*************************************************************************/ /*************************************************************************/
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
@ -214,14 +202,15 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
__HeapBase = .; __HeapBase = .;
/*__end__ = .;*/
/*end = __end__;*/
KEEP(*(.heap*)) KEEP(*(.heap*))
. = ALIGN(4); . = ALIGN(4);
__HeapLimit = .; __HeapLimit = .;
} > ram_memory } > ram_memory
PROVIDE (__heap_min_size = 0x400);
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
} ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
}

View file

@ -1,9 +1,9 @@
/**************************************************************************************** /****************************************************************************************
* @file map.txt * @file usb_cdc_video_psram.ld
* *
* @brief This file is the map file (gnuarm or armgcc). * @brief This file is the map file (gnuarm or armgcc).
* *
* Copyright (C) BouffaloLab 2018 * Copyright (C) BouffaloLab 2021
* *
**************************************************************************************** ****************************************************************************************
*/ */
@ -18,7 +18,6 @@ INPUT(-lgcc)
ENTRY(_enter) ENTRY(_enter)
StackSize = 0x1000; /* 4KB */ StackSize = 0x1000; /* 4KB */
HeapSize = 0x1000; /* 4KB */
MEMORY MEMORY
{ {
@ -39,11 +38,16 @@ SECTIONS
KEEP (*(.text.metal.init.enter)) KEEP (*(.text.metal.init.enter))
KEEP (*(SORT_NONE(.init))) KEEP (*(SORT_NONE(.init)))
/* section information for finsh shell */ /* section information for shell */
. = ALIGN(4); . = ALIGN(4);
_shell_command_start = .; __fsymtab_start = .;
KEEP(*(shellCommand)) KEEP(*(FSymTab))
_shell_command_end = .; __fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
/* section information for usb desc */ /* section information for usb desc */
. = ALIGN(4); . = ALIGN(4);
@ -56,14 +60,14 @@ SECTIONS
*(.text.*) *(.text.*)
/*put .rodata**/ /*put .rodata**/
*(EXCLUDE_FILE( *bl602_glb.o \ *(EXCLUDE_FILE( *bl702_glb.o \
*bl602_pds.o \ *bl702_pds.o \
*bl602_common.o \ *bl702_common.o \
*bl602_sf_cfg.o \ *bl702_sf_cfg.o \
*bl602_sf_ctrl.o \ *bl702_sf_ctrl.o \
*bl602_sflash.o \ *bl702_sflash.o \
*bl602_xip_sflash.o \ *bl702_xip_sflash.o \
*bl602_ef_ctrl.o) .rodata*) *bl702_ef_ctrl.o) .rodata*)
*(.rodata) *(.rodata)
*(.rodata.*) *(.rodata.*)
@ -87,14 +91,14 @@ SECTIONS
*(.sclock_rlt_code) *(.sclock_rlt_code)
*(.sclock_rlt_const) *(.sclock_rlt_const)
*bl602_glb.o*(.rodata*) *bl702_glb.o*(.rodata*)
*bl602_pds.o*(.rodata*) *bl702_pds.o*(.rodata*)
*bl602_common.o*(.rodata*) *bl702_common.o*(.rodata*)
*bl602_sf_cfg.o*(.rodata*) *bl702_sf_cfg.o*(.rodata*)
*bl602_sf_ctrl.o*(.rodata*) *bl702_sf_ctrl.o*(.rodata*)
*bl602_sflash.o*(.rodata*) *bl702_sflash.o*(.rodata*)
*bl602_xip_sflash.o*(.rodata*) *bl702_xip_sflash.o*(.rodata*)
*bl602_ef_ctrl.o*(.rodata*) *bl702_ef_ctrl.o*(.rodata*)
. = ALIGN(4); . = ALIGN(4);
__tcm_code_end__ = .; __tcm_code_end__ = .;
@ -114,22 +118,6 @@ SECTIONS
__tcm_data_end__ = .; __tcm_data_end__ = .;
} > dtcm_memory } > dtcm_memory
/* .heap_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of heap sections, and assign
* values to heap symbols later */
.heap_dummy (NOLOAD):
{
. = ALIGN(0x4);
. = . + HeapSize;
. = ALIGN(0x4);
} > dtcm_memory
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
_HeapSize = HeapSize;
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
/*************************************************************************/ /*************************************************************************/
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
@ -214,14 +202,15 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
__HeapBase = .; __HeapBase = .;
/*__end__ = .;*/
/*end = __end__;*/
KEEP(*(.heap*)) KEEP(*(.heap*))
. = ALIGN(4); . = ALIGN(4);
__HeapLimit = .; __HeapLimit = .;
} > ram_memory } > ram_memory
PROVIDE (__heap_min_size = 0x400);
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
} ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
}

View file

@ -18,7 +18,6 @@ INPUT(-lgcc)
ENTRY(_enter) ENTRY(_enter)
StackSize = 0x1000; /* 4KB */ StackSize = 0x1000; /* 4KB */
HeapSize = 0x1000; /* 4KB */
MEMORY MEMORY
{ {
@ -39,11 +38,16 @@ SECTIONS
KEEP (*(.text.metal.init.enter)) KEEP (*(.text.metal.init.enter))
KEEP (*(SORT_NONE(.init))) KEEP (*(SORT_NONE(.init)))
/* section information for finsh shell */ /* section information for shell */
. = ALIGN(4); . = ALIGN(4);
_shell_command_start = .; __fsymtab_start = .;
KEEP(*(shellCommand)) KEEP(*(FSymTab))
_shell_command_end = .; __fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
/* section information for usb desc */ /* section information for usb desc */
. = ALIGN(4); . = ALIGN(4);
@ -114,22 +118,6 @@ SECTIONS
__tcm_data_end__ = .; __tcm_data_end__ = .;
} > dtcm_memory } > dtcm_memory
/* .heap_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of heap sections, and assign
* values to heap symbols later */
.heap_dummy (NOLOAD):
{
. = ALIGN(0x4);
. = . + HeapSize;
. = ALIGN(0x4);
} > dtcm_memory
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
_HeapSize = HeapSize;
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
/*************************************************************************/ /*************************************************************************/
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
@ -214,13 +202,15 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
__HeapBase = .; __HeapBase = .;
/*__end__ = .;*/
/*end = __end__;*/
KEEP(*(.heap*)) KEEP(*(.heap*))
. = ALIGN(4); . = ALIGN(4);
__HeapLimit = .; __HeapLimit = .;
} > ram_memory } > ram_memory
PROVIDE (__heap_min_size = 0x400);
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
} }

View file

@ -18,7 +18,6 @@ INPUT(-lgcc)
ENTRY(_enter) ENTRY(_enter)
StackSize = 0x1000; /* 4KB */ StackSize = 0x1000; /* 4KB */
HeapSize = 0x1000; /* 4KB */
MEMORY MEMORY
{ {
@ -56,14 +55,14 @@ SECTIONS
*(.text.*) *(.text.*)
/*put .rodata**/ /*put .rodata**/
*(EXCLUDE_FILE( *bl602_glb.o \ *(EXCLUDE_FILE( *bl702_glb.o \
*bl602_pds.o \ *bl702_pds.o \
*bl602_common.o \ *bl702_common.o \
*bl602_sf_cfg.o \ *bl702_sf_cfg.o \
*bl602_sf_ctrl.o \ *bl702_sf_ctrl.o \
*bl602_sflash.o \ *bl702_sflash.o \
*bl602_xip_sflash.o \ *bl702_xip_sflash.o \
*bl602_ef_ctrl.o) .rodata*) *bl702_ef_ctrl.o) .rodata*)
*(.rodata) *(.rodata)
*(.rodata.*) *(.rodata.*)
@ -87,14 +86,14 @@ SECTIONS
*(.sclock_rlt_code) *(.sclock_rlt_code)
*(.sclock_rlt_const) *(.sclock_rlt_const)
*bl602_glb.o*(.rodata*) *bl702_glb.o*(.rodata*)
*bl602_pds.o*(.rodata*) *bl702_pds.o*(.rodata*)
*bl602_common.o*(.rodata*) *bl702_common.o*(.rodata*)
*bl602_sf_cfg.o*(.rodata*) *bl702_sf_cfg.o*(.rodata*)
*bl602_sf_ctrl.o*(.rodata*) *bl702_sf_ctrl.o*(.rodata*)
*bl602_sflash.o*(.rodata*) *bl702_sflash.o*(.rodata*)
*bl602_xip_sflash.o*(.rodata*) *bl702_xip_sflash.o*(.rodata*)
*bl602_ef_ctrl.o*(.rodata*) *bl702_ef_ctrl.o*(.rodata*)
. = ALIGN(4); . = ALIGN(4);
__tcm_code_end__ = .; __tcm_code_end__ = .;
@ -114,22 +113,6 @@ SECTIONS
__tcm_data_end__ = .; __tcm_data_end__ = .;
} > dtcm_memory } > dtcm_memory
/* .heap_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of heap sections, and assign
* values to heap symbols later */
.heap_dummy (NOLOAD):
{
. = ALIGN(0x4);
. = . + HeapSize;
. = ALIGN(0x4);
} > dtcm_memory
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
_HeapSize = HeapSize;
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
/*************************************************************************/ /*************************************************************************/
/* .stack_dummy section doesn't contains any symbols. It is only /* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign * used for linker to calculate size of stack sections, and assign
@ -214,14 +197,16 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
__HeapBase = .; __HeapBase = .;
/*__end__ = .;*/
/*end = __end__;*/
KEEP(*(.heap*)) KEEP(*(.heap*))
. = ALIGN(4); . = ALIGN(4);
__HeapLimit = .; __HeapLimit = .;
} > ram_memory } > ram_memory
PROVIDE (__heap_min_size = 0x400);
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
} }