📄 adsp-bf535_asm.ldf
字号:
/*
** LDF for ADSP-21535.
**
** This LDF defines an example layout for a system which contains 256K
** of L2 SRAM, with the available L1 SRAM left unused. It does
** not assume the presence of any external memory. See below for
** memory map descriptions.
**
** There are a number of configuration options that can be specified
** either by compiler flags, or by linker flags directly. The options are:
**
**
** Memory map.
**
** The known memory spaces are as follows:
**
** 0xFFE00000 - 0xFFFFFFFF Core MMR registers (2MB)
** 0xFFC00000 - 0xFFDFFFFF System MMR registers (2MB)
** 0xFFB04000 - 0xFFBFFFFF Reserved
** 0xFFB00000 - 0xFFB00FFF Scratch SRAM (4K)
** 0xFFA04000 - 0xFFAFFFFF Reserved
** 0xFFA00000 - 0xFFA03FFF Code SRAM (16K)
** 0xFF904000 - 0xFF9FFFFF Reserved
** 0xFF900000 - 0xFF903FFF Data Bank B SRAM (16K)
** 0xFF804000 - 0xFF8FFFFF Reserved
** 0xFF800000 - 0xFF803FFF Data Bank A SRAM (16K)
** 0xF0040000 - 0xFF7FFFFF Reserved RAM
** 0xF0000000 - 0xF003FFFF L2 SRAM (256K)
** 0xEF000400 - 0xEFFFFFFF Reserved ROM
** 0xEF000000 - 0xEF0003FF Boot ROM (1K)
** 0x00000000 - 0xEEFFFFFF unpopulated
**
** The memory sections defined below assume that only L1 and L2 SRAM
** are available. We use L2, and leave L1 for explicit programmer use.
** The file VisualDSP/Blackfin/lib/src/libc/basiccrt.s contains example
** startup code which could be used to initialise the L1 SRAM as cache
** for L2.
**
*/
ARCHITECTURE(ADSP-21535)
SEARCH_DIR( $ADI_DSP\Blackfin\lib )
/* Moving to primIO means that we must always include the FileIO support,
** so that printf() will work.
*/
#ifndef USE_FILEIO /* { */
#define USE_FILEIO
#endif /* } */
#define LIBSMALL libsmall535.dlb,
#ifdef M3_RESERVED /* { */
#define LIBM3 libm3res535.dlb
#define LIBDSP libdspm3res535.dlb
#else
#define LIBM3 libm3free535.dlb
#define LIBDSP libdsp535.dlb
#endif /* } */
#define LIBS LIBSMALL libc535.dlb, LIBM3, libevent535.dlb, libio535.dlb, libsftflt535.dlb, LIBDSP
#if defined(USE_FILEIO) || defined(USE_PROFGUIDE)
$LIBRARIES = LIBS, librt_fileio535.dlb;
#else
$LIBRARIES = LIBS, librt535.dlb;
#endif /* } */
// Libraries from the command line are included in COMMAND_LINE_OBJECTS.
$OBJECTS = $COMMAND_LINE_OBJECTS;
MEMORY
{
#ifdef __EZKIT_LICENSE_RESTRICTION_Blackfin__ /* { */
MEM_PROGRAM { TYPE(RAM) START(0xF0000000) END(0xF0017FFF) WIDTH(8) }
MEM_HEAP { TYPE(RAM) START(0xF0018000) END(0xF001BFFF) WIDTH(8) }
MEM_STACK { TYPE(RAM) START(0xF001C000) END(0xF001DFFF) WIDTH(8) }
MEM_SYSSTACK { TYPE(RAM) START(0xF001E000) END(0xF001FDFF) WIDTH(8) }
MEM_ARGV { TYPE(RAM) START(0xF001FE00) END(0xF001FEFF) WIDTH(8) }
#else
MEM_START { TYPE(RAM) START(0xF0000000) END(0xF00003FF) WIDTH(8) }
MEM_PROGRAM { TYPE(RAM) START(0xF0000400) END(0xF002FFCF) WIDTH(8) }
MEM_PCI_IO { TYPE(RAM) START(0xF002FFD0) END(0xF002FFFF) WIDTH(8) }
MEM_HEAP { TYPE(RAM) START(0xF0030000) END(0xF0037FFF) WIDTH(8) }
MEM_STACK { TYPE(RAM) START(0xF0038000) END(0xF003DFFF) WIDTH(8) }
MEM_SYSSTACK { TYPE(RAM) START(0xF003E000) END(0xF003FDFF) WIDTH(8) }
MEM_ARGV { TYPE(RAM) START(0xF003FE00) END(0xF003FEFF) WIDTH(8) }
#endif /* } */
MEM_L1_DATA_A { TYPE(RAM) START(0xFF800000) END(0xFF803FFF) WIDTH(8) }
MEM_L1_DATA_B { TYPE(RAM) START(0xFF900000) END(0xFF903FFF) WIDTH(8) }
MEM_L1_CODE { TYPE(RAM) START(0xFFA00000) END(0xFFA03FFF) WIDTH(8) }
MEM_L1_SCRATCH { TYPE(RAM) START(0xFFB00000) END(0xFFB00FFF) WIDTH(8) }
}
PROCESSOR p0
{
OUTPUT( $COMMAND_LINE_OUTPUT_FILE )
SECTIONS
{
program
{
// Align all code sections on 2 byte boundary
INPUT_SECTION_ALIGN(4)
INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program))
INPUT_SECTIONS( $OBJECTS(data1) $LIBRARIES(data1))
INPUT_SECTIONS( $OBJECTS(constdata) $LIBRARIES(constdata))
#ifdef __EZKIT_LICENSE_RESTRICTION_Blackfin__ /* { */
INPUT_SECTIONS( $LIBRARIES(pci_io))
#endif /* } */
INPUT_SECTION_ALIGN(2)
INPUT_SECTIONS( $OBJECTS(Program_CDMP3) ) //Program Segment of MP3 Decoder library
INPUT_SECTION_ALIGN(1)
INPUT_SECTIONS( $OBJECTS(Data_CDMP3) )//Data Segment of MP3 Decoder library
} >MEM_PROGRAM
mem_start
{
// Align all code sections on 2 byte boundary
INPUT_SECTION_ALIGN(2)
INPUT_SECTIONS( $OBJECTS(mem_start) $LIBRARIES(mem_start))
} >MEM_START
L1_code
{
// Align all code sections on 2 byte boundary
INPUT_SECTION_ALIGN(2)
INPUT_SECTIONS( $OBJECTS(L1_code) $LIBRARIES(L1_code))
} >MEM_L1_CODE
L1_data_a
{
INPUT_SECTION_ALIGN(1)
INPUT_SECTIONS( $OBJECTS(L1_data_a) $LIBRARIES(L1_data_a))
} >MEM_L1_DATA_A
L1_data_b
{
INPUT_SECTION_ALIGN(1)
INPUT_SECTIONS( $OBJECTS(L1_data_b) $LIBRARIES(L1_data_b))
} >MEM_L1_DATA_B
#ifndef __EZKIT_LICENSE_RESTRICTION_Blackfin__ /* { */
pci_io
{
INPUT_SECTION_ALIGN(4)
INPUT_SECTIONS( $LIBRARIES(pci_io))
} >MEM_PCI_IO
#endif /* } */
stack
{
ldf_stack_space = .;
ldf_stack_end = ldf_stack_space + MEMORY_SIZEOF(MEM_STACK);
} >MEM_STACK
sysstack
{
ldf_sysstack_space = .;
ldf_sysstack_end = ldf_sysstack_space + MEMORY_SIZEOF(MEM_SYSSTACK);
} >MEM_SYSSTACK
heap
{
// Allocate a heap for the application
ldf_heap_space = .;
ldf_heap_end = ldf_heap_space + MEMORY_SIZEOF(MEM_HEAP) - 1;
ldf_heap_length = ldf_heap_end - ldf_heap_space;
} >MEM_HEAP
argv
{
// Allocate argv space for the application
ldf_argv_space = .;
ldf_argv_end = ldf_argv_space + MEMORY_SIZEOF(MEM_ARGV) - 1;
ldf_argv_length = ldf_argv_end - ldf_argv_space;
} >MEM_ARGV
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -