2 * ST32F103 memory setup.
4 __main_stack_size__ = 0x0080; /* Exception handlers */
5 __process0_stack_size__ = 0x0140; /* main */
6 __process1_stack_size__ = 0x00c0; /* led */
7 __process2_stack_size__ = 0x01a0; /* rng */
8 __process3_stack_size__ = 0x0100; /* intr: usb */
12 flash0 : org = @ORIGIN@, len = 4k
13 flash : org = @ORIGIN@+0x1000, len = @FLASH_SIZE@k - 4k
14 ram : org = 0x20000000, len = @MEMORY_SIZE@k
17 __ram_start__ = ORIGIN(ram);
18 __ram_size__ = LENGTH(ram);
19 __ram_end__ = __ram_start__ + __ram_size__;
25 .sys : ALIGN(4) SUBALIGN(4)
31 KEEP(*(.sys.board_id))
32 KEEP(*(.sys.board_name))
34 build/sys-*.o(.text.*)
35 build/sys-*.o(.rodata)
36 build/sys-*.o(.rodata.*)
45 .startup : ALIGN(128) SUBALIGN(128)
47 KEEP(*(.startup.vectors))
51 .text : ALIGN(16) SUBALIGN(16)
64 .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)} > flash
67 PROVIDE(__exidx_start = .);
68 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
69 PROVIDE(__exidx_end = .);
72 .eh_frame_hdr : {*(.eh_frame_hdr)} > flash
74 .eh_frame : ONLY_IF_RO {*(.eh_frame)} > flash
76 .textalign : ONLY_IF_RO { . = ALIGN(8); } > flash
84 __main_stack_base__ = .;
85 . += __main_stack_size__;
87 __main_stack_end__ = .;
88 __process0_stack_base__ = .;
89 . += __process0_stack_size__;
91 __process0_stack_end__ = .;
92 __process1_stack_base__ = .;
93 . += __process1_stack_size__;
95 __process1_stack_end__ = .;
96 __process2_stack_base__ = .;
97 . += __process2_stack_size__;
99 __process2_stack_end__ = .;
100 __process3_stack_base__ = .;
101 . += __process3_stack_size__;
103 __process3_stack_end__ = .;
122 PROVIDE(_bss_start = .);
129 PROVIDE(_bss_end = .);
136 /* reGNUal is now relocatable, it's OK not using fixed address. */
141 . = ALIGN (@FLASH_PAGE_SIZE@);
144 } > flash =0xffffffff
147 __heap_base__ = _end;
148 __heap_end__ = __ram_end__;