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

📄 vdk-bf561.ldf

📁 analog device vdsp LAN driver and examples
💻 LDF
📖 第 1 页 / 共 4 页
字号:
mem_b_l2_sram         { TYPE(RAM) START(0xFEB00000) END(0xFEB07FFF) WIDTH(8) }

/* L2 memory Core A - FEB08000 to FEB0FFFF */
mem_a_l2_sram         { TYPE(RAM) START(0xFEB08000) END(0xFEB0FFFF) WIDTH(8) }

mem_l2_shared         { TYPE(RAM) START(0xFEB10000) END(0xFEB1FFFF) WIDTH(8) }

#ifdef PARTITION_EZKIT_SDRAM
/* SDRAM Partitioning:
   SDRAM for BF561 is available in up to 128MB in 4 External Banks.
   Each external bank consists of 4 internal banks.
   The EBUI SDRAM Controller can hold open up to 4 internal banks 
   open synchronously. Suitable partitioning that avoids placing
   data and program in the same internal bank can improve performance.
   The default LDF contains a configuration for two external banks
   each holding 32MB SDRAM. The default LDF uses one bank per core,
   partitioned to segment data and program.
  */
/* CoreA: Heap */ 
mem_sdram0_bank0      {TYPE(RAM) START(0x00000004) END(0x007FFFFF) WIDTH(8) }
/* CoreA: Data */ 
mem_sdram0_bank1      {TYPE(RAM) START(0x00800000) END(0x00FFFFFF) WIDTH(8) }
/* CoreA: Data/BSZ */ 
mem_sdram0_bank2      {TYPE(RAM) START(0x01000000) END(0x017FFFFF) WIDTH(8) }
/* CoreA: Program */ 
mem_sdram0_bank3      {TYPE(RAM) START(0x01800000) END(0x01FFFFFF) WIDTH(8) }
/* CoreB: Heap */ 
mem_sdram1_bank0      {TYPE(RAM) START(0x02000000) END(0x027FFFFF) WIDTH(8) }
	/* CoreB: Data */ 
mem_sdram1_bank1      {TYPE(RAM) START(0x02800000) END(0x02FFFFFF) WIDTH(8) }
/* CoreB: Data/BSZ */ 
mem_sdram1_bank2      {TYPE(RAM) START(0x03000000) END(0x037FFFFF) WIDTH(8) } 
/* CoreB: Program */ 
mem_sdram1_bank3      {TYPE(RAM) START(0x03800000) END(0x03FFFFFF) WIDTH(8) }
#else
mem_sdram0  {       TYPE(RAM) START(0x00000004) END(0x01FFFFFF) WIDTH(8) }
mem_sdram1  {       TYPE(RAM) START(0x02000000) END(0x03FFFFFF) WIDTH(8) }
#endif

}


