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

Appearance settings

Commit b457149

Browse filesBrowse files
agdlfacchinm
authored andcommitted
Add MKR WiFi1010 variant and bootloader
* Update variant for hardware changes - Use sercom2 for SPI1 - Remove Serial2 - update various comments - disable NINA on start * Add Serial2 (overlaps with SPI1) This commit squashes all the dev commits from @agdl, @sandeepmistry and @facchinm
1 parent d72f117 commit b457149
Copy full SHA for b457149

13 files changed

+1601
-0
lines changed

‎boards.txt

Copy file name to clipboardExpand all lines: boards.txt
+29Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,35 @@ mkrwan1300.build.pid=0x8053
249249
mkrwan1300.bootloader.tool=openocd
250250
mkrwan1300.bootloader.file=mkrwan1300/samd21_sam_ba_arduino_mkrwan1300.bin
251251

252+
# Arduino MKR WiFi 1010
253+
# --------------------
254+
mkrwifi1010.name=Arduino MKR WiFi 1010
255+
mkrwifi1010.vid.0=0x2341
256+
mkrwifi1010.pid.0=0x8054
257+
mkrwifi1010.vid.1=0x2341
258+
mkrwifi1010.pid.1=0x0054
259+
260+
mkrwifi1010.upload.tool=bossac
261+
mkrwifi1010.upload.protocol=sam-ba
262+
mkrwifi1010.upload.maximum_size=262144
263+
mkrwifi1010.upload.use_1200bps_touch=true
264+
mkrwifi1010.upload.wait_for_upload_port=true
265+
mkrwifi1010.upload.native_usb=true
266+
mkrwifi1010.build.mcu=cortex-m0plus
267+
mkrwifi1010.build.f_cpu=48000000L
268+
mkrwifi1010.build.usb_product="Arduino MKR WiFi 1010"
269+
mkrwifi1010.build.usb_manufacturer="Arduino LLC"
270+
mkrwifi1010.build.board=SAMD_MKRWIFI1010
271+
mkrwifi1010.build.core=arduino
272+
mkrwifi1010.build.extra_flags=-D__SAMD21G18A__ {build.usb_flags} -DUSE_BQ24195L_PMIC
273+
mkrwifi1010.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
274+
mkrwifi1010.build.openocdscript=openocd_scripts/arduino_zero.cfg
275+
mkrwifi1010.build.variant=mkrwifi1010
276+
mkrwifi1010.build.vid=0x2341
277+
mkrwifi1010.build.pid=0x8054
278+
mkrwifi1010.bootloader.tool=openocd
279+
mkrwifi1010.bootloader.file=mkrwifi1010/samd21_sam_ba_arduino_mkrwifi1010.bin
280+
252281
# Adafruit Circuit Playground M0
253282
# ------------------------------
254283
adafruit_circuitplayground_m0.name=Adafruit Circuit Playground Express
Binary file not shown.

‎bootloaders/mkrwifi1010/samd21_sam_ba_arduino_mkrwifi1010.hex

Copy file name to clipboardExpand all lines: bootloaders/mkrwifi1010/samd21_sam_ba_arduino_mkrwifi1010.hex
+502Lines changed: 502 additions & 0 deletions
Large diffs are not rendered by default.

‎bootloaders/zero/board_definitions.h

Copy file name to clipboardExpand all lines: bootloaders/zero/board_definitions.h
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
#include "board_definitions_arduino_mkrgsm1400.h"
3434
#elif defined(BOARD_ID_arduino_mkrwan1300)
3535
#include "board_definitions_arduino_mkrwan1300.h"
36+
#elif defined(BOARD_ID_arduino_mkrwifi1010)
37+
#include "board_definitions_arduino_mkrwifi1010.h"
3638
#else
3739
#error You must define a BOARD_ID and add the corresponding definitions in board_definitions.h
3840
#endif
+86Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/*
2+
Copyright (c) 2016 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+
#ifndef _BOARD_DEFINITIONS_H_
20+
#define _BOARD_DEFINITIONS_H_
21+
22+
/*
23+
* USB device definitions
24+
*/
25+
#define STRING_PRODUCT "Arduino MKR WiFi 1010"
26+
#define USB_VID_HIGH 0x23
27+
#define USB_VID_LOW 0x41
28+
#define USB_PID_HIGH 0x00
29+
#define USB_PID_LOW 0x54
30+
31+
/*
32+
* If BOOT_DOUBLE_TAP_ADDRESS is defined the bootloader is started by
33+
* quickly tapping two times on the reset button.
34+
* BOOT_DOUBLE_TAP_ADDRESS must point to a free SRAM cell that must not
35+
* be touched from the loaded application.
36+
*/
37+
#define BOOT_DOUBLE_TAP_ADDRESS (0x20007FFCul)
38+
#define BOOT_DOUBLE_TAP_DATA (*((volatile uint32_t *) BOOT_DOUBLE_TAP_ADDRESS))
39+
40+
/*
41+
* If BOOT_LOAD_PIN is defined the bootloader is started if the selected
42+
* pin is tied LOW.
43+
*/
44+
//#define BOOT_LOAD_PIN PIN_PA21
45+
//#define BOOT_LOAD_PIN PIN_PA15
46+
47+
#define BOOT_USART_MODULE SERCOM5
48+
#define BOOT_USART_BUS_CLOCK_INDEX PM_APBCMASK_SERCOM5
49+
#define BOOT_USART_PER_CLOCK_INDEX GCLK_CLKCTRL_ID_SERCOM5_CORE_Val
50+
#define BOOT_USART_PAD_SETTINGS UART_RX_PAD3_TX_PAD2
51+
#define BOOT_USART_PAD3 PINMUX_PB23D_SERCOM5_PAD3
52+
#define BOOT_USART_PAD2 PINMUX_PB22D_SERCOM5_PAD2
53+
#define BOOT_USART_PAD1 PINMUX_UNUSED
54+
#define BOOT_USART_PAD0 PINMUX_UNUSED
55+
56+
/* Master clock frequency */
57+
#define CPU_FREQUENCY (48000000ul)
58+
#define VARIANT_MCK CPU_FREQUENCY
59+
60+
/* Frequency of the board main oscillator */
61+
#define VARIANT_MAINOSC (32768ul)
62+
63+
/* Calibration values for DFLL48 pll */
64+
#define NVM_SW_CALIB_DFLL48M_COARSE_VAL (58)
65+
#define NVM_SW_CALIB_DFLL48M_FINE_VAL (64)
66+
67+
/*
68+
* LEDs definitions
69+
*/
70+
// PA20 (digital pin 6)
71+
#define BOARD_LED_PORT (0)
72+
#define BOARD_LED_PIN (20)
73+
74+
#define CONFIGURE_PMIC 1
75+
#define PMIC_PIN_SCL 12
76+
#define PMIC_PIN_SDA 11
77+
#define PMIC_SERCOM SERCOM0
78+
79+
// No RX/TX led
80+
//#define BOARD_LEDRX_PORT
81+
//#define BOARD_LEDRX_PIN
82+
83+
//#define BOARD_LEDTX_PORT
84+
//#define BOARD_LEDTX_PIN
85+
86+
#endif // _BOARD_DEFINITIONS_H_

‎bootloaders/zero/build_all_bootloaders.sh

Copy file name to clipboardExpand all lines: bootloaders/zero/build_all_bootloaders.sh
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,8 @@ mv -v samd21_sam_ba_arduino_mkrgsm1400.* ../mkrgsm1400/
2222
BOARD_ID=arduino_mkrwan1300 NAME=samd21_sam_ba_arduino_mkrwan1300 make clean all
2323
mv -v samd21_sam_ba_arduino_mkrwan1300.* ../mkrwan1300/
2424

25+
BOARD_ID=arduino_mkrwifi1010 NAME=samd21_sam_ba_arduino_mkrwifi1010 make clean all
26+
mv -v samd21_sam_ba_arduino_mkrwifi1010.* ../mkrwifi1010/
27+
2528
echo Done building bootloaders!
2629

