Skip to content

Commit 919364e

Browse files
committed
Merge pull request #1501 from stevew817/pearl_support_rebased
[Silicon Labs] Add support for the new EFM32 Pearl Gecko
2 parents c47cd8d + 3d8637c commit 919364e

File tree

432 files changed

+54875
-10064
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

432 files changed

+54875
-10064
lines changed

libraries/mbed/targets/cmsis/TARGET_Silicon_Labs/TARGET_EFM32/TARGET_EFM32GG_STK3700/TOOLCHAIN_ARM_MICRO/efm32gg.sct

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ LR_IROM1 0x00000000 0x00100000 { ; load region size_region
88
*(InRoot$$Sections)
99
.ANY (+RO)
1010
}
11-
RW_IRAM1 0x200000E0 0x0001FF20 { ; RW data
11+
RW_IRAM1 0x200000DC 0x0001FF24 { ; RW data
1212
.ANY (+RW +ZI)
1313
}
1414
}

libraries/mbed/targets/cmsis/TARGET_Silicon_Labs/TARGET_EFM32/TARGET_EFM32GG_STK3700/TOOLCHAIN_ARM_MICRO/startup_efm32gg.S

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
; * @file startup_efm32gg.s
33
; * @brief CMSIS Core Device Startup File for
44
; * Silicon Labs EFM32GG Device Series
5-
; * @version 3.20.6
5+
; * @version 4.2.1
66
; * @date 03. February 2012
77
; *
88
; * @note
@@ -262,10 +262,7 @@ MSC_IRQHandler
262262
AES_IRQHandler
263263
EBI_IRQHandler
264264
EMU_IRQHandler
265-
266-
267265
B .
268-
269266
ENDP
270267

271268
ALIGN

libraries/mbed/targets/cmsis/TARGET_Silicon_Labs/TARGET_EFM32/TARGET_EFM32GG_STK3700/TOOLCHAIN_ARM_STD/efm32gg.sct

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ LR_IROM1 0x00000000 0x00100000 { ; load region size_region
88
*(InRoot$$Sections)
99
.ANY (+RO)
1010
}
11-
RW_IRAM1 0x200000E0 0x0001FF20 { ; RW data
11+
RW_IRAM1 0x200000DC 0x0001FF24 { ; RW data
1212
.ANY (+RW +ZI)
1313
}
1414
}

libraries/mbed/targets/cmsis/TARGET_Silicon_Labs/TARGET_EFM32/TARGET_EFM32GG_STK3700/TOOLCHAIN_ARM_STD/startup_efm32gg.S

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
; * @file startup_efm32gg.s
33
; * @brief CMSIS Core Device Startup File for
44
; * Silicon Labs EFM32GG Device Series
5-
; * @version 3.20.6
5+
; * @version 4.2.1
66
; * @date 03. February 2012
77
; *
88
; * @note
@@ -262,10 +262,7 @@ MSC_IRQHandler
262262
AES_IRQHandler
263263
EBI_IRQHandler
264264
EMU_IRQHandler
265-
266-
267265
B .
268-
269266
ENDP
270267

271268
ALIGN

libraries/mbed/targets/cmsis/TARGET_Silicon_Labs/TARGET_EFM32/TARGET_EFM32GG_STK3700/TOOLCHAIN_GCC_ARM/efm32gg.ld