/* Core A */
#ifdef COREA
PROCESSOR p0
{
   OUTPUT( $COMMAND_LINE_OUTPUT_FILE )
   RESOLVE(start,0xFFA00000)
   KEEP(start,_main)
   KEEP(_kMaxNumThreads__3VDK)
   KEEP(_kMaxNumActiveSemaphores__3VDK)
   KEEP(_g_Sem_ThreadBaseOffset__3VDK)
   KEEP(_kMaxNumActiveDevFlags__3VDK)
   KEEP(_kMaxNumActiveMessages__3VDK)
   KEEP(_kMaxNumActiveMemoryPools__3VDK)
   KEEP(_kNumEvents__3VDK)
   KEEP(_kNumEventBits__3VDK)

    SECTIONS
    {
#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(___waba0=0xFFB00FFF - 75,___la0=76)   /* scratchpad */
#  if !INSTR_CACHE
    RESERVE(___waba1=0xFFA13FFF - 75,___la1=76)   /* l1 instr sram/cache */
#  endif
    RESERVE(___waba2=0xFFA03FFF - 75,___la2=76)   /* l1 instr sram */
#  if DATAB_CACHE
    RESERVE(___waba3=0xFF903FFF - 75,___la3=76)   /* data B sram */
#  else
    RESERVE(___waba4=0xFF907FFF - 75,___la4=76)   /* data B sram/cache */
#  endif
#  if DATAA_CACHE
    RESERVE(___waba5=0xFF803FFF - 75,___la5=76)   /* data A sram */
#  else
    RESERVE(___waba6=0xFF807FFF - 75,___la6=76)   /* data A sram/cache */
#  endif
    RESERVE(___waba7=0xFEB1FFFF - 75,___la7=76)   /* L2 sram */
    RESERVE(___waba9=0x3FFFFFF - 75,___la9=76)    /* EZ-Kit 64MB sdram */
#else
    /* FEB1FC00->FEB1FFFF : Reseved in boot Phase for 2nd stage boot loader */
    RESERVE(___ssld=0xFEB1FC00,___lssld=0x400)
#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,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_a_l1_scratch
#endif
        sec_program
        {
            INPUT_SECTION_ALIGN(4)
            __CORE = 0;
            INPUT_SECTIONS( $LIBRARIES_CORE_A(VDK_ISR_code) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(L1_code) $LIBRARIES_CORE_A(L1_code))
            INPUT_SECTIONS( $OBJECTS_CORE_A(cplb) $LIBRARIES_CORE_A(cplb))
            INPUT_SECTIONS( $OBJECTS_CORE_A(cplb_code) $LIBRARIES_CORE_A(cplb_code))
            INPUT_SECTIONS( $OBJECTS_CORE_A(noncache_code) $LIBRARIES_CORE_A(noncache_code))
            INPUT_SECTIONS( $INPUT_BY_MEM_TYPE(program))
        } >mem_a_l1_code

        l1_code
        {
#if INSTR_CACHE /* { */
                ___l1_code_cache = 1;
#else
                ___l1_code_cache = 0;
            INPUT_SECTION_ALIGN(4)
            INPUT_SECTIONS( $LIBRARIES_CORE_A(VDK_ISR_code) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(L1_code) $LIBRARIES_CORE_A(L1_code))
            INPUT_SECTIONS( $OBJECTS_CORE_A(cplb) $LIBRARIES_CORE_A(cplb))
            INPUT_SECTIONS( $OBJECTS_CORE_A(cplb_code) $LIBRARIES_CORE_A(cplb_code))
            INPUT_SECTIONS( $INPUT_BY_MEM_TYPE(program))
#endif /* INSTR_CACHE } */
        } >mem_a_l1_code_cache

        L1_data_a
        {
            INPUT_SECTION_ALIGN(4)
            INPUT_SECTIONS( $OBJECTS_CORE_A(l1_data_a) $LIBRARIES_CORE_A(l1_data_a))
            INPUT_SECTIONS( $OBJECTS_CORE_A(L1_data_a) $LIBRARIES_CORE_A(L1_data_a))
            INPUT_SECTIONS( $OBJECTS_CORE_A(l1_data) $LIBRARIES_CORE_A(l1_data))
            INPUT_SECTIONS( $OBJECTS_CORE_A(L1_data) $LIBRARIES_CORE_A(L1_data))
#if !DATAA_CACHE
            ___l1_data_cache_a = 0;
#endif
            INPUT_SECTIONS( $OBJECTS_CORE_A(vtbl) $LIBRARIES_CORE_A(vtbl) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.frt) $LIBRARIES_CORE_A(.frt) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.frtl) $LIBRARIES_CORE_A(.frtl) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(ctor) $LIBRARIES_CORE_A(ctor) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(ctorl) $LIBRARIES_CORE_A(ctorl) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.gdt) $LIBRARIES_CORE_A(.gdt) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.gdtl) $LIBRARIES_CORE_A(.gdtl) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.rtti) $LIBRARIES_CORE_A(.rtti) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.edt) $LIBRARIES_CORE_A(.edt) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.cht) $LIBRARIES_CORE_A(.cht) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(cplb_data) $LIBRARIES_CORE_A(cplb_data))
            INPUT_SECTIONS($OBJECTS_CORE_A(voldata) $LIBRARIES_CORE_A(voldata))
            INPUT_SECTIONS($OBJECTS_CORE_A(constdata) $LIBRARIES_CORE_A(constdata))
            INPUT_SECTIONS( $INPUT_BY_MEM_TYPE(data1))
        } >mem_a_l1_data_a

         bsz_L1_data_a ZERO_INIT
        {
            INPUT_SECTION_ALIGN(4)
            INPUT_SECTIONS( $OBJECTS_CORE_A(L1_bsz) $LIBRARIES_CORE_A(L1_bsz))
            INPUT_SECTIONS( $OBJECTS_CORE_A(bsz) $LIBRARIES_CORE_A(bsz))
        } >mem_a_l1_data_a

	L1_data_b
        {
            INPUT_SECTION_ALIGN(4)
            INPUT_SECTIONS( $OBJECTS_CORE_A(l1_data_b) $LIBRARIES_CORE_A(l1_data_b))
            INPUT_SECTIONS( $OBJECTS_CORE_A(L1_data_b) $LIBRARIES_CORE_A(L1_data_b))
            INPUT_SECTIONS( $OBJECTS_CORE_A(l1_data) $LIBRARIES_CORE_A(l1_data))
            INPUT_SECTIONS( $OBJECTS_CORE_A(L1_data) $LIBRARIES_CORE_A(L1_data))
            INPUT_SECTIONS( $OBJECTS_CORE_A(voldata) $LIBRARIES_CORE_A(voldata))
#if USE_L1_DATA_HEAP && USE_L1_DATA_STACK
            RESERVE(stack_and_heap_in_L1_data_b, stack_and_heap_in_L1_data_b_length = STACKHEAP_SIZE,4)
#elif USE_L1_DATA_HEAP 
            RESERVE(stack_and_heap_in_L1_data_b, stack_and_heap_in_L1_data_b_length = HEAP_SIZE,4)
#elif USE_L1_DATA_STACK
            RESERVE(stack_and_heap_in_L1_data_b, stack_and_heap_in_L1_data_b_length = STACK_SIZE,4)
#endif
            INPUT_SECTIONS( $OBJECTS_CORE_A(constdata) $LIBRARIES_CORE_A(constdata))
            INPUT_SECTIONS( $OBJS_LIBS_INTERNAL(data1))
            INPUT_SECTIONS( $OBJS_LIBS_NOT_EXTERNAL(data1))
            INPUT_SECTIONS( $OBJECTS_CORE_A(vtbl) $LIBRARIES_CORE_A(vtbl) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.rtti) $LIBRARIES_CORE_A(.rtti) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.edt) $LIBRARIES_CORE_A(.edt) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.cht) $LIBRARIES_CORE_A(.cht) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(data1) $LIBRARIES_CORE_A(data1))
        } >mem_a_l1_data_b

         bsz_L1_data_b ZERO_INIT
        {
            INPUT_SECTION_ALIGN(4)
            INPUT_SECTIONS( $OBJECTS_CORE_A(L1_bsz) $LIBRARIES_CORE_A(L1_bsz))
            INPUT_SECTIONS( $OBJECTS_CORE_A(bsz) $LIBRARIES_CORE_A(bsz))
        } >mem_a_l1_data_b

