chrysn
12 years ago
5 changed files with 253 additions and 1 deletions
@ -0,0 +1,79 @@ |
|||
/* |
|||
* 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/>. |
|||
*/ |
|||
|
|||
/* 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 |
|||
{ |
|||
. = ORIGIN(rom); |
|||
|
|||
.text : { |
|||
*(.vectors) /* Vector table */ |
|||
*(.text*) /* Program code */ |
|||
. = ALIGN(4); |
|||
*(.rodata*) /* Read-only data */ |
|||
. = ALIGN(4); |
|||
_etext = .; |
|||
} >rom |
|||
|
|||
. = ORIGIN(ram); |
|||
|
|||
.data : AT(_etext) { |
|||
_data = .; |
|||
*(.data*) /* Read-write initialized data */ |
|||
. = ALIGN(4); |
|||
_edata = .; |
|||
} >ram |
|||
|
|||
.bss : { |
|||
*(.bss*) /* Read-write zero initialized data */ |
|||
*(COMMON) |
|||
. = ALIGN(4); |
|||
_ebss = .; |
|||
} >ram AT >rom |
|||
_data_loadaddr = LOADADDR(.data); |
|||
|
|||
/* |
|||
* 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) } |
|||
|
|||
/* |
|||
* Another section used by C++ stuff, appears when using newlib with |
|||
* 64bit (long long) printf support - discard it for now. |
|||
*/ |
|||
/DISCARD/ : { *(.ARM.exidx) } |
|||
|
|||
. = ALIGN(4); |
|||
end = .; |
|||
} |
|||
|
|||
PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram)); |
|||
|
@ -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; |
@ -0,0 +1,79 @@ |
|||
/* |
|||
* 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/>. |
|||
*/ |
|||
|
|||
/* 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 |
|||
{ |
|||
. = ORIGIN(rom); |
|||
|
|||
.text : { |
|||
*(.vectors) /* Vector table */ |
|||
*(.text*) /* Program code */ |
|||
. = ALIGN(4); |
|||
*(.rodata*) /* Read-only data */ |
|||
. = ALIGN(4); |
|||
_etext = .; |
|||
} >rom |
|||
|
|||
. = ORIGIN(ram); |
|||
|
|||
.data : AT(_etext) { |
|||
_data = .; |
|||
*(.data*) /* Read-write initialized data */ |
|||
. = ALIGN(4); |
|||
_edata = .; |
|||
} >ram |
|||
|
|||
.bss : { |
|||
*(.bss*) /* Read-write zero initialized data */ |
|||
*(COMMON) |
|||
. = ALIGN(4); |
|||
_ebss = .; |
|||
} >ram AT >rom |
|||
_data_loadaddr = LOADADDR(.data); |
|||
|
|||
/* |
|||
* 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) } |
|||
|
|||
/* |
|||
* Another section used by C++ stuff, appears when using newlib with |
|||
* 64bit (long long) printf support - discard it for now. |
|||
*/ |
|||
/DISCARD/ : { *(.ARM.exidx) } |
|||
|
|||
. = ALIGN(4); |
|||
end = .; |
|||
} |
|||
|
|||
PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram)); |
|||
|
@ -0,0 +1,79 @@ |
|||
/* |
|||
* 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/>. |
|||
*/ |
|||
|
|||
/* 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 |
|||
{ |
|||
. = ORIGIN(rom); |
|||
|
|||
.text : { |
|||
*(.vectors) /* Vector table */ |
|||
*(.text*) /* Program code */ |
|||
. = ALIGN(4); |
|||
*(.rodata*) /* Read-only data */ |
|||
. = ALIGN(4); |
|||
_etext = .; |
|||
} >rom |
|||
|
|||
. = ORIGIN(ram); |
|||
|
|||
.data : AT(_etext) { |
|||
_data = .; |
|||
*(.data*) /* Read-write initialized data */ |
|||
. = ALIGN(4); |
|||
_edata = .; |
|||
} >ram |
|||
|
|||
.bss : { |
|||
*(.bss*) /* Read-write zero initialized data */ |
|||
*(COMMON) |
|||
. = ALIGN(4); |
|||
_ebss = .; |
|||
} >ram AT >rom |
|||
_data_loadaddr = LOADADDR(.data); |
|||
|
|||
/* |
|||
* 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) } |
|||
|
|||
/* |
|||
* Another section used by C++ stuff, appears when using newlib with |
|||
* 64bit (long long) printf support - discard it for now. |
|||
*/ |
|||
/DISCARD/ : { *(.ARM.exidx) } |
|||
|
|||
. = ALIGN(4); |
|||
end = .; |
|||
} |
|||
|
|||
PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram)); |
|||
|
Loading…
Reference in new issue