1MEMORY { 2 zero_memory : ORIGIN = 0xffff8000, LENGTH = 64K 3 4 dram_rsvd1 : ORIGIN = 0x80000000, LENGTH = 0 5 vector_0x000 : ORIGIN = . LENGTH = 0x100 6 vector_0x100 : ORIGIN = . LENGTH = 0x080 7 vector_0x180 : ORIGIN = . LENGTH = 0x080 8 vector_0x200 : ORIGIN = . LENGTH = 0x080 9 vector_0x280 : ORIGIN = . LENGTH = 0x080 10 vector_0x300 : ORIGIN = . LENGTH = 0x080 11 monitor : ORIGIN = . LENGTH = 1M - 0x380 12 dram_memory : ORIGIN = . LENGTH = 10M - 1M 13 dram_rsvd2 : ORIGIN = ., LENGTH = 0 14 15 flash_rsvd1 : ORIGIN = 0xbfc00000, LENGTH = 32K 16 flash_memory : ORIGIN = ., LENGTH = 10M - 32K 17 flash_rsvd2 : ORIGIN = ., LENGTH = 0 18} 19DEFAULTS { 20 21 heap_reserve = 2M 22 stack_reserve = 512K 23 24} 25// 26// Program layout for running out of RAM. 27// 28// 29 30SECTIONS 31{ 32 .zdata ABS : > zero_memory 33 .zbss ABS : > . 34 .rozdata ABS : > . 35 36 .vector_0x000 : > vector_0x000 37 .vector_0x100 : > vector_0x100 38 .vector_0x180 : > vector_0x180 39 .vector_0x200 : > vector_0x200 40 .vector_0x280 : > vector_0x280 41 .vector_0x300 : > vector_0x300 42 .text : { "start.o(.text) *(.text)" } > dram_memory 43 .syscall : > . 44 .secinfo : > . 45 .fixaddr : > . 46 .fixtype : > . 47 .robase ALIGN(8) : > . 48 .rodata ALIGN(8) : > . 49 50 .sdabase ALIGN(8) : > . 51 .sdata ALIGN(8) : > . 52_start_sbss = . ; 53 .sbss ALIGN(8) : > . 54_end_sbss = . ; 55 .rosdata ALIGN(8) : > . 56 .data ALIGN(8) : > . 57 .profile ALIGN(8) : > . 58_start_bss = . ; 59 .bss ALIGN(8) : > . 60_end_bss = . ; 61 .heap ALIGN(8) PAD(heap_reserve) : > . 62 .stack ALIGN(8) PAD(stack_reserve) : > . 63 .eventlog align(16) pad(0x10000) : 64 .free_mem align(16) pad(0x10000) : 65 66// 67// These special symbols mark the bounds of RAM and ROM memory. 68// They are used by the MULTI debugger. 69// 70 __ghs_ramstart = MEMADDR(dram_rsvd1); 71 __ghs_ramend = MEMENDADDR(dram_rsvd2); 72 __ghs_romstart = MEMADDR(flash_rsvd1); 73 __ghs_romend = MEMENDADDR(flash_rsvd2); 74 75} 76