⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adsp-bf561_tinyboards.ldf

📁 BlackFin与摄像头的接口程序
💻 LDF
📖 第 1 页 / 共 4 页
字号:
       INPUT_SECTIONS( $OBJECTS(L2_bsz) $LIBRARIES(L2_bsz))
       INPUT_SECTIONS( $OBJS_LIBS_INTERNAL(bsz) )
       INPUT_SECTIONS( $OBJS_LIBS_NOT_EXTERNAL(bsz) )
    } >MEM_L2_SRAM_A

#if defined(USE_L2_STACK) || defined(USE_L2_HEAP)
    stack_heap_L2_sram_a
    {
      RESERVE_EXPAND(stack_and_heap_in_L2_sram_a, stack_and_heap_in_L2_sram_a_length, 0, 4)
#if defined(USE_L2_STACK) && defined(USE_L2_HEAP)
      ldf_stack_space = stack_and_heap_in_L2_sram_a;
      ldf_stack_end = (ldf_stack_space + ((stack_and_heap_in_L2_sram_a_length * STACK_SIZE) / STACKHEAP_SIZE) - 4 ) & 0xfffffffc;
      ldf_heap_space = ldf_stack_end + 4;
      ldf_heap_end = ldf_stack_space + stack_and_heap_in_L2_sram_a_length;
      ldf_heap_length = ldf_heap_end - ldf_heap_space;
#elif defined(USE_L2_STACK)
      ldf_stack_space = stack_and_heap_in_L2_sram_a;
      ldf_stack_end = ldf_stack_space + stack_and_heap_in_L2_sram_a_length;
#elif defined(USE_L2_HEAP)
      ldf_heap_space = stack_and_heap_in_L2_sram_a;
      ldf_heap_end = ldf_heap_space + stack_and_heap_in_L2_sram_a_length;
      ldf_heap_length = ldf_heap_end - ldf_heap_space;
#endif
    } >MEM_L2_SRAM_A
#endif 

    L2_shared {
       // Contains data shared between cores - Requires use of resolve.
       INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(l2_shared) $LIBRARIES(l2_shared))

       // Holds control variable used to ensure atomic file I/O
       // Must be in shared memory and NOT cached.
       INPUT_SECTIONS( $LIBRARIES(primio_atomic_lock))
    } >MEM_L2_SRAM

#if defined(USE_SDRAM)

#if defined(USE_SDRAM_STACK) || defined(USE_SDRAM_HEAP)

#if (defined(USE_SDRAM_STACK) || defined(USE_SDRAM_HEAP)) && \
    (!DATAA_CACHE && !DATAB_CACHE)
#   warning Putting stack/heap into external sdram without data cache enabled can have a serious performance impact
#endif
#endif /* USE_SDRAM_STACK || USE_SDRAM_HEAP */

    sdram0_bank0
    {
       INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(sdram0) $LIBRARIES(sdram0))
       INPUT_SECTIONS( $OBJECTS(sdram0_bank0) $LIBRARIES(sdram0_bank0))
#if defined(USE_SDRAM_STACK) && defined(USE_SDRAM_HEAP)
       RESERVE(stack_and_heap_in_sdram0, stack_and_heap_in_sdram0_length = STACKHEAP_SIZE, 4)
#elif defined(USE_SDRAM_STACK)
       RESERVE(stack_and_heap_in_sdram0, stack_and_heap_in_sdram0_length = STACK_SIZE, 4)
#elif defined(USE_SDRAM_HEAP)
       RESERVE(stack_and_heap_in_sdram0, stack_and_heap_in_sdram0_length = HEAP_SIZE, 4)
#else
       INPUT_SECTIONS( $OBJECTS(noncache_code) $LIBRARIES(noncache_code))
       INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program))
#endif
    } >MEM_SDRAM0_BANK0

