rt-thread-official/bsp/bf533/vdsp/bf533_ram.ldf

425 lines
16 KiB
Plaintext

/* MANAGED-BY-SYSTEM-BUILDER */
/* VisualDSP++ 5.0 Update 6 */
/* LDF Printer version: 5.6.0.4 */
/* ldfgen.exe version: 5.6.0.4 */
/* VDSG version: 5.6.0.4 */
/*
** ADSP-BF533 linker description file generated on Feb 23, 2012 at 09:38:46.
**
** Copyright (C) 2000-2008 Analog Devices Inc., All Rights Reserved.
**
** This file is generated automatically based upon the options selected
** in the LDF Wizard. Changes to the LDF configuration should be made by
** changing the appropriate options rather than editing this file.
**
** Configuration:-
** crt_doj: bf533_basiccrt.doj
** processor: ADSP-BF533
** product_name: VisualDSP++ 5.0 Update 6
** si_revision: automatic
** default_silicon_revision_from_archdef: 0.5
** cplb_init_cplb_ctrl: (
** CPLB_ENABLE_ICACHE
** CPLB_ENABLE_ICPLBS
** )
** using_cplusplus: true
** mem_init: false
** use_vdk: false
** use_eh: true
** use_argv: false
** running_from_internal_memory: true
** user_heap_src_file: E:\eclipse\tq2440radio\bsp\bf533\vdsp\bf533_heaptab.c
** libraries_use_stdlib: true
** libraries_use_fileio_libs: false
** libraries_use_ieeefp_emulation_libs: false
** libraries_use_eh_enabled_libs: false
** system_heap: L1
** system_heap_min_size: 1k
** system_stack: L1
** system_stack_min_size: 1k
** use_sdram: false
**
*/
ARCHITECTURE(ADSP-BF533)
SEARCH_DIR($ADI_DSP/Blackfin/lib)
// Workarounds are enabled, exceptions are disabled.
#define RT_LIB_NAME(x) lib ## x ## y.dlb
#define RT_LIB_NAME_EH(x) lib ## x ## y.dlb
#define RT_LIB_NAME_MT(x) lib ## x ## y.dlb
#define RT_LIB_NAME_EH_MT(x) lib ## x ## y.dlb
#define RT_OBJ_NAME(x) x ## y.doj
#define RT_OBJ_NAME_MT(x) x ## mty.doj
$LIBRARIES =
/*$VDSG<insert-user-libraries-at-beginning> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-user-libraries-at-beginning> */
RT_LIB_NAME_MT(small532)
,RT_LIB_NAME_MT(io532)
,RT_LIB_NAME_MT(c532)
,RT_LIB_NAME_MT(event532)
,RT_LIB_NAME_MT(x532)
,RT_LIB_NAME_EH_MT(cpp532)
,RT_LIB_NAME_EH_MT(cpprt532)
,RT_LIB_NAME(f64ieee532)
,RT_LIB_NAME(dsp532)
,RT_LIB_NAME(sftflt532)
,RT_LIB_NAME(etsi532)
,RT_LIB_NAME(ssl532)
,RT_LIB_NAME(drv532)
,RT_LIB_NAME(usb532)
,RT_OBJ_NAME_MT(idle532)
,RT_LIB_NAME_MT(rt_fileio532)
/*$VDSG<insert-user-libraries-at-end> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-user-libraries-at-end> */
;
$OBJECTS =
"bf533_basiccrt.doj"
/*$VDSG<insert-user-objects-at-beginning> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-user-objects-at-beginning> */
, RT_LIB_NAME(profile532)
, $COMMAND_LINE_OBJECTS
, "cplbtab533.doj"
/*$VDSG<insert-user-objects-at-end> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-user-objects-at-end> */
, RT_OBJ_NAME(crtn532)
;
$OBJS_LIBS_INTERNAL =
/*$VDSG<insert-libraries-internal> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-libraries-internal> */
$OBJECTS{prefersMem("internal")}, $LIBRARIES{prefersMem("internal")}
/*$VDSG<insert-libraries-internal-end> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-libraries-internal-end> */
;
$OBJS_LIBS_NOT_EXTERNAL =
/*$VDSG<insert-libraries-not-external> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-libraries-not-external> */
$OBJECTS{!prefersMem("external")}, $LIBRARIES{!prefersMem("external")}
/*$VDSG<insert-libraries-not-external-end> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-libraries-not-external-end> */
;
/*$VDSG<insert-user-macros> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-user-macros> */
/*$VDSG<customize-async-macros> */
/* This code is preserved if the LDF is re-generated. */
#define ASYNC0_MEMTYPE RAM
#define ASYNC1_MEMTYPE RAM
#define ASYNC2_MEMTYPE RAM
#define ASYNC3_MEMTYPE RAM
/*$VDSG<customize-async-macros> */
MEMORY
{
/*
** ADSP-BF533 MEMORY MAP.
**
** The known memory spaces are as follows:
**
** 0xFFE00000 - 0xFFFFFFFF Core MMR registers (2MB)
** 0xFFC00000 - 0xFFDFFFFF System MMR registers (2MB)
** 0xFFB01000 - 0xFFBFFFFF Reserved
** 0xFFB00000 - 0xFFB00FFF Scratch SRAM (4K)
** 0xFFA14000 - 0xFFAFFFFF Reserved
** 0xFFA10000 - 0xFFA13FFF Code SRAM / cache (16K)
** 0xFFA00000 - 0xFFA0FFFF Code SRAM (64K)
** 0xFF908000 - 0xFF9FFFFF Reserved
** 0xFF904000 - 0xFF907FFF Data Bank B SRAM / cache (16K)
** 0xFF900000 - 0xFF903FFF Data Bank B SRAM (16K)
** 0xFF808000 - 0xFF8FFFFF Reserved
** 0xFF804000 - 0xFF807FFF Data Bank A SRAM / cache (16K)
** 0xFF800000 - 0xFF803FFF Data Bank A SRAM (16K)
** 0xEF000000 - 0xFF7FFFFF Reserved
** 0x20400000 - 0xEEFFFFFF Reserved
** 0x20300000 - 0x203FFFFF ASYNC MEMORY BANK 3 (1MB)
** 0x20200000 - 0x202FFFFF ASYNC MEMORY BANK 2 (1MB)
** 0x20100000 - 0x201FFFFF ASYNC MEMORY BANK 1 (1MB)
** 0x20000000 - 0x200FFFFF ASYNC MEMORY BANK 0 (1MB)
** 0x00000000 - 0x07FFFFFF SDRAM MEMORY (16MB - 128MB)
*/
MEM_L1_SCRATCH { TYPE(RAM) START(0xFFB00000) END(0xFFB00FFF) WIDTH(8) }
MEM_L1_CODE_CACHE { TYPE(RAM) START(0xFFA10000) END(0xFFA13FFF) WIDTH(8) }
MEM_L1_CODE { TYPE(RAM) START(0xFFA00000) END(0xFFA0FFFF) WIDTH(8) }
MEM_L1_DATA_B { TYPE(RAM) START(0xFF900000) END(0xFF907FFF) WIDTH(8) }
MEM_L1_DATA_A { TYPE(RAM) START(0xFF800000) END(0xFF807FFF) WIDTH(8) }
MEM_ASYNC3 { TYPE(ASYNC3_MEMTYPE) START(0x20300000) END(0x203FFFFF) WIDTH(8) }
MEM_ASYNC2 { TYPE(ASYNC2_MEMTYPE) START(0x20200000) END(0x202FFFFF) WIDTH(8) }
MEM_ASYNC1 { TYPE(ASYNC1_MEMTYPE) START(0x20100000) END(0x201FFFFF) WIDTH(8) }
MEM_ASYNC0 { TYPE(ASYNC0_MEMTYPE) START(0x20000000) END(0x200FFFFF) WIDTH(8) }
/*$VDSG<insert-new-memory-segments> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-new-memory-segments> */
} /* MEMORY */
PROCESSOR p0
{
OUTPUT($COMMAND_LINE_OUTPUT_FILE)
RESOLVE(start, 0xFFA00000)
KEEP(start, _main)
KEEP_SECTIONS(FSymTab,VSymTab,RTMSymTab)
/*$VDSG<insert-user-ldf-commands> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-user-ldf-commands> */
SECTIONS
{
/* Workaround for hardware errata 05-00-0189 and 05-00-0310 -
** "Speculative (and fetches made at boundary of reserved memory
** space) for instruction or data fetches may cause false
** protection exceptions" and "False hardware errors caused by
** fetches at the boundary of reserved memory ".
**
** Done by avoiding use of 76 bytes from at the end of blocks
** that are adjacent to reserved memory. Workaround is enabled
** for appropriate silicon revisions (-si-revision switch).
*/
RESERVE(___wab0=MEMORY_END(MEM_L1_SCRATCH) - 75, ___l0 = 76)
RESERVE(___wab2=MEMORY_END(MEM_L1_CODE) - 75, ___l2 = 76)
RESERVE(___wab4=MEMORY_END(MEM_L1_DATA_B) - 75, ___l4 = 76)
RESERVE(___wab6=MEMORY_END(MEM_L1_DATA_A) - 75, ___l6 = 76)
RESERVE(___wab7=MEMORY_END(MEM_ASYNC3) - 75, ___l7 = 76)
/*$VDSG<insert-new-sections-at-the-start> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-new-sections-at-the-start> */
scratchpad NO_INIT
{
INPUT_SECTION_ALIGN(4)
/*$VDSG<insert-input-sections-at-the-start-of-scratchpad> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-input-sections-at-the-start-of-scratchpad> */
INPUT_SECTIONS($OBJECTS(L1_scratchpad) $LIBRARIES(L1_scratchpad))
/*$VDSG<insert-input-sections-at-the-end-of-scratchpad> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-input-sections-at-the-end-of-scratchpad> */
} > MEM_L1_SCRATCH
L1_code
{
INPUT_SECTION_ALIGN(4)
INPUT_SECTIONS($OBJECTS(L1_code) $LIBRARIES(L1_code))
/*$VDSG<insert-input-sections-at-the-start-of-l1_code> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-input-sections-at-the-start-of-l1_code> */
INPUT_SECTIONS($OBJECTS(cplb_code) $LIBRARIES(cplb_code))
INPUT_SECTIONS($OBJECTS(cplb) $LIBRARIES(cplb))
INPUT_SECTIONS($OBJECTS(noncache_code) $LIBRARIES(noncache_code))
INPUT_SECTIONS($OBJS_LIBS_INTERNAL(program))
INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(program))
INPUT_SECTIONS($OBJECTS(program) $LIBRARIES(program))
/*$VDSG<insert-input-sections-at-the-end-of-l1_code> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-input-sections-at-the-end-of-l1_code> */
} > MEM_L1_CODE
L1_code_cache
{
INPUT_SECTION_ALIGN(4)
___l1_code_cache = 1;
} > MEM_L1_CODE_CACHE
L1_data_a_1
{
INPUT_SECTION_ALIGN(4)
___l1_data_cache_a = 0;
INPUT_SECTIONS($OBJECTS(L1_data_a) $LIBRARIES(L1_data_a))
INPUT_SECTIONS($OBJECTS(L1_data) $LIBRARIES(L1_data))
/*$VDSG<insert-input-sections-at-the-start-of-L1_data_a> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-input-sections-at-the-start-of-L1_data_a> */
RESERVE(heaps_and_stack_in_L1_data_a, heaps_and_stack_in_L1_data_a_length = 1024,4)
} > MEM_L1_DATA_A
L1_data_a_bsz ZERO_INIT
{
INPUT_SECTION_ALIGN(4)
INPUT_SECTIONS( $OBJECTS(L1_bsz) $LIBRARIES(L1_bsz))
} > MEM_L1_DATA_A
L1_data_a_tables
{
INPUT_SECTION_ALIGN(4)
FORCE_CONTIGUITY
INPUT_SECTIONS($OBJECTS(vtbl) $LIBRARIES(vtbl))
INPUT_SECTIONS($OBJECTS(ctor) $LIBRARIES(ctor))
INPUT_SECTIONS($OBJECTS(ctorl) $LIBRARIES(ctorl))
INPUT_SECTIONS($OBJECTS(.frt) $LIBRARIES(.frt))
INPUT_SECTIONS($OBJECTS(.rtti) $LIBRARIES(.rtti))
INPUT_SECTIONS($OBJECTS(.gdt) $LIBRARIES(.gdt))
INPUT_SECTIONS($OBJECTS(.gdtl) $LIBRARIES(.gdtl))
INPUT_SECTIONS($OBJECTS(.edt) $LIBRARIES(.edt))
INPUT_SECTIONS($OBJECTS(.cht) $LIBRARIES(.cht))
} > MEM_L1_DATA_A
L1_data_a
{
INPUT_SECTION_ALIGN(4)
INPUT_SECTIONS($OBJECTS(cplb_data) $LIBRARIES(cplb_data))
INPUT_SECTIONS($OBJECTS(voldata) $LIBRARIES(voldata))
INPUT_SECTIONS($OBJS_LIBS_INTERNAL(data1))
INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(data1))
INPUT_SECTIONS($OBJECTS(data1) $LIBRARIES(data1))
INPUT_SECTIONS($OBJECTS(constdata) $LIBRARIES(constdata))
/*$VDSG<insert-input-sections-at-the-end-of-L1_data_a> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-input-sections-at-the-end-of-L1_data_a> */
} > MEM_L1_DATA_A
bsz_L1_data_a ZERO_INIT
{
INPUT_SECTION_ALIGN(4)
INPUT_SECTIONS($OBJS_LIBS_INTERNAL(bsz))
INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(bsz))
INPUT_SECTIONS($OBJECTS(bsz) $LIBRARIES(bsz))
} > MEM_L1_DATA_A
L1_data_a_stack_heap
{
INPUT_SECTION_ALIGN(4)
RESERVE_EXPAND(heaps_and_stack_in_L1_data_a, heaps_and_stack_in_L1_data_a_length , 0, 4)
ldf_stack_space = heaps_and_stack_in_L1_data_a;
ldf_stack_end = (ldf_stack_space + (heaps_and_stack_in_L1_data_a_length - 4)) & 0xfffffffc;
} > MEM_L1_DATA_A
L1_data_b_bsz ZERO_INIT
{
INPUT_SECTION_ALIGN(4)
INPUT_SECTIONS( $OBJECTS(L1_bsz) $LIBRARIES(L1_bsz))
} > MEM_L1_DATA_B
L1_data_b
{
INPUT_SECTION_ALIGN(4)
___l1_data_cache_b = 0;
INPUT_SECTIONS($OBJECTS(L1_data_b) $LIBRARIES(L1_data_b))
INPUT_SECTIONS($OBJECTS(L1_data) $LIBRARIES(L1_data))
/*$VDSG<insert-input-sections-at-the-start-of-L1_data_b> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-input-sections-at-the-start-of-L1_data_b> */
RESERVE(heaps_and_stack_in_L1_data_b, heaps_and_stack_in_L1_data_b_length = 1024,4)
INPUT_SECTIONS($OBJECTS(cplb_data) $LIBRARIES(cplb_data))
INPUT_SECTIONS($OBJECTS(voldata) $LIBRARIES(voldata))
INPUT_SECTIONS($OBJS_LIBS_INTERNAL(data1))
INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(data1))
INPUT_SECTIONS($OBJECTS(data1) $LIBRARIES(data1))
INPUT_SECTIONS($OBJECTS(constdata) $LIBRARIES(constdata))
INPUT_SECTIONS($OBJECTS(.edt) $LIBRARIES(.edt) )
INPUT_SECTIONS($OBJECTS(.cht) $LIBRARIES(.cht) )
/*$VDSG<insert-input-sections-at-the-end-of-L1_data_b> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-input-sections-at-the-end-of-L1_data_b> */
} > MEM_L1_DATA_B
bsz_L1_data_b ZERO_INIT
{
INPUT_SECTION_ALIGN(4)
INPUT_SECTIONS($OBJS_LIBS_INTERNAL(bsz))
INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(bsz))
INPUT_SECTIONS($OBJECTS(bsz) $LIBRARIES(bsz))
} > MEM_L1_DATA_B
rt_thread_section
{
/* section information for finsh shell */
INPUT_SECTION_ALIGN(4)
__fsymtab_start = .;
INPUT_SECTIONS($OBJECTS(FSymTab) $LIBRARIES(FSymTab))
__fsymtab_end = .;
INPUT_SECTION_ALIGN(4)
__vsymtab_start = .;
INPUT_SECTIONS($OBJECTS(VSymTab) $LIBRARIES(VSymTab))
__vsymtab_end = .;
/* section information for modules */
INPUT_SECTION_ALIGN(4)
__rtmsymtab_start = .;
INPUT_SECTIONS($OBJECTS(RTMSymTab) $LIBRARIES(RTMSymTab))
__rtmsymtab_end = .;
RESERVE(heaps_in_L1_data_b_space, heaps_in_L1_data_b_length = 2048,4)
} > MEM_L1_DATA_B
L1_data_b_stack_heap
{
INPUT_SECTION_ALIGN(4)
ldf_heap_space = heaps_and_stack_in_L1_data_b;
ldf_heap_end = (ldf_heap_space + (heaps_and_stack_in_L1_data_b_length - 4)) & 0xfffffffc;
ldf_heap_length = ldf_heap_end - ldf_heap_space;
RESERVE_EXPAND(heaps_in_L1_data_b_space, heaps_in_L1_data_b_length , 0, 4)
rtt_heap_start = heaps_in_L1_data_b_space;
rtt_heap_end = (heaps_in_L1_data_b_space + heaps_in_L1_data_b_length - 4) & 0xfffffffc;
rtt_heap_length = rtt_heap_end - rtt_heap_start;
} > MEM_L1_DATA_B
/*$VDSG<insert-new-sections-at-the-end> */
/* Text inserted between these $VDSG comments will be preserved */
/*$VDSG<insert-new-sections-at-the-end> */
} /* SECTIONS */
} /* p0 */