1OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") 2OUTPUT_ARCH(arm) 3ENTRY(Vector_Table) 4 5SVC_IRQ_STACK_SIZE = 4K; 6FLASH_START = 0x00000000; 7FLASH_SIZE = 0x00400000; 8PS_RAM_START = 0x21000000; 9PS_RAM_SIZE = 0x00200000; 10 11MEMORY 12{ 13 flash(rx) : ORIGIN = FLASH_START, LENGTH = FLASH_SIZE 14 ram(rwx) : ORIGIN = PS_RAM_START, LENGTH = PS_RAM_SIZE 15} 16 17SECTIONS 18{ 19 _stext = .; 20 .vector : { 21 KEEP (*(SORT_NONE(.Vector_Table))) 22 } > flash 23 24 .got : { 25 *(.got.plt) 26 *(.igot.plt) 27 *(.got) 28 *(.igot) 29 } > flash 30 31 .text : { 32 . = ALIGN(0x4); 33 __text_start = .; 34 *(.text.*) 35 . = ALIGN(0x4); 36 _etext = .; 37 *(.rodata .rodata.* .gnu.linkonce.r.*) 38 *(.rodata1) 39 } > ram 40 41 .data : { 42 __data_start = . ; 43 *(.data .data.* .gnu.linkonce.d.*) 44 } > ram 45 46 .bss : ALIGN(0x4) { 47 __bss_start = .; 48 *(.dynbss) 49 *(.bss .bss.* .gnu.linkonce.b.*) 50 *(COMMON) 51 . = ALIGN(0x4); 52 __bss_end = .; 53 } > ram 54 55 _sstack = .; 56 .stack : ALIGN(0x8) { 57 _stack = .; 58 __irq_stack_bootom = .; 59 . += SVC_IRQ_STACK_SIZE; 60 __irq_stack_top = .; 61 _estack = .; 62 } > ram 63 64 .heap (NOLOAD): ALIGN(0x40) { 65 __heap_start = .; 66 } > ram 67 68 __heap_size = PS_RAM_SIZE - (__heap_start - __text_start); 69 end = .; 70 /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } 71} 72