#if defined(USE_SDRAM_STACK) || defined(USE_SDRAM_HEAP)
   stack_heap_sdram0_bank0
   {
      INPUT_SECTION_ALIGN(4)
      RESERVE_EXPAND(stack_and_heap_in_sdram0, stack_and_heap_in_sdram0_length, 0, 4)
#if defined(USE_SDRAM_STACK) && defined(USE_SDRAM_HEAP)
      ldf_stack_space = stack_and_heap_in_sdram0;
      ldf_stack_end = (ldf_stack_space + ((stack_and_heap_in_sdram0_length * STACK_SIZE) / STACKHEAP_SIZE) - 4 ) & 0xfffffffc;
      ldf_heap_space = ldf_stack_end + 4;
      ldf_heap_end = ldf_stack_space + stack_and_heap_in_sdram0_length;
      ldf_heap_length = ldf_heap_end - ldf_heap_space;
#elif defined(USE_SDRAM_STACK)
      ldf_stack_space = stack_and_heap_in_sdram0;
      ldf_stack_end = ldf_stack_space + stack_and_heap_in_sdram0_length;
#elif defined(USE_SDRAM_HEAP)
      ldf_heap_space = stack_and_heap_in_sdram0;
      ldf_heap_end = ldf_heap_space + stack_and_heap_in_sdram0_length;
      ldf_heap_length = ldf_heap_end - ldf_heap_space;
#endif
   } >MEM_SDRAM0_BANK0
#endif

    sdram0_bank1 {
       // Data
       INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(sdram0_bank1) $LIBRARIES(sdram0_bank1))
       INPUT_SECTIONS( $OBJECTS(sdram_data) $LIBRARIES(sdram_data))
#if defined(__cplusplus) || defined(USER_CRT)
       INPUT_SECTIONS( $OBJECTS(.frt) $LIBRARIES(.frt) )
       INPUT_SECTIONS( $OBJECTS(.frtl) $LIBRARIES(.frtl) )
       INPUT_SECTIONS( $OBJECTS(ctor) $LIBRARIES(ctor) )
       INPUT_SECTIONS( $OBJECTS(ctorl) $LIBRARIES(ctorl) )
       INPUT_SECTIONS( $OBJECTS(.gdt) $LIBRARIES(.gdt) )
       INPUT_SECTIONS( $OBJECTS(.gdtl) $LIBRARIES(.gdtl) )
#endif
       INPUT_SECTIONS( $OBJECTS(data1) $LIBRARIES(data1))
       INPUT_SECTIONS( $OBJECTS(voldata) $LIBRARIES(voldata))
       INPUT_SECTIONS( $OBJECTS(cplb_data) $LIBRARIES(cplb_data))
#if defined(__cplusplus) || defined(USER_CRT)
       INPUT_SECTIONS( $OBJECTS(.edt) $LIBRARIES(.edt) )
       INPUT_SECTIONS( $OBJECTS(.cht) $LIBRARIES(.cht) )
       INPUT_SECTIONS( $OBJECTS(.rtti) $LIBRARIES(.rtti) )
#endif
   } >MEM_SDRAM0_BANK1

    sdram0_bank2 {
       // Data
       INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(sdram0_bank2) $LIBRARIES(sdram0_bank2))
       INPUT_SECTIONS( $OBJECTS(sdram0) $LIBRARIES(sdram0))
       INPUT_SECTIONS( $OBJECTS(constdata) $LIBRARIES(constdata))
#if defined(IDDE_ARGS)
       RESERVE(___argv_string, ___argv_string_length = 0x100, 4)
#endif
#if defined(__MEMINIT__)
       INPUT_SECTIONS( $OBJECTS(bsz_init) $LIBRARIES(bsz_init))
#endif
   } >MEM_SDRAM0_BANK2

    sdram0_bank2_bsz ZERO_INIT {
       // Bsz
       INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(sdram_bsz) $LIBRARIES(sdram_bsz))
       INPUT_SECTIONS( $OBJECTS(bsz) $LIBRARIES(bsz))
   } >MEM_SDRAM0_BANK2

#if defined(__MEMINIT__)
    .meminit { ALIGN(4) } >MEM_SDRAM0_BANK2
