Skip to content

Commit 55de173

Browse files
author
Nathan Seidle
committed
2 parents 25b720e + 46c9198 commit 55de173

File tree

486 files changed

+44975
-7637
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

486 files changed

+44975
-7637
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@
77
# Mac
88
*.DS_Store
99

10+
# OTA Files
11+
*OTA_blob*

README.md

+21-34
Original file line numberDiff line numberDiff line change
@@ -12,53 +12,39 @@
1212

1313
## Installation
1414

15-
The structure of this repo is such that it will most closely resemble the structure required when it is time to add it to the Arduino boards manager. Until then you'll have to use the manual installation process.
16-
1715
* [Using Arduino IDE Boards Manager](https://github.com/sparkfun/Arduino_Boards) (Reccomended)
1816
* Follow the instructions at the [SparkFun Arduino Boards Repo](https://github.com/sparkfun/Arduino_Boards)
1917
* Open 'Boards Manager' and select 'SparkFun Apollo3 Boards,' install the latest version.
2018
* JSON boards manager link for convenience: https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json
2119

2220

23-
* [Manually Install in Arduino Sketchbook]()
24-
* **First** Install the Arduino SAMD Boards through the Arduino Board Manager. This is required for the ARM Cortex-M toolchain.
25-
* Open your Arduno sketchbook folder, listed in Arduino's preferences pane (it is where your libraries folder lives)
26-
* If there is no ```hardware``` folder create it
27-
* Inside the ```hardware``` folder create ```SparkFun```
28-
* Choose to clone with Git or download the .zip of this repo
29-
* Cloning
30-
* Clone this repo into ```SparkFun``` and give it the name ```apollo3```
31-
* .ZIP
32-
* Download the .ZIP of this repository
33-
* Within ```SparkFun``` create the ```apollo3``` directory
34-
* Unzip the contents of the .ZIP into the ```apollo3``` directory
35-
* Restart Arduino IDE for good measure
36-
3721

3822
## Development Status
3923

4024
The basic necesseties are in-place. This means that you can compile and upload code to your Apollo3 board. Development can be done with the whole range of Hardware Abstraction Layer functions provided in the AmbiqSuite Software Development Kit (based on Release2.1.0).
4125

42-
Current focus is to begin building support for the essential Arduino libraries including:
43-
* Serial: Fully implemented (will fix bugs and tweak performance over time)
44-
* GPIO
45-
* Working:
46-
* ditigal functions (read / write)
47-
* analogRead
48-
* analogWrite
49-
* Under Construction:
50-
* interrupts
51-
* Timing
52-
* Working:
53-
* delay
54-
* delayMicroseconds
55-
* millis
56-
* micros
57-
* seconds (extension)
26+
**Main Arduino Features**
27+
* Serial: ✅
28+
* GPIO: ✅
29+
* Analog / Servo Output: ✅
30+
* Analog Input: ✅
31+
* Timing / Delays: ✅
32+
33+
**Standard Libraries**
5834
* Wire
59-
* Working: 90% use case, master I2C interface.
35+
* Master: ✅
36+
* Slave: ❌
6037
* SPI
61-
* Working: transfers with SPISettings.
38+
* Master: ✅
39+
* Slave: ❌
40+
* Software Serial: ✅
41+
42+
**Apollo3 Specialty Peripherals**
43+
* PDM Microphones / I2S: 🤔
44+
* BLE: 🤔
45+
* Multi-bit SPI: 🤔
46+
* I2C/SPI Slave: 🤔
47+
6248

6349

6450

@@ -79,6 +65,7 @@ The goal of this Arduino Core is to provide excellent Apollo3 support in a clear
7965

8066
## Repo Contents
8167

68+
* bootloaders: source code and binary images of the SparkFun Variable Loader (SVL)
8269
* cores : source code and headers common to all Apollo3 Arduino boards
8370
* docs :
8471
* CONTRIBUTING.md

boards.txt

+88-54
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@
1919
# SOFTWARE.
2020

2121
# Menu Options
22-
menu.svl_baud=SVL Baud Rate
2322
menu.loader=Bootloader
23+
menu.svl_baud=SVL Baud Rate
24+
menu.sbl_baud=Ambiq Secure Bootloader Baud Rate
2425

2526

2627

@@ -30,6 +31,7 @@ artemis.name=SparkFun Artemis Module
3031
artemis.build.variant=SparkFun_Artemis
3132
artemis.build.board=SFE_ARTEMIS
3233
artemis.upload.maximum_size=960000
34+
artemis.upload.sbl_baud=115200
3335
artemis.build.arch=APOLLO3
3436
artemis.build.mcu=cortex-m4
3537
artemis.build.f_cpu=48000000L
@@ -47,11 +49,11 @@ artemis.menu.svl_baud.57600=57600
4749
artemis.menu.loader.sparkfun_svl=SparkFun Variable Loader (Recommended)
4850
artemis.menu.loader.ambiq_sbl=Ambiq Secure Bootloader (Advanced)
4951

50-
artemis.menu.svl_baud.57600.upload.baud=57600
51-
artemis.menu.svl_baud.115200.upload.baud=115200
52-
artemis.menu.svl_baud.230400.upload.baud=230400
53-
artemis.menu.svl_baud.460800.upload.baud=460800
54-
artemis.menu.svl_baud.921600.upload.baud=921600
52+
artemis.menu.svl_baud.57600.upload.svl_baud=57600
53+
artemis.menu.svl_baud.115200.upload.svl_baud=115200
54+
artemis.menu.svl_baud.230400.upload.svl_baud=230400
55+
artemis.menu.svl_baud.460800.upload.svl_baud=460800
56+
artemis.menu.svl_baud.921600.upload.svl_baud=921600
5557

5658
artemis.menu.loader.ambiq_sbl.upload.tool=ambiq_bin2board
5759
artemis.menu.loader.ambiq_sbl.build.ldscript={build.variant.path}/linker_scripts/gcc/ambiq_sbl_app.ld
@@ -66,6 +68,7 @@ amap3blackboard.name=SparkFun BlackBoard Artemis
6668
amap3blackboard.build.variant=SparkFun_BlackBoard_Artemis
6769
amap3blackboard.build.board=AM_AP3_SFE_BB_ARTEMIS
6870
amap3blackboard.upload.maximum_size=960000
71+
amap3blackboard.upload.sbl_baud=115200
6972
amap3blackboard.build.arch=APOLLO3
7073
amap3blackboard.build.mcu=cortex-m4
7174
amap3blackboard.build.f_cpu=48000000L
@@ -84,11 +87,11 @@ amap3blackboard.menu.svl_baud.57600=57600
8487
amap3blackboard.menu.loader.sparkfun_svl=SparkFun Variable Loader (Recommended)
8588
amap3blackboard.menu.loader.ambiq_sbl=Ambiq Secure Bootloader (Advanced)
8689

87-
amap3blackboard.menu.svl_baud.57600.upload.baud=57600
88-
amap3blackboard.menu.svl_baud.115200.upload.baud=115200
89-
amap3blackboard.menu.svl_baud.230400.upload.baud=230400
90-
amap3blackboard.menu.svl_baud.460800.upload.baud=460800
91-
amap3blackboard.menu.svl_baud.921600.upload.baud=921600
90+
amap3blackboard.menu.svl_baud.57600.upload.svl_baud=57600
91+
amap3blackboard.menu.svl_baud.115200.upload.svl_baud=115200
92+
amap3blackboard.menu.svl_baud.230400.upload.svl_baud=230400
93+
amap3blackboard.menu.svl_baud.460800.upload.svl_baud=460800
94+
amap3blackboard.menu.svl_baud.921600.upload.svl_baud=921600
9295

9396
amap3blackboard.menu.loader.ambiq_sbl.upload.tool=ambiq_bin2board
9497
amap3blackboard.menu.loader.ambiq_sbl.build.ldscript={build.variant.path}/linker_scripts/gcc/ambiq_sbl_app.ld
@@ -102,6 +105,7 @@ amap3nano.name=SparkFun BlackBoard Artemis Nano
102105
amap3nano.build.variant=SparkFun_BlackBoard_Artemis_Nano
103106
amap3nano.build.board=AM_AP3_SFE_BB_ARTEMIS_NANO
104107
amap3nano.upload.maximum_size=960000
108+
amap3nano.upload.sbl_baud=115200
105109
amap3nano.build.arch=APOLLO3
106110
amap3nano.build.mcu=cortex-m4
107111
amap3nano.build.f_cpu=48000000L
@@ -120,11 +124,11 @@ amap3nano.menu.svl_baud.57600=57600
120124
amap3nano.menu.loader.sparkfun_svl=SparkFun Variable Loader (Recommended)
121125
amap3nano.menu.loader.ambiq_sbl=Ambiq Secure Bootloader (Advanced)
122126

123-
amap3nano.menu.svl_baud.57600.upload.baud=57600
124-
amap3nano.menu.svl_baud.115200.upload.baud=115200
125-
amap3nano.menu.svl_baud.230400.upload.baud=230400
126-
amap3nano.menu.svl_baud.460800.upload.baud=460800
127-
amap3nano.menu.svl_baud.921600.upload.baud=921600
127+
amap3nano.menu.svl_baud.57600.upload.svl_baud=57600
128+
amap3nano.menu.svl_baud.115200.upload.svl_baud=115200
129+
amap3nano.menu.svl_baud.230400.upload.svl_baud=230400
130+
amap3nano.menu.svl_baud.460800.upload.svl_baud=460800
131+
amap3nano.menu.svl_baud.921600.upload.svl_baud=921600
128132

129133
amap3nano.menu.loader.ambiq_sbl.upload.tool=ambiq_bin2board
130134
amap3nano.menu.loader.ambiq_sbl.build.ldscript={build.variant.path}/linker_scripts/gcc/ambiq_sbl_app.ld
@@ -138,6 +142,7 @@ amap3atp.name=SparkFun BlackBoard Artemis ATP
138142
amap3atp.build.variant=SparkFun_BlackBoard_Artemis_ATP
139143
amap3atp.build.board=AM_AP3_SFE_BB_ARTEMIS_ATP
140144
amap3atp.upload.maximum_size=960000
145+
amap3atp.upload.sbl_baud=115200
141146
amap3atp.build.arch=APOLLO3
142147
amap3atp.build.mcu=cortex-m4
143148
amap3atp.build.f_cpu=48000000L
@@ -156,11 +161,11 @@ amap3atp.menu.svl_baud.57600=57600
156161
amap3atp.menu.loader.sparkfun_svl=SparkFun Variable Loader (Recommended)
157162
amap3atp.menu.loader.ambiq_sbl=Ambiq Secure Bootloader (Advanced)
158163

159-
amap3atp.menu.svl_baud.57600.upload.baud=57600
160-
amap3atp.menu.svl_baud.115200.upload.baud=115200
161-
amap3atp.menu.svl_baud.230400.upload.baud=230400
162-
amap3atp.menu.svl_baud.460800.upload.baud=460800
163-
amap3atp.menu.svl_baud.921600.upload.baud=921600
164+
amap3atp.menu.svl_baud.57600.upload.svl_baud=57600
165+
amap3atp.menu.svl_baud.115200.upload.svl_baud=115200
166+
amap3atp.menu.svl_baud.230400.upload.svl_baud=230400
167+
amap3atp.menu.svl_baud.460800.upload.svl_baud=460800
168+
amap3atp.menu.svl_baud.921600.upload.svl_baud=921600
164169

165170
amap3atp.menu.loader.ambiq_sbl.upload.tool=ambiq_bin2board
166171
amap3atp.menu.loader.ambiq_sbl.build.ldscript={build.variant.path}/linker_scripts/gcc/ambiq_sbl_app.ld
@@ -175,7 +180,6 @@ edge.build.variant=SparkFun_Edge
175180
edge.build.board=SFE_EDGE
176181
edge.upload.tool=ambiq_bin2board
177182
edge.upload.maximum_size=960000
178-
edge.upload.baud=115200
179183
edge.build.arch=APOLLO3
180184
edge.build.mcu=cortex-m4
181185
edge.build.f_cpu=48000000L
@@ -186,40 +190,70 @@ edge.build.libs=
186190
edge.build.extra_flags=-DPART_apollo3 -DAM_PACKAGE_BGA -DAM_PART_APOLLO3
187191
edge.build.ldscript={build.variant.path}/linker_scripts/gcc/ambiq_sbl_app.ld
188192

193+
edge.menu.sbl_baud.921600=921600 (Default)
194+
edge.menu.sbl_baud.115200=115200 (TensorFlow Conference Versions)
195+
196+
edge.menu.svl_baud.921600=921600
197+
edge.menu.svl_baud.460800=460800
198+
edge.menu.svl_baud.230400=230400
199+
edge.menu.svl_baud.115200=115200
200+
edge.menu.svl_baud.57600=57600
201+
202+
edge.menu.loader.ambiq_sbl=Ambiq Secure Bootloader (Default)
203+
edge.menu.loader.sparkfun_svl=SparkFun Variable Loader (Enable w/ Artemis Bootloader)
204+
205+
edge.menu.sbl_baud.115200.upload.sbl_baud=115200
206+
edge.menu.sbl_baud.921600.upload.sbl_baud=921600
207+
208+
edge.menu.svl_baud.57600.upload.svl_baud=57600
209+
edge.menu.svl_baud.115200.upload.svl_baud=115200
210+
edge.menu.svl_baud.230400.upload.svl_baud=230400
211+
edge.menu.svl_baud.460800.upload.svl_baud=460800
212+
edge.menu.svl_baud.921600.upload.svl_baud=921600
213+
214+
edge.menu.loader.ambiq_sbl.upload.tool=ambiq_bin2board
215+
edge.menu.loader.ambiq_sbl.build.ldscript={build.variant.path}/linker_scripts/gcc/ambiq_sbl_app.ld
216+
217+
edge.menu.loader.sparkfun_svl.upload.tool=artemis_svl
218+
edge.menu.loader.sparkfun_svl.build.ldscript={build.variant.path}/linker_scripts/gcc/artemis_sbl_svl_app.ld
219+
220+
221+
189222
###############################################################
190223

191-
edgeV2.name=SparkFun Edge V2
192-
edgeV2.build.variant=SparkFun_Edge_V2
193-
edgeV2.build.board=SFE_EDGE_V2
194-
edgeV2.upload.maximum_size=960000
195-
edgeV2.build.arch=APOLLO3
196-
edgeV2.build.mcu=cortex-m4
197-
edgeV2.build.f_cpu=48000000L
198-
edgeV2.build.core=arduino
199-
edgeV2.build.includes=-I{build.variant.path}/config
200-
edgeV2.build.extra_flags=-DPART_apollo3 -DAM_PACKAGE_BGA -DAM_PART_APOLLO3
201-
edgeV2.build.ldscript={build.variant.path}/linker_scripts/gcc/flash_with_bootloader.ld
202-
edgeV2.build.defs=
203-
edgeV2.build.libs=
204-
edgeV2.menu.svl_baud.921600=921600
205-
edgeV2.menu.svl_baud.460800=460800
206-
edgeV2.menu.svl_baud.230400=230400
207-
edgeV2.menu.svl_baud.115200=115200
208-
edgeV2.menu.svl_baud.57600=57600
209-
edgeV2.menu.loader.sparkfun_svl=SparkFun Variable Loader (Recommended)
210-
edgeV2.menu.loader.ambiq_sbl=Ambiq Secure Bootloader (Advanced)
211-
212-
edgeV2.menu.svl_baud.57600.upload.baud=57600
213-
edgeV2.menu.svl_baud.115200.upload.baud=115200
214-
edgeV2.menu.svl_baud.230400.upload.baud=230400
215-
edgeV2.menu.svl_baud.460800.upload.baud=460800
216-
edgeV2.menu.svl_baud.921600.upload.baud=921600
217-
218-
edgeV2.menu.loader.ambiq_sbl.upload.tool=ambiq_bin2board
219-
edgeV2.menu.loader.ambiq_sbl.build.ldscript={build.variant.path}/linker_scripts/gcc/ambiq_sbl_app.ld
220-
221-
edgeV2.menu.loader.sparkfun_svl.upload.tool=artemis_svl
222-
edgeV2.menu.loader.sparkfun_svl.build.ldscript={build.variant.path}/linker_scripts/gcc/artemis_sbl_svl_app.ld
224+
edge2.name=SparkFun Edge2
225+
edge2.build.variant=SparkFun_Edge2
226+
edge2.build.board=SFE_EDGE2
227+
edge2.upload.maximum_size=960000
228+
edge2.upload.sbl_baud=115200
229+
edge2.build.arch=APOLLO3
230+
edge2.build.mcu=cortex-m4
231+
edge2.build.f_cpu=48000000L
232+
edge2.build.core=arduino
233+
edge2.build.includes=-I{build.variant.path}/config
234+
edge2.build.extra_flags=-DPART_apollo3 -DAM_PACKAGE_BGA -DAM_PART_APOLLO3
235+
edge2.build.ldscript={build.variant.path}/linker_scripts/gcc/flash_with_bootloader.ld
236+
edge2.build.defs=
237+
edge2.build.libs=
238+
edge2.menu.svl_baud.921600=921600
239+
edge2.menu.svl_baud.460800=460800
240+
edge2.menu.svl_baud.230400=230400
241+
edge2.menu.svl_baud.115200=115200
242+
edge2.menu.svl_baud.57600=57600
243+
edge2.menu.loader.sparkfun_svl=SparkFun Variable Loader (Recommended)
244+
edge2.menu.loader.ambiq_sbl=Ambiq Secure Bootloader (Advanced)
245+
246+
edge2.menu.svl_baud.57600.upload.svl_baud=57600
247+
edge2.menu.svl_baud.115200.upload.svl_baud=115200
248+
edge2.menu.svl_baud.230400.upload.svl_baud=230400
249+
edge2.menu.svl_baud.460800.upload.svl_baud=460800
250+
edge2.menu.svl_baud.921600.upload.svl_baud=921600
251+
252+
edge2.menu.loader.ambiq_sbl.upload.tool=ambiq_bin2board
253+
edge2.menu.loader.ambiq_sbl.build.ldscript={build.variant.path}/linker_scripts/gcc/ambiq_sbl_app.ld
254+
255+
edge2.menu.loader.sparkfun_svl.upload.tool=artemis_svl
256+
edge2.menu.loader.sparkfun_svl.build.ldscript={build.variant.path}/linker_scripts/gcc/artemis_sbl_svl_app.ld
223257

224258
###############################################################
225259

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#******************************************************************************
2+
#
3+
# Makefile - Rules for compiling
4+
#
5+
# Copyright (c) 2019, Ambiq Micro
6+
# All rights reserved.
7+
#
8+
# Redistribution and use in source and binary forms, with or without
9+
# modification, are permitted provided that the following conditions are met:
10+
#
11+
# 1. Redistributions of source code must retain the above copyright notice,
12+
# this list of conditions and the following disclaimer.
13+
#
14+
# 2. Redistributions in binary form must reproduce the above copyright
15+
# notice, this list of conditions and the following disclaimer in the
16+
# documentation and/or other materials provided with the distribution.
17+
#
18+
# 3. Neither the name of the copyright holder nor the names of its
19+
# contributors may be used to endorse or promote products derived from this
20+
# software without specific prior written permission.
21+
#
22+
# Third party software included in this distribution is subject to the
23+
# additional license terms as defined in the /docs/licenses directory.
24+
#
25+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
29+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35+
# POSSIBILITY OF SUCH DAMAGE.
36+
#
37+
# This is part of revision 2.1.0 of the AmbiqSuite Development Package.
38+
#
39+
#******************************************************************************
40+
41+
# All makefiles use this to find the top level directory.
42+
SWROOT?=../../../..
43+
44+
# Include rules for building generic examples.
45+
include $(SWROOT)/makedefs/example.mk
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
Name:
2+
=====
3+
artemis_svl
4+
5+
6+
Description:
7+
============
8+
Variable baud rate bootloader for Apollo3/Artemis
9+
10+
11+
Usage:
12+
=====
13+
This source code is provided mostly for reference. The easiest way to upload the SVL is by using the Arduino "burn bootloader" tool and selecting "Ambiq Secure Bootloader" as the "Programmer" option.
14+
15+
If you want to make changes you can compile and upload the artemis_svl using the AmbiqSuite SDK.
16+
17+
18+
******************************************************************************
19+
20+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*bin*

0 commit comments

Comments
 (0)