+31Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#
2+
# Arduino Zero OpenOCD script.
3+
#
4+
# Copyright (c) 2014-2015 Arduino LLC. All right reserved.
5+
#
6+
# This library is free software; you can redistribute it and/or
7+
# modify it under the terms of the GNU Lesser General Public
8+
# License as published by the Free Software Foundation; either
9+
# version 2.1 of the License, or (at your option) any later version.
10+
#
11+
# This library is distributed in the hope that it will be useful,
12+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14+
# See the GNU Lesser General Public License for more details.
15+
#
16+
# You should have received a copy of the GNU Lesser General Public
17+
# License along with this library; if not, write to the Free Software
18+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19+
#
20+
21+
# Define 'reset' command
22+
define reset
23+
24+
info reg
25+
26+
break main
27+
28+
# End of 'reset' command
29+
end
30+
31+
target remote | openocd -c "interface cmsis-dap" -c "set CHIPNAME at91samd21g18" -f target/at91samdXX.cfg -c "gdb_port pipe; log_output openocd.log"
+217Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
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+0x2000, LENGTH = 0x00040000-0x2000 /* First 8KB used by bootloader */
29+
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000
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(0x2000);
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+
87+
/* .dtors */
88+
*crtbegin.o(.dtors)
89+
*crtbegin?.o(.dtors)
90+
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
91+
*(SORT(.dtors.*))
92+
*(.dtors)
93+
94+
*(.rodata*)
95+
96+
KEEP(*(.eh_frame*))
97+
} > FLASH
98+
99+
.ARM.extab :
100+
{
101+
*(.ARM.extab* .gnu.linkonce.armextab.*)
102+
} > FLASH
103+
104+
__exidx_start = .;
105+
.ARM.exidx :
106+
{
107+
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
108+
} > FLASH
109+
__exidx_end = .;
110+
111+
/* To copy multiple ROM to RAM sections,
112+
* uncomment .copy.table section and,
113+
* define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */
114+
/*
115+
.copy.table :
116+
{
117+
. = ALIGN(4);
118+
__copy_table_start__ = .;
119+
LONG (__etext)
120+
LONG (__data_start__)
121+
LONG (__data_end__ - __data_start__)
122+
LONG (__etext2)
123+
LONG (__data2_start__)
124+
LONG (__data2_end__ - __data2_start__)
125+
__copy_table_end__ = .;
126+
} > FLASH
127+
*/
128+
129+
/* To clear multiple BSS sections,
130+
* uncomment .zero.table section and,
131+
* define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */
132+
/*
133+
.zero.table :
134+
{
135+
. = ALIGN(4);
136+
__zero_table_start__ = .;
137+
LONG (__bss_start__)
138+
LONG (__bss_end__ - __bss_start__)
139+
LONG (__bss2_start__)
140+
LONG (__bss2_end__ - __bss2_start__)
141+
__zero_table_end__ = .;
142+
} > FLASH
143+
*/
144+
145+
__etext = .;
146+
147+
.data : AT (__etext)
148+
{
149+
__data_start__ = .;
150+
*(vtable)
151+
*(.data*)
152+
153+
. = ALIGN(4);
154+
/* preinit data */
155+
PROVIDE_HIDDEN (__preinit_array_start = .);
156+
KEEP(*(.preinit_array))
157+
PROVIDE_HIDDEN (__preinit_array_end = .);
158+
159+
. = ALIGN(4);
160+
/* init data */
161+
PROVIDE_HIDDEN (__init_array_start = .);
162+
KEEP(*(SORT(.init_array.*)))
163+
KEEP(*(.init_array))
164+
PROVIDE_HIDDEN (__init_array_end = .);
165+
166+
167+
. = ALIGN(4);
168+
/* finit data */
169+
PROVIDE_HIDDEN (__fini_array_start = .);
170+
KEEP(*(SORT(.fini_array.*)))
171+
KEEP(*(.fini_array))
172+
PROVIDE_HIDDEN (__fini_array_end = .);
173+
174+
KEEP(*(.jcr*))
175+
. = ALIGN(16);
176+
/* All data end */
177+
__data_end__ = .;
178+
179+
} > RAM
180+
181+
.bss :
182+
{
183+
. = ALIGN(4);
184+
__bss_start__ = .;
185+
*(.bss*)
186+
*(COMMON)
187+
. = ALIGN(4);
188+
__bss_end__ = .;
189+
} > RAM
190+
191+
.heap (COPY):
192+
{
193+
__end__ = .;
194+
PROVIDE(end = .);
195+
*(.heap*)
196+
__HeapLimit = .;
197+
} > RAM
198+
199+
/* .stack_dummy section doesn't contains any symbols. It is only
200+
* used for linker to calculate size of stack sections, and assign
201+
* values to stack symbols later */
202+
.stack_dummy (COPY):
203+
{
204+
*(.stack*)
205+
} > RAM
206+
207+
/* Set stack top to end of RAM, and stack limit move down by
208+
* size of stack_dummy section */
209+
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
210+
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
211+
PROVIDE(__stack = __StackTop);
212+
213+
__ram_end__ = ORIGIN(RAM) + LENGTH(RAM) -1 ;
214+
215+
/* Check if data + heap + stack exceeds RAM limit */
216+
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
217+
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.