#endif

    sdram0_bank3 {
       // Program Section
       INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(sdram0_bank3) $LIBRARIES(sdram0_bank3))
       INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program))
       INPUT_SECTIONS( $OBJECTS(noncache_code) $LIBRARIES(noncache_code))
   } >MEM_SDRAM0_BANK3

    sdram_shared {
       // Shared section of SDRAM for both cores.
       INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(sdram_shared))

       // Holds control variable used to ensure atomic file I/O
       // Must be in shared memory and NOT cached.
       INPUT_SECTIONS( $LIBRARIES(primio_atomic_lock))
    } >MEM_SDRAM1_SHARED

   overspill_sdram0_bank0
   {
      INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program))
       INPUT_SECTIONS( $OBJECTS(noncache_code) $LIBRARIES(noncache_code))
       INPUT_SECTIONS( $OBJECTS(sdram0) $LIBRARIES(sdram0))
       INPUT_SECTIONS( $OBJECTS(constdata) $LIBRARIES(constdata))
       INPUT_SECTIONS( $OBJECTS(sdram_data) $LIBRARIES(sdram_data))
       INPUT_SECTIONS( $OBJECTS(data1) $LIBRARIES(data1))
       INPUT_SECTIONS( $OBJECTS(voldata) $LIBRARIES(voldata))
       INPUT_SECTIONS( $OBJECTS(cplb_data) $LIBRARIES(cplb_data))
#if defined(__cplusplus) || defined(USER_CRT)
       INPUT_SECTIONS( $OBJECTS(.edt) $LIBRARIES(.edt) )
       INPUT_SECTIONS( $OBJECTS(.cht) $LIBRARIES(.cht) )
       INPUT_SECTIONS( $OBJECTS(.rtti) $LIBRARIES(.rtti) )
       INPUT_SECTIONS( $OBJECTS(vtbl) $LIBRARIES(vtbl) )
#endif
   } >MEM_SDRAM0_BANK0
 
   overspill_sdram0_bank1
   {
      INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program))
       INPUT_SECTIONS( $OBJECTS(noncache_code) $LIBRARIES(noncache_code))
       INPUT_SECTIONS( $OBJECTS(sdram0) $LIBRARIES(sdram0))
       INPUT_SECTIONS( $OBJECTS(constdata) $LIBRARIES(constdata))
       INPUT_SECTIONS( $OBJECTS(sdram_data) $LIBRARIES(sdram_data))
       INPUT_SECTIONS( $OBJECTS(data1) $LIBRARIES(data1))
       INPUT_SECTIONS( $OBJECTS(voldata) $LIBRARIES(voldata))
       INPUT_SECTIONS( $OBJECTS(cplb_data) $LIBRARIES(cplb_data))
#if defined(__cplusplus) || defined(USER_CRT)
       INPUT_SECTIONS( $OBJECTS(.edt) $LIBRARIES(.edt) )
       INPUT_SECTIONS( $OBJECTS(.cht) $LIBRARIES(.cht) )
       INPUT_SECTIONS( $OBJECTS(.rtti) $LIBRARIES(.rtti) )
       INPUT_SECTIONS( $OBJECTS(vtbl) $LIBRARIES(vtbl) )
#endif
   } >MEM_SDRAM0_BANK1
 
   overspill_sdram0_bank2
   {
      INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program))
       INPUT_SECTIONS( $OBJECTS(noncache_code) $LIBRARIES(noncache_code))
       INPUT_SECTIONS( $OBJECTS(sdram0) $LIBRARIES(sdram0))
       INPUT_SECTIONS( $OBJECTS(constdata) $LIBRARIES(constdata))
       INPUT_SECTIONS( $OBJECTS(sdram_data) $LIBRARIES(sdram_data))
       INPUT_SECTIONS( $OBJECTS(data1) $LIBRARIES(data1))
       INPUT_SECTIONS( $OBJECTS(voldata) $LIBRARIES(voldata))
       INPUT_SECTIONS( $OBJECTS(cplb_data) $LIBRARIES(cplb_data))
