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