mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-16 21:28:33 +03:00
This bl updater can be flashed as app and will update the bootloader and then delete itself before resetting the sam3, so the device will end up in the newly updated dfu bootloader afterwards, without having to press the bootloader button or requring any other manual interaction, ready to receive a new application image. Building the blupdater requires a previously built dfu-flash bootloader bin file that will then be embedded into the app during building. Related: OS#1704 Related: SYS5061 Change-Id: I53dea57bba790a2ab3245d9483e0ff1c8d19d5e3
150 lines
4.5 KiB
Plaintext
150 lines
4.5 KiB
Plaintext
/* ----------------------------------------------------------------------------
|
|
* ATMEL Microcontroller Software Support
|
|
* ----------------------------------------------------------------------------
|
|
* Copyright (c) 2009, Atmel Corporation
|
|
*
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* - Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the disclaimer below.
|
|
*
|
|
* Atmel's name may not be used to endorse or promote products derived from
|
|
* this software without specific prior written permission.
|
|
*
|
|
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
|
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
|
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
* ----------------------------------------------------------------------------
|
|
*/
|
|
|
|
/*------------------------------------------------------------------------------
|
|
* Linker script for running in internal FLASH on the ATSAM3S4
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
|
OUTPUT_ARCH(arm)
|
|
SEARCH_DIR(.)
|
|
|
|
/* Memory Spaces Definitions */
|
|
MEMORY
|
|
{
|
|
/* reserve the first 16k (= 0x4000) for the DFU bootloader */
|
|
rom (rx) : ORIGIN = 0x00400000 + 16K, LENGTH = 256K - 16K /* flash, 256K */
|
|
/* note: dfudata will be at the start */
|
|
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 48K /* SRAM, 48K */
|
|
}
|
|
|
|
/* 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(0x4);
|
|
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
|
|
|
|
/DISCARD/ :
|
|
{
|
|
*(.ARM.exidx)
|
|
}
|
|
|
|
.blupdate :
|
|
{
|
|
. = ALIGN(4);
|
|
_blupdate_start = .;
|
|
KEEP(*(.fwupdate .fwupdate.*));
|
|
_blupdate_end = .;
|
|
} > rom
|
|
|
|
. = ALIGN(4);
|
|
_etext = .;
|
|
|
|
.relocate : AT (_etext)
|
|
{
|
|
. = ALIGN(4);
|
|
_srelocate = .;
|
|
/* we must make sure the .dfudata is linked to start of RAM */
|
|
*(.dfudata .dfudata.*);
|
|
*(.ramfunc .ramfunc.*);
|
|
*(.data .data.*);
|
|
. = ALIGN(4);
|
|
_erelocate = .;
|
|
} > ram
|
|
|
|
/* .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);
|
|
*(.stack .stack.*)
|
|
} > ram
|
|
|
|
. = ALIGN(4);
|
|
_end = . ;
|
|
}
|