1/* MANAGED-BY-SYSTEM-BUILDER                                    */
2/* VisualDSP++ 5.0 Update 6                                     */
3/* LDF Printer version: 5.6.0.4                                 */
4/* ldfgen.exe version: 5.6.0.4                                  */
5/* VDSG version: 5.6.0.4                                        */
6
7/*
8** ADSP-BF533 linker description file generated on Feb 23, 2012 at 09:38:46.
9**
10** Copyright (C) 2000-2008 Analog Devices Inc., All Rights Reserved.
11**
12** This file is generated automatically based upon the options selected
13** in the LDF Wizard. Changes to the LDF configuration should be made by
14** changing the appropriate options rather than editing this file.
15**
16** Configuration:-
17**     crt_doj:                                bf533_basiccrt.doj
18**     processor:                              ADSP-BF533
19**     product_name:                           VisualDSP++ 5.0 Update 6
20**     si_revision:                            automatic
21**     default_silicon_revision_from_archdef:  0.5
22**     cplb_init_cplb_ctrl:                    (
23**                                              CPLB_ENABLE_ICACHE
24**                                              CPLB_ENABLE_ICPLBS
25**                                             )
26**     using_cplusplus:                        true
27**     mem_init:                               false
28**     use_vdk:                                false
29**     use_eh:                                 true
30**     use_argv:                               false
31**     running_from_internal_memory:           true
32**     user_heap_src_file:                     E:\eclipse\tq2440radio\bsp\bf533\vdsp\bf533_heaptab.c
33**     libraries_use_stdlib:                   true
34**     libraries_use_fileio_libs:              false
35**     libraries_use_ieeefp_emulation_libs:    false
36**     libraries_use_eh_enabled_libs:          false
37**     system_heap:                            L1
38**     system_heap_min_size:                   1k
39**     system_stack:                           L1
40**     system_stack_min_size:                  1k
41**     use_sdram:                              false
42**
43*/
44
45ARCHITECTURE(ADSP-BF533)
46
47SEARCH_DIR($ADI_DSP/Blackfin/lib)
48
49
50// Workarounds are enabled, exceptions are disabled.
51#define RT_LIB_NAME(x) lib ## x ## y.dlb
52#define RT_LIB_NAME_EH(x) lib ## x ## y.dlb
53#define RT_LIB_NAME_MT(x) lib ## x ## y.dlb
54#define RT_LIB_NAME_EH_MT(x) lib ## x ## y.dlb
55#define RT_OBJ_NAME(x) x ## y.doj
56#define RT_OBJ_NAME_MT(x) x ## mty.doj
57
58
59$LIBRARIES =
60
61/*$VDSG<insert-user-libraries-at-beginning>                     */
62/* Text inserted between these $VDSG comments will be preserved */
63/*$VDSG<insert-user-libraries-at-beginning>                     */
64
65   RT_LIB_NAME_MT(small532)
66   ,RT_LIB_NAME_MT(io532)
67   ,RT_LIB_NAME_MT(c532)
68   ,RT_LIB_NAME_MT(event532)
69   ,RT_LIB_NAME_MT(x532)
70   ,RT_LIB_NAME_EH_MT(cpp532)
71   ,RT_LIB_NAME_EH_MT(cpprt532)
72   ,RT_LIB_NAME(f64ieee532)
73   ,RT_LIB_NAME(dsp532)
74   ,RT_LIB_NAME(sftflt532)
75   ,RT_LIB_NAME(etsi532)
76   ,RT_LIB_NAME(ssl532)
77   ,RT_LIB_NAME(drv532)
78   ,RT_LIB_NAME(usb532)
79   ,RT_OBJ_NAME_MT(idle532)
80   ,RT_LIB_NAME_MT(rt_fileio532)
81
82/*$VDSG<insert-user-libraries-at-end>                           */
83/* Text inserted between these $VDSG comments will be preserved */
84/*$VDSG<insert-user-libraries-at-end>                           */
85
86   ;
87
88$OBJECTS =
89   "bf533_basiccrt.doj"
90
91/*$VDSG<insert-user-objects-at-beginning>                       */
92/* Text inserted between these $VDSG comments will be preserved */
93/*$VDSG<insert-user-objects-at-beginning>                       */
94
95   , RT_LIB_NAME(profile532)
96   , $COMMAND_LINE_OBJECTS
97   , "cplbtab533.doj"
98
99/*$VDSG<insert-user-objects-at-end>                             */
100/* Text inserted between these $VDSG comments will be preserved */
101/*$VDSG<insert-user-objects-at-end>                             */
102
103   , RT_OBJ_NAME(crtn532)
104   ;
105
106$OBJS_LIBS_INTERNAL =
107
108/*$VDSG<insert-libraries-internal>                              */
109/* Text inserted between these $VDSG comments will be preserved */
110/*$VDSG<insert-libraries-internal>                              */
111
112   $OBJECTS{prefersMem("internal")}, $LIBRARIES{prefersMem("internal")}
113
114/*$VDSG<insert-libraries-internal-end>                          */
115/* Text inserted between these $VDSG comments will be preserved */
116/*$VDSG<insert-libraries-internal-end>                          */
117
118   ;
119
120$OBJS_LIBS_NOT_EXTERNAL =
121
122/*$VDSG<insert-libraries-not-external>                          */
123/* Text inserted between these $VDSG comments will be preserved */
124/*$VDSG<insert-libraries-not-external>                          */
125
126   $OBJECTS{!prefersMem("external")}, $LIBRARIES{!prefersMem("external")}
127
128/*$VDSG<insert-libraries-not-external-end>                      */
129/* Text inserted between these $VDSG comments will be preserved */
130/*$VDSG<insert-libraries-not-external-end>                      */
131
132   ;
133
134
135/*$VDSG<insert-user-macros>                                     */
136/* Text inserted between these $VDSG comments will be preserved */
137/*$VDSG<insert-user-macros>                                     */
138
139
140/*$VDSG<customize-async-macros>                                 */
141/* This code is preserved if the LDF is re-generated.           */
142
143
144#define ASYNC0_MEMTYPE RAM
145#define ASYNC1_MEMTYPE RAM
146#define ASYNC2_MEMTYPE RAM
147#define ASYNC3_MEMTYPE RAM
148
149
150/*$VDSG<customize-async-macros>                                 */
151
152
153MEMORY
154{
155/*
156** ADSP-BF533 MEMORY MAP.
157**
158** The known memory spaces are as follows:
159**
160** 0xFFE00000 - 0xFFFFFFFF  Core MMR registers (2MB)
161** 0xFFC00000 - 0xFFDFFFFF  System MMR registers (2MB)
162** 0xFFB01000 - 0xFFBFFFFF  Reserved
163** 0xFFB00000 - 0xFFB00FFF  Scratch SRAM (4K)
164** 0xFFA14000 - 0xFFAFFFFF  Reserved
165** 0xFFA10000 - 0xFFA13FFF  Code SRAM / cache (16K)
166** 0xFFA00000 - 0xFFA0FFFF  Code SRAM (64K)
167** 0xFF908000 - 0xFF9FFFFF  Reserved
168** 0xFF904000 - 0xFF907FFF  Data Bank B SRAM / cache (16K)
169** 0xFF900000 - 0xFF903FFF  Data Bank B SRAM (16K)
170** 0xFF808000 - 0xFF8FFFFF  Reserved
171** 0xFF804000 - 0xFF807FFF  Data Bank A SRAM / cache (16K)
172** 0xFF800000 - 0xFF803FFF  Data Bank A SRAM (16K)
173** 0xEF000000 - 0xFF7FFFFF  Reserved
174** 0x20400000 - 0xEEFFFFFF  Reserved
175** 0x20300000 - 0x203FFFFF  ASYNC MEMORY BANK 3 (1MB)
176** 0x20200000 - 0x202FFFFF  ASYNC MEMORY BANK 2 (1MB)
177** 0x20100000 - 0x201FFFFF  ASYNC MEMORY BANK 1 (1MB)
178** 0x20000000 - 0x200FFFFF  ASYNC MEMORY BANK 0 (1MB)
179** 0x00000000 - 0x07FFFFFF  SDRAM MEMORY (16MB - 128MB)
180*/
181
182   MEM_L1_SCRATCH          { TYPE(RAM) START(0xFFB00000) END(0xFFB00FFF) WIDTH(8) }
183   MEM_L1_CODE_CACHE       { TYPE(RAM) START(0xFFA10000) END(0xFFA13FFF) WIDTH(8) }
184   MEM_L1_CODE             { TYPE(RAM) START(0xFFA00000) END(0xFFA0FFFF) WIDTH(8) }
185   MEM_L1_DATA_B           { TYPE(RAM) START(0xFF900000) END(0xFF907FFF) WIDTH(8) }
186   MEM_L1_DATA_A           { TYPE(RAM) START(0xFF800000) END(0xFF807FFF) WIDTH(8) }
187   MEM_ASYNC3              { TYPE(ASYNC3_MEMTYPE) START(0x20300000) END(0x203FFFFF) WIDTH(8) }
188   MEM_ASYNC2              { TYPE(ASYNC2_MEMTYPE) START(0x20200000) END(0x202FFFFF) WIDTH(8) }
189   MEM_ASYNC1              { TYPE(ASYNC1_MEMTYPE) START(0x20100000) END(0x201FFFFF) WIDTH(8) }
190   MEM_ASYNC0              { TYPE(ASYNC0_MEMTYPE) START(0x20000000) END(0x200FFFFF) WIDTH(8) }
191
192   /*$VDSG<insert-new-memory-segments>                          */
193   /* Text inserted between these $VDSG comments will be preserved */
194   /*$VDSG<insert-new-memory-segments>                          */
195
196} /* MEMORY */
197
198PROCESSOR p0
199{
200   OUTPUT($COMMAND_LINE_OUTPUT_FILE)
201   RESOLVE(start, 0xFFA00000)
202   KEEP(start, _main)
203   KEEP_SECTIONS(FSymTab,VSymTab,RTMSymTab)
204
205   /*$VDSG<insert-user-ldf-commands>                            */
206   /* Text inserted between these $VDSG comments will be preserved */
207   /*$VDSG<insert-user-ldf-commands>                            */
208
209   SECTIONS
210   {
211      /* Workaround for hardware errata 05-00-0189 and 05-00-0310 -
212      ** "Speculative (and fetches made at boundary of reserved memory
213      ** space) for instruction or data fetches may cause false
214      ** protection exceptions" and "False hardware errors caused by
215      ** fetches at the boundary of reserved memory ".
216      **
217      ** Done by avoiding use of 76 bytes from at the end of blocks
218      ** that are adjacent to reserved memory. Workaround is enabled
219      ** for appropriate silicon revisions (-si-revision switch).
220      */
221      RESERVE(___wab0=MEMORY_END(MEM_L1_SCRATCH) - 75, ___l0 = 76)
222      RESERVE(___wab2=MEMORY_END(MEM_L1_CODE) - 75, ___l2 = 76)
223      RESERVE(___wab4=MEMORY_END(MEM_L1_DATA_B) - 75, ___l4 = 76)
224      RESERVE(___wab6=MEMORY_END(MEM_L1_DATA_A) - 75, ___l6 = 76)
225      RESERVE(___wab7=MEMORY_END(MEM_ASYNC3) - 75, ___l7 = 76)
226
227      /*$VDSG<insert-new-sections-at-the-start>                 */
228      /* Text inserted between these $VDSG comments will be preserved */
229      /*$VDSG<insert-new-sections-at-the-start>                 */
230
231      scratchpad NO_INIT
232      {
233         INPUT_SECTION_ALIGN(4)
234
235         /*$VDSG<insert-input-sections-at-the-start-of-scratchpad>  */
236         /* Text inserted between these $VDSG comments will be preserved */
237         /*$VDSG<insert-input-sections-at-the-start-of-scratchpad>  */
238
239         INPUT_SECTIONS($OBJECTS(L1_scratchpad) $LIBRARIES(L1_scratchpad))
240
241         /*$VDSG<insert-input-sections-at-the-end-of-scratchpad>  */
242         /* Text inserted between these $VDSG comments will be preserved */
243         /*$VDSG<insert-input-sections-at-the-end-of-scratchpad>  */
244
245      } > MEM_L1_SCRATCH
246
247      L1_code
248      {
249         INPUT_SECTION_ALIGN(4)
250         INPUT_SECTIONS($OBJECTS(L1_code) $LIBRARIES(L1_code))
251
252         /*$VDSG<insert-input-sections-at-the-start-of-l1_code>  */
253         /* Text inserted between these $VDSG comments will be preserved */
254         /*$VDSG<insert-input-sections-at-the-start-of-l1_code>  */
255
256         INPUT_SECTIONS($OBJECTS(cplb_code) $LIBRARIES(cplb_code))
257         INPUT_SECTIONS($OBJECTS(cplb) $LIBRARIES(cplb))
258         INPUT_SECTIONS($OBJECTS(noncache_code) $LIBRARIES(noncache_code))
259         INPUT_SECTIONS($OBJS_LIBS_INTERNAL(program))
260         INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(program))
261         INPUT_SECTIONS($OBJECTS(program) $LIBRARIES(program))
262
263         /*$VDSG<insert-input-sections-at-the-end-of-l1_code>   */
264         /* Text inserted between these $VDSG comments will be preserved */
265         /*$VDSG<insert-input-sections-at-the-end-of-l1_code>   */
266
267      } > MEM_L1_CODE
268
269      L1_code_cache
270      {
271         INPUT_SECTION_ALIGN(4)
272         ___l1_code_cache = 1;
273      } > MEM_L1_CODE_CACHE
274
275      L1_data_a_1
276      {
277         INPUT_SECTION_ALIGN(4)
278         ___l1_data_cache_a = 0;
279         INPUT_SECTIONS($OBJECTS(L1_data_a) $LIBRARIES(L1_data_a))
280         INPUT_SECTIONS($OBJECTS(L1_data) $LIBRARIES(L1_data))
281
282         /*$VDSG<insert-input-sections-at-the-start-of-L1_data_a>  */
283         /* Text inserted between these $VDSG comments will be preserved */
284         /*$VDSG<insert-input-sections-at-the-start-of-L1_data_a>  */
285
286         RESERVE(heaps_and_stack_in_L1_data_a, heaps_and_stack_in_L1_data_a_length = 1024,4)
287      } > MEM_L1_DATA_A
288
289      L1_data_a_bsz ZERO_INIT
290      {
291         INPUT_SECTION_ALIGN(4)
292         INPUT_SECTIONS( $OBJECTS(L1_bsz) $LIBRARIES(L1_bsz))
293      } > MEM_L1_DATA_A
294
295      L1_data_a_tables
296      {
297         INPUT_SECTION_ALIGN(4)
298         FORCE_CONTIGUITY
299         INPUT_SECTIONS($OBJECTS(vtbl) $LIBRARIES(vtbl))
300         INPUT_SECTIONS($OBJECTS(ctor) $LIBRARIES(ctor))
301         INPUT_SECTIONS($OBJECTS(ctorl) $LIBRARIES(ctorl))
302         INPUT_SECTIONS($OBJECTS(.frt) $LIBRARIES(.frt))
303         INPUT_SECTIONS($OBJECTS(.rtti) $LIBRARIES(.rtti))
304         INPUT_SECTIONS($OBJECTS(.gdt) $LIBRARIES(.gdt))
305         INPUT_SECTIONS($OBJECTS(.gdtl) $LIBRARIES(.gdtl))
306         INPUT_SECTIONS($OBJECTS(.edt) $LIBRARIES(.edt))
307         INPUT_SECTIONS($OBJECTS(.cht) $LIBRARIES(.cht))
308      } > MEM_L1_DATA_A
309
310      L1_data_a
311      {
312         INPUT_SECTION_ALIGN(4)
313         INPUT_SECTIONS($OBJECTS(cplb_data) $LIBRARIES(cplb_data))
314         INPUT_SECTIONS($OBJECTS(voldata) $LIBRARIES(voldata))
315         INPUT_SECTIONS($OBJS_LIBS_INTERNAL(data1))
316         INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(data1))
317         INPUT_SECTIONS($OBJECTS(data1) $LIBRARIES(data1))
318         INPUT_SECTIONS($OBJECTS(constdata) $LIBRARIES(constdata))
319
320         /*$VDSG<insert-input-sections-at-the-end-of-L1_data_a>  */
321         /* Text inserted between these $VDSG comments will be preserved */
322         /*$VDSG<insert-input-sections-at-the-end-of-L1_data_a>  */
323
324      } > MEM_L1_DATA_A
325
326      bsz_L1_data_a ZERO_INIT
327      {
328         INPUT_SECTION_ALIGN(4)
329         INPUT_SECTIONS($OBJS_LIBS_INTERNAL(bsz))
330         INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(bsz))
331         INPUT_SECTIONS($OBJECTS(bsz) $LIBRARIES(bsz))
332      } > MEM_L1_DATA_A
333
334      L1_data_a_stack_heap
335      {
336         INPUT_SECTION_ALIGN(4)
337         RESERVE_EXPAND(heaps_and_stack_in_L1_data_a, heaps_and_stack_in_L1_data_a_length , 0, 4)
338         ldf_stack_space = heaps_and_stack_in_L1_data_a;
339         ldf_stack_end = (ldf_stack_space + (heaps_and_stack_in_L1_data_a_length - 4)) & 0xfffffffc;
340      } > MEM_L1_DATA_A
341
342      L1_data_b_bsz ZERO_INIT
343      {
344         INPUT_SECTION_ALIGN(4)
345         INPUT_SECTIONS( $OBJECTS(L1_bsz) $LIBRARIES(L1_bsz))
346      } > MEM_L1_DATA_B
347
348      L1_data_b
349      {
350         INPUT_SECTION_ALIGN(4)
351         ___l1_data_cache_b = 0;
352         INPUT_SECTIONS($OBJECTS(L1_data_b) $LIBRARIES(L1_data_b))
353         INPUT_SECTIONS($OBJECTS(L1_data) $LIBRARIES(L1_data))
354
355         /*$VDSG<insert-input-sections-at-the-start-of-L1_data_b>  */
356         /* Text inserted between these $VDSG comments will be preserved */
357         /*$VDSG<insert-input-sections-at-the-start-of-L1_data_b>  */
358
359         RESERVE(heaps_and_stack_in_L1_data_b, heaps_and_stack_in_L1_data_b_length = 1024,4)
360         INPUT_SECTIONS($OBJECTS(cplb_data) $LIBRARIES(cplb_data))
361         INPUT_SECTIONS($OBJECTS(voldata) $LIBRARIES(voldata))
362         INPUT_SECTIONS($OBJS_LIBS_INTERNAL(data1))
363         INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(data1))
364         INPUT_SECTIONS($OBJECTS(data1) $LIBRARIES(data1))
365         INPUT_SECTIONS($OBJECTS(constdata) $LIBRARIES(constdata))
366         INPUT_SECTIONS($OBJECTS(.edt) $LIBRARIES(.edt) )
367         INPUT_SECTIONS($OBJECTS(.cht) $LIBRARIES(.cht) )
368
369         /*$VDSG<insert-input-sections-at-the-end-of-L1_data_b>  */
370         /* Text inserted between these $VDSG comments will be preserved */
371         /*$VDSG<insert-input-sections-at-the-end-of-L1_data_b>  */
372
373      } > MEM_L1_DATA_B
374
375      bsz_L1_data_b ZERO_INIT
376      {
377         INPUT_SECTION_ALIGN(4)
378         INPUT_SECTIONS($OBJS_LIBS_INTERNAL(bsz))
379         INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(bsz))
380         INPUT_SECTIONS($OBJECTS(bsz) $LIBRARIES(bsz))
381      } > MEM_L1_DATA_B
382
383      rt_thread_section
384      {
385        /* section information for finsh shell */
386        INPUT_SECTION_ALIGN(4)
387        __fsymtab_start = .;
388        INPUT_SECTIONS($OBJECTS(FSymTab) $LIBRARIES(FSymTab))
389        __fsymtab_end = .;
390
391        INPUT_SECTION_ALIGN(4)
392        __vsymtab_start = .;
393        INPUT_SECTIONS($OBJECTS(VSymTab) $LIBRARIES(VSymTab))
394        __vsymtab_end = .;
395
396        /* section information for modules */
397        INPUT_SECTION_ALIGN(4)
398        __rtmsymtab_start = .;
399        INPUT_SECTIONS($OBJECTS(RTMSymTab) $LIBRARIES(RTMSymTab))
400        __rtmsymtab_end = .;
401
402        RESERVE(heaps_in_L1_data_b_space, heaps_in_L1_data_b_length = 2048,4)
403      } > MEM_L1_DATA_B
404
405      L1_data_b_stack_heap
406      {
407         INPUT_SECTION_ALIGN(4)
408         ldf_heap_space = heaps_and_stack_in_L1_data_b;
409         ldf_heap_end = (ldf_heap_space + (heaps_and_stack_in_L1_data_b_length - 4)) & 0xfffffffc;
410         ldf_heap_length = ldf_heap_end - ldf_heap_space;
411
412         RESERVE_EXPAND(heaps_in_L1_data_b_space, heaps_in_L1_data_b_length , 0, 4)
413         rtt_heap_start = heaps_in_L1_data_b_space;
414         rtt_heap_end = (heaps_in_L1_data_b_space + heaps_in_L1_data_b_length - 4) & 0xfffffffc;
415         rtt_heap_length = rtt_heap_end - rtt_heap_start;
416      } > MEM_L1_DATA_B
417
418      /*$VDSG<insert-new-sections-at-the-end>                   */
419      /* Text inserted between these $VDSG comments will be preserved */
420      /*$VDSG<insert-new-sections-at-the-end>                   */
421
422   } /* SECTIONS */
423} /* p0 */
424
425