From 145478d019e2fb8b14fe0b7a2723e247b0a4cc18 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 5 Sep 2019 14:56:11 +0200 Subject: [PATCH 1/3] Allow multiple instances of the same 'required_tool' in cores Fix #166 --- .../cores/packagemanager/package_manager.go | 5 +- .../packagemanager/package_manager_test.go | 28 +- .../data_dir_1/package_adafruit_index.json | 4152 +++++++++++++++++ .../adafruit/hardware/samd/1.5.3/boards.txt | 1259 +++++ .../adafruit/hardware/samd/1.5.3/keywords.txt | 3 + .../adafruit/hardware/samd/1.5.3/platform.txt | 193 + .../hardware/samd/1.5.3/programmers.txt | 30 + .../arduino/tools/CMSIS-Atmel/1.2.0/.keep | 0 .../packages/arduino/tools/CMSIS/4.5.0/.keep | 0 .../arm-none-eabi-gcc/4.8.3-2014q1/.keep | 0 .../packages/arduino/tools/bossac/1.7.0/.keep | 0 .../tools/bossac/1.8.0-48-gb176eee/.keep | 0 .../arduino/tools/openocd/0.9.0-arduino/.keep | 0 commands/upload/upload.go | 1 + 14 files changed, 5667 insertions(+), 4 deletions(-) create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/package_adafruit_index.json create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/boards.txt create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/keywords.txt create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/platform.txt create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/programmers.txt create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/CMSIS-Atmel/1.2.0/.keep create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/CMSIS/4.5.0/.keep create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/.keep create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/bossac/1.7.0/.keep create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/bossac/1.8.0-48-gb176eee/.keep create mode 100644 arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/openocd/0.9.0-arduino/.keep diff --git a/arduino/cores/packagemanager/package_manager.go b/arduino/cores/packagemanager/package_manager.go index b9390110418..fba5db6a6b5 100644 --- a/arduino/cores/packagemanager/package_manager.go +++ b/arduino/cores/packagemanager/package_manager.go @@ -403,16 +403,17 @@ func (pm *PackageManager) FindToolsRequiredForBoard(board *cores.Board) ([]*core } // replace the default tools above with the specific required by the current platform + requiredTools := []*cores.ToolRelease{} for _, toolDep := range platform.Dependencies { pm.Log.WithField("tool", toolDep).Infof("Required tool") tool := pm.FindToolDependency(toolDep) if tool == nil { return nil, fmt.Errorf("tool release not found: %s", toolDep) } - foundTools[tool.Tool.Name] = tool + requiredTools = append(requiredTools, tool) + delete(foundTools, tool.Tool.Name) } - requiredTools := []*cores.ToolRelease{} for _, toolRel := range foundTools { requiredTools = append(requiredTools, toolRel) } diff --git a/arduino/cores/packagemanager/package_manager_test.go b/arduino/cores/packagemanager/package_manager_test.go index 760a78188a5..ccf537616d9 100644 --- a/arduino/cores/packagemanager/package_manager_test.go +++ b/arduino/cores/packagemanager/package_manager_test.go @@ -21,14 +21,13 @@ import ( "net/url" "testing" - "go.bug.st/relaxed-semver" - "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/configs" "github.com/arduino/go-paths-helper" "github.com/arduino/go-properties-orderedmap" "github.com/stretchr/testify/require" + semver "go.bug.st/relaxed-semver" ) var customHardware = paths.New("testdata", "custom_hardware") @@ -102,6 +101,7 @@ func TestFindToolsRequiredForBoard(t *testing.T) { } loadIndex("https://dl.espressif.com/dl/package_esp32_index.json") loadIndex("http://arduino.esp8266.com/stable/package_esp8266com_index.json") + loadIndex("https://adafruit.github.io/arduino-board-index/package_adafruit_index.json") require.NoError(t, pm.LoadHardware(conf)) esp32, err := pm.FindBoardWithFQBN("esp32:esp32:esp32") require.NoError(t, err) @@ -138,4 +138,28 @@ func TestFindToolsRequiredForBoard(t *testing.T) { testConflictingToolsInDifferentPackages() testConflictingToolsInDifferentPackages() testConflictingToolsInDifferentPackages() + + feather, err := pm.FindBoardWithFQBN("adafruit:samd:adafruit_feather_m0_express") + require.NoError(t, err) + require.NotNil(t, feather) + featherTools, err := pm.FindToolsRequiredForBoard(feather) + require.NoError(t, err) + require.NotNil(t, featherTools) + + // Test when a package index requires two different version of the same tool + // See: https://github.com/arduino/arduino-cli/issues/166#issuecomment-528295989 + bossac17 := pm.FindToolDependency(&cores.ToolDependency{ + ToolPackager: "arduino", + ToolName: "bossac", + ToolVersion: semver.ParseRelaxed("1.7.0"), + }) + require.NotNil(t, bossac17) + bossac18 := pm.FindToolDependency(&cores.ToolDependency{ + ToolPackager: "arduino", + ToolName: "bossac", + ToolVersion: semver.ParseRelaxed("1.8.0-48-gb176eee"), + }) + require.NotNil(t, bossac18) + require.Contains(t, featherTools, bossac17) + require.Contains(t, featherTools, bossac18) } diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/package_adafruit_index.json b/arduino/cores/packagemanager/testdata/data_dir_1/package_adafruit_index.json new file mode 100644 index 00000000000..e5effeee53f --- /dev/null +++ b/arduino/cores/packagemanager/testdata/data_dir_1/package_adafruit_index.json @@ -0,0 +1,4152 @@ +{ + "packages": [ + { + "websiteURL": "https://adafruit.com", + "tools": [ + { + "systems": [ + { + "host": "i386-apple-darwin11", + "checksum": "MD5:603bcce8e59683ac27054b3197a53254", + "size": "96372129", + "archiveFileName": "gcc-arm-none-eabi-5_2-2015q4-20151219-mac.tar.bz2", + "url": "https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/download/gcc-5_2-2015q4/gcc-arm-none-eabi-5_2-2015q4-20151219-mac.tar.bz2" + }, + { + "host": "i686-linux-gnu", + "checksum": "MD5:f88caac80b4444a17344f57ccb760b90", + "size": "92811866", + "archiveFileName": "gcc-arm-none-eabi-5_2-2015q4-20151219-linux.tar.bz2", + "url": "https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/download/gcc-5_2-2015q4/gcc-arm-none-eabi-5_2-2015q4-20151219-linux.tar.bz2" + }, + { + "host": "x86_64-pc-linux-gnu", + "checksum": "MD5:f88caac80b4444a17344f57ccb760b90", + "size": "92811866", + "archiveFileName": "gcc-arm-none-eabi-5_2-2015q4-20151219-linux.tar.bz2", + "url": "https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/download/gcc-5_2-2015q4/gcc-arm-none-eabi-5_2-2015q4-20151219-linux.tar.bz2" + }, + { + "host": "i686-mingw32", + "checksum": "MD5:32d950225b6c7c886f6225c1fc578934", + "size": "102981732", + "archiveFileName": "gcc-arm-none-eabi-5_2-2015q4-20151219-win32.tar.bz2", + "url": "https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/download/gcc-5_2-2015q4/gcc-arm-none-eabi-5_2-2015q4-20151219-win32.tar.bz2" + } + ], + "name": "gcc-arm-none-eabi", + "version": "5_2-2015q4" + }, + { + "systems": [ + { + "host": "i386-apple-darwin11", + "checksum": "MD5:04f65e24f36d55d10b71c1ebf49cd070", + "size": "362222", + "archiveFileName": "nrfjprog-9.4.0-mac.tar.bz2", + "url": "https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/download/gcc-5_2-2015q4/nrfjprog-9.4.0-mac.tar.bz2" + }, + { + "host": "i686-linux-gnu", + "checksum": "MD5:9cf73f1f78cb8e249ed4e6f963d08a35", + "size": "177428", + "archiveFileName": "nrfjprog-9.4.0-linux32.tar.bz2", + "url": "https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/download/gcc-5_2-2015q4/nrfjprog-9.4.0-linux32.tar.bz2" + }, + { + "host": "x86_64-pc-linux-gnu", + "checksum": "MD5:da3c7b348e0c22766f175a4a9cca0d19", + "size": "190020", + "archiveFileName": "nrfjprog-9.4.0-linux64.tar.bz2", + "url": "https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/download/gcc-5_2-2015q4/nrfjprog-9.4.0-linux64.tar.bz2" + }, + { + "host": "i686-mingw32", + "checksum": "MD5:8352392ae0272173e1508d1218f51671", + "size": "851576", + "archiveFileName": "nrfjprog-9.4.0-win32.tar.bz2", + "url": "https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/download/gcc-5_2-2015q4/nrfjprog-9.4.0-win32.tar.bz2" + } + ], + "name": "nrfjprog", + "version": "9.4.0" + }, + { + "systems": [ + { + "host": "i686-linux-gnu", + "checksum": "MD5:355f25629740182d0ead5bc0b8aad42f", + "size": "28295", + "archiveFileName": "wiced_dfu-1.0.0-linux32.tar.gz", + "url": "https://github.com/adafruit/Adafruit_WICED_Arduino/releases/download/build-tools/wiced_dfu-1.0.0-linux32.tar.gz" + }, + { + "host": "x86_64-pc-linux-gnu", + "checksum": "MD5:ae36e3e3a35ac507955a3ee4f18e4bb7", + "size": "28667", + "archiveFileName": "wiced_dfu-1.0.0-linux64.tar.gz", + "url": "https://github.com/adafruit/Adafruit_WICED_Arduino/releases/download/build-tools/wiced_dfu-1.0.0-linux64.tar.gz" + }, + { + "host": "i386-apple-darwin11", + "checksum": "MD5:df388f13c1c76cb4b88a195e5b179b70", + "size": "3742", + "archiveFileName": "wiced_dfu-1.0.0-mac.tar.gz", + "url": "https://github.com/adafruit/Adafruit_WICED_Arduino/releases/download/build-tools/wiced_dfu-1.0.0-mac.tar.gz" + }, + { + "host": "i686-mingw32", + "checksum": "MD5:7cbb7ab21c6a524285be5326e3a1009e", + "size": "525710", + "archiveFileName": "wiced_dfu-1.0.0-win32.tar.gz", + "url": "https://github.com/adafruit/Adafruit_WICED_Arduino/releases/download/build-tools/wiced_dfu-1.0.0-win32.tar.gz" + } + ], + "name": "wiced_dfu", + "version": "1.0.0" + } + ], + "name": "adafruit", + "email": "info@adafruit.com", + "help": { + "online": "https://forums.adafruit.com" + }, + "maintainer": "Adafruit", + "platforms": [ + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + }, + { + "name": "Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Pro Trinket 3V/12MHz (FTDI)" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.1.0", + "archiveFileName": "adafruit-1.1.0.tar.bz2", + "checksum": "SHA-256:4e72d4267d9a8d86874edcd021dc661854a5136c0eed947a6fe10366bc51e373", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-1.1.0.tar.bz2", + "toolsDependencies": [ + { + "name": "avr-gcc", + "packager": "arduino", + "version": "4.8.1-arduino5" + }, + { + "name": "avrdude", + "packager": "arduino", + "version": "6.0.1-arduino5" + } + ], + "size": "29455" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.2.0", + "archiveFileName": "adafruit-1.2.0.tar.bz2", + "checksum": "SHA-256:90eb3aa4dfa95bd6da723109c6cd69e1915219d4fbc7c17ceaae990912c86778", + "help": { + "online": "https://forums.adafruit.com/" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-1.2.0.tar.bz2", + "toolsDependencies": [], + "size": "5109" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.3.0", + "archiveFileName": "adafruit-1.3.0.tar.bz2", + "checksum": "SHA-256:1a702232b39a0a5c3796bee3010097c07f9e540432ed8baf6b2cf2796bcd7df8", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-1.3.0.tar.bz2", + "toolsDependencies": [], + "size": "5995" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.3.1", + "archiveFileName": "adafruit-1.3.1.tar.bz2", + "checksum": "SHA-256:49dc6efcc9185fec999a6b7ce16888cb822468703db42624125ab401a0612a84", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-1.3.1.tar.bz2", + "toolsDependencies": [], + "size": "88230" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.3.2", + "archiveFileName": "adafruit-1.3.2.tar.bz2", + "checksum": "SHA-256:d70a0f4f3ab9fe161dc664063b820cf00aa4c5aad57d5f7b83b7d784f8300ffb", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-1.3.2.tar.bz2", + "toolsDependencies": [], + "size": "83617" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.3.3", + "archiveFileName": "adafruit-1.3.3.tar.bz2", + "checksum": "SHA-256:680f2c657c663270407f1fdfc36e33d29449fcfcb3a970319fa00bbac1b511a2", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-1.3.3.tar.bz2", + "toolsDependencies": [], + "size": "86696" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.3.4", + "archiveFileName": "adafruit-1.3.4.tar.bz2", + "checksum": "SHA-256:2f6d0538b4bb0470f996ea206cad908175ead2c25e2eeabf34d12ffaa964f4ad", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-1.3.4.tar.bz2", + "toolsDependencies": [], + "size": "90327" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.4.0", + "archiveFileName": "adafruit-1.4.0.tar.bz2", + "checksum": "SHA-256:7802de461380dce1d02ec7aadee99168d4308922c9a562849947a2e8ce7de4ef", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-1.4.0.tar.bz2", + "toolsDependencies": [], + "size": "91879" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.4.1", + "archiveFileName": "adafruit-avr-1.4.1.tar.bz2", + "checksum": "SHA-256:a471fc34389dbc8da25b28021a5dbd96c31e40cfe5f3b216ce06ffa9629e9c65", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.1.tar.bz2", + "toolsDependencies": [], + "size": "86210" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.4.2", + "archiveFileName": "adafruit-avr-1.4.2.tar.bz2", + "checksum": "SHA-256:17cd7ea9a3edc1d3f2d38a4ef772e105449fd74f8d61e9f8d24964864456e0c1", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.2.tar.bz2", + "toolsDependencies": [], + "size": "86378" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.4.3", + "archiveFileName": "adafruit-avr-1.4.3.tar.bz2", + "checksum": "SHA-256:ab34c8994e7e088c792e15a4a07ac63351fb5b1432ce6b3dd86fcd43628d643d", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.3.tar.bz2", + "toolsDependencies": [], + "size": "100273" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.4.4", + "archiveFileName": "adafruit-avr-1.4.4.tar.bz2", + "checksum": "SHA-256:32ef290a5ec48fa067d38a8537d83718bdf998525c4ca53b0415fffad0bc9ddc", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.4.tar.bz2", + "toolsDependencies": [], + "size": "100292" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.4.5", + "archiveFileName": "adafruit-avr-1.4.5.tar.bz2", + "checksum": "SHA-256:8148f91ac5a533414ca23327260610c184013e8cfecb050865cea8ad95e85511", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.5.tar.bz2", + "toolsDependencies": [], + "size": "103939" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.4.6", + "archiveFileName": "adafruit-avr-1.4.6.tar.bz2", + "checksum": "SHA-256:5aee8bda8fa87c65ab760312f7e8d918c77db1457946edf7aadd1e667b2dce82", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.6.tar.bz2", + "toolsDependencies": [], + "size": "106237" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.3", + "archiveFileName": "adafruit-samd-1.0.3.tar.bz2", + "checksum": "SHA-256:f40c7316d39c3fc634eab97d8f75ee7982adb623afec2450528e6503a83c020d", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.3.tar.bz2", + "toolsDependencies": [], + "size": "348053" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.4", + "archiveFileName": "adafruit-samd-1.0.4.tar.bz2", + "checksum": "SHA-256:4fce7f83be4c5e98c3b437a4907c55de37fa1671c445dc95965ad5bce5193407", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.4.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "346802" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.5", + "archiveFileName": "adafruit-samd-1.0.5.tar.bz2", + "checksum": "SHA-256:1669bc0741c764d195785080a2f98b265a383558fc37f71704db68b0b4dcf6f6", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.5.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "346935" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.6", + "archiveFileName": "adafruit-samd-1.0.6.tar.bz2", + "checksum": "SHA-256:851303cf4837e17890e5e6d57114f7a08ebb70bb7919e480d731e4c3876a68a2", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.6.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "347277" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.7", + "archiveFileName": "adafruit-samd-1.0.7.tar.bz2", + "checksum": "SHA-256:646a3b729464fc48c19fdfd58aad6eee2537c524c1eff2f48712f12194c89733", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.7.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "347253" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.8", + "archiveFileName": "adafruit-samd-1.0.8.tar.bz2", + "checksum": "SHA-256:5db5701fdbc550bd5f067266ce0369335b3d84d93f49e4e0ca8024f9fe3194fd", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.8.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "1079915" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "size": "886050", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.7.tar.bz2", + "archiveFileName": "adafruit-avr-1.4.7.tar.bz2", + "checksum": "SHA-256:53a1fbd497b71842d6e2336938b1ea7a95da1f25ad31cfa87f0f4bb681ffea4b", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit AVR Boards", + "toolsDependencies": [], + "version": "1.4.7" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.9", + "archiveFileName": "adafruit-samd-1.0.9.tar.bz2", + "checksum": "SHA-256:6c860af3acc1874a90fff665d0e9fd87f7fc01ecffdc04c989d28823f4eece03", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.9.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "9783793" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "size": "12823905", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.10.tar.bz2", + "archiveFileName": "adafruit-samd-1.0.10.tar.bz2", + "checksum": "SHA-256:f54af194e5e4b53ee2dbbc1aa2f12620356e95839a0d4e2031a0dcf60b73a3d6", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit SAMD Boards", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "version": "1.0.10" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.11", + "archiveFileName": "adafruit-samd-1.0.11.tar.bz2", + "checksum": "SHA-256:a7b94fdbcf141dd1ca264b7e4341dd1eeedb62e4b50f14a38e699f1ce68650b1", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.11.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "12823446" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "size": "640748", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.8.tar.bz2", + "archiveFileName": "adafruit-avr-1.4.8.tar.bz2", + "checksum": "SHA-256:447a72a86ce24664bd5912f407b2e5457a8274c29d2fbf34c830f3517609a811", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit AVR Boards", + "toolsDependencies": [], + "version": "1.4.8" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.12", + "archiveFileName": "adafruit-samd-1.0.12.tar.bz2", + "checksum": "SHA-256:545f645d39463170458c2e113477b149d0f8af4732527bf3c48f328220b9e22f", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.12.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "12904650" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "size": "640425", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.9.tar.bz2", + "archiveFileName": "adafruit-avr-1.4.9.tar.bz2", + "checksum": "SHA-256:2fbc90df3cc0b95816ac39da262ddb6eac5c46e47374768bd7de7c99fac1f3dd", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit AVR Boards", + "toolsDependencies": [], + "version": "1.4.9" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.13", + "archiveFileName": "adafruit-samd-1.0.13.tar.bz2", + "checksum": "SHA-256:c9fbd111222fff1c6d2f8881827ba3de3040ee8d0b874f5a273affd14cff558c", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.13.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "12852574" + }, + { + "boards": [ + { + "name": "Adafruit WICED Feather" + } + ], + "architecture": "wiced", + "size": "54695808", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-wiced-0.6.0.tar.bz2", + "archiveFileName": "adafruit-wiced-0.6.0.tar.bz2", + "checksum": "SHA-256:26a9cf1520f3decba02aa7347e20382c4d2bd453192986bad0ad1db51fc11be6", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit WICED", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + } + ], + "version": "0.6.0" + }, + { + "boards": [ + { + "name": "Adafruit WICED Feather" + } + ], + "architecture": "wiced", + "size": "55380930", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-wiced-0.6.1.tar.bz2", + "archiveFileName": "adafruit-wiced-0.6.1.tar.bz2", + "checksum": "SHA-256:34cfccf28a8b6b0c25bddf1bac0e5aa0bd5f0a2a7fd3b19522eed0bef778e47f", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit WICED", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + } + ], + "version": "0.6.1" + }, + { + "boards": [ + { + "name": "Adafruit WICED Feather" + } + ], + "architecture": "wiced", + "name": "Adafruit WICED", + "category": "Adafruit", + "version": "0.6.2", + "archiveFileName": "adafruit-wiced-0.6.2.tar.bz2", + "checksum": "SHA-256:4724f399495bc8fb3b9511d187e85404c80b62a71f8cf341df294abf985d8b7a", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-wiced-0.6.2.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + } + ], + "size": "57569143" + }, + { + "boards": [ + { + "name": "Adafruit WICED Feather" + } + ], + "architecture": "wiced", + "name": "Adafruit WICED", + "category": "Adafruit", + "version": "0.6.5", + "archiveFileName": "adafruit-wiced-0.6.5.tar.bz2", + "checksum": "SHA-256:8595e6777ec55147a701fd5fbe6383e9677e0ba4ff0da85274fe87b993030f5d", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-wiced-0.6.5.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "wiced_dfu", + "packager": "adafruit", + "version": "1.0.0" + } + ], + "size": "60052272" + }, + { + "boards": [ + { + "name": "Adafruit WICED Feather" + } + ], + "architecture": "wiced", + "name": "Adafruit WICED", + "category": "Adafruit", + "version": "0.6.6", + "archiveFileName": "adafruit-wiced-0.6.6.tar.bz2", + "checksum": "SHA-256:abf96452e448e0ac82b4c86c646c727bdc0f4953b50f4766a1384c97e5a8681e", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-wiced-0.6.6.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "wiced_dfu", + "packager": "adafruit", + "version": "1.0.0" + } + ], + "size": "60215425" + }, + { + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "architecture": "nrf52", + "name": "Adafruit nRF52", + "category": "Adafruit", + "version": "0.5.0", + "archiveFileName": "adafruit-nrf52-0.5.0.tar.bz2", + "checksum": "SHA-256:438bf29e5fd7738972270482e7cd800658f99376b882a74bb66270100e0eea5f", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.5.0.tar.bz2", + "toolsDependencies": [ + { + "name": "gcc-arm-none-eabi", + "packager": "adafruit", + "version": "5_2-2015q4" + } + ], + "size": "15086006" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "size": "16611536", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.15.tar.bz2", + "archiveFileName": "adafruit-samd-1.0.15.tar.bz2", + "checksum": "SHA-256:b2464101280991e8b7534040abf302476be59496b63ad866c387a2b4abfe78c0", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit SAMD Boards", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "version": "1.0.15" + }, + { + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "architecture": "nrf52", + "name": "Adafruit nRF52", + "category": "Adafruit", + "version": "0.5.1", + "archiveFileName": "adafruit-nrf52-0.5.1.tar.bz2", + "checksum": "SHA-256:b9d5d08c821fe6359e22c4060e2891009af0ba769edf74af03d6f7f2a43b1275", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.5.1.tar.bz2", + "toolsDependencies": [ + { + "name": "gcc-arm-none-eabi", + "packager": "adafruit", + "version": "5_2-2015q4" + } + ], + "size": "15142539" + }, + { + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "architecture": "nrf52", + "size": "23355441", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.6.0.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.6.0.tar.bz2", + "checksum": "SHA-256:b0bc660c849a9f2718aa55a62c5d02230d95e0b1fe3cb5a6ea2ec6db636065e2", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit nRF52", + "toolsDependencies": [ + { + "name": "gcc-arm-none-eabi", + "packager": "adafruit", + "version": "5_2-2015q4" + }, + { + "name": "nrfjprog", + "packager": "adafruit", + "version": "9.4.0" + } + ], + "version": "0.6.0" + }, + { + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "architecture": "nrf52", + "name": "Adafruit nRF52", + "category": "Adafruit", + "version": "0.6.5", + "archiveFileName": "adafruit-nrf52-0.6.5.tar.bz2", + "checksum": "SHA-256:a685df1cf05c486bc7046dc2e6c028e08a4e7abcb17be2abf46d7300322c4dfd", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.6.5.tar.bz2", + "toolsDependencies": [ + { + "name": "gcc-arm-none-eabi", + "packager": "adafruit", + "version": "5_2-2015q4" + }, + { + "name": "nrfjprog", + "packager": "adafruit", + "version": "9.4.0" + } + ], + "size": "26969382" + }, + { + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "architecture": "nrf52", + "size": "22856849", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.7.0.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.7.0.tar.bz2", + "checksum": "SHA-256:731ae052a045c7eacb83cdcafc140a4b8005a026be03adfe5f2277053961941f", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit nRF52", + "toolsDependencies": [ + { + "name": "gcc-arm-none-eabi", + "packager": "adafruit", + "version": "5_2-2015q4" + }, + { + "name": "nrfjprog", + "packager": "adafruit", + "version": "9.4.0" + } + ], + "version": "0.7.0" + }, + { + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "architecture": "nrf52", + "size": "22962173", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.7.5.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.7.5.tar.bz2", + "checksum": "SHA-256:55423da246d5872b961f8adbce1e9a6a680370261cfd2f9814b7419bf9c7b9c7", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit nRF52", + "toolsDependencies": [ + { + "name": "gcc-arm-none-eabi", + "packager": "adafruit", + "version": "5_2-2015q4" + }, + { + "name": "nrfjprog", + "packager": "adafruit", + "version": "9.4.0" + } + ], + "version": "0.7.5" + }, + { + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "architecture": "nrf52", + "size": "25160979", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.8.0.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.8.0.tar.bz2", + "checksum": "SHA-256:f38c5c2d6cfc3a64d1fea8107bcaebb1818b41141e97001647cb388ee6b50f53", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit nRF52", + "toolsDependencies": [ + { + "name": "gcc-arm-none-eabi", + "packager": "adafruit", + "version": "5_2-2015q4" + }, + { + "name": "nrfjprog", + "packager": "adafruit", + "version": "9.4.0" + } + ], + "version": "0.8.0" + }, + { + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "architecture": "nrf52", + "size": "30180997", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.8.1.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.8.1.tar.bz2", + "checksum": "SHA-256:4418bb97a2e10a9d67a887d7e56c66d4529e25ddfa447dee4820c21c2073c467", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit nRF52", + "toolsDependencies": [ + { + "name": "gcc-arm-none-eabi", + "packager": "adafruit", + "version": "5_2-2015q4" + }, + { + "name": "nrfjprog", + "packager": "adafruit", + "version": "9.4.0" + } + ], + "version": "0.8.1" + }, + { + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "architecture": "nrf52", + "size": "30488307", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.8.2.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.8.2.tar.bz2", + "checksum": "SHA-256:fe8479ec08642ffc482e3f192b51ef3282b3168159f3353182be9cd79ffdcf9a", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit nRF52", + "toolsDependencies": [ + { + "name": "gcc-arm-none-eabi", + "packager": "adafruit", + "version": "5_2-2015q4" + }, + { + "name": "nrfjprog", + "packager": "adafruit", + "version": "9.4.0" + } + ], + "version": "0.8.2" + }, + { + "architecture": "nrf52", + "checksum": "SHA-256:f37f3435925cc40b23897e0009e291115bf4f42b3527414f5ddb214b21668afe", + "name": "Adafruit nRF52", + "category": "Adafruit", + "version": "0.8.3", + "archiveFileName": "adafruit-nrf52-0.8.3.tar.bz2", + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.8.3.tar.bz2", + "toolsDependencies": [ + { + "name": "gcc-arm-none-eabi", + "packager": "adafruit", + "version": "5_2-2015q4" + }, + { + "name": "nrfjprog", + "packager": "adafruit", + "version": "9.4.0" + } + ], + "size": "27734401" + }, + { + "category": "Adafruit", + "name": "Adafruit nRF52", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.8.4.tar.bz2", + "checksum": "SHA-256:3b802fdf7337fe06a44d90e274e571ba368503d88a452fdf2425cc0eeb350101", + "help": { + "online": "https://forums.adafruit.com" + }, + "version": "0.8.4", + "architecture": "nrf52", + "archiveFileName": "adafruit-nrf52-0.8.4.tar.bz2", + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "adafruit", + "version": "5_2-2015q4", + "name": "gcc-arm-none-eabi" + }, + { + "packager": "adafruit", + "version": "9.4.0", + "name": "nrfjprog" + } + ], + "size": "29558725" + }, + { + "category": "Adafruit", + "name": "Adafruit nRF52", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.8.5.tar.bz2", + "checksum": "SHA-256:f86df6b3b6e00d87c57cbf4a5ac9ea9a165e7e79a1c69ca1efd4ecd31c3bcd4a", + "help": { + "online": "https://forums.adafruit.com" + }, + "version": "0.8.5", + "architecture": "nrf52", + "archiveFileName": "adafruit-nrf52-0.8.5.tar.bz2", + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "adafruit", + "version": "5_2-2015q4", + "name": "gcc-arm-none-eabi" + }, + { + "packager": "adafruit", + "version": "9.4.0", + "name": "nrfjprog" + } + ], + "size": "21139202" + }, + { + "name": "Adafruit nRF52", + "architecture": "nrf52", + "version": "0.8.6", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.8.6.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.8.6.tar.bz2", + "checksum": "SHA-256:0c5556143aaddd4fe40b0eb6d9938c2b11a9f091439020e0fe35d8e054f11f71", + "size": "20909866", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "adafruit", + "name": "gcc-arm-none-eabi", + "version": "5_2-2015q4" + }, + { + "packager": "adafruit", + "name": "nrfjprog", + "version": "9.4.0" + } + ] + }, + { + "name": "Adafruit nRF52", + "architecture": "nrf52", + "version": "0.9.0", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.9.0.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.9.0.tar.bz2", + "checksum": "SHA-256:5c0beb2c2fabac40e1ef63e14e2d8924695429a252a28dc79f2136995aba967e", + "size": "17231022", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "adafruit", + "name": "gcc-arm-none-eabi", + "version": "5_2-2015q4" + }, + { + "packager": "adafruit", + "name": "nrfjprog", + "version": "9.4.0" + } + ] + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.17", + "archiveFileName": "adafruit-samd-1.0.17.tar.bz2", + "checksum": "SHA-256:aaa17740dd1e70a61c37d2ab0c06faca051a4e31b20b3900aec7ff55b61ffc64", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.17.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "16687960" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "size": "16658112", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.18.tar.bz2", + "archiveFileName": "adafruit-samd-1.0.18.tar.bz2", + "checksum": "SHA-256:1d760c24181632657c4f5952be9e280404f2373a49f17f576d0df6da564c29f8", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit SAMD Boards", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "version": "1.0.18" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "size": "19020618", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.19.tar.bz2", + "archiveFileName": "adafruit-samd-1.0.19.tar.bz2", + "checksum": "SHA-256:d670e3c8e6e9686a86a38725b1e0c92720cc68853d06a3412264876d55bf42a6", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit SAMD Boards", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "version": "1.0.19" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "name": "Adafruit SAMD Boards", + "category": "Adafruit", + "version": "1.0.20", + "archiveFileName": "adafruit-samd-1.0.20.tar.bz2", + "checksum": "SHA-256:337f01367b210d62439ba86a20b30df3bdf699f866c311305875c17bae6c84fd", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.20.tar.bz2", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "19561664" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "size": "19757795", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.21.tar.bz2", + "archiveFileName": "adafruit-samd-1.0.21.tar.bz2", + "checksum": "SHA-256:5273bd1c4bd71fbf74a06cc07db5e4ea3c6db8faa6a0faa0cdc80b68d3b0ab5d", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit SAMD Boards", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "version": "1.0.21" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "name": "Adafruit AVR Boards", + "category": "Adafruit", + "version": "1.4.10", + "archiveFileName": "adafruit-avr-1.4.10.tar.bz2", + "checksum": "SHA-256:9ba950a575eeb5927dc8d1849ed5dc823cbe0585d616f6cc690b5ccef4ffc1fa", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.10.tar.bz2", + "toolsDependencies": [], + "size": "643102" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "size": "643771", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.11.tar.bz2", + "archiveFileName": "adafruit-avr-1.4.11.tar.bz2", + "checksum": "SHA-256:c8e147c95d7b8f43be5e89db76b2184afa9e70c3a90820276e0a4232c9c6ae43", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit AVR Boards", + "toolsDependencies": [], + "version": "1.4.11" + }, + { + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "architecture": "avr", + "checksum": "SHA-256:1cca23e9b254c55c1a3cbe2723f81689968a9aa6d7b8ce7e90d52e5253292271", + "category": "Adafruit", + "version": "1.4.12", + "archiveFileName": "adafruit-avr-1.4.12.tar.bz2", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.12.tar.bz2", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit AVR Boards", + "toolsDependencies": [], + "size": "647288" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + } + ], + "architecture": "samd", + "checksum": "SHA-256:38e972e4a30ddf2accb83a1f508bd5c2445e40e1b6f44b57609b7c53f0fd0ffe", + "category": "Adafruit", + "version": "1.0.22", + "archiveFileName": "adafruit-samd-1.0.22.tar.bz2", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.0.22.tar.bz2", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit SAMD Boards", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.6.1-arduino" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.0.0-atmel" + } + ], + "size": "20886315" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + } + ], + "architecture": "samd", + "checksum": "SHA-256:d66e6f3a42f5c8c43dfbcce1876c9dab3a4bc314fbf9c34ae669bf0ef4bcff0f", + "category": "Adafruit", + "version": "1.1.0", + "archiveFileName": "adafruit-samd-1.1.0.tar.bz2", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.1.0.tar.bz2", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit SAMD Boards", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.8.0-48-gb176eee" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.5.0" + }, + { + "name": "CMSIS-Atmel", + "packager": "arduino", + "version": "1.2.0" + } + ], + "size": "21336008" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + } + ], + "architecture": "samd", + "checksum": "SHA-256:48d4abd580563c576c4208471e654ed7197b1616884174f8f89248e35a05a4b8", + "category": "Adafruit", + "version": "1.2.0", + "archiveFileName": "adafruit-samd-1.2.0.tar.bz2", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.2.0.tar.bz2", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit SAMD Boards", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.8.0-48-gb176eee" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.5.0" + }, + { + "name": "CMSIS-Atmel", + "packager": "arduino", + "version": "1.2.0" + } + ], + "size": "22367965" + }, + { + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + } + ], + "architecture": "samd", + "checksum": "SHA-256:9196dde521709ad43b6acafd6b9ff3a4ec3f393b8c6ccc8aa1e8acc15329673d", + "category": "Adafruit", + "version": "1.2.1", + "archiveFileName": "adafruit-samd-1.2.1.tar.bz2", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.2.1.tar.bz2", + "help": { + "online": "https://forums.adafruit.com" + }, + "name": "Adafruit SAMD Boards", + "toolsDependencies": [ + { + "name": "arm-none-eabi-gcc", + "packager": "arduino", + "version": "4.8.3-2014q1" + }, + { + "name": "bossac", + "packager": "arduino", + "version": "1.8.0-48-gb176eee" + }, + { + "name": "openocd", + "packager": "arduino", + "version": "0.9.0-arduino" + }, + { + "name": "CMSIS", + "packager": "arduino", + "version": "4.5.0" + }, + { + "name": "CMSIS-Atmel", + "packager": "arduino", + "version": "1.2.0" + } + ], + "size": "22388787" + }, + { + "name": "Adafruit AVR Boards", + "architecture": "avr", + "version": "1.4.13", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.13.tar.bz2", + "archiveFileName": "adafruit-avr-1.4.13.tar.bz2", + "checksum": "SHA-256:84e75b705a36bf3ce08d56238846bb81d45a1dd337a290d16e2343186cceeb75", + "size": "644224", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Flora" + }, + { + "name": "Adafruit Gemma 8MHz" + }, + { + "name": "Adafruit Bluefruit Micro" + }, + { + "name": "Adafruit Feather 32u4" + }, + { + "name": "Adafruit Metro" + }, + { + "name": "Adafruit Metro Mini" + }, + { + "name": "Adafruit ItsyBitsy 32u4" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (USB)" + }, + { + "name": "Adafruit Pro Trinket 5V/16MHz (FTDI)" + }, + { + "name": "Adafruit Pro Trinket 3V/12MHz (FTDI)" + }, + { + "name": "Adafruit Trinket 8MHz" + }, + { + "name": "Adafruit Trinket 16MHz" + } + ], + "toolsDependencies": [] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.2.2", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.2.2.tar.bz2", + "archiveFileName": "adafruit-samd-1.2.2.tar.bz2", + "checksum": "SHA-256:a909c70a2871df8db04f4019320b035e895601d5246e3f4641b7bc35c8084ac0", + "size": "23423661", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.2.3", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.2.3.tar.bz2", + "archiveFileName": "adafruit-samd-1.2.3.tar.bz2", + "checksum": "SHA-256:8eb3c7e3dbb8f6d0e7b05bed2b24c0d74d25e6022a4423e8d825ff8db243ce47", + "size": "24571779", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.2.4", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.2.4.tar.bz2", + "archiveFileName": "adafruit-samd-1.2.4.tar.bz2", + "checksum": "SHA-256:60c5172d0c12e06a36225e83254f16a7a470d7d4b40997e164b4a696c181478b", + "size": "25537214", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.2.6", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.2.6.tar.bz2", + "archiveFileName": "adafruit-samd-1.2.6.tar.bz2", + "checksum": "SHA-256:8fd726af5c57fd5bce497a02580fc181584200cb17be16f40865dc71990ed790", + "size": "25545743", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.2.7", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.2.7.tar.bz2", + "archiveFileName": "adafruit-samd-1.2.7.tar.bz2", + "checksum": "SHA-256:298095734322a5c67326264c438fc03f6bea2c80df84e93499965ee76da0d002", + "size": "25573602", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.2.8", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.2.8.tar.bz2", + "archiveFileName": "adafruit-samd-1.2.8.tar.bz2", + "checksum": "SHA-256:c1dcd9b927bf4155da6a36d08e4056acfce18f195a98c769edc18c0464eac0ea", + "size": "9419008", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit nRF52", + "architecture": "nrf52", + "version": "0.9.1", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.9.1.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.9.1.tar.bz2", + "checksum": "SHA-256:2fb619dd47bc962af80ad61b5492b7b2c704becb8ab6810be2c17ab4de49082a", + "size": "17457361", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "adafruit", + "name": "gcc-arm-none-eabi", + "version": "5_2-2015q4" + }, + { + "packager": "adafruit", + "name": "nrfjprog", + "version": "9.4.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.2.9", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.2.9.tar.bz2", + "archiveFileName": "adafruit-samd-1.2.9.tar.bz2", + "checksum": "SHA-256:28f6277176443679a019f6da716dd7df2d5190d6504e464805f871348645b83c", + "size": "10472970", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Hallowing M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Feather M4" + }, + { + "name": "Adafruit Metro M4" + }, + { + "name": "Adafruit ItsyBitsy M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit Trellis M4" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit nRF52", + "architecture": "nrf52", + "version": "0.9.2", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.9.2.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.9.2.tar.bz2", + "checksum": "SHA-256:69a8d64573e58d2a1a3cc5115b09a54c4c3c3ecf837a60f7de77c0fa5885a8c2", + "size": "17274788", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "adafruit", + "name": "gcc-arm-none-eabi", + "version": "5_2-2015q4" + }, + { + "packager": "adafruit", + "name": "nrfjprog", + "version": "9.4.0" + } + ] + }, + { + "name": "Adafruit nRF52", + "architecture": "nrf52", + "version": "0.9.3", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.9.3.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.9.3.tar.bz2", + "checksum": "SHA-256:ba0087930b8b0563f0bf964c875975ceff88b06c09aa9b15fefc0ae2dd11a806", + "size": "17274967", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "adafruit", + "name": "gcc-arm-none-eabi", + "version": "5_2-2015q4" + }, + { + "packager": "adafruit", + "name": "nrfjprog", + "version": "9.4.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.3.0", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.3.0.tar.bz2", + "archiveFileName": "adafruit-samd-1.3.0.tar.bz2", + "checksum": "SHA-256:98063fd43b1cdefb685ca1a98217fb722e7f0927c2a177e013dfcac874ac0ac8", + "size": "10469571", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit nRF52", + "architecture": "nrf52", + "version": "0.10.1", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.10.1.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.10.1.tar.bz2", + "checksum": "SHA-256:79e8738df48652f4425c83b945a3a5f53d96146ee0f64299f79dd900d0807288", + "size": "17558841", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "adafruit", + "name": "gcc-arm-none-eabi", + "version": "5_2-2015q4" + }, + { + "packager": "adafruit", + "name": "nrfjprog", + "version": "9.4.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.4.0", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.4.0.tar.bz2", + "archiveFileName": "adafruit-samd-1.4.0.tar.bz2", + "checksum": "SHA-256:d8ab7773d9bbf63b79d52be8aeeff1c33cfd2d1b90da28ba36b97719f58cb4ab", + "size": "13668960", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit ItsyBitsy M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit Feather M4 Express" + }, + { + "name": "Adafruit Hallowing M0" + }, + { + "name": "Adafruit NeoTrellis M4" + }, + { + "name": "Adafruit PyPortal M4" + }, + { + "name": "Adafruit PyBadge M4" + }, + { + "name": "Adafruit Metro M4 AirLift" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.4.1", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.4.1.tar.bz2", + "archiveFileName": "adafruit-samd-1.4.1.tar.bz2", + "checksum": "SHA-256:2b11b7d22ec8ca85b73349f6075b48a279fe44203d20ea6781b608480e2ba446", + "size": "13667995", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit ItsyBitsy M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit Feather M4 Express" + }, + { + "name": "Adafruit Hallowing M0" + }, + { + "name": "Adafruit NeoTrellis M4" + }, + { + "name": "Adafruit PyPortal M4" + }, + { + "name": "Adafruit PyBadge M4" + }, + { + "name": "Adafruit Metro M4 AirLift" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.5.0", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.5.0.tar.bz2", + "archiveFileName": "adafruit-samd-1.5.0.tar.bz2", + "checksum": "SHA-256:2f9d702b8c464bbdec2ad3e265ba2537c92d5c144e9d27a2c7a11f0b6e12abc4", + "size": "13656807", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit ItsyBitsy M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit Feather M4 Express" + }, + { + "name": "Adafruit Hallowing M0" + }, + { + "name": "Adafruit NeoTrellis M4" + }, + { + "name": "Adafruit PyPortal M4" + }, + { + "name": "Adafruit PyBadge M4" + }, + { + "name": "Adafruit PyGamer M4" + }, + { + "name": "Adafruit Metro M4 AirLift" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.7.0" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit nRF52", + "architecture": "nrf52", + "version": "0.11.0", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.11.0.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.11.0.tar.bz2", + "checksum": "SHA-256:a7ece234b2a42cb68384eaa290cec23ce2e60e500a79939355d30843e3cf7e6a", + "size": "16957683", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "adafruit", + "name": "nrfjprog", + "version": "9.4.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.5.1", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.5.1.tar.bz2", + "archiveFileName": "adafruit-samd-1.5.1.tar.bz2", + "checksum": "SHA-256:caaef227963660b9c47bdf407785a02e817be239230796912179e316a6ddf2be", + "size": "14702608", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit ItsyBitsy M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit Feather M4 Express" + }, + { + "name": "Adafruit Hallowing M0" + }, + { + "name": "Adafruit NeoTrellis M4" + }, + { + "name": "Adafruit PyPortal M4" + }, + { + "name": "Adafruit PyBadge M4" + }, + { + "name": "Adafruit Metro M4 AirLift" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.7.0" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit nRF52", + "architecture": "nrf52", + "version": "0.11.1", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.11.1.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.11.1.tar.bz2", + "checksum": "SHA-256:44c8ceda0710c1009d3c125c011364422aadc69397e86138d9c7638af29a2cc2", + "size": "16964410", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "adafruit", + "name": "nrfjprog", + "version": "9.4.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.5.2", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.5.2.tar.bz2", + "archiveFileName": "adafruit-samd-1.5.2.tar.bz2", + "checksum": "SHA-256:4ea84be363d82398dea03e25d1f3f5d1b40ad9658d73057749faad2a34cb2cac", + "size": "15695783", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit ItsyBitsy M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit Feather M4 Express" + }, + { + "name": "Adafruit Hallowing M0" + }, + { + "name": "Adafruit NeoTrellis M4" + }, + { + "name": "Adafruit PyPortal M4" + }, + { + "name": "Adafruit PyBadge M4" + }, + { + "name": "Adafruit Metro M4 AirLift" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.7.0" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit nRF52", + "architecture": "nrf52", + "version": "0.12.0", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.12.0.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.12.0.tar.bz2", + "checksum": "SHA-256:dc6b3e5c2638ef3e4ea7afa775de679ab9f9f896d8e3700627932b0e841026a9", + "size": "16966706", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Bluefruit nRF52 Feather" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "adafruit", + "name": "nrfjprog", + "version": "9.4.0" + } + ] + }, + { + "name": "Adafruit SAMD Boards", + "architecture": "samd", + "version": "1.5.3", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-samd-1.5.3.tar.bz2", + "archiveFileName": "adafruit-samd-1.5.3.tar.bz2", + "checksum": "SHA-256:9ad23cae349347759e36a38a4abdc47f74546569887b51776eef783ceca65be1", + "size": "18077859", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name": "Adafruit Feather M0" + }, + { + "name": "Adafruit Feather M0 Express" + }, + { + "name": "Adafruit Metro M0 Express" + }, + { + "name": "Adafruit Circuit Playground Express" + }, + { + "name": "Adafruit Gemma M0" + }, + { + "name": "Adafruit Trinket M0" + }, + { + "name": "Adafruit ItsyBitsy M0" + }, + { + "name": "Adafruit pIRkey M0" + }, + { + "name": "Adafruit Metro M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit ItsyBitsy M4" + }, + { + "name": "Adafruit Grand Central M4" + }, + { + "name": "Adafruit Feather M4 Express" + }, + { + "name": "Adafruit Hallowing M0" + }, + { + "name": "Adafruit NeoTrellis M4" + }, + { + "name": "Adafruit PyPortal M4" + }, + { + "name": "Adafruit PyBadge M4" + }, + { + "name": "Adafruit Metro M4 AirLift" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.7.0" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.8.0-48-gb176eee" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.9.0-arduino" + }, + { + "packager": "arduino", + "name": "CMSIS", + "version": "4.5.0" + }, + { + "packager": "arduino", + "name": "CMSIS-Atmel", + "version": "1.2.0" + } + ] + }, + { + "name": "Adafruit nRF52", + "architecture": "nrf52", + "version": "0.13.0", + "category": "Adafruit", + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-nrf52-0.13.0.tar.bz2", + "archiveFileName": "adafruit-nrf52-0.13.0.tar.bz2", + "checksum": "SHA-256:0152741eaeec7af0e480965d79e9ec62291681671bbc502b7d57cf789843471e", + "size": "17543332", + "help": { + "online": "https://forums.adafruit.com" + }, + "boards": [ + { + "name":"Adafruit Feather nRF52832" + }, + { + "name":"Adafruit Feather nRF52840 Express" + }, + { + "name":"Adafruit Circuit Playground Bluefruit" + }, + { + "name":"Adafruit Metro nRF52840 Express" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "adafruit", + "name": "nrfjprog", + "version": "9.4.0" + } + ] + } + ] + }, + { + "websiteURL": "https://github.com/rkistner/arcore", + "tools": [], + "name": "arcore", + "email": "ralf@journeyapps.com", + "help": { + "online": "https://forums.adafruit.com" + }, + "maintainer": "Ralf Kistner", + "platforms": [ + { + "boards": [ + { + "name": "Arduino Leonardo (MIDI)" + }, + { + "name": "Arduino Leonardo (MIDI, iPad compatible)" + }, + { + "name": "Arduino Micro (MIDI)" + } + ], + "architecture": "avr", + "name": "Leonardo & Micro MIDI-USB (arcore)", + "category": "Adafruit", + "version": "1.0.0", + "archiveFileName": "arcore-1.0.0.tar.bz2", + "checksum": "SHA-256:37ec329c16cc5d8f7da810665505107b24d85e6eea7e74d1677615cf7c5bcb01", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/arcore-1.0.0.tar.bz2", + "toolsDependencies": [ + { + "name": "avr-gcc", + "packager": "arduino", + "version": "4.8.1-arduino5" + }, + { + "name": "avrdude", + "packager": "arduino", + "version": "6.0.1-arduino5" + } + ], + "size": "1135927" + } + ] + }, + { + "websiteURL": "https://github.com/adafruit/TeeOnArdu", + "tools": [], + "name": "TeeOnArdu", + "email": "support@adafruit.com", + "help": { + "online": "https://forums.adafruit.com" + }, + "maintainer": "Adafruit", + "platforms": [ + { + "boards": [ + { + "name": "TeeOnArdu (Leo on TeensyCore)" + }, + { + "name": "Flora (TeensyCore)" + } + ], + "architecture": "avr", + "name": "Adafruit TeeOnArdu", + "category": "Adafruit", + "version": "1.0.0", + "archiveFileName": "adafruit-teeonardu-1.0.0.tar.bz2", + "checksum": "SHA-256:5217cdb46a88874e461078167d8bed97d5a97c05602ecf339312a4137041e02c", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-teeonardu-1.0.0.tar.bz2", + "toolsDependencies": [], + "size": "131767" + }, + { + "boards": [ + { + "name": "TeeOnArdu (Leo on TeensyCore)" + }, + { + "name": "Flora (TeensyCore)" + } + ], + "architecture": "avr", + "name": "Adafruit TeeOnArdu", + "category": "Adafruit", + "version": "1.0.1", + "archiveFileName": "adafruit-teeonardu-1.0.1.tar.bz2", + "checksum": "SHA-256:58540d35acb79bfaa6522edf6962684a3aab68dc6dadc2f119fdedd2831b3d0b", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-teeonardu-1.0.1.tar.bz2", + "toolsDependencies": [], + "size": "131742" + }, + { + "boards": [ + { + "name": "TeeOnArdu (Leo on TeensyCore)" + }, + { + "name": "Flora (TeensyCore)" + } + ], + "architecture": "avr", + "name": "Adafruit TeeOnArdu", + "category": "Adafruit", + "version": "1.0.2", + "archiveFileName": "adafruit-teeonardu-1.0.2.tar.bz2", + "checksum": "SHA-256:dd0ab6579b39c99367204d17cb94c4f9086cb92e671f8e44996cad6c5a5786a8", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-teeonardu-1.0.2.tar.bz2", + "toolsDependencies": [], + "size": "396336" + }, + { + "boards": [ + { + "name": "TeeOnArdu (Leo on TeensyCore)" + }, + { + "name": "Flora (TeensyCore)" + } + ], + "architecture": "avr", + "name": "Adafruit TeeOnArdu", + "category": "Adafruit", + "version": "1.0.3", + "archiveFileName": "adafruit-teeonardu-1.0.3.tar.bz2", + "checksum": "SHA-256:bcc67363b0c7040084655a04867ab8bdb4e668b60d07cac805fef756b1875c19", + "help": { + "online": "https://forums.adafruit.com" + }, + "url": "https://adafruit.github.io/arduino-board-index/boards/adafruit-teeonardu-1.0.3.tar.bz2", + "toolsDependencies": [], + "size": "404979" + } + ] + } + ] +} diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/boards.txt b/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/boards.txt new file mode 100644 index 00000000000..dce2ddef250 --- /dev/null +++ b/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/boards.txt @@ -0,0 +1,1259 @@ +# 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 + +menu.cache=Cache +menu.speed=CPU Speed +menu.opt=Optimize +menu.maxqspi=Max QSPI +menu.usbstack=USB Stack +menu.debug=Debug + +# Adafruit Feather M0 (SAMD21) +# ------------------------------ +adafruit_feather_m0.name=Adafruit Feather M0 +adafruit_feather_m0.vid.0=0x239A +adafruit_feather_m0.pid.0=0x800B +adafruit_feather_m0.vid.1=0x239A +adafruit_feather_m0.pid.1=0x000B +adafruit_feather_m0.vid.2=0x239A +adafruit_feather_m0.pid.2=0x0015 +adafruit_feather_m0.upload.tool=bossac +adafruit_feather_m0.upload.protocol=sam-ba +adafruit_feather_m0.upload.maximum_size=262144 +adafruit_feather_m0.upload.offset=0x2000 +adafruit_feather_m0.upload.use_1200bps_touch=true +adafruit_feather_m0.upload.wait_for_upload_port=true +adafruit_feather_m0.upload.native_usb=true +adafruit_feather_m0.build.mcu=cortex-m0plus +adafruit_feather_m0.build.f_cpu=48000000L +adafruit_feather_m0.build.usb_product="Feather M0" +adafruit_feather_m0.build.usb_manufacturer="Adafruit" +adafruit_feather_m0.build.board=SAMD_ZERO +adafruit_feather_m0.build.core=arduino +adafruit_feather_m0.build.extra_flags=-DARDUINO_SAMD_ZERO -DARM_MATH_CM0PLUS -DADAFRUIT_FEATHER_M0 -D__SAMD21G18A__ {build.usb_flags} +adafruit_feather_m0.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_feather_m0.build.openocdscript=openocd_scripts/feather_m0.cfg +adafruit_feather_m0.build.variant=feather_m0 +adafruit_feather_m0.build.variant_system_lib= +adafruit_feather_m0.build.vid=0x239A +adafruit_feather_m0.build.pid=0x800B +adafruit_feather_m0.bootloader.tool=openocd +adafruit_feather_m0.bootloader.file=featherM0/bootloader-feather_m0-v2.0.0-adafruit.5.bin +adafruit_feather_m0.menu.usbstack.arduino=Arduino +adafruit_feather_m0.menu.usbstack.tinyusb=TinyUSB +adafruit_feather_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_feather_m0.menu.debug.off=Off +adafruit_feather_m0.menu.debug.on=On +adafruit_feather_m0.menu.debug.on.build.flags.debug=-g + + +# Adafruit Feather M0 Express (SAMD21) +# ------------------------------ +adafruit_feather_m0_express.name=Adafruit Feather M0 Express +adafruit_feather_m0_express.vid.0=0x239A +adafruit_feather_m0_express.pid.0=0x801B +adafruit_feather_m0_express.vid.1=0x239A +adafruit_feather_m0_express.pid.1=0x001B +adafruit_feather_m0_express.upload.tool=bossac +adafruit_feather_m0_express.upload.protocol=sam-ba +adafruit_feather_m0_express.upload.maximum_size=262144 +adafruit_feather_m0_express.upload.offset=0x2000 +adafruit_feather_m0_express.upload.use_1200bps_touch=true +adafruit_feather_m0_express.upload.wait_for_upload_port=true +adafruit_feather_m0_express.upload.native_usb=true +adafruit_feather_m0_express.build.mcu=cortex-m0plus +adafruit_feather_m0_express.build.f_cpu=48000000L +adafruit_feather_m0_express.build.usb_product="Feather M0 Express" +adafruit_feather_m0_express.build.usb_manufacturer="Adafruit" +adafruit_feather_m0_express.build.board=SAMD_FEATHER_M0_EXPRESS +adafruit_feather_m0_express.build.core=arduino +adafruit_feather_m0_express.build.extra_flags=-DARDUINO_SAMD_ZERO -DARDUINO_SAMD_FEATHER_M0 -DARM_MATH_CM0PLUS -DADAFRUIT_FEATHER_M0_EXPRESS -D__SAMD21G18A__ {build.usb_flags} +adafruit_feather_m0_express.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_feather_m0_express.build.openocdscript=openocd_scripts/feather_m0_express.cfg +adafruit_feather_m0_express.build.variant=feather_m0_express +adafruit_feather_m0_express.build.variant_system_lib= +adafruit_feather_m0_express.build.vid=0x239A +adafruit_feather_m0_express.build.pid=0x801B +adafruit_feather_m0_express.bootloader.tool=openocd +adafruit_feather_m0_express.bootloader.file=featherM0/bootloader-feather_m0-v2.0.0-adafruit.5.bin +adafruit_feather_m0_express.menu.usbstack.arduino=Arduino +adafruit_feather_m0_express.menu.usbstack.tinyusb=TinyUSB +adafruit_feather_m0_express.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_feather_m0_express.menu.debug.off=Off +adafruit_feather_m0_express.menu.debug.on=On +adafruit_feather_m0_express.menu.debug.on.build.flags.debug=-g + + +#adafruit_radio_m0.name=Adafruit M0 Radio (Native USB Port) +#adafruit_radio_m0.vid.0=0x239A +#adafruit_radio_m0.pid.0=0x8014 +#adafruit_radio_m0.vid.1=0x239A +#adafruit_radio_m0.pid.1=0x0014 +#adafruit_radio_m0.upload.tool=bossac +#adafruit_radio_m0.upload.protocol=sam-ba +#adafruit_radio_m0.upload.maximum_size=262144 +#adafruit_radio_m0.upload.use_1200bps_touch=true +#adafruit_radio_m0.upload.wait_for_upload_port=true +#adafruit_radio_m0.upload.native_usb=true +#adafruit_radio_m0.build.mcu=cortex-m0plus +#adafruit_radio_m0.build.f_cpu=48000000L +#adafruit_radio_m0.build.usb_product="Radio M0" +#adafruit_radio_m0.build.usb_manufacturer="Adafruit" +#adafruit_radio_m0.build.board=SAMD_ZERO +#adafruit_radio_m0.build.core=arduino +#adafruit_radio_m0.build.extra_flags=-D__SAMR21G18A__ -DARM_MATH_CM0PLUS {build.usb_flags} +#adafruit_radio_m0.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +#adafruit_radio_m0.build.openocdscript=openocd_scripts/zero_radio.cfg +#adafruit_radio_m0.build.variant=zero_radio +#adafruit_radio_m0.build.variant_system_lib= +#adafruit_radio_m0.build.vid=0x239A +#adafruit_radio_m0.build.pid=0x8014 +#adafruit_radio_m0.bootloader.tool=openocd +#adafruit_radio_m0.bootloader.file=feather/samr21_sam_ba.bin + +# Adafruit Metro M0 Express (SAMD21) +# ------------------------------ +adafruit_metro_m0.name=Adafruit Metro M0 Express +adafruit_metro_m0.vid.0=0x239A +adafruit_metro_m0.pid.0=0x8013 +adafruit_metro_m0.vid.1=0x239A +adafruit_metro_m0.pid.1=0x0013 +adafruit_metro_m0.upload.tool=bossac +adafruit_metro_m0.upload.protocol=sam-ba +adafruit_metro_m0.upload.maximum_size=262144 +adafruit_metro_m0.upload.offset=0x2000 +adafruit_metro_m0.upload.use_1200bps_touch=true +adafruit_metro_m0.upload.wait_for_upload_port=true +adafruit_metro_m0.upload.native_usb=true +adafruit_metro_m0.build.mcu=cortex-m0plus +adafruit_metro_m0.build.f_cpu=48000000L +adafruit_metro_m0.build.usb_product="Metro M0 Express" +adafruit_metro_m0.build.usb_manufacturer="Adafruit" +adafruit_metro_m0.build.board=SAMD_ZERO +adafruit_metro_m0.build.core=arduino +adafruit_metro_m0.build.extra_flags=-D__SAMD21G18A__ -DARDUINO_SAMD_ZERO -DARM_MATH_CM0PLUS -DADAFRUIT_METRO_M0_EXPRESS {build.usb_flags} +adafruit_metro_m0.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_metro_m0.build.openocdscript=openocd_scripts/metro_m0.cfg +adafruit_metro_m0.build.variant=metro_m0 +adafruit_metro_m0.build.variant_system_lib= +adafruit_metro_m0.build.vid=0x239A +adafruit_metro_m0.build.pid=0x8013 +adafruit_metro_m0.bootloader.tool=openocd +adafruit_metro_m0.bootloader.file=metroM0/bootloader-metro_m0-v2.0.0-adafruit.5.bin +adafruit_metro_m0.menu.usbstack.arduino=Arduino +adafruit_metro_m0.menu.usbstack.tinyusb=TinyUSB +adafruit_metro_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_metro_m0.menu.debug.off=Off +adafruit_metro_m0.menu.debug.on=On +adafruit_metro_m0.menu.debug.on.build.flags.debug=-g + + +# Adafruit Circuit Playground Express (SAMD21) +# ------------------------------ +adafruit_circuitplayground_m0.name=Adafruit Circuit Playground Express +adafruit_circuitplayground_m0.vid.0=0x239A +adafruit_circuitplayground_m0.pid.0=0x8018 +adafruit_circuitplayground_m0.vid.1=0x239A +adafruit_circuitplayground_m0.pid.1=0x0019 +adafruit_circuitplayground_m0.upload.tool=bossac +adafruit_circuitplayground_m0.upload.protocol=sam-ba +adafruit_circuitplayground_m0.upload.maximum_size=262144 +adafruit_circuitplayground_m0.upload.offset=0x2000 +adafruit_circuitplayground_m0.upload.use_1200bps_touch=true +adafruit_circuitplayground_m0.upload.wait_for_upload_port=true +adafruit_circuitplayground_m0.upload.native_usb=true +adafruit_circuitplayground_m0.build.mcu=cortex-m0plus +adafruit_circuitplayground_m0.build.f_cpu=48000000L +adafruit_circuitplayground_m0.build.usb_product="Circuit Playground Express" +adafruit_circuitplayground_m0.build.usb_manufacturer="Adafruit" +adafruit_circuitplayground_m0.build.board=SAMD_CIRCUITPLAYGROUND_EXPRESS +adafruit_circuitplayground_m0.build.core=arduino +adafruit_circuitplayground_m0.build.extra_flags=-DCRYSTALLESS -DARDUINO_SAMD_ZERO -D__SAMD21G18A__ -DARM_MATH_CM0PLUS -DADAFRUIT_CIRCUITPLAYGROUND_M0 {build.usb_flags} +adafruit_circuitplayground_m0.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_circuitplayground_m0.build.openocdscript=openocd_scripts/circuit_play.cfg +adafruit_circuitplayground_m0.build.variant=circuitplay +adafruit_circuitplayground_m0.build.variant_system_lib= +adafruit_circuitplayground_m0.build.vid=0x239A +adafruit_circuitplayground_m0.build.pid=0x8018 +adafruit_circuitplayground_m0.bootloader.tool=openocd +adafruit_circuitplayground_m0.bootloader.file=circuitplayM0/bootloader-circuitplay_m0-v2.0.0-adafruit.5.bin +adafruit_circuitplayground_m0.menu.usbstack.arduino=Arduino +adafruit_circuitplayground_m0.menu.usbstack.tinyusb=TinyUSB +adafruit_circuitplayground_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_circuitplayground_m0.menu.debug.off=Off +adafruit_circuitplayground_m0.menu.debug.on=On +adafruit_circuitplayground_m0.menu.debug.on.build.flags.debug=-g + + +# Adafruit Gemma M0 (SAMD21) +# ------------------------------ +adafruit_gemma_m0.name=Adafruit Gemma M0 +adafruit_gemma_m0.vid.0=0x239A +adafruit_gemma_m0.pid.0=0x801C +adafruit_gemma_m0.vid.1=0x239A +adafruit_gemma_m0.pid.1=0x001C +adafruit_gemma_m0.upload.tool=bossac +adafruit_gemma_m0.upload.protocol=sam-ba +adafruit_gemma_m0.upload.maximum_size=262144 +adafruit_gemma_m0.upload.offset=0x2000 +adafruit_gemma_m0.upload.use_1200bps_touch=true +adafruit_gemma_m0.upload.wait_for_upload_port=true +adafruit_gemma_m0.upload.native_usb=true +adafruit_gemma_m0.build.mcu=cortex-m0plus +adafruit_gemma_m0.build.f_cpu=48000000L +adafruit_gemma_m0.build.usb_product="Gemma M0" +adafruit_gemma_m0.build.usb_manufacturer="Adafruit" +adafruit_gemma_m0.build.board=GEMMA_M0 +adafruit_gemma_m0.build.core=arduino +adafruit_gemma_m0.build.extra_flags=-DCRYSTALLESS -DADAFRUIT_GEMMA_M0 -D__SAMD21E18A__ -DARM_MATH_CM0PLUS {build.usb_flags} +adafruit_gemma_m0.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_gemma_m0.build.openocdscript=openocd_scripts/gemma_m0.cfg +adafruit_gemma_m0.build.variant=gemma_m0 +adafruit_gemma_m0.build.variant_system_lib= +adafruit_gemma_m0.build.vid=0x239A +adafruit_gemma_m0.build.pid=0x801C +adafruit_gemma_m0.bootloader.tool=openocd +adafruit_gemma_m0.bootloader.file=gemmaM0/bootloader-gemma_m0-v2.0.0-adafruit.5.bin +adafruit_gemma_m0.menu.usbstack.arduino=Arduino +adafruit_gemma_m0.menu.usbstack.tinyusb=TinyUSB +adafruit_gemma_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_gemma_m0.menu.debug.off=Off +adafruit_gemma_m0.menu.debug.on=On +adafruit_gemma_m0.menu.debug.on.build.flags.debug=-g + +# Adafruit Trinket M0 (SAMD21) +# ------------------------------ +adafruit_trinket_m0.name=Adafruit Trinket M0 +adafruit_trinket_m0.vid.0=0x239A +adafruit_trinket_m0.pid.0=0x801E +adafruit_trinket_m0.vid.1=0x239A +adafruit_trinket_m0.pid.1=0x001E +adafruit_trinket_m0.upload.tool=bossac +adafruit_trinket_m0.upload.protocol=sam-ba +adafruit_trinket_m0.upload.maximum_size=262144 +adafruit_trinket_m0.upload.offset=0x2000 +adafruit_trinket_m0.upload.use_1200bps_touch=true +adafruit_trinket_m0.upload.wait_for_upload_port=true +adafruit_trinket_m0.upload.native_usb=true +adafruit_trinket_m0.build.mcu=cortex-m0plus +adafruit_trinket_m0.build.f_cpu=48000000L +adafruit_trinket_m0.build.usb_product="Trinket M0" +adafruit_trinket_m0.build.usb_manufacturer="Adafruit" +adafruit_trinket_m0.build.board=TRINKET_M0 +adafruit_trinket_m0.build.core=arduino +adafruit_trinket_m0.build.extra_flags=-DCRYSTALLESS -DADAFRUIT_TRINKET_M0 -D__SAMD21E18A__ -DARM_MATH_CM0PLUS {build.usb_flags} +adafruit_trinket_m0.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_trinket_m0.build.openocdscript=openocd_scripts/trinket_m0.cfg +adafruit_trinket_m0.build.variant=trinket_m0 +adafruit_trinket_m0.build.variant_system_lib= +adafruit_trinket_m0.build.vid=0x239A +adafruit_trinket_m0.build.pid=0x801E +adafruit_trinket_m0.bootloader.tool=openocd +adafruit_trinket_m0.bootloader.file=trinketM0/bootloader-trinket_m0-v2.0.0-adafruit.5.bin +adafruit_trinket_m0.menu.usbstack.arduino=Arduino +adafruit_trinket_m0.menu.usbstack.tinyusb=TinyUSB +adafruit_trinket_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_trinket_m0.menu.debug.off=Off +adafruit_trinket_m0.menu.debug.on=On +adafruit_trinket_m0.menu.debug.on.build.flags.debug=-g + + +# Adafruit ItsyBitsy M0 (SAMD21) +# ------------------------------ +adafruit_itsybitsy_m0.name=Adafruit ItsyBitsy M0 +adafruit_itsybitsy_m0.vid.0=0x239A +adafruit_itsybitsy_m0.pid.0=0x800F +adafruit_itsybitsy_m0.vid.1=0x239A +adafruit_itsybitsy_m0.pid.1=0x000F +adafruit_itsybitsy_m0.vid.2=0x239A +adafruit_itsybitsy_m0.pid.2=0x8012 +adafruit_itsybitsy_m0.upload.tool=bossac +adafruit_itsybitsy_m0.upload.protocol=sam-ba +adafruit_itsybitsy_m0.upload.maximum_size=262144 +adafruit_itsybitsy_m0.upload.offset=0x2000 +adafruit_itsybitsy_m0.upload.use_1200bps_touch=true +adafruit_itsybitsy_m0.upload.wait_for_upload_port=true +adafruit_itsybitsy_m0.upload.native_usb=true +adafruit_itsybitsy_m0.build.mcu=cortex-m0plus +adafruit_itsybitsy_m0.build.f_cpu=48000000L +adafruit_itsybitsy_m0.build.usb_product="ItsyBitsy M0 Express" +adafruit_itsybitsy_m0.build.usb_manufacturer="Adafruit" +adafruit_itsybitsy_m0.build.board=ITSYBITSY_M0 +adafruit_itsybitsy_m0.build.core=arduino +adafruit_itsybitsy_m0.build.extra_flags=-DCRYSTALLESS -DADAFRUIT_ITSYBITSY_M0 -D__SAMD21G18A__ -DARM_MATH_CM0PLUS {build.usb_flags} +adafruit_itsybitsy_m0.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_itsybitsy_m0.build.openocdscript=openocd_scripts/itsybitsy_m0.cfg +adafruit_itsybitsy_m0.build.variant=itsybitsy_m0 +adafruit_itsybitsy_m0.build.variant_system_lib= +adafruit_itsybitsy_m0.build.vid=0x239A +adafruit_itsybitsy_m0.build.pid=0x800F +adafruit_itsybitsy_m0.bootloader.tool=openocd +adafruit_itsybitsy_m0.bootloader.file=itsybitsyM0/bootloader-itsybitsy_m0-v2.0.0-adafruit.5.bin +adafruit_itsybitsy_m0.menu.usbstack.arduino=Arduino +adafruit_itsybitsy_m0.menu.usbstack.tinyusb=TinyUSB +adafruit_itsybitsy_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_itsybitsy_m0.menu.debug.off=Off +adafruit_itsybitsy_m0.menu.debug.on=On +adafruit_itsybitsy_m0.menu.debug.on.build.flags.debug=-g + + +# Adafruit PIRkey (SAMD21) +# ------------------------------ +adafruit_pirkey.name=Adafruit pIRkey +adafruit_pirkey.vid.0=0x239A +adafruit_pirkey.pid.0=0x801E +adafruit_pirkey.vid.1=0x239A +adafruit_pirkey.pid.1=0x001E +adafruit_pirkey.upload.tool=bossac +adafruit_pirkey.upload.protocol=sam-ba +adafruit_pirkey.upload.maximum_size=262144 +adafruit_pirkey.upload.offset=0x2000 +adafruit_pirkey.upload.use_1200bps_touch=true +adafruit_pirkey.upload.wait_for_upload_port=true +adafruit_pirkey.upload.native_usb=true +adafruit_pirkey.build.mcu=cortex-m0plus +adafruit_pirkey.build.f_cpu=48000000L +adafruit_pirkey.build.usb_product="pIRKey" +adafruit_pirkey.build.usb_manufacturer="Adafruit" +adafruit_pirkey.build.board=PIRKEY +adafruit_pirkey.build.core=arduino +adafruit_pirkey.build.extra_flags=-DCRYSTALLESS -DADAFRUIT_PIRKEY -D__SAMD21E18A__ -DARM_MATH_CM0PLUS {build.usb_flags} +adafruit_pirkey.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_pirkey.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_pirkey.build.variant=pirkey +adafruit_pirkey.build.variant_system_lib= +adafruit_pirkey.build.vid=0x239A +adafruit_pirkey.build.pid=0x801E +adafruit_pirkey.bootloader.tool=openocd +adafruit_pirkey.bootloader.file=pirkey/bootloader-pirkey-v2.0.0-adafruit.5.bin +adafruit_pirkey.menu.usbstack.arduino=Arduino +adafruit_pirkey.menu.usbstack.tinyusb=TinyUSB +adafruit_pirkey.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB + +# Adafruit HalloWing M0 (SAMD21) +# ------------------------------ +adafruit_hallowing.name=Adafruit Hallowing M0 +adafruit_hallowing.vid.0=0x239A +adafruit_hallowing.pid.0=0xDEAD +adafruit_hallowing.vid.1=0x239A +adafruit_hallowing.pid.1=0xD1ED +adafruit_hallowing.vid.1=0x239A +adafruit_hallowing.pid.1=0xB000 +adafruit_hallowing.upload.tool=bossac +adafruit_hallowing.upload.protocol=sam-ba +adafruit_hallowing.upload.maximum_size=262144 +adafruit_hallowing.upload.offset=0x2000 +adafruit_hallowing.upload.use_1200bps_touch=true +adafruit_hallowing.upload.wait_for_upload_port=true +adafruit_hallowing.upload.native_usb=true +adafruit_hallowing.build.mcu=cortex-m0plus +adafruit_hallowing.build.f_cpu=48000000L +adafruit_hallowing.build.usb_product="Hallowing M0" +adafruit_hallowing.build.usb_manufacturer="Adafruit" +adafruit_hallowing.build.board=SAMD_HALLOWING +adafruit_hallowing.build.core=arduino +adafruit_hallowing.build.extra_flags=-DCRYSTALLESS -DARDUINO_SAMD_ZERO -DARDUINO_SAMD_HALLOWING_M0 -DARM_MATH_CM0PLUS -DADAFRUIT_HALLOWING -D__SAMD21G18A__ {build.usb_flags} +adafruit_hallowing.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_hallowing.build.openocdscript=openocd_scripts/hallowing_m0_express.cfg +adafruit_hallowing.build.variant=hallowing_m0_express +adafruit_hallowing.build.variant_system_lib= +adafruit_hallowing.build.vid=0x239A +adafruit_hallowing.build.pid=0xDEAD +adafruit_hallowing.bootloader.tool=openocd +adafruit_hallowing.bootloader.file=hallowingM0/bootloader-hallowing_m0-v2.0.0-adafruit.0-21-g887cc30.bin +adafruit_hallowing.menu.usbstack.arduino=Arduino +adafruit_hallowing.menu.usbstack.tinyusb=TinyUSB +adafruit_hallowing.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_hallowing.menu.debug.off=Off +adafruit_hallowing.menu.debug.on=On +adafruit_hallowing.menu.debug.on.build.flags.debug=-g + +# Adafruit Crickit M0 (SAMD21) +# ------------------------------ +adafruit_crickit_m0.name=Adafruit Crickit M0 +adafruit_crickit_m0.vid.0=0x239A +adafruit_crickit_m0.pid.0=0x802D +adafruit_crickit_m0.vid.1=0x239A +adafruit_crickit_m0.pid.1=0x002D +adafruit_crickit_m0.vid.2=0x239A +adafruit_crickit_m0.pid.2=0x802D +adafruit_crickit_m0.upload.tool=bossac +adafruit_crickit_m0.upload.protocol=sam-ba +adafruit_crickit_m0.upload.maximum_size=262144 +adafruit_crickit_m0.upload.offset=0x2000 +adafruit_crickit_m0.upload.use_1200bps_touch=true +adafruit_crickit_m0.upload.wait_for_upload_port=true +adafruit_crickit_m0.upload.native_usb=true +adafruit_crickit_m0.build.mcu=cortex-m0plus +adafruit_crickit_m0.build.f_cpu=48000000L +adafruit_crickit_m0.build.usb_product="Crickit M0" +adafruit_crickit_m0.build.usb_manufacturer="Adafruit" +adafruit_crickit_m0.build.board=CRICKIT_M0 +adafruit_crickit_m0.build.core=arduino +adafruit_crickit_m0.build.extra_flags=-DCRYSTALLESS -DADAFRUIT_CRICKIT_M0 -D__SAMD21G18A__ -DARM_MATH_CM0PLUS {build.usb_flags} +adafruit_crickit_m0.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_crickit_m0.build.openocdscript=openocd_scripts/crickit_m0.cfg +adafruit_crickit_m0.build.variant=crickit_m0 +adafruit_crickit_m0.build.variant_system_lib= +adafruit_crickit_m0.build.vid=0x239A +adafruit_crickit_m0.build.pid=0x802D +adafruit_crickit_m0.bootloader.tool=openocd +adafruit_crickit_m0.bootloader.file=crickit/samd21_sam_ba.bin +adafruit_crickit_m0.menu.usbstack.arduino=Arduino +adafruit_crickit_m0.menu.usbstack.tinyusb=TinyUSB +adafruit_crickit_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_crickit_m0.menu.debug.off=Off +adafruit_crickit_m0.menu.debug.on=On +adafruit_crickit_m0.menu.debug.on.build.flags.debug=-g + +# Adafruit Metro M4 (SAMD51) +# ------------------------------ +adafruit_metro_m4.name=Adafruit Metro M4 (SAMD51) +adafruit_metro_m4.vid.0=0x239A +adafruit_metro_m4.pid.0=0x8020 +adafruit_metro_m4.vid.1=0x239A +adafruit_metro_m4.pid.1=0x0020 +adafruit_metro_m4.upload.tool=bossac18 +adafruit_metro_m4.upload.protocol=sam-ba +adafruit_metro_m4.upload.maximum_size=507904 +adafruit_metro_m4.upload.offset=0x4000 +adafruit_metro_m4.upload.use_1200bps_touch=true +adafruit_metro_m4.upload.wait_for_upload_port=true +adafruit_metro_m4.upload.native_usb=true +adafruit_metro_m4.build.mcu=cortex-m4 +#adafruit_metro_m4.build.f_cpu=120000000L +adafruit_metro_m4.build.usb_product="Adafruit Metro M4" +adafruit_metro_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_metro_m4.build.board=METRO_M4 +adafruit_metro_m4.build.core=arduino +adafruit_metro_m4.build.extra_flags=-D__SAMD51J19A__ -DADAFRUIT_METRO_M4_EXPRESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_metro_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_metro_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_metro_m4.build.variant=metro_m4 +adafruit_metro_m4.build.variant_system_lib= +adafruit_metro_m4.build.vid=0x239A +adafruit_metro_m4.build.pid=0x8020 +adafruit_metro_m4.bootloader.tool=openocd +adafruit_metro_m4.bootloader.file=metroM4/bootloader-metro_m4-v2.0.0-adafruit.5.bin +adafruit_metro_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_metro_m4.menu.cache.on=Enabled +adafruit_metro_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_metro_m4.menu.cache.off=Disabled +adafruit_metro_m4.menu.cache.off.build.cache_flags= +adafruit_metro_m4.menu.speed.120=120 MHz (standard) +adafruit_metro_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_metro_m4.menu.speed.150=150 MHz (overclock) +adafruit_metro_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_metro_m4.menu.speed.180=180 MHz (overclock) +adafruit_metro_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_metro_m4.menu.speed.200=200 MHz (overclock) +adafruit_metro_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_metro_m4.menu.opt.small=Small (-Os) (standard) +adafruit_metro_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_metro_m4.menu.opt.fast=Fast (-O2) +adafruit_metro_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_metro_m4.menu.opt.faster=Faster (-O3) +adafruit_metro_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_metro_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_metro_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_metro_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_metro_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_metro_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_metro_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_metro_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_metro_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_metro_m4.menu.usbstack.arduino=Arduino +adafruit_metro_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_metro_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_metro_m4.menu.debug.off=Off +adafruit_metro_m4.menu.debug.on=On +adafruit_metro_m4.menu.debug.on.build.flags.debug=-g + + +# Adafruit Grand Central M4 (SAMD51) +# ------------------------------ +adafruit_grandcentral_m4.name=Adafruit Grand Central M4 (SAMD51) +adafruit_grandcentral_m4.vid.0=0x239A +adafruit_grandcentral_m4.pid.0=0x8031 +adafruit_grandcentral_m4.vid.1=0x239A +adafruit_grandcentral_m4.pid.1=0x0031 +adafruit_grandcentral_m4.vid.1=0x239A +adafruit_grandcentral_m4.pid.1=0x0032 +adafruit_grandcentral_m4.upload.tool=bossac18 +adafruit_grandcentral_m4.upload.protocol=sam-ba +adafruit_grandcentral_m4.upload.maximum_size=1032192 +adafruit_grandcentral_m4.upload.offset=0x4000 +adafruit_grandcentral_m4.upload.use_1200bps_touch=true +adafruit_grandcentral_m4.upload.wait_for_upload_port=true +adafruit_grandcentral_m4.upload.native_usb=true +adafruit_grandcentral_m4.build.mcu=cortex-m4 +#adafruit_grandcentral_m4.build.f_cpu=120000000L +adafruit_grandcentral_m4.build.usb_product="Adafruit Grand Central M4" +adafruit_grandcentral_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_grandcentral_m4.build.board=GRAND_CENTRAL_M4 +adafruit_grandcentral_m4.build.core=arduino +adafruit_grandcentral_m4.build.extra_flags=-D__SAMD51P20A__ -DADAFRUIT_GRAND_CENTRAL_M4 -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_grandcentral_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_grandcentral_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_grandcentral_m4.build.variant=grand_central_m4 +adafruit_grandcentral_m4.build.variant_system_lib= +adafruit_grandcentral_m4.build.vid=0x239A +adafruit_grandcentral_m4.build.pid=0x8031 +adafruit_grandcentral_m4.bootloader.tool=openocd +adafruit_grandcentral_m4.bootloader.file=grand_central_m4/bootloader-grandcentralM4-v2.0.0-adafruit.5.bin +adafruit_grandcentral_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_grandcentral_m4.menu.cache.on=Enabled +adafruit_grandcentral_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_grandcentral_m4.menu.cache.off=Disabled +adafruit_grandcentral_m4.menu.cache.off.build.cache_flags= +adafruit_grandcentral_m4.menu.speed.120=120 MHz (standard) +adafruit_grandcentral_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_grandcentral_m4.menu.speed.150=150 MHz (overclock) +adafruit_grandcentral_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_grandcentral_m4.menu.speed.180=180 MHz (overclock) +adafruit_grandcentral_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_grandcentral_m4.menu.speed.200=200 MHz (overclock) +adafruit_grandcentral_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_grandcentral_m4.menu.opt.small=Small (-Os) (standard) +adafruit_grandcentral_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_grandcentral_m4.menu.opt.fast=Fast (-O2) +adafruit_grandcentral_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_grandcentral_m4.menu.opt.faster=Faster (-O3) +adafruit_grandcentral_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_grandcentral_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_grandcentral_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_grandcentral_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_grandcentral_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_grandcentral_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_grandcentral_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_grandcentral_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_grandcentral_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_grandcentral_m4.menu.usbstack.arduino=Arduino +adafruit_grandcentral_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_grandcentral_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_grandcentral_m4.menu.debug.off=Off +adafruit_grandcentral_m4.menu.debug.on=On +adafruit_grandcentral_m4.menu.debug.on.build.flags.debug=-g + +# Adafruit ItsyBitsy M4 (SAMD51) +# ------------------------------ +adafruit_itsybitsy_m4.name=Adafruit ItsyBitsy M4 (SAMD51) +adafruit_itsybitsy_m4.vid.0=0x239A +adafruit_itsybitsy_m4.pid.0=0x802B +adafruit_itsybitsy_m4.vid.1=0x239A +adafruit_itsybitsy_m4.pid.1=0x002B +adafruit_itsybitsy_m4.upload.tool=bossac18 +adafruit_itsybitsy_m4.upload.protocol=sam-ba +adafruit_itsybitsy_m4.upload.maximum_size=507904 +adafruit_itsybitsy_m4.upload.offset=0x4000 +adafruit_itsybitsy_m4.upload.use_1200bps_touch=true +adafruit_itsybitsy_m4.upload.wait_for_upload_port=true +adafruit_itsybitsy_m4.upload.native_usb=true +adafruit_itsybitsy_m4.build.mcu=cortex-m4 +#adafruit_itsybitsy_m4.build.f_cpu=120000000L +adafruit_itsybitsy_m4.build.usb_product="Adafruit ItsyBitsy M4" +adafruit_itsybitsy_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_itsybitsy_m4.build.board=ITSYBITSY_M4 +adafruit_itsybitsy_m4.build.core=arduino +adafruit_itsybitsy_m4.build.extra_flags=-D__SAMD51G19A__ -DADAFRUIT_ITSYBITSY_M4_EXPRESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -DCRYSTALLESS -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_itsybitsy_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_itsybitsy_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_itsybitsy_m4.build.variant=itsybitsy_m4 +adafruit_itsybitsy_m4.build.variant_system_lib= +adafruit_itsybitsy_m4.build.vid=0x239A +adafruit_itsybitsy_m4.build.pid=0x802B +adafruit_itsybitsy_m4.bootloader.tool=openocd +adafruit_itsybitsy_m4.bootloader.file=itsybitsyM4/bootloader-itsybitsy_m4-v2.0.0-adafruit.5.bin +adafruit_itsybitsy_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_itsybitsy_m4.menu.cache.on=Enabled +adafruit_itsybitsy_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_itsybitsy_m4.menu.cache.off=Disabled +adafruit_itsybitsy_m4.menu.cache.off.build.cache_flags= +adafruit_itsybitsy_m4.menu.speed.120=120 MHz (standard) +adafruit_itsybitsy_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_itsybitsy_m4.menu.speed.150=150 MHz (overclock) +adafruit_itsybitsy_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_itsybitsy_m4.menu.speed.180=180 MHz (overclock) +adafruit_itsybitsy_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_itsybitsy_m4.menu.speed.200=200 MHz (overclock) +adafruit_itsybitsy_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_itsybitsy_m4.menu.opt.small=Small (-Os) (standard) +adafruit_itsybitsy_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_itsybitsy_m4.menu.opt.fast=Fast (-O2) +adafruit_itsybitsy_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_itsybitsy_m4.menu.opt.faster=Faster (-O3) +adafruit_itsybitsy_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_itsybitsy_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_itsybitsy_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_itsybitsy_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_itsybitsy_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_itsybitsy_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_itsybitsy_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_itsybitsy_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_itsybitsy_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_itsybitsy_m4.menu.usbstack.arduino=Arduino +adafruit_itsybitsy_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_itsybitsy_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_itsybitsy_m4.menu.debug.off=Off +adafruit_itsybitsy_m4.menu.debug.on=On +adafruit_itsybitsy_m4.menu.debug.on.build.flags.debug=-g + +# Adafruit Feather M4 Express (SAMD51) +# ------------------------------ +adafruit_feather_m4.name=Adafruit Feather M4 Express (SAMD51) +adafruit_feather_m4.vid.0=0x239A +adafruit_feather_m4.pid.0=0x8022 +adafruit_feather_m4.vid.1=0x239A +adafruit_feather_m4.pid.1=0x0022 +adafruit_feather_m4.upload.tool=bossac18 +adafruit_feather_m4.upload.protocol=sam-ba +adafruit_feather_m4.upload.maximum_size=507904 +adafruit_feather_m4.upload.offset=0x4000 +adafruit_feather_m4.upload.use_1200bps_touch=true +adafruit_feather_m4.upload.wait_for_upload_port=true +adafruit_feather_m4.upload.native_usb=true +adafruit_feather_m4.build.mcu=cortex-m4 +#adafruit_feather_m4.build.f_cpu=120000000L +adafruit_feather_m4.build.usb_product="Adafruit Feather M4" +adafruit_feather_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_feather_m4.build.board=FEATHER_M4 +adafruit_feather_m4.build.core=arduino +adafruit_feather_m4.build.extra_flags=-D__SAMD51J19A__ -DADAFRUIT_FEATHER_M4_EXPRESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_feather_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_feather_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_feather_m4.build.variant=feather_m4 +adafruit_feather_m4.build.variant_system_lib= +adafruit_feather_m4.build.vid=0x239A +adafruit_feather_m4.build.pid=0x8022 +adafruit_feather_m4.bootloader.tool=openocd +adafruit_feather_m4.bootloader.file=featherM4/bootloader-feather_m4-v2.0.0-adafruit.5.bin +adafruit_feather_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_feather_m4.menu.cache.on=Enabled +adafruit_feather_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_feather_m4.menu.cache.off=Disabled +adafruit_feather_m4.menu.cache.off.build.cache_flags= +adafruit_feather_m4.menu.speed.120=120 MHz (standard) +adafruit_feather_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_feather_m4.menu.speed.150=150 MHz (overclock) +adafruit_feather_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_feather_m4.menu.speed.180=180 MHz (overclock) +adafruit_feather_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_feather_m4.menu.speed.200=200 MHz (overclock) +adafruit_feather_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_feather_m4.menu.opt.small=Small (-Os) (standard) +adafruit_feather_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_feather_m4.menu.opt.fast=Fast (-O2) +adafruit_feather_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_feather_m4.menu.opt.faster=Faster (-O3) +adafruit_feather_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_feather_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_feather_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_feather_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_feather_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_feather_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_feather_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_feather_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_feather_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_feather_m4.menu.usbstack.arduino=Arduino +adafruit_feather_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_feather_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_feather_m4.menu.debug.off=Off +adafruit_feather_m4.menu.debug.on=On +adafruit_feather_m4.menu.debug.on.build.flags.debug=-g + +# Adafruit Trellis M4 (SAMD51) +# ------------------------------ +adafruit_trellis_m4.name=Adafruit Trellis M4 (SAMD51) +adafruit_trellis_m4.vid.0=0x239A +adafruit_trellis_m4.pid.0=0x802F +adafruit_trellis_m4.vid.1=0x239A +adafruit_trellis_m4.pid.1=0x002F +adafruit_trellis_m4.vid.2=0x239A +adafruit_trellis_m4.pid.2=0x0030 +adafruit_trellis_m4.upload.tool=bossac18 +adafruit_trellis_m4.upload.protocol=sam-ba +adafruit_trellis_m4.upload.maximum_size=507904 +adafruit_trellis_m4.upload.offset=0x4000 +adafruit_trellis_m4.upload.use_1200bps_touch=true +adafruit_trellis_m4.upload.wait_for_upload_port=true +adafruit_trellis_m4.upload.native_usb=true +adafruit_trellis_m4.build.mcu=cortex-m4 +#adafruit_trellis_m4.build.f_cpu=120000000L +adafruit_trellis_m4.build.usb_product="Adafruit Trellis M4" +adafruit_trellis_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_trellis_m4.build.board=TRELLIS_M4 +adafruit_trellis_m4.build.core=arduino +adafruit_trellis_m4.build.extra_flags=-D__SAMD51G19A__ -DADAFRUIT_TRELLIS_M4_EXPRESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -DCRYSTALLESS -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_trellis_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_trellis_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_trellis_m4.build.variant=trellis_m4 +adafruit_trellis_m4.build.variant_system_lib= +adafruit_trellis_m4.build.vid=0x239A +adafruit_trellis_m4.build.pid=0x802F +adafruit_trellis_m4.bootloader.tool=openocd +adafruit_trellis_m4.bootloader.file=trellisM4/bootloader-trellis_m4-v2.0.0-adafruit.5.bin +adafruit_trellis_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_trellis_m4.menu.cache.on=Enabled +adafruit_trellis_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_trellis_m4.menu.cache.off=Disabled +adafruit_trellis_m4.menu.cache.off.build.cache_flags= +adafruit_trellis_m4.menu.speed.120=120 MHz (standard) +adafruit_trellis_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_trellis_m4.menu.speed.150=150 MHz (overclock) +adafruit_trellis_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_trellis_m4.menu.speed.180=180 MHz (overclock) +adafruit_trellis_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_trellis_m4.menu.speed.200=200 MHz (overclock) +adafruit_trellis_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_trellis_m4.menu.opt.small=Small (-Os) (standard) +adafruit_trellis_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_trellis_m4.menu.opt.fast=Fast (-O2) +adafruit_trellis_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_trellis_m4.menu.opt.faster=Faster (-O3) +adafruit_trellis_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_trellis_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_trellis_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_trellis_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_trellis_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_trellis_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_trellis_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_trellis_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_trellis_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_trellis_m4.menu.usbstack.arduino=Arduino +adafruit_trellis_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_trellis_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_trellis_m4.menu.debug.off=Off +adafruit_trellis_m4.menu.debug.on=On +adafruit_trellis_m4.menu.debug.on.build.flags.debug=-g + +# Adafruit PyPortal M4 (SAMD51) +# ------------------------------ +adafruit_pyportal_m4.name=Adafruit PyPortal M4 (SAMD51) +adafruit_pyportal_m4.vid.0=0x239A +adafruit_pyportal_m4.pid.0=0x8035 +adafruit_pyportal_m4.vid.1=0x239A +adafruit_pyportal_m4.pid.1=0x0035 +adafruit_pyportal_m4.upload.tool=bossac18 +adafruit_pyportal_m4.upload.protocol=sam-ba +adafruit_pyportal_m4.upload.maximum_size=1032192 +adafruit_pyportal_m4.upload.offset=0x4000 +adafruit_pyportal_m4.upload.use_1200bps_touch=true +adafruit_pyportal_m4.upload.wait_for_upload_port=true +adafruit_pyportal_m4.upload.native_usb=true +adafruit_pyportal_m4.build.mcu=cortex-m4 +#adafruit_pyportal_m4.build.f_cpu=120000000L +adafruit_pyportal_m4.build.usb_product="Adafruit PyPortal M4" +adafruit_pyportal_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_pyportal_m4.build.board=PYPORTAL_M4 +adafruit_pyportal_m4.build.core=arduino +adafruit_pyportal_m4.build.extra_flags=-D__SAMD51J20A__ -DADAFRUIT_PYPORTAL -DCRYSTALLESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_pyportal_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_pyportal_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_pyportal_m4.build.variant=pyportal_m4 +adafruit_pyportal_m4.build.variant_system_lib= +adafruit_pyportal_m4.build.vid=0x239A +adafruit_pyportal_m4.build.pid=0x8035 +adafruit_pyportal_m4.bootloader.tool=openocd +adafruit_pyportal_m4.bootloader.file=metroM4/bootloader-metro_m4-v2.0.0-adafruit.5.bin +adafruit_pyportal_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_pyportal_m4.menu.cache.on=Enabled +adafruit_pyportal_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_pyportal_m4.menu.cache.off=Disabled +adafruit_pyportal_m4.menu.cache.off.build.cache_flags= +adafruit_pyportal_m4.menu.speed.120=120 MHz (standard) +adafruit_pyportal_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_pyportal_m4.menu.speed.150=150 MHz (overclock) +adafruit_pyportal_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_pyportal_m4.menu.speed.180=180 MHz (overclock) +adafruit_pyportal_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_pyportal_m4.menu.speed.200=200 MHz (overclock) +adafruit_pyportal_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_pyportal_m4.menu.opt.small=Small (-Os) (standard) +adafruit_pyportal_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_pyportal_m4.menu.opt.fast=Fast (-O2) +adafruit_pyportal_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_pyportal_m4.menu.opt.faster=Faster (-O3) +adafruit_pyportal_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_pyportal_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_pyportal_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_pyportal_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_pyportal_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_pyportal_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_pyportal_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_pyportal_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_pyportal_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_pyportal_m4.menu.usbstack.arduino=Arduino +adafruit_pyportal_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_pyportal_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_pyportal_m4.menu.debug.off=Off +adafruit_pyportal_m4.menu.debug.on=On +adafruit_pyportal_m4.menu.debug.on.build.flags.debug=-g + +# Adafruit pyBadge M4 (SAMD51) +# ------------------------------ +adafruit_pybadge_m4.name=Adafruit pyBadge M4 Express (SAMD51) +adafruit_pybadge_m4.vid.0=0x239A +adafruit_pybadge_m4.pid.0=0x8033 +adafruit_pybadge_m4.vid.1=0x239A +adafruit_pybadge_m4.pid.1=0x0033 +adafruit_pybadge_m4.vid.1=0x239A +adafruit_pybadge_m4.pid.1=0x8033 +adafruit_pybadge_m4.upload.tool=bossac18 +adafruit_pybadge_m4.upload.protocol=sam-ba +adafruit_pybadge_m4.upload.maximum_size=507904 +adafruit_pybadge_m4.upload.offset=0x4000 +adafruit_pybadge_m4.upload.use_1200bps_touch=true +adafruit_pybadge_m4.upload.wait_for_upload_port=true +adafruit_pybadge_m4.upload.native_usb=true +adafruit_pybadge_m4.build.mcu=cortex-m4 +#adafruit_pybadge_m4.build.f_cpu=120000000L +adafruit_pybadge_m4.build.usb_product="Adafruit pyBadge M4" +adafruit_pybadge_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_pybadge_m4.build.board=PYBADGE_M4 +adafruit_pybadge_m4.build.core=arduino +adafruit_pybadge_m4.build.extra_flags=-D__SAMD51J19A__ -DADAFRUIT_PYBADGE_M4_EXPRESS -DCRYSTALLESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_pybadge_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_pybadge_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_pybadge_m4.build.variant=pybadge_m4 +adafruit_pybadge_m4.build.variant_system_lib= +adafruit_pybadge_m4.build.vid=0x239A +adafruit_pybadge_m4.build.pid=0x8033 +adafruit_pybadge_m4.bootloader.tool=openocd +adafruit_pybadge_m4.bootloader.file=featherM4/bootloader-feather_m4-v2.0.0-adafruit.5.bin +adafruit_pybadge_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_pybadge_m4.menu.cache.on=Enabled +adafruit_pybadge_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_pybadge_m4.menu.cache.off=Disabled +adafruit_pybadge_m4.menu.cache.off.build.cache_flags= +adafruit_pybadge_m4.menu.speed.120=120 MHz (standard) +adafruit_pybadge_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_pybadge_m4.menu.speed.150=150 MHz (overclock) +adafruit_pybadge_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_pybadge_m4.menu.speed.180=180 MHz (overclock) +adafruit_pybadge_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_pybadge_m4.menu.speed.200=200 MHz (overclock) +adafruit_pybadge_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_pybadge_m4.menu.opt.small=Small (-Os) (standard) +adafruit_pybadge_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_pybadge_m4.menu.opt.fast=Fast (-O2) +adafruit_pybadge_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_pybadge_m4.menu.opt.faster=Faster (-O3) +adafruit_pybadge_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_pybadge_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_pybadge_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_pybadge_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_pybadge_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_pybadge_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_pybadge_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_pybadge_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_pybadge_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_pybadge_m4.menu.usbstack.arduino=Arduino +adafruit_pybadge_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_pybadge_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_pybadge_m4.menu.debug.off=Off +adafruit_pybadge_m4.menu.debug.on=On +adafruit_pybadge_m4.menu.debug.on.build.flags.debug=-g + + +# Adafruit Metro M4 AirLift lite (SAMD51) +# ------------------------------ +adafruit_metro_m4_airliftlite.name=Adafruit Metro M4 AirLift Lite (SAMD51) +adafruit_metro_m4_airliftlite.vid.0=0x239A +adafruit_metro_m4_airliftlite.pid.0=0x8037 +adafruit_metro_m4_airliftlite.vid.1=0x239A +adafruit_metro_m4_airliftlite.pid.1=0x0037 +adafruit_metro_m4_airliftlite.upload.tool=bossac18 +adafruit_metro_m4_airliftlite.upload.protocol=sam-ba +adafruit_metro_m4_airliftlite.upload.maximum_size=507904 +adafruit_metro_m4_airliftlite.upload.offset=0x4000 +adafruit_metro_m4_airliftlite.upload.use_1200bps_touch=true +adafruit_metro_m4_airliftlite.upload.wait_for_upload_port=true +adafruit_metro_m4_airliftlite.upload.native_usb=true +adafruit_metro_m4_airliftlite.build.mcu=cortex-m4 +#adafruit_metro_m4_airliftlite.build.f_cpu=120000000L +adafruit_metro_m4_airliftlite.build.usb_product="Adafruit Metro M4 Airlift Lite" +adafruit_metro_m4_airliftlite.build.usb_manufacturer="Adafruit LLC" +adafruit_metro_m4_airliftlite.build.board=METRO_M4_AIRLIFT_LITE +adafruit_metro_m4_airliftlite.build.core=arduino +adafruit_metro_m4_airliftlite.build.extra_flags=-D__SAMD51J19A__ -DADAFRUIT_METRO_M4_AIRLIFT_LITE -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_metro_m4_airliftlite.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_metro_m4_airliftlite.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_metro_m4_airliftlite.build.variant=metro_m4_airlift +adafruit_metro_m4_airliftlite.build.variant_system_lib= +adafruit_metro_m4_airliftlite.build.vid=0x239A +adafruit_metro_m4_airliftlite.build.pid=0x8037 +adafruit_metro_m4_airliftlite.bootloader.tool=openocd +adafruit_metro_m4_airliftlite.bootloader.file=metroM4/bootloader-metro_m4-v2.0.0-adafruit.5.bin +adafruit_metro_m4_airliftlite.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_metro_m4_airliftlite.menu.cache.on=Enabled +adafruit_metro_m4_airliftlite.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_metro_m4_airliftlite.menu.cache.off=Disabled +adafruit_metro_m4_airliftlite.menu.cache.off.build.cache_flags= +adafruit_metro_m4_airliftlite.menu.speed.120=120 MHz (standard) +adafruit_metro_m4_airliftlite.menu.speed.120.build.f_cpu=120000000L +adafruit_metro_m4_airliftlite.menu.speed.150=150 MHz (overclock) +adafruit_metro_m4_airliftlite.menu.speed.150.build.f_cpu=150000000L +adafruit_metro_m4_airliftlite.menu.speed.180=180 MHz (overclock) +adafruit_metro_m4_airliftlite.menu.speed.180.build.f_cpu=180000000L +adafruit_metro_m4_airliftlite.menu.speed.200=200 MHz (overclock) +adafruit_metro_m4_airliftlite.menu.speed.200.build.f_cpu=200000000L +adafruit_metro_m4_airliftlite.menu.opt.small=Small (-Os) (standard) +adafruit_metro_m4_airliftlite.menu.opt.small.build.flags.optimize=-Os +adafruit_metro_m4_airliftlite.menu.opt.fast=Fast (-O2) +adafruit_metro_m4_airliftlite.menu.opt.fast.build.flags.optimize=-O2 +adafruit_metro_m4_airliftlite.menu.opt.faster=Faster (-O3) +adafruit_metro_m4_airliftlite.menu.opt.faster.build.flags.optimize=-O3 +adafruit_metro_m4_airliftlite.menu.opt.fastest=Fastest (-Ofast) +adafruit_metro_m4_airliftlite.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_metro_m4_airliftlite.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_metro_m4_airliftlite.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_metro_m4_airliftlite.menu.maxqspi.50=50 MHz (standard) +adafruit_metro_m4_airliftlite.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_metro_m4_airliftlite.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_metro_m4_airliftlite.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_metro_m4_airliftlite.menu.usbstack.arduino=Arduino +adafruit_metro_m4_airliftlite.menu.usbstack.tinyusb=TinyUSB +adafruit_metro_m4_airliftlite.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_metro_m4_airliftlite.menu.debug.off=Off +adafruit_metro_m4_airliftlite.menu.debug.on=On +adafruit_metro_m4_airliftlite.menu.debug.on.build.flags.debug=-g + +# Adafruit pyGamer M4 Express (SAMD51) +# ------------------------------ +adafruit_pygamer_m4.name=Adafruit PyGamer M4 Express (SAMD51) +adafruit_pygamer_m4.vid.0=0x239A +adafruit_pygamer_m4.pid.0=0x803D +adafruit_pygamer_m4.vid.1=0x239A +adafruit_pygamer_m4.pid.1=0x003D +adafruit_pygamer_m4.vid.1=0x239A +adafruit_pygamer_m4.pid.1=0x803E +adafruit_pygamer_m4.upload.tool=bossac18 +adafruit_pygamer_m4.upload.protocol=sam-ba +adafruit_pygamer_m4.upload.maximum_size=507904 +adafruit_pygamer_m4.upload.offset=0x4000 +adafruit_pygamer_m4.upload.use_1200bps_touch=true +adafruit_pygamer_m4.upload.wait_for_upload_port=true +adafruit_pygamer_m4.upload.native_usb=true +adafruit_pygamer_m4.build.mcu=cortex-m4 +#adafruit_pygamer_m4.build.f_cpu=120000000L +adafruit_pygamer_m4.build.usb_product="Adafruit PyGamer M4" +adafruit_pygamer_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_pygamer_m4.build.board=PYGAMER_M4 +adafruit_pygamer_m4.build.core=arduino +adafruit_pygamer_m4.build.extra_flags=-D__SAMD51J19A__ -DADAFRUIT_PYGAMER_M4_EXPRESS -DCRYSTALLESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_pygamer_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_pygamer_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_pygamer_m4.build.variant=pygamer_m4 +adafruit_pygamer_m4.build.variant_system_lib= +adafruit_pygamer_m4.build.vid=0x239A +adafruit_pygamer_m4.build.pid=0x803D +adafruit_pygamer_m4.bootloader.tool=openocd +adafruit_pygamer_m4.bootloader.file=featherM4/bootloader-feather_m4-v2.0.0-adafruit.5.bin +adafruit_pygamer_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_pygamer_m4.menu.cache.on=Enabled +adafruit_pygamer_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_pygamer_m4.menu.cache.off=Disabled +adafruit_pygamer_m4.menu.cache.off.build.cache_flags= +adafruit_pygamer_m4.menu.speed.120=120 MHz (standard) +adafruit_pygamer_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_pygamer_m4.menu.speed.150=150 MHz (overclock) +adafruit_pygamer_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_pygamer_m4.menu.speed.180=180 MHz (overclock) +adafruit_pygamer_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_pygamer_m4.menu.speed.200=200 MHz (overclock) +adafruit_pygamer_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_pygamer_m4.menu.opt.small=Small (-Os) (standard) +adafruit_pygamer_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_pygamer_m4.menu.opt.fast=Fast (-O2) +adafruit_pygamer_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_pygamer_m4.menu.opt.faster=Faster (-O3) +adafruit_pygamer_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_pygamer_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_pygamer_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_pygamer_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_pygamer_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_pygamer_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_pygamer_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_pygamer_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_pygamer_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_pygamer_m4.menu.usbstack.arduino=Arduino +adafruit_pygamer_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_pygamer_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_pygamer_m4.menu.debug.off=Off +adafruit_pygamer_m4.menu.debug.on=On +adafruit_pygamer_m4.menu.debug.on.build.flags.debug=-g + +# Adafruit pyGamer M4 Express (SAMD51) +# ------------------------------ +adafruit_pygamer_advance_m4.name=Adafruit PyGamer Advance M4 (SAMD51) +adafruit_pygamer_advance_m4.vid.0=0x239A +adafruit_pygamer_advance_m4.pid.0=0x8041 +adafruit_pygamer_advance_m4.vid.1=0x239A +adafruit_pygamer_advance_m4.pid.1=0x0041 +adafruit_pygamer_advance_m4.vid.1=0x239A +adafruit_pygamer_advance_m4.pid.1=0x8042 +adafruit_pygamer_advance_m4.upload.tool=bossac18 +adafruit_pygamer_advance_m4.upload.protocol=sam-ba +adafruit_pygamer_advance_m4.upload.maximum_size=1032192 +adafruit_pygamer_advance_m4.upload.offset=0x4000 +adafruit_pygamer_advance_m4.upload.use_1200bps_touch=true +adafruit_pygamer_advance_m4.upload.wait_for_upload_port=true +adafruit_pygamer_advance_m4.upload.native_usb=true +adafruit_pygamer_advance_m4.build.mcu=cortex-m4 +adafruit_pygamer_advance_m4.build.usb_product="Adafruit PyGamer Advance M4" +adafruit_pygamer_advance_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_pygamer_advance_m4.build.board=PYGAMER_ADVANCE_M4 +adafruit_pygamer_advance_m4.build.core=arduino +adafruit_pygamer_advance_m4.build.extra_flags=-D__SAMD51J20A__ -DADAFRUIT_PYGAMER_ADVANCE_M4_EXPRESS -DCRYSTALLESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_pygamer_advance_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_pygamer_advance_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_pygamer_advance_m4.build.variant=pygamer_advance_m4 +adafruit_pygamer_advance_m4.build.variant_system_lib= +adafruit_pygamer_advance_m4.build.vid=0x239A +adafruit_pygamer_advance_m4.build.pid=0x8041 +adafruit_pygamer_advance_m4.bootloader.tool=openocd +adafruit_pygamer_advance_m4.bootloader.file=featherM4/bootloader-feather_m4-v2.0.0-adafruit.5.bin +adafruit_pygamer_advance_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_pygamer_advance_m4.menu.cache.on=Enabled +adafruit_pygamer_advance_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_pygamer_advance_m4.menu.cache.off=Disabled +adafruit_pygamer_advance_m4.menu.cache.off.build.cache_flags= +adafruit_pygamer_advance_m4.menu.speed.120=120 MHz (standard) +adafruit_pygamer_advance_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_pygamer_advance_m4.menu.speed.150=150 MHz (overclock) +adafruit_pygamer_advance_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_pygamer_advance_m4.menu.speed.180=180 MHz (overclock) +adafruit_pygamer_advance_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_pygamer_advance_m4.menu.speed.200=200 MHz (overclock) +adafruit_pygamer_advance_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_pygamer_advance_m4.menu.opt.small=Small (-Os) (standard) +adafruit_pygamer_advance_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_pygamer_advance_m4.menu.opt.fast=Fast (-O2) +adafruit_pygamer_advance_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_pygamer_advance_m4.menu.opt.faster=Faster (-O3) +adafruit_pygamer_advance_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_pygamer_advance_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_pygamer_advance_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_pygamer_advance_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_pygamer_advance_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_pygamer_advance_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_pygamer_advance_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_pygamer_advance_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_pygamer_advance_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_pygamer_advance_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_pygamer_advance_m4.menu.usbstack.arduino=Arduino +adafruit_pygamer_advance_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_pygamer_advance_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_pygamer_advance_m4.menu.debug.off=Off +adafruit_pygamer_advance_m4.menu.debug.on=On +adafruit_pygamer_advance_m4.menu.debug.on.build.flags.debug=-g + +# Adafruit pyBadge AirLift M4 (SAMD51) +# ------------------------------ +adafruit_pybadge_airlift_m4.name=Adafruit pyBadge AirLift M4 (SAMD51) +adafruit_pybadge_airlift_m4.vid.0=0x239A +adafruit_pybadge_airlift_m4.pid.0=0x8043 +adafruit_pybadge_airlift_m4.vid.1=0x239A +adafruit_pybadge_airlift_m4.pid.1=0x0033 +adafruit_pybadge_airlift_m4.vid.1=0x239A +adafruit_pybadge_airlift_m4.pid.1=0x8043 +adafruit_pybadge_airlift_m4.upload.tool=bossac18 +adafruit_pybadge_airlift_m4.upload.protocol=sam-ba +adafruit_pybadge_airlift_m4.upload.maximum_size=1032192 +adafruit_pybadge_airlift_m4.upload.offset=0x4000 +adafruit_pybadge_airlift_m4.upload.use_1200bps_touch=true +adafruit_pybadge_airlift_m4.upload.wait_for_upload_port=true +adafruit_pybadge_airlift_m4.upload.native_usb=true +adafruit_pybadge_airlift_m4.build.mcu=cortex-m4 +#adafruit_pybadge_airlift_m4.build.f_cpu=120000000L +adafruit_pybadge_airlift_m4.build.usb_product="Adafruit pyBadge AirLift M4" +adafruit_pybadge_airlift_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_pybadge_airlift_m4.build.board=PYBADGE_AIRLIFT_M4 +adafruit_pybadge_airlift_m4.build.core=arduino +adafruit_pybadge_airlift_m4.build.extra_flags=-D__SAMD51J20A__ -DADAFRUIT_PYBADGE_AIRLIFT_M4 -DCRYSTALLESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_pybadge_airlift_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_pybadge_airlift_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_pybadge_airlift_m4.build.variant=pybadge_airlift_m4 +adafruit_pybadge_airlift_m4.build.variant_system_lib= +adafruit_pybadge_airlift_m4.build.vid=0x239A +adafruit_pybadge_airlift_m4.build.pid=0x8043 +adafruit_pybadge_airlift_m4.bootloader.tool=openocd +adafruit_pybadge_airlift_m4.bootloader.file=featherM4/bootloader-feather_m4-v2.0.0-adafruit.5.bin +adafruit_pybadge_airlift_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_pybadge_airlift_m4.menu.cache.on=Enabled +adafruit_pybadge_airlift_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_pybadge_airlift_m4.menu.cache.off=Disabled +adafruit_pybadge_airlift_m4.menu.cache.off.build.cache_flags= +adafruit_pybadge_airlift_m4.menu.speed.120=120 MHz (standard) +adafruit_pybadge_airlift_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_pybadge_airlift_m4.menu.speed.150=150 MHz (overclock) +adafruit_pybadge_airlift_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_pybadge_airlift_m4.menu.speed.180=180 MHz (overclock) +adafruit_pybadge_airlift_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_pybadge_airlift_m4.menu.speed.200=200 MHz (overclock) +adafruit_pybadge_airlift_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_pybadge_airlift_m4.menu.opt.small=Small (-Os) (standard) +adafruit_pybadge_airlift_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_pybadge_airlift_m4.menu.opt.fast=Fast (-O2) +adafruit_pybadge_airlift_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_pybadge_airlift_m4.menu.opt.faster=Faster (-O3) +adafruit_pybadge_airlift_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_pybadge_airlift_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_pybadge_airlift_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_pybadge_airlift_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_pybadge_airlift_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_pybadge_airlift_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_pybadge_airlift_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_pybadge_airlift_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_pybadge_airlift_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_pybadge_airlift_m4.menu.usbstack.arduino=Arduino +adafruit_pybadge_airlift_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_pybadge_airlift_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_pybadge_airlift_m4.menu.debug.off=Off +adafruit_pybadge_airlift_m4.menu.debug.on=On +adafruit_pybadge_airlift_m4.menu.debug.on.build.flags.debug=-g + + +# Adafruit MONSTER M4SK Express (SAMD51) +# ------------------------------ +adafruit_monster_m4sk.name=Adafruit MONSTER M4SK (SAMD51) +adafruit_monster_m4sk.vid.0=0x239A +adafruit_monster_m4sk.pid.0=0x8047 +adafruit_monster_m4sk.vid.1=0x239A +adafruit_monster_m4sk.pid.1=0x0047 +adafruit_monster_m4sk.vid.1=0x239A +adafruit_monster_m4sk.pid.1=0x8048 +adafruit_monster_m4sk.upload.tool=bossac18 +adafruit_monster_m4sk.upload.protocol=sam-ba +adafruit_monster_m4sk.upload.maximum_size=507904 +adafruit_monster_m4sk.upload.offset=0x4000 +adafruit_monster_m4sk.upload.use_1200bps_touch=true +adafruit_monster_m4sk.upload.wait_for_upload_port=true +adafruit_monster_m4sk.upload.native_usb=true +adafruit_monster_m4sk.build.mcu=cortex-m4 +#adafruit_monster_m4sk.build.f_cpu=120000000L +adafruit_monster_m4sk.build.usb_product="Adafruit MONSTER M4SK" +adafruit_monster_m4sk.build.usb_manufacturer="Adafruit LLC" +adafruit_monster_m4sk.build.board=MONSTER_M4SK +adafruit_monster_m4sk.build.core=arduino +adafruit_monster_m4sk.build.extra_flags=-D__SAMD51G19A__ -DADAFRUIT_MONSTER_M4SK_EXPRESS -DCRYSTALLESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_monster_m4sk.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_monster_m4sk.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_monster_m4sk.build.variant=monster_m4sk +adafruit_monster_m4sk.build.variant_system_lib= +adafruit_monster_m4sk.build.vid=0x239A +adafruit_monster_m4sk.build.pid=0x8047 +adafruit_monster_m4sk.bootloader.tool=openocd +adafruit_monster_m4sk.bootloader.file=featherM4/bootloader-feather_m4-v2.0.0-adafruit.5.bin +adafruit_monster_m4sk.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_monster_m4sk.menu.cache.on=Enabled +adafruit_monster_m4sk.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_monster_m4sk.menu.cache.off=Disabled +adafruit_monster_m4sk.menu.cache.off.build.cache_flags= +adafruit_monster_m4sk.menu.speed.120=120 MHz (standard) +adafruit_monster_m4sk.menu.speed.120.build.f_cpu=120000000L +adafruit_monster_m4sk.menu.speed.150=150 MHz (overclock) +adafruit_monster_m4sk.menu.speed.150.build.f_cpu=150000000L +adafruit_monster_m4sk.menu.speed.180=180 MHz (overclock) +adafruit_monster_m4sk.menu.speed.180.build.f_cpu=180000000L +adafruit_monster_m4sk.menu.speed.200=200 MHz (overclock) +adafruit_monster_m4sk.menu.speed.200.build.f_cpu=200000000L +adafruit_monster_m4sk.menu.opt.small=Small (-Os) (standard) +adafruit_monster_m4sk.menu.opt.small.build.flags.optimize=-Os +adafruit_monster_m4sk.menu.opt.fast=Fast (-O2) +adafruit_monster_m4sk.menu.opt.fast.build.flags.optimize=-O2 +adafruit_monster_m4sk.menu.opt.faster=Faster (-O3) +adafruit_monster_m4sk.menu.opt.faster.build.flags.optimize=-O3 +adafruit_monster_m4sk.menu.opt.fastest=Fastest (-Ofast) +adafruit_monster_m4sk.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_monster_m4sk.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_monster_m4sk.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_monster_m4sk.menu.maxqspi.50=50 MHz (standard) +adafruit_monster_m4sk.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_monster_m4sk.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_monster_m4sk.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_monster_m4sk.menu.usbstack.arduino=Arduino +adafruit_monster_m4sk.menu.usbstack.tinyusb=TinyUSB +adafruit_monster_m4sk.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_monster_m4sk.menu.debug.off=Off +adafruit_monster_m4sk.menu.debug.on=On +adafruit_monster_m4sk.menu.debug.on.build.flags.debug=-g + + +# Adafruit Hallowing M4 Express (SAMD51) +# ------------------------------ +adafruit_hallowing_m4.name=Adafruit Hallowing M4 (SAMD51) +adafruit_hallowing_m4.vid.0=0x239A +adafruit_hallowing_m4.pid.0=0x8049 +adafruit_hallowing_m4.vid.1=0x239A +adafruit_hallowing_m4.pid.1=0x0049 +adafruit_hallowing_m4.vid.1=0x239A +adafruit_hallowing_m4.pid.1=0x804A +adafruit_hallowing_m4.upload.tool=bossac18 +adafruit_hallowing_m4.upload.protocol=sam-ba +adafruit_hallowing_m4.upload.maximum_size=507904 +adafruit_hallowing_m4.upload.offset=0x4000 +adafruit_hallowing_m4.upload.use_1200bps_touch=true +adafruit_hallowing_m4.upload.wait_for_upload_port=true +adafruit_hallowing_m4.upload.native_usb=true +adafruit_hallowing_m4.build.mcu=cortex-m4 +#adafruit_hallowing_m4.build.f_cpu=120000000L +adafruit_hallowing_m4.build.usb_product="Adafruit Hallowing M4" +adafruit_hallowing_m4.build.usb_manufacturer="Adafruit LLC" +adafruit_hallowing_m4.build.board=HALLOWING_M4 +adafruit_hallowing_m4.build.core=arduino +adafruit_hallowing_m4.build.extra_flags=-D__SAMD51J19A__ -DADAFRUIT_HALLOWING_M4_EXPRESS -DCRYSTALLESS -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_hallowing_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld +adafruit_hallowing_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg +adafruit_hallowing_m4.build.variant=hallowing_m4 +adafruit_hallowing_m4.build.variant_system_lib= +adafruit_hallowing_m4.build.vid=0x239A +adafruit_hallowing_m4.build.pid=0x8049 +adafruit_hallowing_m4.bootloader.tool=openocd +adafruit_hallowing_m4.bootloader.file=featherM4/bootloader-feather_m4-v2.0.0-adafruit.5.bin +adafruit_hallowing_m4.compiler.arm.cmsis.ldflags="-L{build.variant.path}" -larm_cortexM4lf_math -mfloat-abi=hard -mfpu=fpv4-sp-d16 +adafruit_hallowing_m4.menu.cache.on=Enabled +adafruit_hallowing_m4.menu.cache.on.build.cache_flags=-DENABLE_CACHE +adafruit_hallowing_m4.menu.cache.off=Disabled +adafruit_hallowing_m4.menu.cache.off.build.cache_flags= +adafruit_hallowing_m4.menu.speed.120=120 MHz (standard) +adafruit_hallowing_m4.menu.speed.120.build.f_cpu=120000000L +adafruit_hallowing_m4.menu.speed.150=150 MHz (overclock) +adafruit_hallowing_m4.menu.speed.150.build.f_cpu=150000000L +adafruit_hallowing_m4.menu.speed.180=180 MHz (overclock) +adafruit_hallowing_m4.menu.speed.180.build.f_cpu=180000000L +adafruit_hallowing_m4.menu.speed.200=200 MHz (overclock) +adafruit_hallowing_m4.menu.speed.200.build.f_cpu=200000000L +adafruit_hallowing_m4.menu.opt.small=Small (-Os) (standard) +adafruit_hallowing_m4.menu.opt.small.build.flags.optimize=-Os +adafruit_hallowing_m4.menu.opt.fast=Fast (-O2) +adafruit_hallowing_m4.menu.opt.fast.build.flags.optimize=-O2 +adafruit_hallowing_m4.menu.opt.faster=Faster (-O3) +adafruit_hallowing_m4.menu.opt.faster.build.flags.optimize=-O3 +adafruit_hallowing_m4.menu.opt.fastest=Fastest (-Ofast) +adafruit_hallowing_m4.menu.opt.fastest.build.flags.optimize=-Ofast +adafruit_hallowing_m4.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops) +adafruit_hallowing_m4.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops +adafruit_hallowing_m4.menu.maxqspi.50=50 MHz (standard) +adafruit_hallowing_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000 +adafruit_hallowing_m4.menu.maxqspi.fcpu=CPU Speed / 2 +adafruit_hallowing_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu}) +adafruit_hallowing_m4.menu.usbstack.arduino=Arduino +adafruit_hallowing_m4.menu.usbstack.tinyusb=TinyUSB +adafruit_hallowing_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB +adafruit_hallowing_m4.menu.debug.off=Off +adafruit_hallowing_m4.menu.debug.on=On +adafruit_hallowing_m4.menu.debug.on.build.flags.debug=-g diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/keywords.txt b/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/keywords.txt new file mode 100644 index 00000000000..a44f9ce3294 --- /dev/null +++ b/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/keywords.txt @@ -0,0 +1,3 @@ +SerialGSM KEYWORD1 +SerialSARA KEYWORD1 +INPUT_PULLDOWN LITERAL1 Constants RESERVED_WORD_2 diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/platform.txt b/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/platform.txt new file mode 100644 index 00000000000..e5b47dc610b --- /dev/null +++ b/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/platform.txt @@ -0,0 +1,193 @@ +# 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 + +# Arduino SAMD Core and platform. +# +# For more info: +# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification + +name=Adafruit SAMD (32-bits ARM Cortex-M0+ and Cortex-M4) Boards +version=1.5.3 + +# Compile variables +# ----------------- + +compiler.warning_flags=-w +compiler.warning_flags.none=-w +compiler.warning_flags.default= +compiler.warning_flags.more=-Wall +compiler.warning_flags.all=-Wall -Wextra + +compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/ +compiler.c.cmd=arm-none-eabi-gcc +compiler.c.flags=-mcpu={build.mcu} -mthumb -c -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -MMD -D__SKETCH_NAME__="""{build.project_name}""" +compiler.c.elf.cmd=arm-none-eabi-gcc +compiler.c.elf.flags=-Os -Wl,--gc-sections -save-temps +compiler.S.cmd=arm-none-eabi-gcc +compiler.S.flags=-c -g -x assembler-with-cpp -MMD +compiler.cpp.cmd=arm-none-eabi-g++ +compiler.cpp.flags=-mcpu={build.mcu} -mthumb -c -Os {compiler.warning_flags} -std=gnu++11 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD -D__SKETCH_NAME__="""{build.project_name}""" +compiler.ar.cmd=arm-none-eabi-ar +compiler.ar.flags=rcs +compiler.objcopy.cmd=arm-none-eabi-objcopy +compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 +compiler.elf2hex.flags=-O binary +compiler.elf2hex.cmd=arm-none-eabi-objcopy +compiler.ldflags=-mcpu={build.mcu} -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align +compiler.size.cmd=arm-none-eabi-size +compiler.define=-DARDUINO= + +# this can be overriden in boards.txt +build.extra_flags= +build.cache_flags= +build.flags.optimize= +build.flags.maxspi= +build.flags.maxqspi= +build.flags.usbstack= +build.flags.debug= + +# These can be overridden in platform.local.txt +compiler.c.extra_flags= +compiler.c.elf.extra_flags= +#compiler.c.elf.extra_flags=-v +compiler.cpp.extra_flags= +compiler.S.extra_flags= +compiler.ar.extra_flags= +compiler.elf2hex.extra_flags= + +compiler.arm.cmsis.c.flags="-I{runtime.tools.CMSIS-4.5.0.path}/CMSIS/Include/" "-I{runtime.tools.CMSIS-Atmel-1.2.0.path}/CMSIS/Device/ATMEL/" +compiler.arm.cmsis.ldflags="-L{runtime.tools.CMSIS-4.5.0.path}/CMSIS/Lib/GCC/" -larm_cortexM0l_math + +# USB Flags +# --------- +build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} -DUSBCON '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {build.flags.usbstack} {build.flags.debug} "-I{build.core.path}/Adafruit_TinyUSB_Core" "-I{build.core.path}/Adafruit_TinyUSB_Core/tinyusb/src" + +# Default usb manufacturer will be replaced at compile time using +# numeric vendor ID if available or by board's specific value. +build.usb_manufacturer="Unknown" + + +# Compile patterns +# ---------------- + +## Compile c files +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.cache_flags} {build.flags.debug} {build.flags.optimize} {build.flags.maxspi} {build.flags.maxqspi} {compiler.arm.cmsis.c.flags} {includes} "{source_file}" -o "{object_file}" + +## Compile c++ files +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.cache_flags} {build.flags.debug} {build.flags.optimize} {build.flags.maxspi} {build.flags.maxqspi} {compiler.arm.cmsis.c.flags} {includes} "{source_file}" -o "{object_file}" + +## Compile S files +recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.cache_flags} {compiler.arm.cmsis.c.flags} {includes} "{source_file}" -o "{object_file}" + +## Create archives +recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}" + +## Combine gc-sections, archives, and objects +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" --specs=nano.specs --specs=nosys.specs {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} -Wl,--start-group {compiler.arm.cmsis.ldflags} "-L{build.variant.path}" -lm "{build.path}/{archive_file}" -Wl,--end-group + +## Create output (bin file) +recipe.objcopy.bin.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.bin" + +## Save hex +recipe.output.tmp_file={build.project_name}.bin +recipe.output.save_file={build.project_name}.{build.variant}.bin + +## Compute size +recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" +recipe.size.regex=\.text\s+([0-9]+).* + + +# Uploader tools +# -------------- + +# +# BOSSA +# + +tools.bossac.path={runtime.tools.bossac-1.7.0.path} +tools.bossac.cmd=bossac + +tools.bossac.upload.params.verbose=-i -d +tools.bossac.upload.params.quiet= +tools.bossac.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -U {upload.native_usb} -i -e -w -v "{build.path}/{build.project_name}.bin" -R + +tools.bossac_remote.upload.pattern=/usr/bin/run-bossac {upload.verbose} --port=ttyATH0 -U {upload.native_usb} -e -w -v /tmp/sketch.bin -R + +tools.bossac.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA +tools.bossac.upload.network_pattern="{network_cmd}" -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b + +# v1.8.0 + +tools.bossac18.path={runtime.tools.bossac-1.8.0-48-gb176eee.path} +tools.bossac18.cmd=bossac + +tools.bossac18.upload.params.verbose=-i -d +tools.bossac18.upload.params.quiet= +tools.bossac18.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -U -i --offset={upload.offset} -w -v "{build.path}/{build.project_name}.bin" -R + +tools.bossac18.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA +tools.bossac18.upload.network_pattern="{network_cmd}" -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b + + +# +# OpenOCD sketch upload +# + +tools.openocd.path={runtime.tools.openocd.path} +tools.openocd.cmd=bin/openocd +tools.openocd.cmd.windows=bin/openocd.exe + +tools.openocd.upload.params.verbose=-d2 +tools.openocd.upload.params.quiet=-d0 +tools.openocd.upload.pattern="{path}/{cmd}" {upload.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{{build.path}/{build.project_name}.bin}} verify reset 0x00002000; shutdown" + +tools.openocd.program.params.verbose=-d2 +tools.openocd.program.params.quiet=-d0 +tools.openocd.program.pattern="{path}/{cmd}" {program.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{{build.path}/{build.project_name}.elf}} verify reset; shutdown" + +tools.openocd.erase.params.verbose=-d3 +tools.openocd.erase.params.quiet=-d0 +tools.openocd.erase.pattern= + +tools.openocd.bootloader.params.verbose=-d3 +tools.openocd.bootloader.params.quiet=-d0 +tools.openocd.bootloader.pattern="{path}/{cmd}" {bootloader.verbose} -s "{path}/share/openocd/scripts/" -f interface/{program.protocol}.cfg -c "{program.setup_command}" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; init; halt; at91samd bootloader 0; program {{{runtime.platform.path}/bootloaders/{bootloader.file}}} verify reset; shutdown" + +# +# OpenOCD sketch upload - version with configurable bootloader size +# FIXME: this programmer is a workaround for default options being overwritten by uploadUsingPreferences +# + +tools.openocd-withbootsize.path={runtime.tools.openocd-0.9.0-arduino.path} +tools.openocd-withbootsize.cmd=bin/openocd +tools.openocd-withbootsize.cmd.windows=bin/openocd.exe + +tools.openocd-withbootsize.upload.params.verbose=-d2 +tools.openocd-withbootsize.upload.params.quiet=-d0 +tools.openocd-withbootsize.upload.pattern="{path}/{cmd}" {upload.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{{build.path}/{build.project_name}.bin}} verify reset {bootloader.size}; shutdown" + +# Program flashes the binary at 0x0000, so use the linker script without_bootloader +tools.openocd-withbootsize.program.params.verbose=-d2 +tools.openocd-withbootsize.program.params.quiet=-d0 +tools.openocd-withbootsize.program.pattern="{path}/{cmd}" {program.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{{build.path}/{build.project_name}.elf}} verify reset; shutdown" + +tools.openocd-withbootsize.erase.params.verbose=-d3 +tools.openocd-withbootsize.erase.params.quiet=-d0 +tools.openocd-withbootsize.erase.pattern= + +tools.openocd-withbootsize.bootloader.params.verbose=-d2 +tools.openocd-withbootsize.bootloader.params.quiet=-d0 +tools.openocd-withbootsize.bootloader.pattern="{path}/{cmd}" {bootloader.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; init; halt; at91samd bootloader 0; program {{{runtime.platform.path}/bootloaders/{bootloader.file}}} verify reset; shutdown" diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/programmers.txt b/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/programmers.txt new file mode 100644 index 00000000000..f1617e4c1e3 --- /dev/null +++ b/arduino/cores/packagemanager/testdata/data_dir_1/packages/adafruit/hardware/samd/1.5.3/programmers.txt @@ -0,0 +1,30 @@ +# 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 + +adafruit_jlink.name=J-Link over OpenOCD +adafruit_jlink.communication=USB +adafruit_jlink.protocol=jlink +adafruit_jlink.program.protocol=jlink +adafruit_jlink.program.tool=openocd +adafruit_jlink.program.setup_command=interface jlink; transport select swd; reset_config none separate; set WORKAREASIZE 0; + + +adafruit_atmel_ice.name=Atmel-ICE over OpenOCD +adafruit_atmel_ice.communication=USB +adafruit_atmel_ice.protocol=cmsis-dap +adafruit_atmel_ice.program.protocol=cmsis-dap +adafruit_atmel_ice.program.tool=openocd +adafruit_atmel_ice.program.setup_command=cmsis_dap_vid_pid 0x03eb 0x2141; transport select swd; \ No newline at end of file diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/CMSIS-Atmel/1.2.0/.keep b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/CMSIS-Atmel/1.2.0/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/CMSIS/4.5.0/.keep b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/CMSIS/4.5.0/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/.keep b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/bossac/1.7.0/.keep b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/bossac/1.7.0/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/bossac/1.8.0-48-gb176eee/.keep b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/bossac/1.8.0-48-gb176eee/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/openocd/0.9.0-arduino/.keep b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/tools/openocd/0.9.0-arduino/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/commands/upload/upload.go b/commands/upload/upload.go index 29f1895a236..4ae8407fe97 100644 --- a/commands/upload/upload.go +++ b/commands/upload/upload.go @@ -116,6 +116,7 @@ func Upload(ctx context.Context, req *rpc.UploadReq, outStream io.Writer, errStr if requiredTools, err := pm.FindToolsRequiredForBoard(board); err == nil { for _, requiredTool := range requiredTools { + logrus.WithField("tool", requiredTool).Info("Tool required for upload") uploadProperties.Merge(requiredTool.RuntimeProperties()) } } From 753100d690ae0b8e77ef6415f7cbab7ea67e63d9 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 5 Sep 2019 14:59:07 +0200 Subject: [PATCH 2/3] Fixed comment --- arduino/cores/packagemanager/package_manager.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arduino/cores/packagemanager/package_manager.go b/arduino/cores/packagemanager/package_manager.go index fba5db6a6b5..06cc925fc1e 100644 --- a/arduino/cores/packagemanager/package_manager.go +++ b/arduino/cores/packagemanager/package_manager.go @@ -420,7 +420,8 @@ func (pm *PackageManager) FindToolsRequiredForBoard(board *cores.Board) ([]*core return requiredTools, nil } -// FindToolDependency FIXMEDOC +// FindToolDependency returns the ToolRelease referenced by the ToolDependency or nil if +// the referenced tool doesn't exists. func (pm *PackageManager) FindToolDependency(dep *cores.ToolDependency) *cores.ToolRelease { toolRelease, err := pm.Package(dep.ToolPackager).Tool(dep.ToolName).Release(dep.ToolVersion).Get() if err != nil { From 05cb6c7a5f5cba46c7f758b6f17d491d72f82a1b Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 5 Sep 2019 15:34:50 +0200 Subject: [PATCH 3/3] Reorder toolDependencies to properly generate runtime properties --- arduino/cores/cores.go | 18 ++++++++++++++++-- .../cores/packagemanager/package_manager.go | 1 + .../packagemanager/package_manager_test.go | 7 +++++++ .../data_dir_1/package_adafruit_index.json | 8 ++++++-- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/arduino/cores/cores.go b/arduino/cores/cores.go index 071aa09c823..dafeae37802 100644 --- a/arduino/cores/cores.go +++ b/arduino/cores/cores.go @@ -19,11 +19,11 @@ package cores import ( "encoding/json" + "sort" "strings" - paths "github.com/arduino/go-paths-helper" - "github.com/arduino/arduino-cli/arduino/resources" + paths "github.com/arduino/go-paths-helper" properties "github.com/arduino/go-properties-orderedmap" semver "go.bug.st/relaxed-semver" ) @@ -79,6 +79,20 @@ func (bm *BoardManifest) HasUsbID(vid, pid string) bool { // ToolDependencies is a set of tool dependency type ToolDependencies []*ToolDependency +// Sort sorts the ToolDependencies by name and (if multiple instance of the same +// tool is required) by version. +func (deps ToolDependencies) Sort() { + sort.Slice(deps, func(i, j int) bool { + if deps[i].ToolPackager != deps[j].ToolPackager { + return deps[i].ToolPackager < deps[j].ToolPackager + } + if deps[i].ToolName != deps[j].ToolName { + return deps[i].ToolName < deps[j].ToolName + } + return deps[i].ToolVersion.LessThan(deps[j].ToolVersion) + }) +} + // ToolDependency is a tuple that uniquely identifies a specific version of a Tool type ToolDependency struct { ToolName string diff --git a/arduino/cores/packagemanager/package_manager.go b/arduino/cores/packagemanager/package_manager.go index 06cc925fc1e..44427537025 100644 --- a/arduino/cores/packagemanager/package_manager.go +++ b/arduino/cores/packagemanager/package_manager.go @@ -404,6 +404,7 @@ func (pm *PackageManager) FindToolsRequiredForBoard(board *cores.Board) ([]*core // replace the default tools above with the specific required by the current platform requiredTools := []*cores.ToolRelease{} + platform.Dependencies.Sort() for _, toolDep := range platform.Dependencies { pm.Log.WithField("tool", toolDep).Infof("Required tool") tool := pm.FindToolDependency(toolDep) diff --git a/arduino/cores/packagemanager/package_manager_test.go b/arduino/cores/packagemanager/package_manager_test.go index ccf537616d9..1dadc096a0d 100644 --- a/arduino/cores/packagemanager/package_manager_test.go +++ b/arduino/cores/packagemanager/package_manager_test.go @@ -162,4 +162,11 @@ func TestFindToolsRequiredForBoard(t *testing.T) { require.NotNil(t, bossac18) require.Contains(t, featherTools, bossac17) require.Contains(t, featherTools, bossac18) + + // Check if the runtime variable is set correctly to the latest version + uploadProperties := properties.NewMap() + for _, requiredTool := range featherTools { + uploadProperties.Merge(requiredTool.RuntimeProperties()) + } + require.Equal(t, bossac18.InstallDir.String(), uploadProperties.Get("runtime.tools.bossac.path")) } diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/package_adafruit_index.json b/arduino/cores/packagemanager/testdata/data_dir_1/package_adafruit_index.json index e5effeee53f..1ed829c46d4 100644 --- a/arduino/cores/packagemanager/testdata/data_dir_1/package_adafruit_index.json +++ b/arduino/cores/packagemanager/testdata/data_dir_1/package_adafruit_index.json @@ -3935,12 +3935,16 @@ { "packager": "arduino", "name": "bossac", - "version": "1.7.0" + "version": "1.8.0-48-gb176eee" }, { + "_warning": + + "*** bossac@1.7.0 is listed after bossac@1.8.0-48-gb176eee to test if the runtime propoerty `runtime.tools.bossac.path` is correctly set to the path of bossac@1.8.0-48-gb176eee ***", + "packager": "arduino", "name": "bossac", - "version": "1.8.0-48-gb176eee" + "version": "1.7.0" }, { "packager": "arduino",