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