1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
|
/* generated memory regions file - do not edit */
define symbol ATCM_START = 0x00000000;
define symbol ATCM_LENGTH = 0x20000;
define symbol BTCM_START = 0x00100000;
define symbol BTCM_LENGTH = 0x20000;
define symbol SYSTEM_RAM_START = 0x10000000;
define symbol SYSTEM_RAM_LENGTH = 0x180000;
define symbol SYSTEM_RAM_MIRROR_START = 0x30000000;
define symbol SYSTEM_RAM_MIRROR_LENGTH = 0x180000;
define symbol xSPI0_CS0_SPACE_MIRROR_START = 0x40000000;
define symbol xSPI0_CS0_SPACE_MIRROR_LENGTH = 0x4000000;
define symbol xSPI0_CS1_SPACE_MIRROR_START = 0x44000000;
define symbol xSPI0_CS1_SPACE_MIRROR_LENGTH = 0x4000000;
define symbol xSPI1_CS0_SPACE_MIRROR_START = 0x48000000;
define symbol xSPI1_CS0_SPACE_MIRROR_LENGTH = 0x4000000;
define symbol CS0_SPACE_MIRROR_START = 0x50000000;
define symbol CS0_SPACE_MIRROR_LENGTH = 0x4000000;
define symbol CS2_SPACE_MIRROR_START = 0x54000000;
define symbol CS2_SPACE_MIRROR_LENGTH = 0x4000000;
define symbol CS3_SPACE_MIRROR_START = 0x58000000;
define symbol CS3_SPACE_MIRROR_LENGTH = 0x4000000;
define symbol CS5_SPACE_MIRROR_START = 0x5C000000;
define symbol CS5_SPACE_MIRROR_LENGTH = 0x4000000;
define symbol xSPI0_CS0_SPACE_START = 0x60000000;
define symbol xSPI0_CS0_SPACE_LENGTH = 0x4000000;
define symbol xSPI0_CS1_SPACE_START = 0x64000000;
define symbol xSPI0_CS1_SPACE_LENGTH = 0x4000000;
define symbol xSPI1_CS0_SPACE_START = 0x68000000;
define symbol xSPI1_CS0_SPACE_LENGTH = 0x4000000;
define symbol CS0_SPACE_START = 0x70000000;
define symbol CS0_SPACE_LENGTH = 0x4000000;
define symbol CS2_SPACE_START = 0x74000000;
define symbol CS2_SPACE_LENGTH = 0x4000000;
define symbol CS3_SPACE_START = 0x78000000;
define symbol CS3_SPACE_LENGTH = 0x4000000;
define symbol CS5_SPACE_START = 0x7C000000;
define symbol CS5_SPACE_LENGTH = 0x4000000;
/* The memory information for each device is done in memory regions file.
* The starting address and length of memory not defined in memory regions file are defined as 0. */
if (isdefinedsymbol(ATCM_START))
{
define symbol ATCM_PRV_START = ATCM_START;
}
else
{
define symbol ATCM_PRV_START = 0;
}
if (isdefinedsymbol(ATCM_LENGTH))
{
define symbol ATCM_PRV_LENGTH = ATCM_LENGTH;
}
else
{
define symbol ATCM_PRV_LENGTH = 0;
}
if (isdefinedsymbol(BTCM_START))
{
define symbol BTCM_PRV_START = BTCM_START;
}
else
{
define symbol BTCM_PRV_START = 0;
}
if (isdefinedsymbol(BTCM_LENGTH))
{
define symbol BTCM_PRV_LENGTH = BTCM_LENGTH;
}
else
{
define symbol BTCM_PRV_LENGTH = 0;
}
if (isdefinedsymbol(SYSTEM_RAM_START))
{
define symbol SYSTEM_RAM_PRV_START = SYSTEM_RAM_START;
}
else
{
define symbol SYSTEM_RAM_PRV_START = 0;
}
if (isdefinedsymbol(SYSTEM_RAM_LENGTH))
{
define symbol SYSTEM_RAM_PRV_LENGTH = SYSTEM_RAM_LENGTH;
}
else
{
define symbol SYSTEM_RAM_PRV_LENGTH = 0;
}
if (isdefinedsymbol(SYSTEM_RAM_MIRROR_START))
{
define symbol SYSTEM_RAM_MIRROR_PRV_START = SYSTEM_RAM_MIRROR_START;
}
else
{
define symbol SYSTEM_RAM_MIRROR_PRV_START = 0;
}
if (isdefinedsymbol(SYSTEM_RAM_MIRROR_LENGTH))
{
define symbol SYSTEM_RAM_MIRROR_PRV_LENGTH = SYSTEM_RAM_MIRROR_LENGTH;
}
else
{
define symbol SYSTEM_RAM_MIRROR_PRV_LENGTH = 0;
}
if (isdefinedsymbol(xSPI0_CS0_SPACE_MIRROR_START))
{
define symbol xSPI0_CS0_SPACE_MIRROR_PRV_START = xSPI0_CS0_SPACE_MIRROR_START;
}
else
{
define symbol xSPI0_CS0_SPACE_MIRROR_PRV_START = 0;
}
if (isdefinedsymbol(xSPI0_CS0_SPACE_MIRROR_LENGTH))
{
define symbol xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = xSPI0_CS0_SPACE_MIRROR_LENGTH;
}
else
{
define symbol xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = 0;
}
if (isdefinedsymbol(xSPI0_CS1_SPACE_MIRROR_START))
{
define symbol xSPI0_CS1_SPACE_MIRROR_PRV_START = xSPI0_CS1_SPACE_MIRROR_START;
}
else
{
define symbol xSPI0_CS1_SPACE_MIRROR_PRV_START = 0;
}
if (isdefinedsymbol(xSPI0_CS1_SPACE_MIRROR_LENGTH))
{
define symbol xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = xSPI0_CS1_SPACE_MIRROR_LENGTH;
}
else
{
define symbol xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = 0;
}
if (isdefinedsymbol(xSPI1_CS0_SPACE_MIRROR_START))
{
define symbol xSPI1_CS0_SPACE_MIRROR_PRV_START = xSPI1_CS0_SPACE_MIRROR_START;
}
else
{
define symbol xSPI1_CS0_SPACE_MIRROR_PRV_START = 0;
}
if (isdefinedsymbol(xSPI1_CS0_SPACE_MIRROR_LENGTH))
{
define symbol xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = xSPI1_CS0_SPACE_MIRROR_LENGTH;
}
else
{
define symbol xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = 0;
}
if (isdefinedsymbol(xSPI1_CS1_SPACE_MIRROR_START))
{
define symbol xSPI1_CS1_SPACE_MIRROR_PRV_START = xSPI1_CS1_SPACE_MIRROR_START;
}
else
{
define symbol xSPI1_CS1_SPACE_MIRROR_PRV_START = 0;
}
if (isdefinedsymbol(xSPI1_CS1_SPACE_MIRROR_LENGTH))
{
define symbol xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = xSPI1_CS1_SPACE_MIRROR_LENGTH;
}
else
{
define symbol xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = 0;
}
if (isdefinedsymbol(CS0_SPACE_MIRROR_START))
{
define symbol CS0_SPACE_MIRROR_PRV_START = CS0_SPACE_MIRROR_START;
}
else
{
define symbol CS0_SPACE_MIRROR_PRV_START = 0;
}
if (isdefinedsymbol(CS0_SPACE_MIRROR_LENGTH))
{
define symbol CS0_SPACE_MIRROR_PRV_LENGTH = CS0_SPACE_MIRROR_LENGTH;
}
else
{
define symbol CS0_SPACE_MIRROR_PRV_LENGTH = 0;
}
if (isdefinedsymbol(CS2_SPACE_MIRROR_START))
{
define symbol CS2_SPACE_MIRROR_PRV_START = CS2_SPACE_MIRROR_START;
}
else
{
define symbol CS2_SPACE_MIRROR_PRV_START = 0;
}
if (isdefinedsymbol(CS2_SPACE_MIRROR_LENGTH))
{
define symbol CS2_SPACE_MIRROR_PRV_LENGTH = CS2_SPACE_MIRROR_LENGTH;
}
else
{
define symbol CS2_SPACE_MIRROR_PRV_LENGTH = 0;
}
if (isdefinedsymbol(CS3_SPACE_MIRROR_START))
{
define symbol CS3_SPACE_MIRROR_PRV_START = CS3_SPACE_MIRROR_START;
}
else
{
define symbol CS3_SPACE_MIRROR_PRV_START = 0;
}
if (isdefinedsymbol(CS3_SPACE_MIRROR_LENGTH))
{
define symbol CS3_SPACE_MIRROR_PRV_LENGTH = CS3_SPACE_MIRROR_LENGTH;
}
else
{
define symbol CS3_SPACE_MIRROR_PRV_LENGTH = 0;
}
if (isdefinedsymbol(CS5_SPACE_MIRROR_START))
{
define symbol CS5_SPACE_MIRROR_PRV_START = CS5_SPACE_MIRROR_START;
}
else
{
define symbol CS5_SPACE_MIRROR_PRV_START = 0;
}
if (isdefinedsymbol(CS5_SPACE_MIRROR_LENGTH))
{
define symbol CS5_SPACE_MIRROR_PRV_LENGTH = CS5_SPACE_MIRROR_LENGTH;
}
else
{
define symbol CS5_SPACE_MIRROR_PRV_LENGTH = 0;
}
if (isdefinedsymbol(xSPI0_CS0_SPACE_START))
{
define symbol xSPI0_CS0_SPACE_PRV_START = xSPI0_CS0_SPACE_START;
}
else
{
define symbol xSPI0_CS0_SPACE_PRV_START = 0;
}
if (isdefinedsymbol(xSPI0_CS0_SPACE_LENGTH))
{
define symbol xSPI0_CS0_SPACE_PRV_LENGTH = xSPI0_CS0_SPACE_LENGTH;
}
else
{
define symbol xSPI0_CS0_SPACE_PRV_LENGTH = 0;
}
if (isdefinedsymbol(xSPI0_CS1_SPACE_START))
{
define symbol xSPI0_CS1_SPACE_PRV_START = xSPI0_CS1_SPACE_START;
}
else
{
define symbol xSPI0_CS1_SPACE_PRV_START = 0;
}
if (isdefinedsymbol(xSPI0_CS1_SPACE_LENGTH))
{
define symbol xSPI0_CS1_SPACE_PRV_LENGTH = xSPI0_CS1_SPACE_LENGTH;
}
else
{
define symbol xSPI0_CS1_SPACE_PRV_LENGTH = 0;
}
if (isdefinedsymbol(xSPI1_CS0_SPACE_START))
{
define symbol xSPI1_CS0_SPACE_PRV_START = xSPI1_CS0_SPACE_START;
}
else
{
define symbol xSPI1_CS0_SPACE_PRV_START = 0;
}
if (isdefinedsymbol(xSPI1_CS0_SPACE_LENGTH))
{
define symbol xSPI1_CS0_SPACE_PRV_LENGTH = xSPI1_CS0_SPACE_LENGTH;
}
else
{
define symbol xSPI1_CS0_SPACE_PRV_LENGTH = 0;
}
if (isdefinedsymbol(xSPI1_CS1_SPACE_START))
{
define symbol xSPI1_CS1_SPACE_PRV_START = xSPI1_CS1_SPACE_START;
}
else
{
define symbol xSPI1_CS1_SPACE_PRV_START = 0;
}
if (isdefinedsymbol(xSPI1_CS1_SPACE_LENGTH))
{
define symbol xSPI1_CS1_SPACE_PRV_LENGTH = xSPI1_CS1_SPACE_LENGTH;
}
else
{
define symbol xSPI1_CS1_SPACE_PRV_LENGTH = 0;
}
if (isdefinedsymbol(CS0_SPACE_START))
{
define symbol CS0_SPACE_PRV_START = CS0_SPACE_START;
}
else
{
define symbol CS0_SPACE_PRV_START = 0;
}
if (isdefinedsymbol(CS0_SPACE_LENGTH))
{
define symbol CS0_SPACE_PRV_LENGTH = CS0_SPACE_LENGTH;
}
else
{
define symbol CS0_SPACE_PRV_LENGTH = 0;
}
if (isdefinedsymbol(CS2_SPACE_START))
{
define symbol CS2_SPACE_PRV_START = CS2_SPACE_START;
}
else
{
define symbol CS2_SPACE_PRV_START = 0;
}
if (isdefinedsymbol(CS2_SPACE_LENGTH))
{
define symbol CS2_SPACE_PRV_LENGTH = CS2_SPACE_LENGTH;
}
else
{
define symbol CS2_SPACE_PRV_LENGTH = 0;
}
if (isdefinedsymbol(CS3_SPACE_START))
{
define symbol CS3_SPACE_PRV_START = CS3_SPACE_START;
}
else
{
define symbol CS3_SPACE_PRV_START = 0;
}
if (isdefinedsymbol(CS3_SPACE_LENGTH))
{
define symbol CS3_SPACE_PRV_LENGTH = CS3_SPACE_LENGTH;
}
else
{
define symbol CS3_SPACE_PRV_LENGTH = 0;
}
if (isdefinedsymbol(CS5_SPACE_START))
{
define symbol CS5_SPACE_PRV_START = CS5_SPACE_START;
}
else
{
define symbol CS5_SPACE_PRV_START = 0;
}
if (isdefinedsymbol(CS5_SPACE_LENGTH))
{
define symbol CS5_SPACE_PRV_LENGTH = CS5_SPACE_LENGTH;
}
else
{
define symbol CS5_SPACE_PRV_LENGTH = 0;
}
define symbol SYSTEM_RAM_END_OFFSET = 0x00048000;
define symbol FLASH_ADDRESS = xSPI0_CS0_SPACE_PRV_START;
/*
define symbol INTVEC_ADDRESS = ATCM_PRV_START;
define symbol RAM_ADDRESS = (ATCM_PRV_START + 0x100);
define symbol RAM_END_ADDRESS = (ATCM_PRV_START + ATCM_PRV_LENGTH - 1);
define symbol LOADER_STACK_ADDRESS = (BTCM_PRV_START + 0x2000);
define symbol LOADER_STACK_END_ADDRESS = (BTCM_PRV_START + BTCM_PRV_LENGTH - 1);
define symbol DATA_NONCACHE_OFFSET = 0x00048000;
define symbol DATA_NONCACHE_END_OFFSET = 0x00044000;
define symbol DMAC_LINK_MODE_OFFSET = 0x00044000;
define symbol DMAC_LINK_MODE_END_OFFSET = 0x00040000;
define symbol NONCACHE_BUFFER_OFFSET = 0x00020000;
define symbol NONCACHE_BUFFER_END_OFFSET = 0;
*/
/************* Override define symbol to place EtherCAT protocol into SystemRAM ************/
define symbol INTVEC_ADDRESS = SYSTEM_RAM_PRV_START;
define symbol RAM_ADDRESS = (SYSTEM_RAM_PRV_START + 0x100);
define symbol RAM_END_ADDRESS = (SYSTEM_RAM_PRV_START + SYSTEM_RAM_PRV_LENGTH - 1);
define symbol LOADER_STACK_ADDRESS = (BTCM_PRV_START + 0x2000);
define symbol LOADER_STACK_END_ADDRESS = (BTCM_PRV_START + BTCM_PRV_LENGTH - 1);
define symbol DATA_NONCACHE_OFFSET = 0x00048000;
define symbol DATA_NONCACHE_END_OFFSET = 0x00044000;
define symbol DMAC_LINK_MODE_OFFSET = 0x00044000;
define symbol DMAC_LINK_MODE_END_OFFSET = 0x00040000;
define symbol NONCACHE_BUFFER_OFFSET = 0x00020000;
define symbol NONCACHE_BUFFER_END_OFFSET = 0;
/*********************************************************************************************/
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = INTVEC_ADDRESS;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = FLASH_ADDRESS + 0x20100;
define symbol __ICFEDIT_region_ROM_end__ = FLASH_ADDRESS + 0x6FFFF;
define symbol __ICFEDIT_region_RAM_start__ = RAM_ADDRESS;
define symbol __ICFEDIT_region_RAM_end__ = RAM_END_ADDRESS;
/**** End of ICF editor section. ###ICF###*/
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x200;
/**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define symbol __region_D_LOADER_STACK_start__ = LOADER_STACK_ADDRESS;
define symbol __region_D_LOADER_STACK_end__ = LOADER_STACK_END_ADDRESS;
define symbol __region_DATA_NONCACHE_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_OFFSET;
define symbol __region_DATA_NONCACHE_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_END_OFFSET - 1;
define symbol __region_DMAC_LINK_MODE_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_OFFSET;
define symbol __region_DMAC_LINK_MODE_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_END_OFFSET - 1;
define symbol __region_SHARED_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00040000;
define symbol __region_SHARED_NONCACHE_BUFFER_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00020000 - 1;
define symbol __region_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_OFFSET;
define symbol __region_NONCACHE_BUFFER_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_END_OFFSET - 1;
define symbol __region_ATCM_start__ = ATCM_PRV_START;
define symbol __region_ATCM_end__ = ATCM_PRV_START + ATCM_PRV_LENGTH - 1;
define symbol __region_BTCM_start__ = BTCM_PRV_START;
define symbol __region_BTCM_end__ = BTCM_PRV_START + BTCM_PRV_LENGTH - 1;
define symbol __region_SYSTEM_RAM_start__ = SYSTEM_RAM_PRV_START;
define symbol __region_SYSTEM_RAM_end__ = SYSTEM_RAM_PRV_START + SYSTEM_RAM_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1;
define symbol __region_SYSTEM_RAM_MIRROR_start__ = SYSTEM_RAM_MIRROR_PRV_START;
define symbol __region_SYSTEM_RAM_MIRROR_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1;
define symbol __region_XSPI0_CS0_MIRROR_start__ = xSPI0_CS0_SPACE_MIRROR_PRV_START;
define symbol __region_XSPI0_CS0_MIRROR_end__ = xSPI0_CS0_SPACE_MIRROR_PRV_START + xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH - 1;
define symbol __region_XSPI0_CS1_MIRROR_start__ = xSPI0_CS1_SPACE_MIRROR_PRV_START;
define symbol __region_XSPI0_CS1_MIRROR_end__ = xSPI0_CS1_SPACE_MIRROR_PRV_START + xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH - 1;
define symbol __region_XSPI1_CS0_MIRROR_start__ = xSPI1_CS0_SPACE_MIRROR_PRV_START;
define symbol __region_XSPI1_CS0_MIRROR_end__ = xSPI1_CS0_SPACE_MIRROR_PRV_START + xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH - 1;
define symbol __region_XSPI1_CS1_MIRROR_start__ = xSPI1_CS1_SPACE_MIRROR_PRV_START;
define symbol __region_XSPI1_CS1_MIRROR_end__ = xSPI1_CS1_SPACE_MIRROR_PRV_START + xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH - 1;
define symbol __region_CS0_MIRROR_start__ = CS0_SPACE_MIRROR_PRV_START;
define symbol __region_CS0_MIRROR_end__ = CS0_SPACE_MIRROR_PRV_START + CS0_SPACE_MIRROR_PRV_LENGTH - 1;
define symbol __region_CS2_MIRROR_start__ = CS2_SPACE_MIRROR_PRV_START;
define symbol __region_CS2_MIRROR_end__ = CS2_SPACE_MIRROR_PRV_START + CS2_SPACE_MIRROR_PRV_LENGTH - 1;
define symbol __region_CS3_MIRROR_start__ = CS3_SPACE_MIRROR_PRV_START;
define symbol __region_CS3_MIRROR_end__ = CS3_SPACE_MIRROR_PRV_START + CS3_SPACE_MIRROR_PRV_LENGTH - 1;
define symbol __region_CS5_MIRROR_start__ = CS5_SPACE_MIRROR_PRV_START;
define symbol __region_CS5_MIRROR_end__ = CS5_SPACE_MIRROR_PRV_START + CS5_SPACE_MIRROR_PRV_LENGTH - 1;
define symbol __region_XSPI0_CS0_start__ = xSPI0_CS0_SPACE_PRV_START;
define symbol __region_XSPI0_CS0_end__ = xSPI0_CS0_SPACE_PRV_START + xSPI0_CS0_SPACE_PRV_LENGTH - 1;
define symbol __region_XSPI0_CS1_start__ = xSPI0_CS1_SPACE_PRV_START;
define symbol __region_XSPI0_CS1_end__ = xSPI0_CS1_SPACE_PRV_START + xSPI0_CS1_SPACE_PRV_LENGTH - 1;
define symbol __region_XSPI1_CS0_start__ = xSPI1_CS0_SPACE_PRV_START;
define symbol __region_XSPI1_CS0_end__ = xSPI1_CS0_SPACE_PRV_START + xSPI1_CS0_SPACE_PRV_LENGTH - 1;
define symbol __region_XSPI1_CS1_start__ = xSPI1_CS1_SPACE_PRV_START;
define symbol __region_XSPI1_CS1_end__ = xSPI1_CS1_SPACE_PRV_START + xSPI1_CS1_SPACE_PRV_LENGTH - 1;
define symbol __region_CS0_start__ = CS0_SPACE_PRV_START;
define symbol __region_CS0_end__ = CS0_SPACE_PRV_START + CS0_SPACE_PRV_LENGTH - 1;
define symbol __region_CS2_start__ = CS2_SPACE_PRV_START;
define symbol __region_CS2_end__ = CS2_SPACE_PRV_START + CS2_SPACE_PRV_LENGTH - 1;
define symbol __region_CS3_start__ = CS3_SPACE_PRV_START;
define symbol __region_CS3_end__ = CS3_SPACE_PRV_START + CS3_SPACE_PRV_LENGTH - 1;
define symbol __region_CS5_start__ = CS5_SPACE_PRV_START;
define symbol __region_CS5_end__ = CS5_SPACE_PRV_START + CS5_SPACE_PRV_LENGTH - 1;
/************** SPI boot mode setting **************/
define symbol __region_LDR_PARAM_start__ = FLASH_ADDRESS;
define symbol __region_LDR_PARAM_end__ = FLASH_ADDRESS + 0x0000004B;
define symbol __region_S_LOADER_STACK_start__ = FLASH_ADDRESS + 0x0000004C;
define symbol __region_S_LOADER_STACK_end__ = FLASH_ADDRESS + 0x0000804B;
define symbol __region_S_intvec_start__ = FLASH_ADDRESS + 0x20000;
define symbol __region_S_intvec_end__ = FLASH_ADDRESS + 0x200FF;
define symbol __region_S_RAM_start__ = FLASH_ADDRESS + 0x70000;
define symbol __region_S_RAM_end__ = FLASH_ADDRESS + 0x7FFFF;
/****************************************************/
define region D_LOADER_STACK_region = mem:[from __region_D_LOADER_STACK_start__ to __region_D_LOADER_STACK_end__];
define region LDR_PARAM_region = mem:[from __region_LDR_PARAM_start__ to __region_LDR_PARAM_end__];
define region S_LOADER_STACK_region = mem:[from __region_S_LOADER_STACK_start__ to __region_S_LOADER_STACK_end__];
define region S_intvec_region = mem:[from __region_S_intvec_start__ to __region_S_intvec_end__];
define region S_RAM_region = mem:[from __region_S_RAM_start__ to __region_S_RAM_end__];
define region DATA_NONCACHE_region = mem:[from __region_DATA_NONCACHE_start__ to __region_DATA_NONCACHE_end__];
define region DMAC_LINK_MODE_region = mem:[from __region_DMAC_LINK_MODE_start__ to __region_DMAC_LINK_MODE_end__];
define region SHARED_NONCACHE_BUFFER_region = mem:[from __region_SHARED_NONCACHE_BUFFER_start__ to __region_SHARED_NONCACHE_BUFFER_end__];
define region NONCACHE_BUFFER_region = mem:[from __region_NONCACHE_BUFFER_start__ to __region_NONCACHE_BUFFER_end__];
define region ATCM_region = mem:[from __region_ATCM_start__ to __region_ATCM_end__ ];
define region BTCM_region = mem:[from __region_BTCM_start__ to __region_BTCM_end__ ];
define region SYSTEM_RAM_region = mem:[from __region_SYSTEM_RAM_start__ to __region_SYSTEM_RAM_end__ ];
define region SYSTEM_RAM_MIRROR_region = mem:[from __region_SYSTEM_RAM_MIRROR_start__ to __region_SYSTEM_RAM_MIRROR_end__ ];
define region XSPI0_CS0_MIRROR_region = mem:[from __region_XSPI0_CS0_MIRROR_start__ to __region_XSPI0_CS0_MIRROR_end__ ];
define region XSPI0_CS1_MIRROR_region = mem:[from __region_XSPI0_CS1_MIRROR_start__ to __region_XSPI0_CS1_MIRROR_end__ ];
define region XSPI1_CS0_MIRROR_region = mem:[from __region_XSPI1_CS0_MIRROR_start__ to __region_XSPI1_CS0_MIRROR_end__ ];
define region XSPI1_CS1_MIRROR_region = mem:[from __region_XSPI1_CS1_MIRROR_start__ to __region_XSPI1_CS1_MIRROR_end__ ];
define region CS0_MIRROR_region = mem:[from __region_CS0_MIRROR_start__ to __region_CS0_MIRROR_end__ ];
define region CS2_MIRROR_region = mem:[from __region_CS2_MIRROR_start__ to __region_CS2_MIRROR_end__ ];
define region CS3_MIRROR_region = mem:[from __region_CS3_MIRROR_start__ to __region_CS3_MIRROR_end__ ];
define region CS5_MIRROR_region = mem:[from __region_CS5_MIRROR_start__ to __region_CS5_MIRROR_end__ ];
define region XSPI0_CS0_region = mem:[from __region_XSPI0_CS0_start__ to __region_XSPI0_CS0_end__ ];
define region XSPI0_CS1_region = mem:[from __region_XSPI0_CS1_start__ to __region_XSPI0_CS1_end__ ];
define region XSPI1_CS0_region = mem:[from __region_XSPI1_CS0_start__ to __region_XSPI1_CS0_end__ ];
define region XSPI1_CS1_region = mem:[from __region_XSPI1_CS1_start__ to __region_XSPI1_CS1_end__ ];
define region CS0_region = mem:[from __region_CS0_start__ to __region_CS0_end__ ];
define region CS2_region = mem:[from __region_CS2_start__ to __region_CS2_end__ ];
define region CS3_region = mem:[from __region_CS3_start__ to __region_CS3_end__ ];
define region CS5_region = mem:[from __region_CS5_start__ to __region_CS5_end__ ];
define block LDR_PRG_RBLOCK with fixed order
{ ro code section .loader_text_init object startup_core.o,
ro code object startup_core.o,
ro code object system_core.o,
ro code object startup.o,
ro code object system.o,
ro code object bsp_clocks.o,
ro code object bsp_irq_core.o,
ro code object bsp_irq.o,
ro code object bsp_register_protection.o,
ro code object r_ioport.o,
ro code object bsp_cache.o,
ro code section .warm_start_init }
except { ro code section .intvec_init,
ro code section .reset_handler_init };
define block LDR_PRG_WBLOCK with fixed order
{ rw code section .loader_text object startup_core.o,
rw code object startup_core.o,
rw code object system_core.o,
rw code object startup.o,
rw code object system.o,
rw code object bsp_clocks.o,
rw code object bsp_irq_core.o,
rw code object bsp_irq.o,
rw code object bsp_register_protection.o,
rw code object r_ioport.o,
rw code object bsp_cache.o,
rw code section .warm_start }
except { rw code section .intvec,
rw code section .reset_handler };
define block LDR_DATA_ZBLOCK with alignment = 4
{ section .bss object startup_core.o,
section .bss object system_core.o,
section .bss object startup.o,
section .bss object system.o,
section .bss object bsp_clocks.o,
section .bss object bsp_irq_core.o,
section .bss object bsp_irq.o,
section .bss object bsp_register_protection.o,
section .bss object r_ioport.o,
section .bss object bsp_cache.o,
section .bss object bsp_io.o };
define block LDR_DATA_RBLOCK with fixed order, alignment = 4
{ section .data_init object startup_core.o,
section .data_init object system_core.o,
section .data_init object startup.o,
section .data_init object system.o,
section .data_init object bsp_clocks.o,
section .data_init object bsp_irq_core.o,
section .data_init object bsp_irq.o,
section .data_init object bsp_register_protection.o,
section .data_init object r_ioport.o,
section .data_init object bsp_cache.o,
section .rodata_init object system_core.o };
define block LDR_DATA_WBLOCK with fixed order, alignment = 4
{ section .data object startup_core.o,
section .data object system_core.o,
section .data object startup.o,
section .data object system.o,
section .data object bsp_clocks.o,
section .data object bsp_irq_core.o,
section .data object bsp_irq.o,
section .data object bsp_register_protection.o,
section .data object r_ioport.o,
section .data object bsp_cache.o,
section .rodata object system_core.o };
define block HEAP_BLOCK with alignment = 8 { rw section HEAP };
define block THREAD_STACK with alignment = 8 { rw section .stack* };
define block SYS_STACK with alignment = 8 { rw section .sys_stack };
define block SVC_STACK with alignment = 8 { rw section .svc_stack };
define block IRQ_STACK with alignment = 8 { rw section .irq_stack };
define block FIQ_STACK with alignment = 8 { rw section .fiq_stack };
define block UND_STACK with alignment = 8 { rw section .und_stack };
define block ABT_STACK with alignment = 8 { rw section .abt_stack };
define block VECTOR_RBLOCK with alignment = 32 { ro code section .intvec_init};
define block VECTOR_WBLOCK with alignment = 32 { rw code section .intvec};
define block USER_PRG_RBLOCK with alignment = 4 { ro code };
define block USER_PRG_WBLOCK with alignment = 4 { rw code };
define block USER_DATA_ZBLOCK with alignment = 4 { section .bss };
define block USER_DATA_RBLOCK with fixed order, alignment = 4
{ section .data_init,
section __DLIB_PERTHREAD_init,
section .rodata_init,
section .version_init };
define block USER_DATA_WBLOCK with fixed order, alignment = 4
{ section .data,
section __DLIB_PERTHREAD,
section .rodata,
section .version };
define block USER_DATA_NONCACHE_RBLOCK with alignment = 4 { section .data_noncache_init };
define block USER_DATA_NONCACHE_WBLOCK with alignment = 4 { section .data_noncache };
define block DMAC_LINK_MODE_ZBLOCK with alignment = 4 { section .dmac_link_mode* };
define block SHARED_NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .shared_noncache_buffer* };
define block NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .noncache_buffer* };
initialize manually { ro code object startup_core.o,
ro code object system_core.o,
ro code object startup.o,
ro code object system.o,
ro code object bsp_clocks.o,
ro code object bsp_irq_core.o,
ro code object bsp_irq.o,
ro code object bsp_register_protection.o,
ro code object r_ioport.o,
ro code object bsp_cache.o,
ro code section .intvec,
ro code section .reset_handler,
ro code section .warm_start,
ro code,
section .data,
section __DLIB_PERTHREAD,
section .rodata,
section .version,
section .data_noncache };
do not initialize { section .noinit,
section .bss,
section .dmac_link_mode*,
section .shared_noncache_buffer*,
section .noncache_buffer*,
rw section HEAP,
rw section .stack*,
rw section .sys_stack,
rw section .svc_stack,
rw section .irq_stack,
rw section .fiq_stack,
rw section .und_stack,
rw section .abt_stack };
place at address mem: __ICFEDIT_intvec_start__ { block VECTOR_WBLOCK };
place in LDR_PARAM_region { readonly section .loader_param };
place at start of S_LOADER_STACK_region { block LDR_PRG_RBLOCK };
place in S_LOADER_STACK_region { section LDR_DATA_RBLOCK, block LDR_DATA_RBLOCK };
place in S_intvec_region { block VECTOR_RBLOCK };
place in ROM_region { block USER_PRG_RBLOCK, readonly };
place in S_RAM_region { block USER_DATA_RBLOCK, block USER_DATA_NONCACHE_RBLOCK };
place at start of D_LOADER_STACK_region { block LDR_PRG_WBLOCK };
place in D_LOADER_STACK_region { section LDR_DATA_WBLOCK, block LDR_DATA_WBLOCK,
section LDR_DATA_ZBLOCK, block LDR_DATA_ZBLOCK };
place in D_LOADER_STACK_region { section SYS_STACK, block SYS_STACK,
section SVC_STACK, block SVC_STACK,
section IRQ_STACK, block IRQ_STACK,
section FIQ_STACK, block FIQ_STACK,
section UND_STACK, block UND_STACK,
section ABT_STACK, block ABT_STACK };
place in RAM_region { block USER_PRG_WBLOCK };
place in RAM_region { readwrite, last block CSTACK };
place in RAM_region { block USER_DATA_WBLOCK,
block USER_DATA_ZBLOCK };
place in RAM_region { section HEAP_BLOCK, block HEAP_BLOCK,
section THREAD_STACK, block THREAD_STACK };
place in DATA_NONCACHE_region { block USER_DATA_NONCACHE_WBLOCK };
place in DMAC_LINK_MODE_region { block DMAC_LINK_MODE_ZBLOCK };
place in SHARED_NONCACHE_BUFFER_region { block SHARED_NONCACHE_BUFFER_ZBLOCK };
place in NONCACHE_BUFFER_region { block NONCACHE_BUFFER_ZBLOCK };
place in ATCM_region { };
place in BTCM_region { };
place in SYSTEM_RAM_region { };
place in SYSTEM_RAM_MIRROR_region { };
place in XSPI0_CS0_MIRROR_region { };
place in XSPI0_CS1_MIRROR_region { };
place in XSPI1_CS0_MIRROR_region { };
place in XSPI1_CS1_MIRROR_region { };
place in CS0_MIRROR_region { };
place in CS2_MIRROR_region { };
place in CS3_MIRROR_region { };
place in CS5_MIRROR_region { };
place in XSPI0_CS0_region { };
place in XSPI0_CS1_region { };
place in XSPI1_CS0_region { };
place in XSPI1_CS1_region { };
place in CS0_region { };
place in CS2_region { };
place in CS3_region { };
place in CS5_region { };
|