#if defined(__cplusplus) || defined(USER_CRT)
       INPUT_SECTIONS( $OBJECTS(.edt) $LIBRARIES(.edt) )
       INPUT_SECTIONS( $OBJECTS(.cht) $LIBRARIES(.cht) )
       INPUT_SECTIONS( $OBJECTS(.rtti) $LIBRARIES(.rtti) )
       INPUT_SECTIONS( $OBJECTS(vtbl) $LIBRARIES(vtbl) )
#endif
   } >MEM_SDRAM0_BANK2
 
   overspill_sdram0_bank3
   {
      INPUT_SECTION_ALIGN(4)
       INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program))
       INPUT_SECTIONS( $OBJECTS(noncache_code) $LIBRARIES(noncache_code))
       INPUT_SECTIONS( $OBJECTS(sdram0) $LIBRARIES(sdram0))
       INPUT_SECTIONS( $OBJECTS(constdata) $LIBRARIES(constdata))
       INPUT_SECTIONS( $OBJECTS(sdram_data) $LIBRARIES(sdram_data))
       INPUT_SECTIONS( $OBJECTS(data1) $LIBRARIES(data1))
       INPUT_SECTIONS( $OBJECTS(voldata) $LIBRARIES(voldata))
       INPUT_SECTIONS( $OBJECTS(cplb_data) $LIBRARIES(cplb_data))
#if defined(__cplusplus) || defined(USER_CRT)
       INPUT_SECTIONS( $OBJECTS(.edt) $LIBRARIES(.edt) )
       INPUT_SECTIONS( $OBJECTS(.cht) $LIBRARIES(.cht) )
       INPUT_SECTIONS( $OBJECTS(.rtti) $LIBRARIES(.rtti) )
       INPUT_SECTIONS( $OBJECTS(vtbl) $LIBRARIES(vtbl) )
#endif
   } >MEM_SDRAM0_BANK3

#endif /* USE_SDRAM */
 
  }
}
#endif /* COREA */

