Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add new variant #286

Merged
merged 2 commits into from
Mar 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions boards.txt
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,55 @@ adafruit_qtpy_m0.menu.debug.off=Off
adafruit_qtpy_m0.menu.debug.on=On
adafruit_qtpy_m0.menu.debug.on.build.flags.debug=-g

# Adafruit NeoPixel Trinkey (SAMD21)
# ------------------------------
adafruit_neotrinkey_m0.name=Adafruit Neo Trinkey (SAMD21)
adafruit_neotrinkey_m0.vid.0=0x239A
adafruit_neotrinkey_m0.pid.0=0x80EF
adafruit_neotrinkey_m0.vid.1=0x239A
adafruit_neotrinkey_m0.pid.1=0x00EF
adafruit_neotrinkey_m0.vid.1=0x239A
adafruit_neotrinkey_m0.pid.1=0x00F0
adafruit_neotrinkey_m0.upload.tool=bossac
adafruit_neotrinkey_m0.upload.protocol=sam-ba
adafruit_neotrinkey_m0.upload.maximum_size=262144
adafruit_neotrinkey_m0.upload.offset=0x2000
adafruit_neotrinkey_m0.upload.use_1200bps_touch=true
adafruit_neotrinkey_m0.upload.wait_for_upload_port=true
adafruit_neotrinkey_m0.upload.native_usb=true
adafruit_neotrinkey_m0.build.mcu=cortex-m0plus
adafruit_neotrinkey_m0.build.f_cpu=48000000L
adafruit_neotrinkey_m0.build.usb_product="NeoPixel Trinkey M0"
adafruit_neotrinkey_m0.build.usb_manufacturer="Adafruit"
adafruit_neotrinkey_m0.build.board=NEOTRINKEY_M0
adafruit_neotrinkey_m0.build.core=arduino
adafruit_neotrinkey_m0.build.extra_flags=-DCRYSTALLESS -DADAFRUIT_NEOTRINKEY_M0 -D__SAMD21E18A__ -DARM_MATH_CM0PLUS {build.usb_flags}
adafruit_neotrinkey_m0.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
adafruit_neotrinkey_m0.build.openocdscript=openocd_scripts/neotrinkey_m0.cfg
adafruit_neotrinkey_m0.build.variant=neotrinkey_m0
adafruit_neotrinkey_m0.build.variant_system_lib=
adafruit_neotrinkey_m0.build.vid=0x239A
adafruit_neotrinkey_m0.build.pid=0x80EF
adafruit_neotrinkey_m0.bootloader.tool=openocd
adafruit_neotrinkey_m0.bootloader.file=neotrinkey_m0/bootloader-neotrinkey_m0.bin
adafruit_neotrinkey_m0.menu.opt.small=Small (-Os) (standard)
adafruit_neotrinkey_m0.menu.opt.small.build.flags.optimize=-Os
adafruit_neotrinkey_m0.menu.opt.fast=Fast (-O2)
adafruit_neotrinkey_m0.menu.opt.fast.build.flags.optimize=-O2
adafruit_neotrinkey_m0.menu.opt.faster=Faster (-O3)
adafruit_neotrinkey_m0.menu.opt.faster.build.flags.optimize=-O3
adafruit_neotrinkey_m0.menu.opt.fastest=Fastest (-Ofast)
adafruit_neotrinkey_m0.menu.opt.fastest.build.flags.optimize=-Ofast
adafruit_neotrinkey_m0.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops)
adafruit_neotrinkey_m0.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops
adafruit_neotrinkey_m0.menu.usbstack.arduino=Arduino
adafruit_neotrinkey_m0.menu.usbstack.tinyusb=TinyUSB
adafruit_neotrinkey_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
adafruit_neotrinkey_m0.menu.debug.off=Off
adafruit_neotrinkey_m0.menu.debug.on=On
adafruit_neotrinkey_m0.menu.debug.on.build.flags.debug=-g


# Adafruit ItsyBitsy M0 (SAMD21)
# ------------------------------
adafruit_itsybitsy_m0.name=Adafruit ItsyBitsy M0
Expand Down
Binary file not shown.
31 changes: 31 additions & 0 deletions variants/neotrinkey_m0/debug_scripts/variant.gdb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#
# Arduino Zero OpenOCD script.
#
# Copyright (c) 2014-2015 Arduino LLC. All right reserved.
#
# 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 2.1 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, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#

