Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ca0e700

Browse files
committed
Adds SparkFun SAMD51 MicroMod to SAMD variants, fixes misordered pins on the Qwiic Micro
1 parent e135857 commit ca0e700

File tree

12 files changed

+978
-1
lines changed

12 files changed

+978
-1
lines changed

‎IDE_Board_Manager/package_sparkfun_index.json‎

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,6 +1610,57 @@
16101610
{ "name": "Sparkfun SAMD51 Thing Plus" },
16111611
{ "name": "Sparkfun Qwiic Micro" }
16121612
],
1613+
"toolsDependencies": [
1614+
{
1615+
"packager": "arduino",
1616+
"name": "arm-none-eabi-gcc",
1617+
"version": "4.8.3-2014q1"
1618+
},
1619+
{
1620+
"packager": "arduino",
1621+
"name": "bossac",
1622+
"version": "1.8.0-48-gb176eee"
1623+
},
1624+
{
1625+
"packager": "arduino",
1626+
"name": "openocd",
1627+
"version": "0.9.0-arduino"
1628+
},
1629+
{
1630+
"packager": "arduino",
1631+
"name": "CMSIS",
1632+
"version": "4.5.0"
1633+
},
1634+
{
1635+
"packager": "arduino",
1636+
"name": "CMSIS-Atmel",
1637+
"version": "1.2.0"
1638+
}
1639+
]
1640+
},
1641+
{
1642+
"name": "SparkFun SAMD Boards (dependency: Arduino SAMD Boards 1.8.1)",
1643+
"architecture": "samd",
1644+
"version": "1.7.6",
1645+
"category": "Contributed",
1646+
"url": "https://github.com/sparkfun/Arduino_Boards/raw/master/IDE_Board_Manager/sparkfun-samd-1.7.6.tar.bz2",
1647+
"archiveFileName": "sparkfun-samd-1.7.6.tar.bz2",
1648+
"checksum": "SHA-256:BEFF40BBD0832B6478A49FEBD1DC839C1F3635431788A6A482F67C6300AE798E",
1649+
"size": "2840910",
1650+
"help": {
1651+
"online": "https://learn.sparkfun.com/tutorials/installing-arduino-ide/board-add-ons-with-arduino-board-manager"
1652+
},
1653+
"boards": [
1654+
{ "name": "SparkFun SAMD21 Mini Breakout" },
1655+
{ "name": "SparkFun SAMD21 Dev Breakout" },
1656+
{ "name": "SparkFun 9DoF Razor IMU M0" },
1657+
{ "name": "LilyPad LilyMini" },
1658+
{ "name": "Sparkfun SAMD21 Pro RF" },
1659+
{ "name": "Sparkfun RedBoard Turbo" },
1660+
{ "name": "Sparkfun SAMD51 Thing Plus" },
1661+
{ "name": "Sparkfun Qwiic Micro" },
1662+
{ "name": "SparkFun SAMD51 MicroMod" }
1663+
],
16131664
"toolsDependencies": [
16141665
{
16151666
"packager": "arduino",
2.71 MB
Binary file not shown.

‎sparkfun/samd/boards.txt‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,3 +275,36 @@ qwiic_micro_samd21e.build.pid=0xF019
275275
qwiic_micro_samd21e.bootloader.tool=openocd
276276
qwiic_micro_samd21e.bootloader.file=QwiicMicro/bootloader-sparkfun-qwiic-micro-v3.4.0-gfbd9bd1-dirty.bin
277277

278+
micromod_samd51.name=SparkFun SAMD51 MicroMod
279+
micromod_samd51.vid.0=0x1B4F
280+
micromod_samd51.pid.0=0x0020
281+
micromod_samd51.vid.1=0x1B4F
282+
micromod_samd51.pid.1=0xF020
283+
micromod_samd51.upload.tool=bossac18
284+
micromod_samd51.upload.protocol=sam-ba
285+
micromod_samd51.upload.maximum_size=507904
286+
micromod_samd51.upload.offset=0x4000
287+
micromod_samd51.upload.use_1200bps_touch=true
288+
micromod_samd51.upload.wait_for_upload_port=true
289+
micromod_samd51.upload.native_usb=true
290+
micromod_samd51.build.mcu=cortex-m4
291+
micromod_samd51.build.f_cpu=120000000L
292+
micromod_samd51.build.usb_product="SparkFun SAMD51 MicroMod"
293+
micromod_samd51.build.usb_manufacturer="SparkFun Electronics"
294+
micromod_samd51.build.board=SAMD51_MICROMOD
295+
micromod_samd51.build.core=arduino51
296+
micromod_samd51.build.extra_flags=-D__SAMD51J20A__ -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16
297+
micromod_samd51.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
298+
micromod_samd51.build.openocdscript=openocd_scripts/arduino_zero.cfg
299+
micromod_samd51.build.variant=SparkFun SAMD51 MicroMod
300+
micromod_samd51.build.variant_system_lib=
301+
micromod_samd51.build.vid=0x1B4F
302+
micromod_samd51.build.pid=0xF020
303+
micromod_samd51.bootloader.tool=openocd
304+
micromod_samd51.bootloader.file=SAMD51/bootloader-sparkfun-samd51-micromod-v3.4.0-65-gdf89a1f-dirty.bin
305+
micromod_samd51.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16
306+
micromod_samd51.menu.cache.on=Enabled
307+
micromod_samd51.menu.cache.on.build.cache_flags=-DENABLE_CACHE
308+
micromod_samd51.menu.cache.off=Disabled
309+
micromod_samd51.menu.cache.off.build.cache_flags=
310+
Binary file not shown.

‎sparkfun/samd/variants/SparkFun_Qwiic_Micro/variant.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ const PinDescription g_APinDescription[] =
5151

5252
// 16/17 - RX/TX
5353
// --------------------
54-
{ PORTA, 22, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM4_CH0, TC4_CH0, EXTERNAL_INT_6 }, // TX/D16
5554
{ PORTA, 23, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM4_CH1, TC4_CH1, EXTERNAL_INT_7 }, // RX/D17
55+
{ PORTA, 22, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM4_CH0, TC4_CH0, EXTERNAL_INT_6 }, // TX/D16
5656

5757
// 18-21 - Flash SPI
5858
// --------------------
Binary file not shown.
Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
/*
2+
Copyright (c) 2014-2015 Arduino LLC. All right reserved.
3+
4+
This library is free software; you can redistribute it and/or
5+
modify it under the terms of the GNU Lesser General Public
6+
License as published by the Free Software Foundation; either
7+
version 2.1 of the License, or (at your option) any later version.
8+
9+
This library is distributed in the hope that it will be useful,
10+
but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12+
See the GNU Lesser General Public License for more details.
13+
14+
You should have received a copy of the GNU Lesser General Public
15+
License along with this library; if not, write to the Free Software
16+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17+
*/
18+
19+
/* Linker script to configure memory regions.
20+
* Need modifying for a specific board.
21+
* FLASH.ORIGIN: starting address of flash
22+
* FLASH.LENGTH: length of flash
23+
* RAM.ORIGIN: starting address of RAM bank 0
24+
* RAM.LENGTH: length of RAM bank 0
25+
*/
26+
MEMORY
27+
{
28+
FLASH (rx) : ORIGIN = 0x00000000+0x4000, LENGTH = 0x00080000-0x4000 /* First 16KB used by bootloader */
29+
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000
30+
}
31+
32+
/* Linker script to place sections and symbol values. Should be used together
33+
* with other linker script that defines memory regions FLASH and RAM.
34+
* It references following symbols, which must be defined in code:
35+
* Reset_Handler : Entry of reset handler
36+
*
37+
* It defines following symbols, which code can use without definition:
38+
* __exidx_start
39+
* __exidx_end
40+
* __copy_table_start__
41+
* __copy_table_end__
42+
* __zero_table_start__
43+
* __zero_table_end__
44+
* __etext
45+
* __data_start__
46+
* __preinit_array_start
47+
* __preinit_array_end
48+
* __init_array_start
49+
* __init_array_end
50+
* __fini_array_start
51+
* __fini_array_end
52+
* __data_end__
53+
* __bss_start__
54+
* __bss_end__
55+
* __end__
56+
* end
57+
* __HeapLimit
58+
* __StackLimit
59+
* __StackTop
60+
* __stack
61+
*/
62+
ENTRY(Reset_Handler)
63+
64+
SECTIONS
65+
{
66+
.text :
67+
{
68+
__text_start__ = .;
69+
70+
KEEP(*(.sketch_boot))
71+
72+
. = ALIGN(0x4000);
73+
KEEP(*(.isr_vector))
74+
*(.text*)
75+
76+
KEEP(*(.init))
77+
KEEP(*(.fini))
78+
79+
/* .ctors */
80+
*crtbegin.o(.ctors)
81+
*crtbegin?.o(.ctors)
82+
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
83+
*(SORT(.ctors.*))
84+
*(.ctors)
85+
86+
/* .dtors */
87+
*crtbegin.o(.dtors)
88+
*crtbegin?.o(.dtors)
89+
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
90+
*(SORT(.dtors.*))
91+
*(.dtors)
92+
93+
*(.rodata*)
94+
95+
KEEP(*(.eh_frame*))
96+
} > FLASH
97+
98+
.ARM.extab :
99+
{
100+
*(.ARM.extab* .gnu.linkonce.armextab.*)
101+
} > FLASH
102+
103+
__exidx_start = .;
104+
.ARM.exidx :
105+
{
106+
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
107+
} > FLASH
108+
__exidx_end = .;
109+
110+
/* To copy multiple ROM to RAM sections,
111+
* uncomment .copy.table section and,
112+
* define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */
113+
/*
114+
.copy.table :
115+
{
116+
. = ALIGN(4);
117+
__copy_table_start__ = .;
118+
LONG (__etext)
119+
LONG (__data_start__)
120+
LONG (__data_end__ - __data_start__)
121+
LONG (__etext2)
122+
LONG (__data2_start__)
123+
LONG (__data2_end__ - __data2_start__)
124+
__copy_table_end__ = .;
125+
} > FLASH
126+
*/
127+
128+
/* To clear multiple BSS sections,
129+
* uncomment .zero.table section and,
130+
* define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */
131+
/*
132+
.zero.table :
133+
{
134+
. = ALIGN(4);
135+
__zero_table_start__ = .;
136+
LONG (__bss_start__)
137+
LONG (__bss_end__ - __bss_start__)
138+
LONG (__bss2_start__)
139+
LONG (__bss2_end__ - __bss2_start__)
140+
__zero_table_end__ = .;
141+
} > FLASH
142+
*/
143+
144+
__etext = .;
145+
146+
.data : AT (__etext)
147+
{
148+
__data_start__ = .;
149+
*(vtable)
150+
*(.data*)
151+
152+
. = ALIGN(4);
153+
/* preinit data */
154+
PROVIDE_HIDDEN (__preinit_array_start = .);
155+
KEEP(*(.preinit_array))
156+
PROVIDE_HIDDEN (__preinit_array_end = .);
157+
158+
. = ALIGN(4);
159+
/* init data */
160+
PROVIDE_HIDDEN (__init_array_start = .);
161+
KEEP(*(SORT(.init_array.*)))
162+
KEEP(*(.init_array))
163+
PROVIDE_HIDDEN (__init_array_end = .);
164+
165+
166+
. = ALIGN(4);
167+
/* finit data */
168+
PROVIDE_HIDDEN (__fini_array_start = .);
169+
KEEP(*(SORT(.fini_array.*)))
170+
KEEP(*(.fini_array))
171+
PROVIDE_HIDDEN (__fini_array_end = .);
172+
173+
KEEP(*(.jcr*))
174+
. = ALIGN(16);
175+
/* All data end */
176+
__data_end__ = .;
177+
178+
} > RAM
179+
180+
.bss :
181+
{
182+
. = ALIGN(4);
183+
__bss_start__ = .;
184+
*(.bss*)
185+
*(COMMON)
186+
. = ALIGN(4);
187+
__bss_end__ = .;
188+
} > RAM
189+
190+
.heap (COPY):
191+
{
192+
__end__ = .;
193+
PROVIDE(end = .);
194+
*(.heap*)
195+
__HeapLimit = .;
196+
} > RAM
197+
198+
/* .stack_dummy section doesn't contains any symbols. It is only
199+
* used for linker to calculate size of stack sections, and assign
200+
* values to stack symbols later */
201+
.stack_dummy (COPY):
202+
{
203+
*(.stack*)
204+
} > RAM
205+
206+
/* Set stack top to end of RAM, and stack limit move down by
207+
* size of stack_dummy section */
208+
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
209+
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
210+
PROVIDE(__stack = __StackTop);
211+
212+
__ram_end__ = ORIGIN(RAM) + LENGTH(RAM) -1 ;
213+
214+
/* Check if data + heap + stack exceeds RAM limit */
215+
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
216+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /