laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-asf4-dfu/+/39433?usp=email )
Change subject: linker scripts: add bl size, fix ram size to 19a part ...................................................................... linker scripts: add bl size, fix ram size to 19a part Change-Id: Ic2da201b8f95855d05e15ac6ac8461e434593760 --- A gcc/gcc/blsize.ld A gcc/gcc/same54p20a_dfu.ld M gcc/gcc/same54p20a_flash.ld M gcc/gcc/same54p20a_sram.ld 4 files changed, 178 insertions(+), 3 deletions(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved diff --git a/gcc/gcc/blsize.ld b/gcc/gcc/blsize.ld new file mode 100644 index 0000000..2ef3633 --- /dev/null +++ b/gcc/gcc/blsize.ld @@ -0,0 +1 @@ +BL_SIZE_BYTE = 8192 * 2; \ No newline at end of file diff --git a/gcc/gcc/same54p20a_dfu.ld b/gcc/gcc/same54p20a_dfu.ld new file mode 100644 index 0000000..532e32a --- /dev/null +++ b/gcc/gcc/same54p20a_dfu.ld @@ -0,0 +1,173 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAME54P20A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +INCLUDE blsize.ld + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000 + BL_SIZE_BYTE, LENGTH = 0x00080000 - BL_SIZE_BYTE + /* The first word of the RAM is used for the DFU magic */ + ram (rwx) : ORIGIN = 0x20000000 + 4, LENGTH = 0x00030000 - 4 + bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000 + qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x10000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + .blupdate : + { + . = ALIGN(4); + _blupdate_start = .; + KEEP(*(.fwupdate .fwupdate.*)); + _blupdate_end = .; + } > rom + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + .bkupram (NOLOAD): + { + . = ALIGN(8); + _sbkupram = .; + *(.bkupram .bkupram.*); + . = ALIGN(8); + _ebkupram = .; + } > bkupram + + .qspi (NOLOAD): + { + . = ALIGN(8); + _sqspi = .; + *(.qspi .qspi.*); + . = ALIGN(8); + _eqspi = .; + } > qspi + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/gcc/gcc/same54p20a_flash.ld b/gcc/gcc/same54p20a_flash.ld index 6aa3fb1..f2c5124 100644 --- a/gcc/gcc/same54p20a_flash.ld +++ b/gcc/gcc/same54p20a_flash.ld @@ -27,6 +27,7 @@ * */ +INCLUDE blsize.ld OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) @@ -35,9 +36,9 @@ /* Memory Spaces Definitions */ MEMORY { - rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00100000 + rom (rx) : ORIGIN = 0x00000000, LENGTH = BL_SIZE_BYTE /* The first word of the RAM is used for the DFU magic */ - ram (rwx) : ORIGIN = 0x20000000 + 4, LENGTH = 0x00040000 - 4 + ram (rwx) : ORIGIN = 0x20000000 + 4, LENGTH = 0x00030000 - 4 bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000 qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000 } diff --git a/gcc/gcc/same54p20a_sram.ld b/gcc/gcc/same54p20a_sram.ld index b3be5b3..5cf354c 100644 --- a/gcc/gcc/same54p20a_sram.ld +++ b/gcc/gcc/same54p20a_sram.ld @@ -35,7 +35,7 @@ /* Memory Spaces Definitions */ MEMORY { - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00040000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000 bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000 qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000 } -- To view, visit https://gerrit.osmocom.org/c/osmo-asf4-dfu/+/39433?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-asf4-dfu Gerrit-Branch: master Gerrit-Change-Id: Ic2da201b8f95855d05e15ac6ac8461e434593760 Gerrit-Change-Number: 39433 Gerrit-PatchSet: 10 Gerrit-Owner: Hoernchen <ew...@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <lafo...@osmocom.org>