SAMD51 builds Enumerates ok but flash doesn't work. Do manual flash writes and slow delay down when we have a much faster clock. DM: fixed nvmctrl math in erase DM: actually I think they want manual page writes Re-enabled self-updater with SAMD51 support. Get the version dynamically from git. Correct flash offset now that we use a uint8_t pointer. Turn on the neopixel. Fix M0 compilation by avoiding USB macro. Add board.mk files for every board. Clean up ignores Add grove zero board config file. Don't use M0 name in the Zero bootloader add board.mk for grove-zero Add version info to all generated files. Add .ino generation to scripts/gendata.py. Clean up Makefile to handle new version number generation. Note that Adafruit release tags will be v<a>.<b>.<c>-adafruit.<n>. The first part of the tag is the upstream version. The <n> is the Adafruit increment from that. add pirkey and itsybitsy m0 change dotstar brightness to account for new 'dimmer' apa102's update makefile to not use py3 consistancy and missing CRYSTALLESS special metro m0 delay to avoid SWD contention while programming Update to more recent Arduino Add comment Restore IRQs in neopixel functions Remove -mlong-calls and add -nostartfiles; see #29 Thanks @awatterott! Avoid global writes in handover Handle first read after handover correctly V1.24; Add O marker for fixed MSC handover Make the bootloader data go first in binary to avoid HardFault when erasing first page Update samd pkg version Fixes for WebUSB support Fix Windows build Remove WebUSB landing page support add _binfo defn to linker scripts for doing usermode handover. add proper serial number to USB descriptor; fix compile warning
151 lines
3.7 KiB
Text
151 lines
3.7 KiB
Text
/**
|
|
* \file
|
|
*
|
|
* \brief Linker script for running in internal FLASH on the SAMD51J19A
|
|
*
|
|
* Copyright (c) 2017 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
|
|
{
|
|
rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000
|
|
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000
|
|
}
|
|
|
|
/* 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__ : 0xC000;
|
|
|
|
/* 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 = .);
|
|
|
|
. = ALIGN(4);
|
|
_etext = .;
|
|
|
|
.relocate : AT (_etext)
|
|
{
|
|
. = ALIGN(4);
|
|
_srelocate = .;
|
|
*(.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);
|
|
_sstack = .;
|
|
. = . + STACK_SIZE;
|
|
. = ALIGN(8);
|
|
_estack = .;
|
|
} > ram
|
|
|
|
. = ALIGN(4);
|
|
_end = . ;
|
|
|
|
_binfo_start = 0x00002000 - 4 * 4;
|
|
.binfo _binfo_start : {
|
|
KEEP(*(.binfo)) ;
|
|
} > rom
|
|
}
|