Lines changed: 67 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
/* CMSIS END USER LICENSE AGREEMENT.pdf, governing the use of */
55
/* Example Code. */
66
/* */
7-
/* Silicon Laboratories, Inc. 2014 */
7+
/* Silicon Laboratories, Inc. 2015 */
8+
/* */
9+
/* Version 4.2.0 */
10+
/* */
11+
812
MEMORY
913
{
1014
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 1048576
@@ -13,16 +17,20 @@ MEMORY
1317
/* MBED: mbed needs to be able to dynamically set the interrupt vector table.
1418
* We make room for the table at the very beginning of RAM, i.e. at
1519
* 0x20000000. We need (16+39) * sizeof(uint32_t) = 220 bytes for EFM32GG */
16-
__vector_size = 0xE0;
20+
__vector_size = 0xDC;
1721

1822
/* Linker script to place sections and symbol values. Should be used together
1923
* with other linker script that defines memory regions FLASH and RAM.
2024
* It references following symbols, which must be defined in code:
2125
* Reset_Handler : Entry of reset handler
22-
*
26+
*
2327
* It defines following symbols, which code can use without definition:
2428
* __exidx_start
2529
* __exidx_end
30+
* __copy_table_start__
31+
* __copy_table_end__
32+
* __zero_table_start__
33+
* __zero_table_end__
2634
* __etext
2735
* __data_start__
2836
* __preinit_array_start
@@ -40,14 +48,20 @@ __vector_size = 0xE0;
4048
* __StackLimit
4149
* __StackTop
4250
* __stack
51+
* __Vectors_End
52+
* __Vectors_Size
4353
*/
4454
ENTRY(Reset_Handler)
4555

4656
SECTIONS
4757
{
4858
.text :
4959
{
50-
KEEP(*(.isr_vector))
60+
KEEP(*(.vectors))
61+
__Vectors_End = .;
62+
__Vectors_Size = __Vectors_End - __Vectors;
63+
__end__ = .;
64+
5165
*(.text*)
5266

5367
KEEP(*(.init))
@@ -72,7 +86,7 @@ SECTIONS
7286
KEEP(*(.eh_frame*))
7387
} > FLASH
7488

75-
.ARM.extab :
89+
.ARM.extab :
7690
{
7791
*(.ARM.extab* .gnu.linkonce.armextab.*)
7892
} > FLASH
@@ -84,15 +98,49 @@ SECTIONS
8498
} > FLASH
8599
__exidx_end = .;
86100

101+
/* To copy multiple ROM to RAM sections,
102+
* uncomment .copy.table section and,
103+
* define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */
104+
/*
105+
.copy.table :
106+
{
107+
. = ALIGN(4);
108+
__copy_table_start__ = .;
109+
LONG (__etext)
110+
LONG (__data_start__)
111+
LONG (__data_end__ - __data_start__)
112+
LONG (__etext2)
113+
LONG (__data2_start__)
114+
LONG (__data2_end__ - __data2_start__)
115+
__copy_table_end__ = .;
116+
} > FLASH
117+
*/
118+
119+
/* To clear multiple BSS sections,
120+
* uncomment .zero.table section and,
121+
* define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */
122+
/*
123+
.zero.table :
124+
{
125+
. = ALIGN(4);
126+
__zero_table_start__ = .;
127+
LONG (__bss_start__)
128+
LONG (__bss_end__ - __bss_start__)
129+
LONG (__bss2_start__)
130+
LONG (__bss2_end__ - __bss2_start__)
131+
__zero_table_end__ = .;
132+
} > FLASH
133+
*/
134+
87135
__etext = .;
88-
136+
89137
.data : AT (__etext)
90138
{
91139
__data_start__ = .;
92140
*("dma")
93141
PROVIDE( __start_vector_table__ = .);
94-
. += __vector_size;
95-
PROVIDE( __end_vector_table__ = .);
142+
. += __vector_size;
143+
PROVIDE( __end_vector_table__ = .);
96144
*(vtable)
97145
*(.data*)
98146
. = ALIGN (4);
@@ -118,6 +166,7 @@ SECTIONS
118166
KEEP(*(.fini_array))
119167
PROVIDE_HIDDEN (__fini_array_end = .);
120168

169+
KEEP(*(.jcr*))
121170
. = ALIGN(4);
122171
/* All data end */
123172
__data_end__ = .;
@@ -126,27 +175,30 @@ SECTIONS
126175

127176
.bss :
128177
{
178+
. = ALIGN(4);
129179
__bss_start__ = .;
130180
*(.bss*)
131181
*(COMMON)
182+
. = ALIGN(4);
132183
__bss_end__ = .;
133184
} > RAM
134185

135-
.heap :
186+
.heap (COPY):
136187
{
188+
__HeapBase = .;
137189
__end__ = .;
138190
end = __end__;
139191
_end = __end__;
140-
*(.heap*)
192+
KEEP(*(.heap*))
141193
__HeapLimit = .;
142194
} > RAM
143195

144196
/* .stack_dummy section doesn't contains any symbols. It is only
145197
* used for linker to calculate size of stack sections, and assign
146198
* values to stack symbols later */
147-
.stack_dummy :
199+
.stack_dummy (COPY):
148200
{
149-
*(.stack)
201+
KEEP(*(.stack*))
150202
} > RAM
151203

152204
/* Set stack top to end of RAM, and stack limit move down by
@@ -157,4 +209,7 @@ SECTIONS
157209

158210
/* Check if data + heap + stack exceeds RAM limit */
159211
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
212+
213+
/* Check if FLASH usage exceeds FLASH size */
214+
ASSERT( LENGTH(FLASH) >= (__etext + SIZEOF(.data)), "FLASH memory overflowed !")
160215
}

0 commit comments

Comments
 (0)