/* Core B */
#if defined(COREB)
PROCESSOR p1 {
   OUTPUT( $COMMAND_LINE_OUTPUT_FILE )

   /* Following address must match the core reset PC address */
   RESOLVE(start,0xFF600000)

#if defined(IDDE_ARGS)
  RESOLVE(___argv_string, ARGV_START_B)
#endif

   /* Issue resolve statement for shared symbols mapped in CoreA. Below
   ** is an example of how to do that.
   */
#if defined(OTHERCORE)               /* OTHERCORE is a macro defined to name 
                                     ** of CoreA DXE 
                                     */
#  include <shared_symbols.h>        /* C runtime library shared symbols, 
                                     ** uses macro OTHERCORE.
                                     */
#  include "local_shared_symbols.h"  /* local application symbols */
#endif /* OTHERCORE */

   KEEP(start,_main)

   SECTIONS 
   {
    /* FEB1FC00->FEB1FFFF : Reseved in boot Phase for 2nd stage boot loader */
    RESERVE(___ssld=0xFEB1FC00,___lssld=0x400) 
#if defined(__WORKAROUND_AVOID_LDF_BLOCK_BOUNDARIES) /* { */
    /* Workaround for hardware errata 05-00-0189 -
    ** "Speculative (and fetches made at boundary of reserved memory
    ** space) for instruction or data fetches may cause false
    ** protection exceptions".
    **
    ** 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(___wabb0=0xFF700FFF - 75,___lb0=76)   /* scratchpad */
#  if !INSTR_CACHE
    RESERVE(___wabb1=0xFF613FFF - 75,___lb1=76)   /* l1 instr sram/cache */
#  endif
    RESERVE(___wabb2=0xFF603FFF - 75,___lb2=76)   /* l1 instr sram */
#  if DATAB_CACHE
    RESERVE(___wabb3=0xFF503FFF - 75,___lb3=76)   /* data B sram */
#  else
    RESERVE(___wabb4=0xFF507FFF - 75,___lb4=76)   /* data B sram/cache */
#  endif
#  if DATAA_CACHE
    RESERVE(___wabb5=0xFF403FFF - 75,___lb5=76)   /* data A sram */
#  else
    RESERVE(___wabb6=0xFF407FFF - 75,___lb6=76)   /* data A sram/cache */
#  endif
#   if 0
    /*  L2 block end memory reserved for second stage loader above */
    RESERVE(___wabb7=0xFEB1FFFF - 75,___lb7=76)   /* L2 sram */
#   endif
    RESERVE(___wabb8=0x2FFFFFFF - 75,___lb8=76)   /* async bank 3 */
#if defined(USE_SDRAM) || defined(USE_CACHE)
    RESERVE(___waba9=0x3FFFFFF - 75,___la9=76)    /* EZ-Kit sdram */
#endif
#endif /*} __WORKAROUND_AVOID_LDF_BLOCK_BOUNDARIES */

#if defined(USE_SCRATCHPAD_STACK) || defined(USE_SCRATCHPAD_HEAP)
    stack_and_heap_scratchpad
    {
       INPUT_SECTION_ALIGN(4)
       RESERVE(stack_and_heap_in_scratchpad, stack_and_heap_in_scratchpad_length, 0, 4)
#if defined(USE_SCRATCHPAD_STACK) && defined(USE_SCRATCHPAD_HEAP)
       ldf_stack_space = stack_and_heap_in_scratchpad;
       ldf_stack_end = (ldf_stack_space + ((stack_and_heap_in_scratchpad_length * STACK_SIZE) / STACKHEAP_SIZE) - 4 ) & 0xfffffffc;
       ldf_heap_space = ldf_stack_end + 4;
       ldf_heap_end = ldf_stack_space + stack_and_heap_in_scratchpad_length;
       ldf_heap_length = ldf_heap_end - ldf_heap_space;
#elif defined(USE_SCRATCHPAD_STACK)
       ldf_stack_space = stack_and_heap_in_scratchpad;
       ldf_stack_end = ldf_stack_space + stack_and_heap_in_scratchpad_length;
#elif defined(USE_SCRATCHPAD_HEAP)
       ldf_heap_space = stack_and_heap_in_scratchpad;
       ldf_heap_end = ldf_heap_space + stack_and_heap_in_scratchpad_length;
       ldf_heap_length = ldf_heap_end - ldf_heap_space;
#endif
    } > MEM_B_L1_SCRATCH
#endif 

    L1_code {
       INPUT_SECTION_ALIGN(4)
       __CORE = 1;
       INPUT_SECTIONS( $OBJECTS(L1_code) $LIBRARIES(L1_code))
       INPUT_SECTIONS( $OBJECTS(cplb) $LIBRARIES(cplb))
       INPUT_SECTIONS( $OBJECTS(cplb_code) $LIBRARIES(cplb_code))
       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))
    } >MEM_B_L1_CODE

    L1_code_cache {
       INPUT_SECTION_ALIGN(4)
#if INSTR_CACHE 
       ___l1_code_cache = 1;
#else
       ___l1_code_cache = 0;
       INPUT_SECTIONS( $OBJECTS(L1_code) $LIBRARIES(L1_code))
       INPUT_SECTIONS( $OBJECTS(cplb) $LIBRARIES(cplb))
       INPUT_SECTIONS( $OBJECTS(cplb_code) $LIBRARIES(cplb_code))
       INPUT_SECTIONS( $OBJS_LIBS_INTERNAL(program) )
       INPUT_SECTIONS( $OBJS_LIBS_NOT_EXTERNAL(program) )
       INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program))
#endif /* INSTR_CACHE */
    } >MEM_B_L1_CODE_CACHE

#if DATAB_CACHE

    L1_data_b_cache {
       INPUT_SECTION_ALIGN(4)
       ___l1_data_cache_b = 1;
    } >MEM_B_L1_DATA_B_CACHE

#endif /* DATAB_CACHE */

    L1_data_b {
       INPUT_SECTION_ALIGN(4)
#if !DATAB_CACHE 
       ___l1_data_cache_b = 0;
#endif
       INPUT_SECTIONS( $OBJECTS(L1_data_b) $LIBRARIES(L1_data_b))
       INPUT_SECTIONS( $OBJECTS(L1_data) $LIBRARIES(L1_data))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -