Added support for v4.2 boards
[SCSI2SD.git] / software / SCSI2SD / v4 / SCSI2SD.cydsn / Generated_Source / PSoC5 / Cm3Iar.icf
1 /*###ICF### Section handled by ICF editor, don't touch! ****/
2 /*-Editor annotation file-*/
3 /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
4 /*-Specials-*/
5 define symbol __ICFEDIT_intvec_start__ = 0x00000000;
6 /*-Memory Regions-*/
7 define symbol __ICFEDIT_region_ROM_start__ = 0x0;
8 define symbol __ICFEDIT_region_ROM_end__   = 131072 - 1;
9 define symbol __ICFEDIT_region_RAM_start__ = 0x20000000 - (32768 / 2);
10 define symbol __ICFEDIT_region_RAM_end__   = 0x20000000 + (32768 / 2) - 1;
11 /*-Sizes-*/
12 define symbol __ICFEDIT_size_cstack__ = 0x4000;
13 define symbol __ICFEDIT_size_heap__   = 0x1000;
14 /**** End of ICF editor section. ###ICF###*/
15
16
17 /******** Definitions ********/
18 define symbol CY_APPL_LOADABLE  = 1;
19 define symbol CY_APPL_LOADER    = 0;
20 define symbol CY_APPL_NUM       = 1;
21 define symbol CY_APPL_MAX       = 1;
22 define symbol CY_METADATA_SIZE  = 64;
23 define symbol CY_EE_IN_BTLDR    = 0x00;
24 define symbol CY_EE_SIZE        = 2048;
25 include "cybootloader.icf";
26 if (!CY_APPL_LOADABLE) {
27     define symbol CYDEV_BTLDR_SIZE = 0;
28 }
29
30 define symbol CY_FLASH_SIZE     = 131072;
31 define symbol CY_APPL_ORIGIN    = 0; 
32 define symbol CY_FLASH_ROW_SIZE = 256;
33 define symbol CY_ECC_ROW_SIZE   = 32;
34
35 define memory mem with size = 4G;
36 define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
37 define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
38
39 define block CSTACK      with alignment = 8, size = __ICFEDIT_size_cstack__   { };
40 define block HEAP        with alignment = 8, size = __ICFEDIT_size_heap__     { };
41 define block HSTACK      {block HEAP, last block CSTACK};
42
43 define block LOADER     { readonly section .cybootloader };
44 define block APPL       with fixed order {readonly section .romvectors, readonly};
45
46 /* The address of Flash row next after Bootloader image */
47 define symbol CY_BTLDR_END      = CYDEV_BTLDR_SIZE +
48                                     ((CYDEV_BTLDR_SIZE % CY_FLASH_ROW_SIZE) ?
49                                     (CY_FLASH_ROW_SIZE - (CYDEV_BTLDR_SIZE % CY_FLASH_ROW_SIZE)) : 0);
50
51 /* The start address of Standard/Loader/Loadable#1 image */
52 define symbol CY_APPL1_START    = CY_APPL_ORIGIN ? CY_APPL_ORIGIN : CY_BTLDR_END;
53
54 /* The number of metadata records located at the end of Flash */
55 define symbol CY_METADATA_CNT   = (CY_APPL_NUM == 2) ? 2 : ((CY_APPL_LOADER || CY_APPL_LOADABLE) ? 1 : 0);
56
57 /* The application area size measured in rows */
58 define symbol CY_APPL_ROW_CNT   = ((CY_FLASH_SIZE - CY_APPL1_START) / CY_FLASH_ROW_SIZE) - CY_METADATA_CNT;
59
60 /* The start address of Loadable#2 image if any */
61 define symbol CY_APPL2_START    = CY_APPL1_START + (CY_APPL_ROW_CNT / 2 + CY_APPL_ROW_CNT % 2) * CY_FLASH_ROW_SIZE;
62
63 /* The current image (Standard/Loader/Loadable) start address */
64 define symbol CY_APPL_START     = (CY_APPL_NUM == 1) ? CY_APPL1_START : CY_APPL2_START;
65
66 /* The ECC data placement address */
67 define exported symbol CY_ECC_OFFSET     = (CY_APPL_START / CY_FLASH_ROW_SIZE) * CY_ECC_ROW_SIZE;
68
69 /* The EEPROM offset and size that can be used by current application (Standard/Loader/Loadable) */
70 define symbol CY_EE_OFFSET      = (CY_APPL_LOADABLE && !CY_EE_IN_BTLDR) ? ((CY_EE_SIZE / CY_APPL_MAX) * (CY_APPL_NUM - 1)) : 0;
71 define symbol CY_EE_IN_USE      = (CY_APPL_LOADABLE && !CY_EE_IN_BTLDR) ? (CY_EE_SIZE / CY_APPL_MAX) : CY_EE_SIZE;
72
73 /* Define EEPROM region */
74 define region EEPROM_region     = mem:[from (0x90200000 + CY_EE_OFFSET) size CY_EE_IN_USE];
75
76 /* Define APPL region that will limit application size */
77 define region APPL_region       = mem:[from CY_APPL_START size CY_APPL_ROW_CNT * CY_FLASH_ROW_SIZE];
78
79
80 /****** Initializations ******/
81 initialize by copy { readwrite };
82 do not initialize  { section .noinit };
83 do not initialize  { readwrite section .ramvectors };
84
85 /******** Placements *********/
86 ".cybootloader"    : place at start of ROM_region {block LOADER};
87 "APPL"             : place at start of APPL_region {block APPL};
88
89 "RAMVEC"           : place at start of RAM_region { readwrite section .ramvectors };
90 "readwrite"        : place in RAM_region          { readwrite };
91 "HSTACK"           : place at end of RAM_region   { block HSTACK};
92
93 keep {  section .cybootloader, 
94         section .cyloadermeta, 
95         section .cyloadablemeta,
96         section .cyconfigecc, 
97         section .cycustnvl, 
98         section .cywolatch,
99         section .cyeeprom, 
100         section .cyflashprotect,
101         section .cymeta };
102
103 ".cyloadermeta"   : place at address mem : (CY_APPL_LOADER ? (CY_FLASH_SIZE - CY_METADATA_SIZE) : 0xF0000000) { readonly section .cyloadermeta };
104 ".cyloadablemeta" : place at address mem : (CY_FLASH_SIZE - CY_FLASH_ROW_SIZE * (CY_APPL_NUM - 1) - CY_METADATA_SIZE) { readonly section .cyloadablemeta };
105 ".cyconfigecc"    : place at address mem : (0x80000000 + CY_ECC_OFFSET) { readonly section .cyconfigecc };
106 ".cycustnvl"      : place at address mem : 0x90000000 { readonly section .cycustnvl };
107 ".cywolatch"      : place at address mem : 0x90100000 { readonly section .cywolatch };
108 ".cyeeprom"       : place in EEPROM_region { readonly section .cyeeprom };
109 ".cyflashprotect" : place at address mem : 0x90400000 { readonly section .cyflashprotect };
110 ".cymeta"         : place at address mem : 0x90500000 { readonly section .cymeta };
111
112
113 /* EOF */