diff options
| author | root <root@lab2.panaceas.james.local> | 2014-11-02 10:14:39 +0000 | 
|---|---|---|
| committer | root <root@lab2.panaceas.james.local> | 2014-11-02 10:14:39 +0000 | 
| commit | 1dc7d758f96dd2b9bd7b03f01ca032d68b696cf0 (patch) | |
| tree | 1a70fddfcc79c54c863912a3b8b8cecc594f21ae /libopencm3/lib/efm32 | |
| download | stm32_usb_kvm-1dc7d758f96dd2b9bd7b03f01ca032d68b696cf0.tar.gz stm32_usb_kvm-1dc7d758f96dd2b9bd7b03f01ca032d68b696cf0.tar.bz2 stm32_usb_kvm-1dc7d758f96dd2b9bd7b03f01ca032d68b696cf0.zip  | |
fish
Diffstat (limited to 'libopencm3/lib/efm32')
| -rw-r--r-- | libopencm3/lib/efm32/efm32g/Makefile | 43 | ||||
| -rw-r--r-- | libopencm3/lib/efm32/efm32g/libopencm3_efm32g.ld | 106 | ||||
| -rw-r--r-- | libopencm3/lib/efm32/efm32g/libopencm3_efm32g880f128.ld | 15 | ||||
| -rw-r--r-- | libopencm3/lib/efm32/efm32gg/Makefile | 43 | ||||
| -rw-r--r-- | libopencm3/lib/efm32/efm32gg/libopencm3_efm32gg.ld | 106 | ||||
| -rw-r--r-- | libopencm3/lib/efm32/efm32gg/libopencm3_efm32gg990f1024.ld | 15 | ||||
| -rw-r--r-- | libopencm3/lib/efm32/efm32lg/Makefile | 43 | ||||
| -rw-r--r-- | libopencm3/lib/efm32/efm32lg/libopencm3_efm32lg.ld | 106 | ||||
| -rw-r--r-- | libopencm3/lib/efm32/efm32tg/Makefile | 43 | ||||
| -rw-r--r-- | libopencm3/lib/efm32/efm32tg/libopencm3_efm32tg.ld | 106 | ||||
| -rw-r--r-- | libopencm3/lib/efm32/efm32tg/libopencm3_efm32tg840f32.ld | 15 | 
11 files changed, 641 insertions, 0 deletions
diff --git a/libopencm3/lib/efm32/efm32g/Makefile b/libopencm3/lib/efm32/efm32g/Makefile new file mode 100644 index 0000000..7a644b2 --- /dev/null +++ b/libopencm3/lib/efm32/efm32g/Makefile @@ -0,0 +1,43 @@ +## +## This file is part of the libopencm3 project. +## +## Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de> +## Copyright (C) 2012 chrysn <chrysn@fsfe.org> +## +## This library is free software: you can redistribute it and/or modify +## it under the terms of the GNU Lesser General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +## GNU Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public License +## along with this library. If not, see <http://www.gnu.org/licenses/>. +## + +LIBNAME		= libopencm3_efm32g +SRCLIBDIR	?= ../.. +FAMILY		= EFM32G + +PREFIX		?= arm-none-eabi +#PREFIX		?= arm-elf +CC		= $(PREFIX)-gcc +AR		= $(PREFIX)-ar +CFLAGS		= -Os -g \ +		  -Wall -Wextra -Wimplicit-function-declaration \ +		  -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes \ +		  -Wundef -Wshadow \ +		  -I../../../include -fno-common \ +		  -mcpu=cortex-m3 $(FP_FLAGS) -mthumb -Wstrict-prototypes \ +		  -ffunction-sections -fdata-sections -MD -D$(FAMILY) +# ARFLAGS	= rcsv +ARFLAGS		= rcs +OBJS		= + +VPATH += ../:../../cm3 + +include ../../Makefile.include + diff --git a/libopencm3/lib/efm32/efm32g/libopencm3_efm32g.ld b/libopencm3/lib/efm32/efm32g/libopencm3_efm32g.ld new file mode 100644 index 0000000..87d6ee6 --- /dev/null +++ b/libopencm3/lib/efm32/efm32g/libopencm3_efm32g.ld @@ -0,0 +1,106 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de> + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library.  If not, see <http://www.gnu.org/licenses/>. + */ + +/* Generic linker script for EFM32 targets using libopencm3. */ + +/* Memory regions must be defined in the ld script which includes this one. */ + +/* Enforce emmition of the vector table. */ +EXTERN (vector_table) + +/* Define the entry point of the output file. */ +ENTRY(reset_handler) + +/* Define sections. */ +SECTIONS +{ +	.text : { +		*(.vectors)	/* Vector table */ +		*(.text*)	/* Program code */ +		. = ALIGN(4); +		*(.rodata*)	/* Read-only data */ +		. = ALIGN(4); +	} >rom + +	/* C++ Static constructors/destructors, also used for __attribute__ +	 * ((constructor)) and the likes */ +	.preinit_array : { +		. = ALIGN(4); +		__preinit_array_start = .; +		KEEP (*(.preinit_array)) +		__preinit_array_end = .; +	} >rom +	.init_array : { +		. = ALIGN(4); +		__init_array_start = .; +		KEEP (*(SORT(.init_array.*))) +		KEEP (*(.init_array)) +		__init_array_end = .; +	} >rom +	.fini_array : { +		. = ALIGN(4); +		__fini_array_start = .; +		KEEP (*(.fini_array)) +		KEEP (*(SORT(.fini_array.*))) +		__fini_array_end = .; +	} >rom + +	/* +	 * Another section used by C++ stuff, appears when using newlib with +	 * 64bit (long long) printf support +	 */ +	.ARM.extab : { +		*(.ARM.extab*) +	} >rom +	.ARM.exidx : { +		__exidx_start = .; +		*(.ARM.exidx*) +		__exidx_end = .; +	} >rom + +	. = ALIGN(4); +	_etext = .; + +	.data : { +		_data = .; +		*(.data*)	/* Read-write initialized data */ +		. = ALIGN(4); +		_edata = .; +	} >ram AT >rom +	_data_loadaddr = LOADADDR(.data); + +	.bss : { +		*(.bss*)	/* Read-write zero initialized data */ +		*(COMMON) +		. = ALIGN(4); +		_ebss = .; +	} >ram + +	/* +	 * The .eh_frame section appears to be used for C++ exception handling. +	 * You may need to fix this if you're using C++. +	 */ +	/DISCARD/ : { *(.eh_frame) } + +	. = ALIGN(4); +	end = .; +} + +PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram)); + diff --git a/libopencm3/lib/efm32/efm32g/libopencm3_efm32g880f128.ld b/libopencm3/lib/efm32/efm32g/libopencm3_efm32g880f128.ld new file mode 100644 index 0000000..09c6fb0 --- /dev/null +++ b/libopencm3/lib/efm32/efm32g/libopencm3_efm32g880f128.ld @@ -0,0 +1,15 @@ +/* lengths from d011_efm32tg840_datasheet.pdf table 1.1, offset from + * d0034_efm32tg_reference_manual.pdf figure 5.2. + * + * the origins and memory structure are constant over all tinygeckos, but the + * MEMORY section requires the use of constants, and has thus to be duplicated + * over the chip variants. + * */ + +MEMORY +{ +	rom (rx) : ORIGIN = 0, LENGTH = 128k +	ram (rwx) : ORIGIN = 0x20000000, LENGTH = 16k +} + +INCLUDE libopencm3_efm32g.ld; diff --git a/libopencm3/lib/efm32/efm32gg/Makefile b/libopencm3/lib/efm32/efm32gg/Makefile new file mode 100644 index 0000000..fdfe6e7 --- /dev/null +++ b/libopencm3/lib/efm32/efm32gg/Makefile @@ -0,0 +1,43 @@ +## +## This file is part of the libopencm3 project. +## +## Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de> +## Copyright (C) 2012 chrysn <chrysn@fsfe.org> +## +## This library is free software: you can redistribute it and/or modify +## it under the terms of the GNU Lesser General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +## GNU Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public License +## along with this library. If not, see <http://www.gnu.org/licenses/>. +## + +LIBNAME		= libopencm3_efm32gg +SRCLIBDIR	?= ../.. +FAMILY		= EFM32GG + +PREFIX		?= arm-none-eabi +#PREFIX		?= arm-elf +CC		= $(PREFIX)-gcc +AR		= $(PREFIX)-ar +CFLAGS		= -Os -g \ +		  -Wall -Wextra -Wimplicit-function-declaration \ +		  -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes \ +		  -Wundef -Wshadow \ +		  -I../../../include -fno-common \ +		  -mcpu=cortex-m3 $(FP_FLAGS) -mthumb -Wstrict-prototypes \ +		  -ffunction-sections -fdata-sections -MD -D$(FAMILY) +# ARFLAGS	= rcsv +ARFLAGS		= rcs +OBJS		= + +VPATH += ../:../../cm3 + +include ../../Makefile.include + diff --git a/libopencm3/lib/efm32/efm32gg/libopencm3_efm32gg.ld b/libopencm3/lib/efm32/efm32gg/libopencm3_efm32gg.ld new file mode 100644 index 0000000..87d6ee6 --- /dev/null +++ b/libopencm3/lib/efm32/efm32gg/libopencm3_efm32gg.ld @@ -0,0 +1,106 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de> + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library.  If not, see <http://www.gnu.org/licenses/>. + */ + +/* Generic linker script for EFM32 targets using libopencm3. */ + +/* Memory regions must be defined in the ld script which includes this one. */ + +/* Enforce emmition of the vector table. */ +EXTERN (vector_table) + +/* Define the entry point of the output file. */ +ENTRY(reset_handler) + +/* Define sections. */ +SECTIONS +{ +	.text : { +		*(.vectors)	/* Vector table */ +		*(.text*)	/* Program code */ +		. = ALIGN(4); +		*(.rodata*)	/* Read-only data */ +		. = ALIGN(4); +	} >rom + +	/* C++ Static constructors/destructors, also used for __attribute__ +	 * ((constructor)) and the likes */ +	.preinit_array : { +		. = ALIGN(4); +		__preinit_array_start = .; +		KEEP (*(.preinit_array)) +		__preinit_array_end = .; +	} >rom +	.init_array : { +		. = ALIGN(4); +		__init_array_start = .; +		KEEP (*(SORT(.init_array.*))) +		KEEP (*(.init_array)) +		__init_array_end = .; +	} >rom +	.fini_array : { +		. = ALIGN(4); +		__fini_array_start = .; +		KEEP (*(.fini_array)) +		KEEP (*(SORT(.fini_array.*))) +		__fini_array_end = .; +	} >rom + +	/* +	 * Another section used by C++ stuff, appears when using newlib with +	 * 64bit (long long) printf support +	 */ +	.ARM.extab : { +		*(.ARM.extab*) +	} >rom +	.ARM.exidx : { +		__exidx_start = .; +		*(.ARM.exidx*) +		__exidx_end = .; +	} >rom + +	. = ALIGN(4); +	_etext = .; + +	.data : { +		_data = .; +		*(.data*)	/* Read-write initialized data */ +		. = ALIGN(4); +		_edata = .; +	} >ram AT >rom +	_data_loadaddr = LOADADDR(.data); + +	.bss : { +		*(.bss*)	/* Read-write zero initialized data */ +		*(COMMON) +		. = ALIGN(4); +		_ebss = .; +	} >ram + +	/* +	 * The .eh_frame section appears to be used for C++ exception handling. +	 * You may need to fix this if you're using C++. +	 */ +	/DISCARD/ : { *(.eh_frame) } + +	. = ALIGN(4); +	end = .; +} + +PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram)); + diff --git a/libopencm3/lib/efm32/efm32gg/libopencm3_efm32gg990f1024.ld b/libopencm3/lib/efm32/efm32gg/libopencm3_efm32gg990f1024.ld new file mode 100644 index 0000000..694e17a --- /dev/null +++ b/libopencm3/lib/efm32/efm32gg/libopencm3_efm32gg990f1024.ld @@ -0,0 +1,15 @@ +/* lengths from d046_efm32gg990_datasheet.pdf table 1.1, offset from + * d0034_efm32tg_reference_manual.pdf figure 5.2. + * + * the origins and memory structure are constant over all giantgeckos, but the + * MEMORY section requires the use of constants, and has thus to be duplicated + * over the chip variants. + * */ + +MEMORY +{ +	rom (rx) : ORIGIN = 0, LENGTH = 1024k +	ram (rwx) : ORIGIN = 0x20000000, LENGTH = 128k +} + +INCLUDE libopencm3_efm32gg.ld; diff --git a/libopencm3/lib/efm32/efm32lg/Makefile b/libopencm3/lib/efm32/efm32lg/Makefile new file mode 100644 index 0000000..07a8e45 --- /dev/null +++ b/libopencm3/lib/efm32/efm32lg/Makefile @@ -0,0 +1,43 @@ +## +## This file is part of the libopencm3 project. +## +## Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de> +## Copyright (C) 2012 chrysn <chrysn@fsfe.org> +## +## This library is free software: you can redistribute it and/or modify +## it under the terms of the GNU Lesser General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +## GNU Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public License +## along with this library. If not, see <http://www.gnu.org/licenses/>. +## + +LIBNAME		= libopencm3_efm32lg +SRCLIBDIR	?= ../.. +FAMILY		= EFM32LG + +PREFIX		?= arm-none-eabi +#PREFIX		?= arm-elf +CC		= $(PREFIX)-gcc +AR		= $(PREFIX)-ar +CFLAGS		= -Os -g \ +		  -Wall -Wextra -Wimplicit-function-declaration \ +		  -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes \ +		  -Wundef -Wshadow \ +		  -I../../../include -fno-common \ +		  -mcpu=cortex-m3 $(FP_FLAGS) -mthumb -Wstrict-prototypes \ +		  -ffunction-sections -fdata-sections -MD -D$(FAMILY) +# ARFLAGS	= rcsv +ARFLAGS		= rcs +OBJS		= + +VPATH += ../:../../cm3 + +include ../../Makefile.include + diff --git a/libopencm3/lib/efm32/efm32lg/libopencm3_efm32lg.ld b/libopencm3/lib/efm32/efm32lg/libopencm3_efm32lg.ld new file mode 100644 index 0000000..87d6ee6 --- /dev/null +++ b/libopencm3/lib/efm32/efm32lg/libopencm3_efm32lg.ld @@ -0,0 +1,106 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de> + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library.  If not, see <http://www.gnu.org/licenses/>. + */ + +/* Generic linker script for EFM32 targets using libopencm3. */ + +/* Memory regions must be defined in the ld script which includes this one. */ + +/* Enforce emmition of the vector table. */ +EXTERN (vector_table) + +/* Define the entry point of the output file. */ +ENTRY(reset_handler) + +/* Define sections. */ +SECTIONS +{ +	.text : { +		*(.vectors)	/* Vector table */ +		*(.text*)	/* Program code */ +		. = ALIGN(4); +		*(.rodata*)	/* Read-only data */ +		. = ALIGN(4); +	} >rom + +	/* C++ Static constructors/destructors, also used for __attribute__ +	 * ((constructor)) and the likes */ +	.preinit_array : { +		. = ALIGN(4); +		__preinit_array_start = .; +		KEEP (*(.preinit_array)) +		__preinit_array_end = .; +	} >rom +	.init_array : { +		. = ALIGN(4); +		__init_array_start = .; +		KEEP (*(SORT(.init_array.*))) +		KEEP (*(.init_array)) +		__init_array_end = .; +	} >rom +	.fini_array : { +		. = ALIGN(4); +		__fini_array_start = .; +		KEEP (*(.fini_array)) +		KEEP (*(SORT(.fini_array.*))) +		__fini_array_end = .; +	} >rom + +	/* +	 * Another section used by C++ stuff, appears when using newlib with +	 * 64bit (long long) printf support +	 */ +	.ARM.extab : { +		*(.ARM.extab*) +	} >rom +	.ARM.exidx : { +		__exidx_start = .; +		*(.ARM.exidx*) +		__exidx_end = .; +	} >rom + +	. = ALIGN(4); +	_etext = .; + +	.data : { +		_data = .; +		*(.data*)	/* Read-write initialized data */ +		. = ALIGN(4); +		_edata = .; +	} >ram AT >rom +	_data_loadaddr = LOADADDR(.data); + +	.bss : { +		*(.bss*)	/* Read-write zero initialized data */ +		*(COMMON) +		. = ALIGN(4); +		_ebss = .; +	} >ram + +	/* +	 * The .eh_frame section appears to be used for C++ exception handling. +	 * You may need to fix this if you're using C++. +	 */ +	/DISCARD/ : { *(.eh_frame) } + +	. = ALIGN(4); +	end = .; +} + +PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram)); + diff --git a/libopencm3/lib/efm32/efm32tg/Makefile b/libopencm3/lib/efm32/efm32tg/Makefile new file mode 100644 index 0000000..46de193 --- /dev/null +++ b/libopencm3/lib/efm32/efm32tg/Makefile @@ -0,0 +1,43 @@ +## +## This file is part of the libopencm3 project. +## +## Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de> +## Copyright (C) 2012 chrysn <chrysn@fsfe.org> +## +## This library is free software: you can redistribute it and/or modify +## it under the terms of the GNU Lesser General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +## GNU Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public License +## along with this library. If not, see <http://www.gnu.org/licenses/>. +## + +LIBNAME		= libopencm3_efm32tg +SRCLIBDIR	?= ../.. +FAMILY		= EFM32TG + +PREFIX		?= arm-none-eabi +#PREFIX		?= arm-elf +CC		= $(PREFIX)-gcc +AR		= $(PREFIX)-ar +CFLAGS		= -Os -g \ +		  -Wall -Wextra -Wimplicit-function-declaration \ +		  -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes \ +		  -Wundef -Wshadow \ +		  -I../../../include -fno-common \ +		  -mcpu=cortex-m3 $(FP_FLAGS) -mthumb -Wstrict-prototypes \ +		  -ffunction-sections -fdata-sections -MD -D$(FAMILY) +# ARFLAGS	= rcsv +ARFLAGS		= rcs +OBJS		= + +VPATH += ../:../../cm3 + +include ../../Makefile.include + diff --git a/libopencm3/lib/efm32/efm32tg/libopencm3_efm32tg.ld b/libopencm3/lib/efm32/efm32tg/libopencm3_efm32tg.ld new file mode 100644 index 0000000..87d6ee6 --- /dev/null +++ b/libopencm3/lib/efm32/efm32tg/libopencm3_efm32tg.ld @@ -0,0 +1,106 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de> + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library.  If not, see <http://www.gnu.org/licenses/>. + */ + +/* Generic linker script for EFM32 targets using libopencm3. */ + +/* Memory regions must be defined in the ld script which includes this one. */ + +/* Enforce emmition of the vector table. */ +EXTERN (vector_table) + +/* Define the entry point of the output file. */ +ENTRY(reset_handler) + +/* Define sections. */ +SECTIONS +{ +	.text : { +		*(.vectors)	/* Vector table */ +		*(.text*)	/* Program code */ +		. = ALIGN(4); +		*(.rodata*)	/* Read-only data */ +		. = ALIGN(4); +	} >rom + +	/* C++ Static constructors/destructors, also used for __attribute__ +	 * ((constructor)) and the likes */ +	.preinit_array : { +		. = ALIGN(4); +		__preinit_array_start = .; +		KEEP (*(.preinit_array)) +		__preinit_array_end = .; +	} >rom +	.init_array : { +		. = ALIGN(4); +		__init_array_start = .; +		KEEP (*(SORT(.init_array.*))) +		KEEP (*(.init_array)) +		__init_array_end = .; +	} >rom +	.fini_array : { +		. = ALIGN(4); +		__fini_array_start = .; +		KEEP (*(.fini_array)) +		KEEP (*(SORT(.fini_array.*))) +		__fini_array_end = .; +	} >rom + +	/* +	 * Another section used by C++ stuff, appears when using newlib with +	 * 64bit (long long) printf support +	 */ +	.ARM.extab : { +		*(.ARM.extab*) +	} >rom +	.ARM.exidx : { +		__exidx_start = .; +		*(.ARM.exidx*) +		__exidx_end = .; +	} >rom + +	. = ALIGN(4); +	_etext = .; + +	.data : { +		_data = .; +		*(.data*)	/* Read-write initialized data */ +		. = ALIGN(4); +		_edata = .; +	} >ram AT >rom +	_data_loadaddr = LOADADDR(.data); + +	.bss : { +		*(.bss*)	/* Read-write zero initialized data */ +		*(COMMON) +		. = ALIGN(4); +		_ebss = .; +	} >ram + +	/* +	 * The .eh_frame section appears to be used for C++ exception handling. +	 * You may need to fix this if you're using C++. +	 */ +	/DISCARD/ : { *(.eh_frame) } + +	. = ALIGN(4); +	end = .; +} + +PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram)); + diff --git a/libopencm3/lib/efm32/efm32tg/libopencm3_efm32tg840f32.ld b/libopencm3/lib/efm32/efm32tg/libopencm3_efm32tg840f32.ld new file mode 100644 index 0000000..2cb8daf --- /dev/null +++ b/libopencm3/lib/efm32/efm32tg/libopencm3_efm32tg840f32.ld @@ -0,0 +1,15 @@ +/* lengths from d011_efm32tg840_datasheet.pdf table 1.1, offset from + * d0034_efm32tg_reference_manual.pdf figure 5.2. + * + * the origins and memory structure are constant over all tinygeckos, but the + * MEMORY section requires the use of constants, and has thus to be duplicated + * over the chip variants. + * */ + +MEMORY +{ +	rom (rx) : ORIGIN = 0, LENGTH = 32k +	ram (rwx) : ORIGIN = 0x20000000, LENGTH = 4k +} + +INCLUDE libopencm3_efm32tg.ld;  | 