#if USE_L1_DATA_STACK || USE_L1_DATA_HEAP
   stack_and_heap_L1_data_b
   {
      INPUT_SECTION_ALIGN(4)
      RESERVE_EXPAND(stack_and_heap_in_L1_data_b, stack_and_heap_in_L1_data_b_length,0,4)
#if USE_L1_DATA_STACK && USE_L1_DATA_HEAP
      ldf_stack_space = stack_and_heap_in_L1_data_b;
      ldf_stack_end = (ldf_stack_space + (stack_and_heap_in_L1_data_b_length * STACK_SIZE)/ STACKHEAP_SIZE - 4 ) & 0xfffffffc;
      ldf_heap_space = ldf_stack_end + 4;
      ldf_heap_end = ldf_stack_space + stack_and_heap_in_L1_data_b_length;
      ldf_heap_length = ldf_heap_end - ldf_heap_space;
#elif USE_L1_DATA_STACK
      ldf_stack_space = stack_and_heap_in_L1_data_b;
      ldf_stack_end = ldf_stack_space + stack_and_heap_in_L1_data_b_length;
#elif USE_L1_DATA_HEAP
      ldf_heap_space = stack_and_heap_in_L1_data_b;
      ldf_heap_end = ldf_heap_space + stack_and_heap_in_L1_data_b_length;
      ldf_heap_length = ldf_heap_end - ldf_heap_space;
#endif
   } > mem_a_l1_data_b
#endif


#if DATAA_CACHE 
        l1_data_a
        {
            INPUT_SECTION_ALIGN(4)
            ___l1_data_cache_a = 1;
        } >mem_a_l1_data_a_cache
#endif /* DATAA_CACHE */

#if DATAB_CACHE 
        l1_data_b
        {
            INPUT_SECTION_ALIGN(4)
            ___l1_data_cache_b = 1;
        } >mem_a_l1_data_b_cache
