1 /* MANAGED-BY-SYSTEM-BUILDER */
2 /* VisualDSP++ 5.0 Update 10 */
3 /* LDF Printer version: 5.9.0.1 */
4 /* ldfgen.exe version: 5.9.0.1 */
5 /* VDSG version: 5.9.0.1 */
8 ** ADSP-BF592-A linker description file generated on Jul 20, 2012 at 15:59:24.
10 ** Copyright (C) 2000-2010 Analog Devices Inc., All Rights Reserved.
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.
17 ** crt_doj: sample1_acb_bf592_basiccrt.doj
18 ** processor: ADSP-BF592-A
19 ** product_name: VisualDSP++ 5.0 Update 10
20 ** si_revision: automatic
21 ** default_silicon_revision_from_archdef: 0.2
22 ** using_cplusplus: true
28 ** running_from_internal_memory: true
29 ** user_heap_src_file: X:\Work\jsp\tools\blackfin-vdsp\sample1_acb_bf592\sample1_acb_bf592_heaptab.c
30 ** libraries_use_stdlib: true
31 ** libraries_use_fileio_libs: false
32 ** libraries_use_ieeefp_emulation_libs: false
33 ** libraries_use_eh_enabled_libs: false
34 ** libraries_use_fixed_point_io_libs: false
35 ** libraries_use_utility_rom: true
36 ** detect_stackoverflow: false
38 ** system_heap_min_size: 2k
40 ** system_stack_min_size: 2k
45 ARCHITECTURE(ADSP-BF592-A)
47 SEARCH_DIR($ADI_DSP/Blackfin/lib)
50 #if !defined(NO_UTILITY_ROM)
51 # if defined(__SILICON_REVISION__) && (__SILICON_REVISION__==0)
52 # warning there is no Utility ROM in revision 0.0
53 # define NO_UTILITY_ROM
54 # elif !defined(__SILICON_REVISION__) || (__SILICON_REVISION__==0xffff)
56 The Tools Utility ROM will not be used to link this application because \
57 the silicon revision does not specify a specific revision number. This message \
58 may be suppressed by defining the LDF macro NO_UTILITY_ROM.
59 # define NO_UTILITY_ROM
64 // Workarounds are enabled, exceptions are disabled.
65 #define RT_LIB_NAME(x) lib ## x ## y.dlb
66 #define RT_LIB_NAME_EH(x) lib ## x ## y.dlb
67 #define RT_LIB_NAME_MT(x) lib ## x ## y.dlb
68 #define RT_LIB_NAME_EH_MT(x) lib ## x ## y.dlb
69 #define RT_OBJ_NAME(x) x ## y.doj
70 #define RT_OBJ_NAME_MT(x) x ## mty.doj
75 /*$VDSG<insert-user-libraries-at-beginning> */
76 /* Text inserted between these $VDSG comments will be preserved */
77 /*$VDSG<insert-user-libraries-at-beginning> */
79 RT_LIB_NAME_MT(small532)
80 ,RT_LIB_NAME_MT(io532)
82 ,RT_LIB_NAME_MT(event532)
83 ,RT_LIB_NAME(ssl592-a)
84 ,RT_LIB_NAME(drv592-a)
86 ,RT_LIB_NAME_EH_MT(cpp532)
87 ,RT_LIB_NAME(f64ieee532)
89 ,RT_LIB_NAME(sftflt532)
91 ,RT_OBJ_NAME_MT(idle532)
92 ,RT_LIB_NAME_MT(rt_fileio532)
94 /*$VDSG<insert-user-libraries-at-end> */
95 /* Text inserted between these $VDSG comments will be preserved */
96 /*$VDSG<insert-user-libraries-at-end> */
102 /*$VDSG<insert-user-objects-at-beginning> */
103 /* Text inserted between these $VDSG comments will be preserved */
104 /*$VDSG<insert-user-objects-at-beginning> */
106 $COMMAND_LINE_OBJECTS
107 , RT_LIB_NAME(profile532)
108 #if !defined(NO_UTILITY_ROM)
109 , romdata-BF592-A.doj
111 , $COMMAND_LINE_OBJECTS
114 /*$VDSG<insert-user-objects-at-end> */
115 /* Text inserted between these $VDSG comments will be preserved */
116 /*$VDSG<insert-user-objects-at-end> */
118 , RT_OBJ_NAME(crtn532)
121 $OBJS_LIBS_INTERNAL =
123 /*$VDSG<insert-libraries-internal> */
124 /* Text inserted between these $VDSG comments will be preserved */
125 /*$VDSG<insert-libraries-internal> */
127 $OBJECTS{prefersMem("internal")}, $LIBRARIES{prefersMem("internal")}
129 /*$VDSG<insert-libraries-internal-end> */
130 /* Text inserted between these $VDSG comments will be preserved */
131 /*$VDSG<insert-libraries-internal-end> */
135 $OBJS_LIBS_NOT_EXTERNAL =
137 /*$VDSG<insert-libraries-not-external> */
138 /* Text inserted between these $VDSG comments will be preserved */
139 /*$VDSG<insert-libraries-not-external> */
141 $OBJECTS{!prefersMem("external")}, $LIBRARIES{!prefersMem("external")}
143 /*$VDSG<insert-libraries-not-external-end> */
144 /* Text inserted between these $VDSG comments will be preserved */
145 /*$VDSG<insert-libraries-not-external-end> */
150 /*$VDSG<insert-user-macros> */
151 /* Text inserted between these $VDSG comments will be preserved */
152 /*$VDSG<insert-user-macros> */
158 ** ADSP-BF592-A MEMORY MAP.
160 ** The known memory spaces are as follows:
162 ** 0xFFE00000 - 0xFFFFFFFF Core MMR registers (2MB)
163 ** 0xFFC00000 - 0xFFDFFFFF System MMR registers (2MB)
164 ** 0xFFB01000 - 0xFFBFFFFF Reserved
165 ** 0xFFB00000 - 0xFFB00FFF Scratchpad SRAM (4K)
166 ** 0xFFA20000 - 0xFFAFFFFF Reserved
167 ** 0xFFA10000 - 0xFFA1FFFF L1 Instruction ROM (64K)
168 ** 0xFFA08000 - 0xFFA0FFFF Reserved
169 ** 0xFFA00000 - 0xFFA07FFF L1 Instruction SRAM (32K)
170 ** 0xFF808000 - 0xFF9FFFFF Reserved
171 ** 0xFF800000 - 0xFF807FFF L1 Data SRAM (32K)
172 ** 0xEF001000 - 0xFF7FFFFF Reserved
173 ** 0xEF000000 - 0xEF000FFF Boot ROM (4K)
174 ** 0x00000000 - 0xEEFFFFFF Reserved
177 ** 0xFF807FEF-0xFF807FFF Required by boot-loader.
180 MEM_L1_SCRATCH { TYPE(RAM) START(0xFFB00000) END(0xFFB00FFF) WIDTH(8) }
181 MEM_L1_CODE { TYPE(RAM) START(0xFFA00000) END(0xFFA07FFF) WIDTH(8) }
182 MEM_L1_DATA { TYPE(RAM) START(0xFF800000) END(0xFF807EAF) WIDTH(8) }
183 MEM_ARGV { TYPE(RAM) START(0xFF807EB0) END(0xFF807FFF) WIDTH(8) }
185 /*$VDSG<insert-new-memory-segments> */
186 /* Text inserted between these $VDSG comments will be preserved */
187 /*$VDSG<insert-new-memory-segments> */
193 OUTPUT($COMMAND_LINE_OUTPUT_FILE)
194 RESOLVE(start, 0xFFA00000)
195 RESOLVE(___argv_string, 0xFF807F00)
198 /*$VDSG<insert-user-utility-rom-start> */
199 /* Text inserted between these $VDSG comments will be preserved */
200 /*$VDSG<insert-user-utility-rom-start> */
202 #if !defined(NO_UTILITY_ROM)
203 #include "ADSP-BF592-A-LDF.h"
206 /*$VDSG<insert-user-utility-rom-end> */
207 /* Text inserted between these $VDSG comments will be preserved */
208 /*$VDSG<insert-user-utility-rom-end> */
211 /*$VDSG<insert-user-ldf-commands> */
212 /* Text inserted between these $VDSG comments will be preserved */
213 /*$VDSG<insert-user-ldf-commands> */
217 /* Workaround for hardware errata 05-00-0189 and 05-00-0310 -
218 ** "Speculative (and fetches made at boundary of reserved memory
219 ** space) for instruction or data fetches may cause false
220 ** protection exceptions" and "False hardware errors caused by
221 ** fetches at the boundary of reserved memory ".
223 ** Done by avoiding use of 76 bytes from at the end of blocks
224 ** that are adjacent to reserved memory. Workaround is enabled
225 ** for appropriate silicon revisions (-si-revision switch).
227 RESERVE(___wab0=MEMORY_END(MEM_L1_SCRATCH) - 75, ___l0 = 76)
228 RESERVE(___wab1=MEMORY_END(MEM_L1_CODE) - 75, ___l1 = 76)
229 RESERVE(___wab2=MEMORY_END(MEM_ARGV) - 75, ___l2 = 76)
231 /*$VDSG<insert-new-sections-at-the-start> */
232 /* Text inserted between these $VDSG comments will be preserved */
233 /*$VDSG<insert-new-sections-at-the-start> */
237 INPUT_SECTION_ALIGN(4)
239 /*$VDSG<insert-input-sections-at-the-start-of-scratchpad> */
240 /* Text inserted between these $VDSG comments will be preserved */
241 /*$VDSG<insert-input-sections-at-the-start-of-scratchpad> */
243 INPUT_SECTIONS($OBJECTS(L1_scratchpad) $LIBRARIES(L1_scratchpad))
245 /*$VDSG<insert-input-sections-at-the-end-of-scratchpad> */
246 /* Text inserted between these $VDSG comments will be preserved */
247 /*$VDSG<insert-input-sections-at-the-end-of-scratchpad> */
253 INPUT_SECTION_ALIGN(4)
255 /*$VDSG<insert-input-sections-at-the-start-of-L1_code> */
256 /* Text inserted between these $VDSG comments will be preserved */
257 /*$VDSG<insert-input-sections-at-the-start-of-L1_code> */
259 INPUT_SECTIONS($OBJECTS(L1_code) $LIBRARIES(L1_code))
261 /*$VDSG<insert-input-sections-in-the-middle-of-L1_code> */
262 /* Text inserted between these $VDSG comments will be preserved */
263 /*$VDSG<insert-input-sections-in-the-middle-of-L1_code> */
265 INPUT_SECTIONS($OBJECTS(noncache_code) $LIBRARIES(noncache_code))
266 INPUT_SECTIONS($OBJECTS(cplb_code) $LIBRARIES(cplb_code))
267 INPUT_SECTIONS($OBJECTS(cplb) $LIBRARIES(cplb))
268 INPUT_SECTIONS($OBJS_LIBS_INTERNAL(program))
269 INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(program))
270 INPUT_SECTIONS($OBJECTS(program) $LIBRARIES(program))
272 /*$VDSG<insert-input-sections-at-the-end-of-L1_code> */
273 /* Text inserted between these $VDSG comments will be preserved */
274 /*$VDSG<insert-input-sections-at-the-end-of-L1_code> */
280 INPUT_SECTION_ALIGN(4)
281 ___l1_data_cache_a = 0;
282 ___l1_data_cache_b = 0;
284 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_1> */
285 /* Text inserted between these $VDSG comments will be preserved */
286 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_1> */
288 INPUT_SECTIONS($OBJECTS(L1_data_a) $LIBRARIES(L1_data_a))
289 INPUT_SECTIONS($OBJECTS(L1_data) $LIBRARIES(L1_data))
291 /*$VDSG<insert-input-sections-at-the-end-of-L1_data_1> */
292 /* Text inserted between these $VDSG comments will be preserved */
293 /*$VDSG<insert-input-sections-at-the-end-of-L1_data_1> */
295 RESERVE(heaps_and_stack_in_L1_data, heaps_and_stack_in_L1_data_length = 4096,4)
298 L1_data_bsz ZERO_INIT
300 INPUT_SECTION_ALIGN(4)
302 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_bsz> */
303 /* Text inserted between these $VDSG comments will be preserved */
304 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_bsz> */
306 INPUT_SECTIONS($OBJECTS(L1_bsz) $LIBRARIES(L1_bsz))
307 INPUT_SECTIONS($OBJS_LIBS_INTERNAL(bsz))
308 INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(bsz))
309 INPUT_SECTIONS($OBJECTS(bsz) $LIBRARIES(bsz))
311 /*$VDSG<insert-input-sections-at-the-end-of-L1_data_bsz> */
312 /* Text inserted between these $VDSG comments will be preserved */
313 /*$VDSG<insert-input-sections-at-the-end-of-L1_data_bsz> */
319 INPUT_SECTION_ALIGN(4)
322 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_tables> */
323 /* Text inserted between these $VDSG comments will be preserved */
324 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_tables> */
326 INPUT_SECTIONS($OBJECTS(ctor) $LIBRARIES(ctor))
327 INPUT_SECTIONS($OBJECTS(ctorl) $LIBRARIES(ctorl))
329 /*$VDSG<insert-input-sections-in-the-middle-of-L1_data_tables> */
330 /* Text inserted between these $VDSG comments will be preserved */
331 /*$VDSG<insert-input-sections-in-the-middle-of-L1_data_tables> */
333 INPUT_SECTIONS($OBJECTS(.gdt) $LIBRARIES(.gdt))
334 INPUT_SECTIONS($OBJECTS(.gdtl) $LIBRARIES(.gdtl))
335 INPUT_SECTIONS($OBJECTS(.frt) $LIBRARIES(.frt))
337 /*$VDSG<insert-input-sections-at-the-end-of-L1_data_tables> */
338 /* Text inserted between these $VDSG comments will be preserved */
339 /*$VDSG<insert-input-sections-at-the-end-of-L1_data_tables> */
345 INPUT_SECTION_ALIGN(4)
347 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_2> */
348 /* Text inserted between these $VDSG comments will be preserved */
349 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_2> */
351 INPUT_SECTIONS($OBJECTS(constdata) $LIBRARIES(constdata))
352 INPUT_SECTIONS($OBJECTS(voldata) $LIBRARIES(voldata))
353 INPUT_SECTIONS($OBJECTS(cplb_data) $LIBRARIES(cplb_data))
354 INPUT_SECTIONS($OBJS_LIBS_INTERNAL(data1))
355 INPUT_SECTIONS($OBJS_LIBS_NOT_EXTERNAL(data1))
356 INPUT_SECTIONS($OBJECTS(data1) $LIBRARIES(data1))
358 /*$VDSG<insert-input-sections-at-the-end-of-L1_data_2> */
359 /* Text inserted between these $VDSG comments will be preserved */
360 /*$VDSG<insert-input-sections-at-the-end-of-L1_data_2> */
366 INPUT_SECTION_ALIGN(4)
368 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_3> */
369 /* Text inserted between these $VDSG comments will be preserved */
370 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_3> */
372 INPUT_SECTIONS($OBJECTS(vtbl) $LIBRARIES(vtbl))
373 INPUT_SECTIONS($OBJECTS(.rtti) $LIBRARIES(.rtti))
374 INPUT_SECTIONS($OBJECTS(.edt) $LIBRARIES(.edt))
375 INPUT_SECTIONS($OBJECTS(.cht) $LIBRARIES(.cht))
377 /*$VDSG<insert-input-sections-at-the-end-of-L1_data_3> */
378 /* Text inserted between these $VDSG comments will be preserved */
379 /*$VDSG<insert-input-sections-at-the-end-of-L1_data_3> */
385 INPUT_SECTION_ALIGN(4)
387 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_stack_heap> */
388 /* Text inserted between these $VDSG comments will be preserved */
389 /*$VDSG<insert-input-sections-at-the-start-of-L1_data_stack_heap> */
391 RESERVE_EXPAND(heaps_and_stack_in_L1_data, heaps_and_stack_in_L1_data_length , 0, 4)
392 ldf_stack_space = heaps_and_stack_in_L1_data;
393 ldf_stack_end = (ldf_stack_space + (((heaps_and_stack_in_L1_data_length * 2048) / 4096) - 4)) & 0xfffffffc;
394 ldf_heap_space = ldf_stack_end + 4;
395 ldf_heap_end = (ldf_heap_space + (((heaps_and_stack_in_L1_data_length * 2048) / 4096) - 4)) & 0xfffffffc;
396 ldf_heap_length = ldf_heap_end - ldf_heap_space;
400 /*$VDSG<insert-new-sections-at-the-end> */
401 /* Text inserted between these $VDSG comments will be preserved */
402 /*$VDSG<insert-new-sections-at-the-end> */