# Define 'reset' command
define reset

info reg

break main

# End of 'reset' command
end

target remote | openocd -c "interface cmsis-dap" -c "set CHIPNAME at91samd21e18" -f target/at91samdXX.cfg -c "gdb_port pipe; log_output openocd.log"
216 changes: 216 additions & 0 deletions variants/neotrinkey_m0/linker_scripts/gcc/flash_with_bootloader.ld
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
/*
Copyright (c) 2014-2015 Arduino LLC. All right reserved.

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 2.1 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, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/

/* Linker script to configure memory regions.
* Need modifying for a specific board.
* FLASH.ORIGIN: starting address of flash
* FLASH.LENGTH: length of flash
* RAM.ORIGIN: starting address of RAM bank 0
* RAM.LENGTH: length of RAM bank 0
*/
MEMORY
{
FLASH (rx) : ORIGIN = 0x00000000+0x2000, LENGTH = 0x00040000-0x2000 /* First 8KB used by bootloader */
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000
}

/* Linker script to place sections and symbol values. Should be used together
* with other linker script that defines memory regions FLASH and RAM.
* It references following symbols, which must be defined in code:
* Reset_Handler : Entry of reset handler
*
* It defines following symbols, which code can use without definition:
* __exidx_start
* __exidx_end
* __copy_table_start__
* __copy_table_end__
* __zero_table_start__
* __zero_table_end__
* __etext
* __data_start__
* __preinit_array_start
* __preinit_array_end
* __init_array_start
* __init_array_end
* __fini_array_start
* __fini_array_end
* __data_end__
* __bss_start__
* __bss_end__
* __end__
* end
* __HeapLimit
* __StackLimit
* __StackTop
* __stack
*/
ENTRY(Reset_Handler)

SECTIONS
{
.text :
{
__text_start__ = .;

KEEP(*(.sketch_boot))

. = ALIGN(0x2000);
KEEP(*(.isr_vector))
*(.text*)

KEEP(*(.init))
KEEP(*(.fini))

/* .ctors */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)

/* .dtors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)

*(.rodata*)

KEEP(*(.eh_frame*))
} > FLASH

.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > FLASH

__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > FLASH
__exidx_end = .;

/* To copy multiple ROM to RAM sections,
* uncomment .copy.table section and,
* define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */
/*
.copy.table :
{
. = ALIGN(4);
__copy_table_start__ = .;
LONG (__etext)
LONG (__data_start__)
LONG (__data_end__ - __data_start__)
LONG (__etext2)
LONG (__data2_start__)
LONG (__data2_end__ - __data2_start__)
__copy_table_end__ = .;
} > FLASH
*/

/* To clear multiple BSS sections,
* uncomment .zero.table section and,
* define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */
/*
.zero.table :
{
. = ALIGN(4);
__zero_table_start__ = .;
LONG (__bss_start__)
LONG (__bss_end__ - __bss_start__)
LONG (__bss2_start__)
LONG (__bss2_end__ - __bss2_start__)
__zero_table_end__ = .;
} > FLASH
*/

__etext = .;

.data : AT (__etext)
{
__data_start__ = .;
*(vtable)
*(.data*)

. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);

. = ALIGN(4);
/* init data */
PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);


. = ALIGN(4);
/* finit data */
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .);

KEEP(*(.jcr*))
. = ALIGN(16);
/* All data end */
__data_end__ = .;

} > RAM

.bss :
{
. = ALIGN(4);
__bss_start__ = .;
*(.bss*)
*(COMMON)
. = ALIGN(4);
__bss_end__ = .;
} > RAM

.heap (COPY):
{
__end__ = .;
PROVIDE(end = .);
*(.heap*)
__HeapLimit = .;
} > RAM

/* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later */
.stack_dummy (COPY):
{
*(.stack*)
} > RAM

/* Set stack top to end of RAM, and stack limit move down by
* size of stack_dummy section */
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);

__ram_end__ = ORIGIN(RAM) + LENGTH(RAM) -1 ;

/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}
Loading