2 /* Internal Memory Map*/
5 rom (rx) : ORIGIN = 0x08000000, LENGTH = 0x00100000
6 ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00020000
7 ram1 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x00010000
10 _eram = 0x20000000 + 0x00020000;
15 PROVIDE (isr_vector_table_base = .);
25 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
32 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
43 *(.ARM.extab* .gnu.linkonce.armextab.*)
49 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
54 /* _sidata is used in coide startup code */
61 /* _sdata is used in coide startup code */
62 _sdata = __data_start__;
69 PROVIDE_HIDDEN (__preinit_array_start = .);
70 KEEP(*(.preinit_array))
71 PROVIDE_HIDDEN (__preinit_array_end = .);
75 PROVIDE_HIDDEN (__init_array_start = .);
76 KEEP(*(SORT(.init_array.*)))
78 PROVIDE_HIDDEN (__init_array_end = .);
82 PROVIDE_HIDDEN (__fini_array_start = .);
83 KEEP(*(SORT(.fini_array.*)))
85 PROVIDE_HIDDEN (__fini_array_end = .);
92 /* _edata is used in coide startup code */
93 _edata = __data_end__;
100 _sbss = __bss_start__;
117 /* .stack_dummy section doesn't contains any symbols. It is only
118 * used for linker to calculate size of stack sections, and assign
119 * values to stack symbols later */
123 *(.co_stack .co_stack.*)
126 /* Set stack top to end of ram , and stack limit move down by
127 * size of stack_dummy section */
128 __StackTop = ORIGIN(ram ) + LENGTH(ram );
129 __StackLimit = __StackTop - SIZEOF(.co_stack);
130 PROVIDE(__stack = __StackTop);
132 /* Check if data + heap + stack exceeds ram limit */
133 ASSERT(__StackLimit >= __HeapLimit, "region ram overflowed with stack")