summaryrefslogtreecommitdiff
path: root/FreeRTOS/Demo/CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC/Projects_NTZ/IAR/FreeRTOSDemo.icf
blob: 8c23e43f4b1d66419c5366707a6b79be6ec67655 (plain)
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
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v2_1.xml" */

/*-Specials-*/
define symbol __ICFEDIT_intvec_start__          = 0x00000000;

/*-Memory Regions-*/
define symbol __ICFEDIT_region_IROM1_start__    = 0x00000000;
define symbol __ICFEDIT_region_IROM1_end__      = 0x0007FFFF;
define symbol __ICFEDIT_region_IROM2_start__    = 0x0;
define symbol __ICFEDIT_region_IROM2_end__      = 0x0;
define symbol __ICFEDIT_region_EROM1_start__    = 0x0;
define symbol __ICFEDIT_region_EROM1_end__      = 0x0;
define symbol __ICFEDIT_region_EROM2_start__    = 0x0;
define symbol __ICFEDIT_region_EROM2_end__      = 0x0;
define symbol __ICFEDIT_region_EROM3_start__    = 0x0;
define symbol __ICFEDIT_region_EROM3_end__      = 0x0;
define symbol __ICFEDIT_region_IRAM1_start__    = 0x20000000;
define symbol __ICFEDIT_region_IRAM1_end__      = 0x20017FFF;
define symbol __ICFEDIT_region_IRAM2_start__    = 0x0;
define symbol __ICFEDIT_region_IRAM2_end__      = 0x0;
define symbol __ICFEDIT_region_ERAM1_start__    = 0x0;
define symbol __ICFEDIT_region_ERAM1_end__      = 0x0;
define symbol __ICFEDIT_region_ERAM2_start__    = 0x0;
define symbol __ICFEDIT_region_ERAM2_end__      = 0x0;
define symbol __ICFEDIT_region_ERAM3_start__    = 0x0;
define symbol __ICFEDIT_region_ERAM3_end__      = 0x0;

/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__           = 0x800;
define symbol __ICFEDIT_size_proc_s_stack__     = 0x0;
define symbol __ICFEDIT_size_main_ns_stack__    = 0x0;
define symbol __ICFEDIT_size_proc_ns_stack__    = 0x0;
define symbol __ICFEDIT_size_heap__             = 0x0;

/**** End of ICF editor section. ###ICF###*/

/* Flash Organization
 *  1. Privileged Code:
 *      Start   : 0x00000000
 *      End     : 0x00006FFF
 *      Size    : 28 Kbytes
 *  2. System calls:
 *      Start   : 0x00007000
 *      End     : 0x00007FFF
 *      Size    : 4 Kbytes
 *  3. Unprivileged Code:
 *      Start   : 0x00008000
 *      End     : 0x0007FFFF
 *      Size    : 480 Kbytes
 */
define symbol __region_ROM_Privileged_start__   = 0x00000000;
define symbol __region_ROM_Privileged_end__     = 0x00006FFF;
define symbol __region_ROM_SystemCalls_start__  = 0x00007000;
define symbol __region_ROM_SystemCalls_end__    = 0x00007FFF;
define symbol __region_ROM_Unprivileged_start__ = 0x00008000;
define symbol __region_ROM_Unprivileged_end__   = 0x0007FFFF;

/* RAM Organization
 *  1. Privileged Data:
 *      Start   : 0x20000000
 *      End     : 0x20007FFF
 *      Size    : 32 Kbytes
 *  2. Unprivileged Data:
 *      Start   : 0x20008000
 *      End     : 0x20017FFF
 *      Size    : 64 Kbytes
 */
define symbol __region_RAM_Privileged_start__   = 0x20000000;
define symbol __region_RAM_Privileged_end__     = 0x20007FFF;
define symbol __region_RAM_Unprivileged_start__ = 0x20008000;
define symbol __region_RAM_Unprivileged_end__   = 0x20017FFF;

/* Memory Regions. */
define memory mem with size = 4G;
define region ROM_Privileged_region             = mem:[from __region_ROM_Privileged_start__     to __region_ROM_Privileged_end__];
define region ROM_SystemCalls_region            = mem:[from __region_ROM_SystemCalls_start__    to __region_ROM_SystemCalls_end__];
define region ROM_Unprivileged_region           = mem:[from __region_ROM_Unprivileged_start__   to __region_ROM_Unprivileged_end__];
define region RAM_Privileged_region             = mem:[from __region_RAM_Privileged_start__     to __region_RAM_Privileged_end__];
define region RAM_Unprivileged_region           = mem:[from __region_RAM_Unprivileged_start__   to __region_RAM_Unprivileged_end__];

/* Stack and Heap. */
define block CSTACK        with alignment = 8, size = __ICFEDIT_size_cstack__        { };
define block PROC_STACK_S  with alignment = 8, size = __ICFEDIT_size_proc_s_stack__  { };
define block MAIN_STACK_NS with alignment = 8, size = __ICFEDIT_size_main_ns_stack__ { };
define block PROC_STACK_NS with alignment = 8, size = __ICFEDIT_size_proc_ns_stack__ { };
define block HEAP          with alignment = 8, size = __ICFEDIT_size_heap__          { };

/* Initialization. */
do not initialize  { section .noinit };
initialize by copy { readwrite };
if( isdefinedsymbol(__USE_DLIB_PERTHREAD) )
{
    /* Required in a multi-threaded application. */
    initialize by copy with packing = none { section __DLIB_PERTHREAD };
}

/* Exported symbols. */
define exported symbol __privileged_functions_start__   = __region_ROM_Privileged_start__;
define exported symbol __privileged_functions_end__     = __region_ROM_Privileged_end__;
define exported symbol __syscalls_flash_start__         = __region_ROM_SystemCalls_start__;
define exported symbol __syscalls_flash_end__           = __region_ROM_SystemCalls_end__;
define exported symbol __unprivileged_flash_start__     = __region_ROM_Unprivileged_start__;
define exported symbol __unprivileged_flash_end__       = __region_ROM_Unprivileged_end__;
define exported symbol __privileged_sram_start__        = __region_RAM_Privileged_start__;
define exported symbol __privileged_sram_end__          = __region_RAM_Privileged_end__;

/* Placements. */
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

place in ROM_Privileged_region   { readonly section privileged_functions };
place in ROM_SystemCalls_region  { readonly section freertos_system_calls };
place in ROM_Unprivileged_region { readonly };

place in RAM_Privileged_region   { readwrite section privileged_data };
place in RAM_Unprivileged_region { readwrite,
                                   block CSTACK, block PROC_STACK_S, block MAIN_STACK_NS, block PROC_STACK_NS, block HEAP };