tsaitgaist has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-asf4-dfu/+/16849 )
Change subject: restrict flash and SRAM size in linker script
..
restrict flash and SRAM size in linker script
since the bootloader should not exceed 16 kB, the linker script now
limits the rom section to 16 kB.
this will prevent generating larger bootloader images, which could
overlap with the application starting at 16 kB.
the SRAM size has also been reduce to 192 kB.
this is the least amount SAME54 micro-controllers have.
Change-Id: I5641adf1363346acb5f50fbaef0083508d5bfee8
---
M gcc/Makefile
R gcc/gcc/same54_flash.ld
D gcc/gcc/same54p20a_sram.ld
3 files changed, 6 insertions(+), 167 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-asf4-dfu refs/changes/49/16849/1
diff --git a/gcc/Makefile b/gcc/Makefile
index 3493102..ccf2af3 100644
--- a/gcc/Makefile
+++ b/gcc/Makefile
@@ -190,7 +190,7 @@
$(QUOTE)arm-none-eabi-gcc$(QUOTE) -o $(OUTPUT_FILE_NAME).elf
$(OBJS_AS_ARGS) -Wl,--start-group -lm -Wl,--end-group -mthumb \
-Wl,-Map="$(OUTPUT_FILE_NAME).map" --specs=nano.specs -Wl,--gc-sections
-mcpu=cortex-m4 \
\
--T"../gcc/gcc/same54p20a_flash.ld" \
+-T"../gcc/gcc/same54_flash.ld" \
-L"../gcc/gcc"
@echo Finished building target: $@
diff --git a/gcc/gcc/same54p20a_flash.ld b/gcc/gcc/same54_flash.ld
similarity index 91%
rename from gcc/gcc/same54p20a_flash.ld
rename to gcc/gcc/same54_flash.ld
index 6aa3fb1..f005197 100644
--- a/gcc/gcc/same54p20a_flash.ld
+++ b/gcc/gcc/same54_flash.ld
@@ -1,7 +1,7 @@
/**
* \file
*
- * \brief Linker script for running in internal FLASH on the SAME54P20A
+ * \brief Linker script for running in internal FLASH on SAME54 devices
*
* Copyright (c) 2018 Microchip Technology Inc.
*
@@ -35,9 +35,10 @@
/* Memory Spaces Definitions */
MEMORY
{
- rom (rx) : ORIGIN = 0x, LENGTH = 0x0010
- /* The first word of the RAM is used for the DFU magic */
- ram (rwx) : ORIGIN = 0x2000 + 4, LENGTH = 0x0004 - 4
+ /* Limit flash for bootloader to first 16 kB */
+ rom (rx) : ORIGIN = 0x, LENGTH = 16K
+ /* Least amount of SRAM for SAME54 micro-controller is 182 kB. The first
word of the RAM is used for the DFU magic */
+ ram (rwx) : ORIGIN = 0x2000 + 4, LENGTH = 192K - 4
bkupram (rwx) : ORIGIN = 0x4700, LENGTH = 0x2000
qspi (rwx) : ORIGIN = 0x0400, LENGTH = 0x0100
}
diff --git a/gcc/gcc/same54p20a_sram.ld b/gcc/gcc/same54p20a_sram.ld
deleted file mode 100644
index b3be5b3..000
--- a/gcc/gcc/same54p20a_sram.ld
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * \file
- *
- * \brief Linker script for running in internal SRAM 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
- *
- */
-
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-SEARCH_DIR(.)
-
-/* Memory Spaces Definitions */
-MEMORY
-{
- ram (rwx) : ORIGIN = 0x2000, LENGTH = 0x0004
- bkupram (rwx) : ORIGIN = 0x4700, LENGTH = 0x2000
- qspi (rwx) : ORIGIN = 0x0400, LENGTH = 0x0100
-}
-
-/* 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__ : 0x1;
-
-/* 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)