comparison Common/CPU1-F429.ld @ 43:c42c82f73c96

Split memory areas and reverse engineered font library
author Ideenmodellierer
date Sun, 29 Jul 2018 18:05:44 +0200
parents 5f11787b4f42
children 06cfc7457c9e
comparison
equal deleted inserted replaced
42:2d99d9290a22 43:c42c82f73c96
46 46
47 /****************************************************************************/ 47 /****************************************************************************/
48 /***************************** Memory Definition ****************************/ 48 /***************************** Memory Definition ****************************/
49 MEMORY 49 MEMORY
50 { 50 {
51 ROM (rx) : ORIGIN = 0x08000000, LENGTH = 0x100000 /* 1024K */ 51 ROM_BOOT (rx) : ORIGIN = 0x08000000, LENGTH = 0x00040000 /* 256K */
52 ROM_MAIN (rx) : ORIGIN = 0x08040000, LENGTH = 0x00090000 /* 576K */
52 UPPER(rx) : ORIGIN = 0x08100000, LENGTH = 0x100000 /* 1024K */ 53 UPPER(rx) : ORIGIN = 0x08100000, LENGTH = 0x100000 /* 1024K */
53 RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 192K 54 RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 192K
54 CCRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K 55 CCRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K
55 } 56 }
56 57
58 /* Linker file shall be shared between Bootloader, Font and Firmware projects. Not used memory areas to be cut during bin generation */
59
57 /* Make sure ROM and UPPER are contiguous, and map 2MB */ 60 /* Make sure ROM and UPPER are contiguous, and map 2MB */
58 ASSERT( ORIGIN(UPPER) - ORIGIN(ROM) == LENGTH(ROM), "ROM lower and upper region shall be continuous" ) 61 /* TODO: At the moment the size of the defined memory will be directly reflected into the file size of resultion bin => Keep small until not used memory may be excluded from build */
59 ASSERT( LENGTH(ROM) + LENGTH(UPPER) == 2048K, "ROM lower + upper regions = 2MB" ) 62 /*ASSERT( ORIGIN(UPPER) - ORIGIN(ROM) == LENGTH(ROM), "ROM lower and upper region shall be continuous" )
63 /*ASSERT( LENGTH(ROM) + LENGTH(UPPER) == 2048K, "ROM lower + upper regions = 2MB" ) */
60 64
61 /* Highest address of the user mode stack */ 65 /* Highest address of the user mode stack */
62 _estack = ORIGIN(RAM) + LENGTH(RAM); 66 /*_estack = ORIGIN(RAM) + LENGTH(RAM);*/
63 67
64 /* Used by the startup to initialize data */
65 _sidata = LOADADDR(.data);
66 68
67 _Min_Heap_Size = 0; /* no required heap (malloc'ed space) */ 69 _Min_Heap_Size = 0; /* no required heap (malloc'ed space) */
68 _Min_Stack_Size = 0x8000; /* required 32K of stack */ 70 _Min_Stack_Size = 0x08000; /* required 32K of stack */
69 71
70 /* Linker script to place sections and symbol values. Should be used together 72 /* Linker script to place sections and symbol values. Should be used together
71 * with other linker script that defines memory regions FLASH and RAM. 73 * with other linker script that defines memory regions FLASH and RAM.
72 * It references following symbols, which must be defined in code: 74 * It references following symbols, which must be defined in code:
73 * Reset_Handler : Entry of reset handler 75 * Reset_Handler : Entry of reset handler
94 /****************************************************************************/ 96 /****************************************************************************/
95 /*************************** Code and Data Sections *************************/ 97 /*************************** Code and Data Sections *************************/
96 SECTIONS 98 SECTIONS
97 { 99 {
98 /******************* NVIC reset and interupt vectors **********************/ 100 /******************* NVIC reset and interupt vectors **********************/
99 .isr_vector 0x08000000 : 101 .isr_vector 0x08040000 :
100 { 102 {
103 . = ALIGN(4);
101 KEEP( *(.isr_vector) ) 104 KEEP( *(.isr_vector) )
102 } >ROM 105 KEEP(*(.init))
103 106 } >ROM
104 /************* The program code and other data into ROM memory ************/ 107
105 .text : 108
109 /* PROVIDE( firmware_FirmwareData = . );*/
110 .firmware_FirmwareData 0x08050000 : {
111 KEEP( *(.firmware_firmware_data) )
112 } >ROM
113
114 .text 0x08054000 :
106 { 115 {
107 . = ALIGN(4); 116 . = ALIGN(4);
108 *(.text) /* .text sections (code) */ 117 *(.text) /* .text sections (code) */
109 *(.text*) /* .text* sections (code) */ 118 *(.text*) /* .text* sections (code) */
110 *(.glue_7) /* glue arm to thumb code */ 119 *(.glue_7) /* glue arm to thumb code */
112 *(.eh_frame) 121 *(.eh_frame)
113 122
114 . = ALIGN(4); 123 . = ALIGN(4);
115 _etext = .; /* define a global symbols at end of code */ 124 _etext = .; /* define a global symbols at end of code */
116 } >ROM 125 } >ROM
117 126
118 .preinit_array : 127
128 /********************** Constant data into ROM memory *********************/
129 .rodata :
130 {
131 . = ALIGN(4);
132 *(.rodata) /* .rodata sections (constants, strings, etc.) */
133 *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
134 . = ALIGN(4);
135 } >ROM
136
137 .ARM.extab : {
138 . = ALIGN(4);
139 *(.ARM.extab* .gnu.linkonce.armextab.*)
140 . = ALIGN(4);
141 } >ROM
142
143 .ARM : {
144 . = ALIGN(4);
145 __exidx_start = .;
146 *(.ARM.exidx*)
147 __exidx_end = .;
148 . = ALIGN(4);
149 } >ROM
150
151 .preinit_array :
119 { 152 {
120 . = ALIGN(4); 153 . = ALIGN(4);
121 PROVIDE_HIDDEN( __preinit_array_start = . ); 154 PROVIDE_HIDDEN( __preinit_array_start = . );
122 KEEP( *(.preinit_array*) ) 155 KEEP( *(.preinit_array*) )
123 PROVIDE_HIDDEN( __preinit_array_end = . ); 156 PROVIDE_HIDDEN( __preinit_array_end = . );
141 KEEP( *(SORT(.fini_array.*)) ) 174 KEEP( *(SORT(.fini_array.*)) )
142 KEEP( *(.fini_array*) ) 175 KEEP( *(.fini_array*) )
143 PROVIDE_HIDDEN( __fini_array_end = . ); 176 PROVIDE_HIDDEN( __fini_array_end = . );
144 . = ALIGN(4); 177 . = ALIGN(4);
145 } >ROM 178 } >ROM
146 179
147 /********************** Constant data into ROM memory *********************/ 180 /************* The program code and other data into ROM memory ************/
148 .rodata : 181
149 { 182
150 . = ALIGN(4); 183
151 *(.rodata) /* .rodata sections (constants, strings, etc.) */
152 *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
153 . = ALIGN(4);
154 } >ROM
155
156 .ARM.extab : {
157 . = ALIGN(4);
158 *(.ARM.extab* .gnu.linkonce.armextab.*)
159 . = ALIGN(4);
160 } >ROM
161
162 .ARM : {
163 . = ALIGN(4);
164 __exidx_start = .;
165 *(.ARM.exidx*)
166 __exidx_end = .;
167 . = ALIGN(4);
168 } >ROM
169 184
170 /************* Data and Structures at absolute address in ROM *************/ 185 /************* Data and Structures at absolute address in ROM *************/
171 186
172 /* FIXME: this sets the SFirmwareData structure, not the code ... */ 187 /* FIXME: this sets the SFirmwareData structure, not the code ... */
173 .bootloader_firmware_data 0x0800A000 : { 188 .bootloader_firmware_data 0x0800A000 : {
174 PROVIDE( bootloader_FirmwareData = . ); 189 PROVIDE( bootloader_FirmwareData = . );
175 KEEP( *(.bootloader_firmware_data) ) 190 KEEP( *(.bootloader_firmware_data) )
176 } > ROM 191 } > ROM
177 192
178 /* FIMXE: original address was 0x08050000. But we have a collision */
179 .firmware_FirmwareData 0x08060000 : {
180 PROVIDE( firmware_FirmwareData = . );
181 KEEP( *(.firmware_firmware_data) )
182 } >ROM
183 193
184 .font_firmware_data 0x08132000 : { 194 .font_firmware_data 0x08132000 : {
185 PROVIDE( font_FirmwareData = . ); 195 PROVIDE( font_FirmwareData = . );
186 KEEP( *(.font_firmware_data) ) 196 KEEP( *(.font_firmware_data) )
187 } >UPPER 197 } >UPPER
198
199 /* TODO: the linker does not seem to work as the one of used for initial bootloader ==> Reconstruct layout to keep it compatible with the first version */
200 /* TODO: cleanup during next iteration */
188 201
189 /* Put fonts and images in UPPER region */ 202 /* Put fonts and images in UPPER region */
190 .upper_fonts : { 203 .upper_fonts 0x08132040 : {
191 __upper_font_data = .; 204 __upper_font_data = .;
192 KEEP( *(.upper_fonts) ) 205 . = 0x13E;
206 *(.upper_fonts.image_data_FontT144_0x0030)
207 . = 0x02515;
208 *(.upper_fonts.image_data_FontT144_0x0031)
209 . = 0x03469;
210 *(.upper_fonts.image_data_FontT144_0x0032)
211 . = 0x4FDC;
212 *(.upper_fonts.image_data_FontT144_0x0033)
213 . = 0x6862;
214 *(.upper_fonts.image_data_FontT144_0x0034)
215 . = 0x86C2;
216 *(.upper_fonts.image_data_FontT144_0x0035)
217 . = 0x9FB3;
218 *(.upper_fonts.image_data_FontT144_0x0036)
219 . = 0xBB26;
220 *(.upper_fonts.image_data_FontT144_0x0037)
221 . = 0xD845;
222 *(.upper_fonts.image_data_FontT144_0x0038)
223 . = 0xF34D;
224 *(.upper_fonts.image_data_FontT144_0x0039)
225 . = 0x10EC0;
226 *(.upper_fonts.image_data_FontT24_0x0020)
227 *(.upper_fonts.image_data_FontT24_0x0021)
228 *(.upper_fonts.image_data_FontT24_0x0022)
229 *(.upper_fonts.image_data_FontT24_0x0023)
230 *(.upper_fonts.image_data_FontT24_0x0024)
231 *(.upper_fonts.image_data_FontT24_0x0025)
232 *(.upper_fonts.image_data_FontT24_0x0026)
233 *(.upper_fonts.image_data_FontT24_0x0027)
234 *(.upper_fonts.image_data_FontT24_0x0028)
235 *(.upper_fonts.image_data_FontT24_0x0029)
236 *(.upper_fonts.image_data_FontT24_0x002a)
237 *(.upper_fonts.image_data_FontT24_0x003f)
238 *(.upper_fonts.image_data_FontT24_0x002c)
239 *(.upper_fonts.image_data_FontT24_0x002d)
240 *(.upper_fonts.image_data_FontT24_0x002e)
241 *(.upper_fonts.image_data_FontT24_0x002f)
242 *(.upper_fonts.image_data_FontT24_0x0030)
243 *(.upper_fonts.image_data_FontT24_0x0031)
244 *(.upper_fonts.image_data_FontT24_0x0032)
245 *(.upper_fonts.image_data_FontT24_0x0033)
246 *(.upper_fonts.image_data_FontT24_0x0034)
247 *(.upper_fonts.image_data_FontT24_0x0035)
248 *(.upper_fonts.image_data_FontT24_0x0036)
249 *(.upper_fonts.image_data_FontT24_0x0037)
250 *(.upper_fonts.image_data_FontT24_0x0038)
251 *(.upper_fonts.image_data_FontT24_0x0039)
252 *(.upper_fonts.image_data_FontT24_0x003a)
253 *(.upper_fonts.image_data_FontT24_0x003b)
254 *(.upper_fonts.image_data_FontT24_0x003c)
255 *(.upper_fonts.image_data_FontT24_0x003d)
256 *(.upper_fonts.image_data_FontT24_0x003e)
257 . = . + 0x8c;
258 *(.upper_fonts.image_data_FontT24_0x0040)
259 *(.upper_fonts.image_data_FontT24_0x0041)
260 *(.upper_fonts.image_data_FontT24_0x0042)
261 *(.upper_fonts.image_data_FontT24_0x0043)
262 *(.upper_fonts.image_data_FontT24_0x0044)
263 *(.upper_fonts.image_data_FontT24_0x0045)
264 *(.upper_fonts.image_data_FontT24_0x0046)
265 *(.upper_fonts.image_data_FontT24_0x0047)
266 *(.upper_fonts.image_data_FontT24_0x0048)
267 *(.upper_fonts.image_data_FontT24_0x0049)
268 *(.upper_fonts.image_data_FontT24_0x004a)
269 *(.upper_fonts.image_data_FontT24_0x004b)
270 *(.upper_fonts.image_data_FontT24_0x004c)
271 *(.upper_fonts.image_data_FontT24_0x004d)
272 *(.upper_fonts.image_data_FontT24_0x004e)
273 *(.upper_fonts.image_data_FontT24_0x004f)
274 *(.upper_fonts.image_data_FontT24_0x0050)
275 *(.upper_fonts.image_data_FontT24_0x0051)
276 *(.upper_fonts.image_data_FontT24_0x0052)
277 *(.upper_fonts.image_data_FontT24_0x0053)
278 *(.upper_fonts.image_data_FontT24_0x0054)
279 *(.upper_fonts.image_data_FontT24_0x0055)
280 *(.upper_fonts.image_data_FontT24_0x0056)
281 *(.upper_fonts.image_data_FontT24_0x0057)
282 *(.upper_fonts.image_data_FontT24_0x0058)
283 *(.upper_fonts.image_data_FontT24_0x0059)
284 *(.upper_fonts.image_data_FontT24_0x005a)
285 *(.upper_fonts.image_data_FontT24_0x005b)
286 *(.upper_fonts.image_data_FontT24_0x005c)
287 *(.upper_fonts.image_data_FontT24_0x005d)
288 *(.upper_fonts.image_data_FontT24_0x005e)
289 *(.upper_fonts.image_data_FontT24_0x005f)
290 *(.upper_fonts.image_data_FontT24_0x0060)
291 *(.upper_fonts.image_data_FontT24_0x0061)
292 *(.upper_fonts.image_data_FontT24_0x0062)
293 *(.upper_fonts.image_data_FontT24_0x0063)
294 . = . + 0x1c;
295 *(.upper_fonts.image_data_FontT24_0x0064)
296 *(.upper_fonts.image_data_FontT24_0x0065)
297 *(.upper_fonts.image_data_FontT24_0x0066)
298 *(.upper_fonts.image_data_FontT24_0x0067)
299 *(.upper_fonts.image_data_FontT24_0x0068)
300 *(.upper_fonts.image_data_FontT24_0x0069)
301 *(.upper_fonts.image_data_FontT24_0x006a)
302 *(.upper_fonts.image_data_FontT24_0x006b)
303 *(.upper_fonts.image_data_FontT24_0x006c)
304 *(.upper_fonts.image_data_FontT24_0x006d)
305 *(.upper_fonts.image_data_FontT24_0x006e)
306 *(.upper_fonts.image_data_FontT24_0x006f)
307 *(.upper_fonts.image_data_FontT24_0x0070)
308 *(.upper_fonts.image_data_FontT24_0x0071)
309 *(.upper_fonts.image_data_FontT24_0x0072)
310 *(.upper_fonts.image_data_FontT24_0x0073)
311 *(.upper_fonts.image_data_FontT24_0x0074)
312 *(.upper_fonts.image_data_FontT24_0x0075)
313 *(.upper_fonts.image_data_FontT24_0x0076)
314 *(.upper_fonts.image_data_FontT24_0x0077)
315 *(.upper_fonts.image_data_FontT24_0x0078)
316 *(.upper_fonts.image_data_FontT24_0x0079)
317 *(.upper_fonts.image_data_FontT24_0x007a)
318 *(.upper_fonts.image_data_FontT24_0x007b)
319 *(.upper_fonts.image_data_FontT24_0x007c)
320 . = . + 0x1c;
321 *(.upper_fonts.image_data_FontT24_0x007d)
322 *(.upper_fonts.image_data_FontT24_0x007e)
323 *(.upper_fonts.image_data_FontT24_0x00a1)
324 *(.upper_fonts.image_data_FontT24_0x00bf)
325 *(.upper_fonts.image_data_FontT24_0x00c1)
326 *(.upper_fonts.image_data_FontT24_0x00c4)
327 *(.upper_fonts.image_data_FontT24_0x00c6)
328 *(.upper_fonts.image_data_FontT24_0x00c7)
329 *(.upper_fonts.image_data_FontT24_0x00c9)
330 *(.upper_fonts.image_data_FontT24_0x00cd)
331 *(.upper_fonts.image_data_FontT24_0x00d1)
332 *(.upper_fonts.image_data_FontT24_0x00d3)
333 *(.upper_fonts.image_data_FontT24_0x00d6)
334 *(.upper_fonts.image_data_FontT24_0x00da)
335 *(.upper_fonts.image_data_FontT24_0x00dc)
336 *(.upper_fonts.image_data_FontT24_0x00df)
337 *(.upper_fonts.image_data_FontT24_0x00e0)
338 *(.upper_fonts.image_data_FontT24_0x00e1)
339 *(.upper_fonts.image_data_FontT24_0x00e2)
340 *(.upper_fonts.image_data_FontT24_0x00e4)
341 *(.upper_fonts.image_data_FontT24_0x00e6)
342 *(.upper_fonts.image_data_FontT24_0x00e7)
343 *(.upper_fonts.image_data_FontT24_0x00e8)
344 *(.upper_fonts.image_data_FontT24_0x00e9)
345 *(.upper_fonts.image_data_FontT24_0x00ec)
346 *(.upper_fonts.image_data_FontT24_0x00ed)
347 *(.upper_fonts.image_data_FontT24_0x00f0)
348 *(.upper_fonts.image_data_FontT24_0x00f1)
349 *(.upper_fonts.image_data_FontT24_0x00f2)
350 *(.upper_fonts.image_data_FontT24_0x00f3)
351 *(.upper_fonts.image_data_FontT24_0x00f6)
352 *(.upper_fonts.image_data_FontT24_0x00f9)
353 *(.upper_fonts.image_data_FontT24_0x00fa)
354 *(.upper_fonts.image_data_FontT24_0x00fc)
355 *(.upper_fonts.image_data_FontT24_0x00ff)
356 *(.upper_fonts.image_data_FontT24_0x0152)
357 *(.upper_fonts.image_data_FontT24_0x0153)
358 *(.upper_fonts.image_data_FontT24_0x0178)
359 *(.upper_fonts.image_data_FontT24_0x002b)
360 . = . + 0x1d642;
361 *(.upper_images.image_data_ostc_fuer_Tauchcomputer_240px)
362 *(.upper_fonts.image_data_FontT84_0x002e)
363 . = . + 0x9f;
364 *(.upper_fonts.image_data_FontT84_0x0030)
365 . = . + 0x0d;
366 *(.upper_fonts.image_data_FontT84_0x0031)
367 . = . + 0xaa;
368 *(.upper_fonts.image_data_FontT84_0x0032)
369 . = . + 0x7b;
370 *(.upper_fonts.image_data_FontT84_0x0033)
371 . = . + 0x38;
372 *(.upper_fonts.image_data_FontT84_0x0034)
373 . = . + 0x7f;
374 *(.upper_fonts.image_data_FontT84_0x0035)
375 . = . + 0x77;
376 *(.upper_fonts.image_data_FontT84_0x0036)
377 . = . + 0x7b;
378 *(.upper_fonts.image_data_FontT84_0x0037)
379 . = . + 0x0d;
380 *(.upper_fonts.image_data_FontT84_0x0038)
381 . = . + 0x2b;
382 *(.upper_fonts.image_data_FontT84_0x0039)
383 . = . + 0xe8;
384 *(.upper_fonts.image_data_FontT54_0x0022)
385 *(.upper_fonts.image_data_FontT54_0x0025)
386 . = . + 0x112;
387 *(.upper_fonts.image_data_FontT54_0x0027)
388 . = . + 0xd8;
389 *(.upper_fonts.image_data_FontT54_0x002a)
390 . = . + 0x133;
391 *(.upper_fonts.image_data_FontT54_0x002d)
392 . = . + 0x1d7;
393 *(.upper_fonts.image_data_FontT54_0x002e)
394 . = . + 0x17b;
395 *(.upper_fonts.image_data_FontT54_0x002f)
396 . = . + 0x02;
397 *(.upper_fonts.image_data_FontT54_0x0030)
398 . = . + 0x0ba;
399 *(.upper_fonts.image_data_FontT54_0x0031)
400 . = . + 0x27d;
401 *(.upper_fonts.image_data_FontT54_0x0032)
402 . = . + 0xe3;
403 *(.upper_fonts.image_data_FontT54_0x0033)
404 . = . + 0x35;
405 *(.upper_fonts.image_data_FontT54_0x0034)
406 . = . + 0x68;
407 *(.upper_fonts.image_data_FontT54_0x0035)
408 . = . + 0x35;
409 *(.upper_fonts.image_data_FontT54_0x0036)
410 . = . + 0xba;
411 *(.upper_fonts.image_data_FontT54_0x0037)
412 . = . + 0x191;
413 *(.upper_fonts.image_data_FontT54_0x0038)
414 . = . + 0xe3;
415 *(.upper_fonts.image_data_FontT54_0x0039)
416 . = . + 0xe3;
417 *(.upper_fonts.image_data_FontT54_0x003a)
418 . = . + 0x7b;
419 *(.upper_fonts.image_data_FontT54_0x0043)
420 . = . + 0x3b;
421 *(.upper_fonts.image_data_FontT54_0x006c)
422 . = . + 0x2d;
423 *(.upper_fonts.image_data_FontT54_0x006d)
424 . = . + 0x94;
425 *(.upper_fonts.image_data_FontT54_0x00ba)
426 . = . + 0x0a;
427
428 *(.upper_fonts.image_data_FontT105_0x002*)
429 *(.upper_fonts.image_data_FontT105_0x003*)
430 *(.upper_fonts.image_data_FontT105_0x0043)
431 . = . + 0x17c8;
432 *(.upper_fonts.image_data_FontT105_0x007c)
433 *(.upper_fonts.image_data_FontT105_0x00ba)
434 *(.upper_fonts.image_data_FontT105_54_0x006d)
435
436 *(.upper_fonts.image_data_FontT54_0x0068)
437 . = . + 0x1195;
438
439 *(.upper_fonts.image_data_FontT42_0x00b0)
440 *(.upper_fonts.image_data_FontT42_0x0020)
441 . = . + 0x23;
442 *(.upper_fonts.image_data_FontT42_0x002*)
443 *(.upper_fonts.image_data_FontT42_0x003*)
444 *(.upper_fonts.image_data_FontT42_0x004*)
445 *(.upper_fonts.image_data_FontT42_0x005*)
446 . = . + 0x420;
447 *(.upper_fonts.image_data_FontT42_0x006*)
448 *(.upper_fonts.image_data_FontT42_0x0070)
449 *(.upper_fonts.image_data_FontT42_0x0071)
450 *(.upper_fonts.image_data_FontT42_0x0072)
451 *(.upper_fonts.image_data_FontT42_0x0073)
452 *(.upper_fonts.image_data_FontT42_0x0074)
453 *(.upper_fonts.image_data_FontT42_0x0075)
454 *(.upper_fonts.image_data_FontT42_0x0076)
455 *(.upper_fonts.image_data_FontT42_0x0077)
456 *(.upper_fonts.image_data_FontT42_0x0078)
457 *(.upper_fonts.image_data_FontT42_0x0079)
458 . = . + 0x12c0;
459 *(.upper_fonts.image_data_FontT42_*)
460 *(.upper_fonts.image_data_T54addon_0x002b_PLUS*)
461 *(.upper_fonts.image_data_T54addon_0x0040_AT*)
462 *(.upper_fonts.image_data_FontT48_*)
463 *(.upper_fonts.image_data_FontT48addon*)
464 *(.upper_fonts.image_data_FontT24plus_0x00fb*)
465 *(.upper_fonts.image_data_awe48_*)
466
467 /**(.upper_fonts*)*/
193 __upper_font_data_end = .; 468 __upper_font_data_end = .;
194 } >UPPER 469 } >UPPER
195 470
196 .upper_font_directory 0x081E0000 : { /* Last 128 KBytes of UPPER ROM */ 471 /* Put fonts and images in UPPER region */
472 /*
473 .upper_images : {
474 __upper_image_data = .;
475 KEEP( *(.upper_images) )
476 __upper_image_data_end = .;
477 } >ROM UPPER */
478
479
480 .upper_font_directory /*0x081E0000*/ : { /* Last 128 KBytes of UPPER ROM */
197 481
198 /* Define Known Address for Each Font */ 482 /* Define Known Address for Each Font */
199 __font_directory = .; 483 __font_directory = .;
200 PROVIDE( Awe48 = __font_directory + 0 * 0xc ); 484 /* PROVIDE( Awe48 = __font_directory + 0 * 0xc );
201 PROVIDE( FontT24 = __font_directory + 1 * 0xc ); 485 PROVIDE( FontT24 = __font_directory + 1 * 0xc );
202 PROVIDE( FontT42 = __font_directory + 2 * 0xc ); 486 PROVIDE( FontT42 = __font_directory + 2 * 0xc );
203 PROVIDE( FontT48 = __font_directory + 3 * 0xc ); 487 PROVIDE( FontT48 = __font_directory + 3 * 0xc );
204 PROVIDE( FontT54 = __font_directory + 4 * 0xc ); 488 PROVIDE( FontT54 = __font_directory + 4 * 0xc );
205 PROVIDE( FontT84 = __font_directory + 5 * 0xc ); 489 PROVIDE( FontT84 = __font_directory + 5 * 0xc );
206 PROVIDE( FontT105 = __font_directory + 6 * 0xc ); 490 PROVIDE( FontT105 = __font_directory + 6 * 0xc );
207 PROVIDE( FontT144 = __font_directory + 7 * 0xc ); 491 PROVIDE( FontT144 = __font_directory + 7 * 0xc );
208 PROVIDE( Batt24 = __font_directory + 8 * 0xc ); 492 PROVIDE( Batt24 = __font_directory + 8 * 0xc ); */
209 __font_directory_end = __font_directory + 9 * 0xc; 493 __font_directory_end = __font_directory + 9 * 0xc;
210 494
211 KEEP( *(.upper_font_directory) ) 495 *(.upper_font_directory)
496 __font_directory_end = .;
212 LONG( -1 ); /* Magic End Marker */ 497 LONG( -1 ); /* Magic End Marker */
213 498
214 /* and for Each Image */ 499 /* and for Each Image */
215 __image_directory = .; 500 /* __image_directory = .; */
216 PROVIDE( ImgHWcolor = __image_directory + 0 * 8 ); 501 /* PROVIDE( ImgHWcolor = __image_directory + 0 * 8 );
217 PROVIDE( ImgOSTC = __image_directory + 1 * 8 ); 502 PROVIDE( ImgOSTC = __image_directory + 1 * 8 ); */
218 __image_directory_end = __image_directory + 2 * 8; 503 /* __image_directory_end = __image_directory + 2 * 8; */
504
505 /* KEEP( *(.upper_image_directory) ) */
219 506
220 /* FIXME: shall KEEP images here */ 507 /* FIXME: shall KEEP images here */
221 LONG( -1 ); /* Magic End Marker */ 508 LONG( -1 ); /* Magic End Marker */
222 509
223 /* and for CLUT */ 510 /* and for CLUT */
224 PROVIDE( indexHWcolor = . ); 511 /* PROVIDE( indexHWcolor = . ); */
225 . += 0x400; 512 . += 0x400;
226 LONG( -1 ); /* Magic End Marker */ 513 LONG( -1 ); /* Magic End Marker */
227 } >UPPER 514 } >ROM /*UPPER*/
228 515
516
517 /* Used by the startup to initialize data */
518 _sidata = LOADADDR(.data);
519
229 /************ Initialized Data Sections into RAM & ROM Memory **************/ 520 /************ Initialized Data Sections into RAM & ROM Memory **************/
230 .data : 521 .data :
231 { 522 {
232 . = ALIGN(4); 523 . = ALIGN(4);
233 524
238 529
239 . = ALIGN(4); 530 . = ALIGN(4);
240 _edata = .; /* define a global symbol at data end */ 531 _edata = .; /* define a global symbol at data end */
241 } >RAM AT>ROM 532 } >RAM AT>ROM
242 533
534
535
243 /*************** Uninitialized Data Section into RAM Memory ****************/ 536 /*************** Uninitialized Data Section into RAM Memory ****************/
244 .bss : 537 .bss :
245 { 538 {
246 . = ALIGN(4); 539 . = ALIGN(4);
247 540
255 . = ALIGN(4); 548 . = ALIGN(4);
256 _ebss = .; /* define a global symbol at bss end */ 549 _ebss = .; /* define a global symbol at bss end */
257 __bss_end__ = _ebss; 550 __bss_end__ = _ebss;
258 } >RAM 551 } >RAM
259 552
260 /********************** User_heap_stack section ****************************/ 553 /********************** User_heap_stack section ****************************/
261 /* just to check that there is enough RAM left */ 554 /* just to check that there is enough RAM left */
262 ._user_heap_stack : 555 ._user_heap_stack :
263 { 556 {
264 . = ALIGN(8); 557 . = ALIGN(8);
265 PROVIDE ( end = . ); 558 PROVIDE ( end = . );
266 PROVIDE ( _end = . ); 559 PROVIDE ( _end = . );
267 . = . + _Min_Heap_Size; 560 . = . + _Min_Heap_Size;
268 . = . + _Min_Stack_Size; 561 . = . + _Min_Stack_Size;
269 . = ALIGN(8); 562 . = ALIGN(8);
563 _estack = .;
270 } >RAM 564 } >RAM
271 565
272 /* Remove information from the compiler libraries */ 566 /* Remove information from the compiler libraries */
273 /DISCARD/ : 567 /DISCARD/ :
274 { 568 {