#endif /* DATAB_CACHE */

        l2_sram_a
        {
            INPUT_SECTION_ALIGN(4)
            INPUT_SECTIONS( $OBJECTS_CORE_A(l2_sram) $LIBRARIES_CORE_A(l2_sram))
            INPUT_SECTIONS( $OBJECTS_CORE_A(l2_sram_a) $LIBRARIES_CORE_A(l2_sram_a))
            INPUT_SECTIONS( $OBJECTS_CORE_A(L2_data) $LIBRARIES_CORE_A(L2_data))
#if defined (__MEMINIT__) && !defined(USE_SDRAM)
            INPUT_SECTIONS( $OBJS(bsz_init) $LIBS(bsz_init))
#endif
#if defined(USE_L2_HEAP) && defined(USE_L2_STACK)
            RESERVE(stack_and_heap_in_L2_sram, stack_and_heap_in_L2_sram_length = STACKHEAP_SIZE,4)
#elif defined(USE_L2_HEAP) 
            RESERVE(stack_and_heap_in_L2_sram, stack_and_heap_in_L2_sram_length = HEAP_SIZE,4)
#elif defined(USE_L2_STACK)
            RESERVE(stack_and_heap_in_L2_sram, stack_and_heap_in_L2_sram_length = STACK_SIZE,4)
#endif
            INPUT_SECTIONS( $OBJECTS_CORE_A(noncache_code) $LIBRARIES_CORE_A(noncache_code))
            INPUT_SECTIONS( $OBJS_LIBS_INTERNAL(program))
            INPUT_SECTIONS( $OBJS_LIBS_NOT_EXTERNAL(program))
            INPUT_SECTIONS( $OBJECTS_CORE_A(cplb) $LIBRARIES_CORE_A(cplb))
            INPUT_SECTIONS( $OBJECTS_CORE_A(cplb_code) $LIBRARIES_CORE_A(cplb_code))
            INPUT_SECTIONS( $OBJS_LIBS_INTERNAL(data1))
            INPUT_SECTIONS( $OBJS_LIBS_NOT_EXTERNAL(data1))
            INPUT_SECTIONS( $OBJECTS_CORE_A(voldata) $LIBRARIES_CORE_A(voldata))
            INPUT_SECTIONS( $OBJECTS_CORE_A(cplb_data) $LIBRARIES_CORE_A(cplb_data))
            INPUT_SECTIONS( $OBJECTS_CORE_A(vtbl) $LIBRARIES_CORE_A(vtbl) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.rtti) $LIBRARIES_CORE_A(.rtti) )
            INPUT_SECTIONS( $OBJECTS_CORE_A(.edt) $LIBRARIES_CORE_A(.edt))
            INPUT_SECTIONS( $OBJECTS_CORE_A(.cht) $LIBRARIES_CORE_A(.cht))
            INPUT_SECTIONS( $OBJECTS_CORE_A(constdata) $LIBRARIES_CORE_A(constdata))
            INPUT_SECTIONS( $OBJECTS_CORE_A(program) $LIBRARIES_CORE_A(program))
            INPUT_SECTIONS( $OBJECTS_CORE_A(data1) $LIBRARIES_CORE_A(data1))
        } >mem_a_l2_sram


         bsz_L2_sram_a ZERO_INIT
        {
            INPUT_SECTION_ALIGN(4)
            INPUT_SECTIONS( $OBJECTS_CORE_A(L2_bsz) $LIBRARIES_CORE_A(L2_bsz))
            INPUT_SECTIONS( $OBJECTS_CORE_A(bsz) $LIBRARIES_CORE_A(bsz))
        } >mem_a_l2_sram

#if defined (__MEMINIT__) && !defined(USE_SDRAM)
        .meminit { ALIGN(4) } >mem_a_l2_sram
#endif

#if defined(USE_L2_STACK) || defined(USE_L2_HEAP)
   stack_and_heap_L2_sram
   {
      INPUT_SECTION_ALIGN(4)
#if !(defined(__MEMINIT__) && !defined(USE_SDRAM))
      RESERVE_EXPAND(stack_and_heap_in_L2_sram, stack_and_heap_in_L2_sram_length,0,4)
#endif
#if defined(USE_L2_STACK) && defined(USE_L2_HEAP)
      ldf_stack_space = stack_and_heap_in_L2_sram;
      ldf_stack_end = (ldf_stack_space + (stack_and_heap_in_L2_sram_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_length;
      ldf_heap_length = ldf_heap_end - ldf_heap_space;
#elif defined(USE_L2_STACK)
      ldf_stack_space = stack_and_heap_in_L2_sram;
      ldf_stack_end = ldf_stack_space + stack_and_heap_in_L2_sram_length;
#elif defined(USE_L2_HEAP)
      ldf_heap_space = stack_and_heap_in_L2_sram;
      ldf_heap_end = ldf_heap_space + stack_and_heap_in_L2_sram_length;

⌨️ 快捷键说明

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