]> git.sur5r.net Git - freertos/blob - Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_INTERNAL_FLASH.lcf
Start of a new ColdFire/CodeWarrior demo.
[freertos] / Demo / ColdFire_MCF52221_CodeWarrior / lcf / MCF52221_INTERNAL_FLASH.lcf
1 # Sample Linker Command File for CodeWarrior for ColdFire\r
2 \r
3 KEEP_SECTION {.vectortable}\r
4 \r
5 # Memory ranges \r
6 \r
7 MEMORY {\r
8    vectorrom   (RX)  : ORIGIN = 0x00000000, LENGTH = 0x00000400\r
9    cfmprotrom  (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000020   \r
10    code        (RX)  : ORIGIN = 0x00000500, LENGTH = 0x0001FB00\r
11    vectorram   (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00000400\r
12    userram     (RWX) : ORIGIN = 0x20000400, LENGTH = 0x00003C00\r
13 }\r
14 \r
15 SECTIONS {\r
16 \r
17 # Heap and Stack sizes definition\r
18         ___heap_size      = 0x1000;\r
19         ___stack_size     = 0x1000;\r
20 \r
21 \r
22 \r
23 # MCF52221 Derivative Memory map definitions from linker command files:\r
24 # __IPSBAR, __RAMBAR, __RAMBAR_SIZE, __FLASHBAR, __FLASHBAR_SIZE linker\r
25 # symbols must be defined in the linker command file.\r
26 \r
27 # Memory Mapped Registers (IPSBAR= 0x40000000)\r
28    ___IPSBAR         = 0x40000000;\r
29 \r
30 # 16 Kbytes Internal SRAM\r
31    ___RAMBAR         = 0x20000000;\r
32    ___RAMBAR_SIZE    = 0x00004000;\r
33 \r
34 # 128 KByte Internal Flash Memory\r
35    ___FLASHBAR       = 0x00000000;\r
36    ___FLASHBAR_SIZE  = 0x00020000;\r
37 \r
38    ___SP_AFTER_RESET = ___RAMBAR + ___RAMBAR_SIZE - 4;\r
39    \r
40   .userram        : {} > userram                \r
41   .code     : {} > code         \r
42   .vectorram    : {} > vectorram                        \r
43         \r
44         .vectors :\r
45         {\r
46                 exceptions.c(.vectortable)\r
47                 . = ALIGN (0x4); \r
48         } > vectorrom\r
49 \r
50         .cfmprotect :\r
51         {\r
52                 *(.cfmconfig)\r
53                 . = ALIGN (0x4);\r
54         } > cfmprotrom\r
55 \r
56         .text :\r
57         {\r
58                 *(.text)\r
59                 . = ALIGN (0x4);\r
60                 *(.rodata)\r
61                 . = ALIGN (0x4);                \r
62                 ___ROM_AT = .;\r
63                 ___DATA_ROM = .;\r
64         } >> code\r
65 \r
66         .data : AT(___ROM_AT) \r
67         {  \r
68                 ___DATA_RAM = .;\r
69                 . = ALIGN(0x4);\r
70                 *(.exception)   \r
71                 . = ALIGN(0x4); \r
72                 __exception_table_start__ = .;\r
73                 EXCEPTION\r
74                 __exception_table_end__ = .;\r
75                 \r
76                 ___sinit__ = .;\r
77             STATICINIT\r
78                 __START_DATA = .;\r
79 \r
80                 *(.data)\r
81                 . = ALIGN (0x4);\r
82                 __END_DATA = .;\r
83 \r
84                 __START_SDATA = .;\r
85                 *(.sdata)\r
86                 . = ALIGN (0x4);\r
87                 __END_SDATA = .;\r
88 \r
89                 ___DATA_END = .;\r
90                 __SDA_BASE = .;\r
91                 . = ALIGN (0x4);\r
92         } >> userram\r
93 \r
94         .bss :\r
95         {\r
96                 ___BSS_START = .;\r
97                 __START_SBSS = .;\r
98                 *(.sbss)\r
99                 . = ALIGN (0x4);\r
100                 *(SCOMMON)\r
101                 __END_SBSS = .;\r
102 \r
103                 __START_BSS = .;\r
104                 *(.bss)\r
105                 . = ALIGN (0x4);\r
106                 *(COMMON)\r
107                 __END_BSS = .;\r
108                 ___BSS_END = .;\r
109 \r
110                 . = ALIGN(0x4);\r
111         } >> userram\r
112 \r
113         .custom :\r
114         {\r
115                 ___HEAP_START   = .;\r
116                 ___heap_addr    = ___HEAP_START;\r
117                 ___HEAP_END             = ___HEAP_START + ___heap_size;\r
118                 ___SP_END               = ___HEAP_END;\r
119                 ___SP_INIT              = ___SP_END + ___stack_size;\r
120 \r
121                 . = ALIGN (0x4);\r
122         } >> userram\r
123         \r
124         ___VECTOR_RAM           = ADDR(.vectorram);\r
125         \r
126         __SP_INIT               = ___SP_INIT;\r
127 \r
128         _romp_at = ___ROM_AT + SIZEOF(.data);\r
129         .romp : AT(_romp_at)\r
130         {\r
131                 __S_romp = _romp_at;\r
132                 WRITEW(___ROM_AT);\r
133                 WRITEW(ADDR(.data));\r
134                 WRITEW(SIZEOF(.data));\r
135                 WRITEW(0);\r
136                 WRITEW(0);\r
137                 WRITEW(0);\r
138         }\r
139 \r
140 }