Fix "frameworks" field to JSON array

This commit is contained in:
Valeriy Koval
2015-03-11 20:45:11 +02:00
parent ce923b6b58
commit 08808be62b
14 changed files with 141 additions and 141 deletions

View File

@ -10,7 +10,7 @@
"variant": "leonardo", "variant": "leonardo",
"vid": "0x1B4F" "vid": "0x1B4F"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "LilyPad Arduino USB", "name": "LilyPad Arduino USB",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -34,7 +34,7 @@
"mcu": "atmega168", "mcu": "atmega168",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino NG or older ATmega168", "name": "Arduino NG or older ATmega168",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -55,7 +55,7 @@
"mcu": "atmega8", "mcu": "atmega8",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino NG or older ATmega8", "name": "Arduino NG or older ATmega8",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -76,7 +76,7 @@
"mcu": "atmega168", "mcu": "atmega168",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino BT ATmega168", "name": "Arduino BT ATmega168",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -98,7 +98,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino BT ATmega328", "name": "Arduino BT ATmega328",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -120,7 +120,7 @@
"mcu": "atmega168", "mcu": "atmega168",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Duemilanove or Diecimila ATmega168", "name": "Arduino Duemilanove or Diecimila ATmega168",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -141,7 +141,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Duemilanove or Diecimila ATmega328", "name": "Arduino Duemilanove or Diecimila ATmega328",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -165,7 +165,7 @@
"variant": "leonardo", "variant": "leonardo",
"vid": "0x2341" "vid": "0x2341"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Esplora", "name": "Arduino Esplora",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -189,7 +189,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "ethernet" "variant": "ethernet"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Ethernet", "name": "Arduino Ethernet",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -210,7 +210,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Fio", "name": "Arduino Fio",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -234,7 +234,7 @@
"variant": "leonardo", "variant": "leonardo",
"vid": "0x2341" "vid": "0x2341"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Leonardo", "name": "Arduino Leonardo",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -258,7 +258,7 @@
"mcu": "atmega168", "mcu": "atmega168",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "LilyPad Arduino ATmega168", "name": "LilyPad Arduino ATmega168",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -279,7 +279,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "LilyPad Arduino ATmega328", "name": "LilyPad Arduino ATmega328",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -300,7 +300,7 @@
"mcu": "atmega2560", "mcu": "atmega2560",
"variant": "mega" "variant": "mega"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Mega ADK", "name": "Arduino Mega ADK",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -321,7 +321,7 @@
"mcu": "atmega1280", "mcu": "atmega1280",
"variant": "mega" "variant": "mega"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Mega or Mega 2560 ATmega1280", "name": "Arduino Mega or Mega 2560 ATmega1280",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -342,7 +342,7 @@
"mcu": "atmega2560", "mcu": "atmega2560",
"variant": "mega" "variant": "mega"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)", "name": "Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -366,7 +366,7 @@
"variant": "micro", "variant": "micro",
"vid": "0x2341" "vid": "0x2341"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Micro", "name": "Arduino Micro",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -390,7 +390,7 @@
"mcu": "atmega168", "mcu": "atmega168",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Mini ATmega168", "name": "Arduino Mini ATmega168",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -411,7 +411,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Mini ATmega328", "name": "Arduino Mini ATmega328",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -432,7 +432,7 @@
"mcu": "atmega168", "mcu": "atmega168",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Nano ATmega168", "name": "Arduino Nano ATmega168",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -453,7 +453,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Nano ATmega328", "name": "Arduino Nano ATmega328",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -474,7 +474,7 @@
"mcu": "atmega168", "mcu": "atmega168",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz)", "name": "Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -495,7 +495,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz)", "name": "Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -516,7 +516,7 @@
"mcu": "atmega168", "mcu": "atmega168",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz)", "name": "Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -537,7 +537,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "eightanaloginputs" "variant": "eightanaloginputs"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz)", "name": "Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -561,7 +561,7 @@
"variant": "robot_control", "variant": "robot_control",
"vid": "0x2341" "vid": "0x2341"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Robot Control", "name": "Arduino Robot Control",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -588,7 +588,7 @@
"variant": "robot_motor", "variant": "robot_motor",
"vid": "0x2341" "vid": "0x2341"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Robot Motor", "name": "Arduino Robot Motor",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -612,7 +612,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Uno", "name": "Arduino Uno",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -636,7 +636,7 @@
"variant": "yun", "variant": "yun",
"vid": "0x2341" "vid": "0x2341"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Yun", "name": "Arduino Yun",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -666,7 +666,7 @@
"vid": "0x2341", "vid": "0x2341",
"ldscript": "sam3x8e.ld" "ldscript": "sam3x8e.ld"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Due (Programming Port)", "name": "Arduino Due (Programming Port)",
"platform": "atmelsam", "platform": "atmelsam",
"upload": { "upload": {
@ -694,7 +694,7 @@
"vid": "0x2341", "vid": "0x2341",
"ldscript": "sam3x8e.ld" "ldscript": "sam3x8e.ld"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Arduino Due (USB Native Port)", "name": "Arduino Due (USB Native Port)",
"platform": "atmelsam", "platform": "atmelsam",
"upload": { "upload": {

View File

@ -7,7 +7,7 @@
"mcu": "attiny85", "mcu": "attiny85",
"variant": "digispark_tiny" "variant": "digispark_tiny"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Digispark (Default - 16 MHz)", "name": "Digispark (Default - 16 MHz)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -26,7 +26,7 @@
"mcu": "attiny167", "mcu": "attiny167",
"variant": "digispark_pro" "variant": "digispark_pro"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Digispark Pro (Default 16 MHz)", "name": "Digispark Pro (Default 16 MHz)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -45,7 +45,7 @@
"mcu": "attiny167", "mcu": "attiny167",
"variant": "digispark_pro32" "variant": "digispark_pro32"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Digispark Pro (16 MHz) (32 byte buffer)", "name": "Digispark Pro (16 MHz) (32 byte buffer)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -64,7 +64,7 @@
"mcu": "attiny167", "mcu": "attiny167",
"variant": "digispark_pro64" "variant": "digispark_pro64"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Digispark Pro (16 MHz) (64 byte buffer)", "name": "Digispark Pro (16 MHz) (64 byte buffer)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -88,7 +88,7 @@
"variant": "digispark_digix", "variant": "digispark_digix",
"vid": "0x16D0" "vid": "0x16D0"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Digistump DigiX", "name": "Digistump DigiX",
"platform": "atmelsam", "platform": "atmelsam",
"upload": { "upload": {

View File

@ -10,7 +10,7 @@
"variant": "engduinov1", "variant": "engduinov1",
"vid": "0x1B4F" "vid": "0x1B4F"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Engduino 1", "name": "Engduino 1",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -37,7 +37,7 @@
"variant": "engduinov2", "variant": "engduinov2",
"vid": "0x1B4F" "vid": "0x1B4F"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Engduino 2", "name": "Engduino 2",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -64,7 +64,7 @@
"variant": "engduinov3", "variant": "engduinov3",
"vid": "0x1B4F" "vid": "0x1B4F"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Engduino 3", "name": "Engduino 3",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {

View File

@ -3,9 +3,9 @@
"build": { "build": {
"f_cpu": "48000000L", "f_cpu": "48000000L",
"cpu": "cortex-m0plus", "cpu": "cortex-m0plus",
"mcu": "mkl25z128vlk4" "mcu": "mkl25z128vlk4"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Freescale Kinetis FRDM-KL25Z", "name": "Freescale Kinetis FRDM-KL25Z",
"platform": "freescalekinetis", "platform": "freescalekinetis",
"upload": { "upload": {
@ -19,9 +19,9 @@
"build": { "build": {
"f_cpu": "48000000L", "f_cpu": "48000000L",
"cpu": "cortex-m0plus", "cpu": "cortex-m0plus",
"mcu": "mkl46z256vll4" "mcu": "mkl46z256vll4"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Freescale Kinetis FRDM-KL46Z", "name": "Freescale Kinetis FRDM-KL46Z",
"platform": "freescalekinetis", "platform": "freescalekinetis",
"upload": { "upload": {
@ -35,9 +35,9 @@
"build": { "build": {
"f_cpu": "120000000L", "f_cpu": "120000000L",
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "mk64fn1m0vll12" "mcu": "mk64fn1m0vll12"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Freescale Kinetis FRDM-K64F", "name": "Freescale Kinetis FRDM-K64F",
"platform": "freescalekinetis", "platform": "freescalekinetis",
"upload": { "upload": {
@ -51,9 +51,9 @@
"build": { "build": {
"f_cpu": "48000000L", "f_cpu": "48000000L",
"cpu": "cortex-m0plus", "cpu": "cortex-m0plus",
"mcu": "mkl05z32vfm4" "mcu": "mkl05z32vfm4"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Freescale Kinetis FRDM-KL05Z", "name": "Freescale Kinetis FRDM-KL05Z",
"platform": "freescalekinetis", "platform": "freescalekinetis",
"upload": { "upload": {
@ -67,9 +67,9 @@
"build": { "build": {
"f_cpu": "48000000L", "f_cpu": "48000000L",
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "mk20dx128vlh5" "mcu": "mk20dx128vlh5"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Freescale Kinetis FRDM-K20D50M", "name": "Freescale Kinetis FRDM-K20D50M",
"platform": "freescalekinetis", "platform": "freescalekinetis",
"upload": { "upload": {
@ -84,9 +84,9 @@
"build": { "build": {
"f_cpu": "120000000L", "f_cpu": "120000000L",
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "mk22fn512vlh12" "mcu": "mk22fn512vlh12"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Freescale Kinetis FRDM-K22F", "name": "Freescale Kinetis FRDM-K22F",
"platform": "freescalekinetis", "platform": "freescalekinetis",
"upload": { "upload": {

View File

@ -7,7 +7,7 @@
"mcu": "atmega1284p", "mcu": "atmega1284p",
"variant": "plus" "variant": "plus"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Microduino Core+ (ATmega1284P@16M,5V)", "name": "Microduino Core+ (ATmega1284P@16M,5V)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -28,7 +28,7 @@
"mcu": "atmega1284p", "mcu": "atmega1284p",
"variant": "plus" "variant": "plus"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Microduino Core+ (ATmega1284P@8M,3.3V)", "name": "Microduino Core+ (ATmega1284P@8M,3.3V)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -49,7 +49,7 @@
"mcu": "atmega168p", "mcu": "atmega168p",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Microduino Core (Atmega168PA@16M,5V)", "name": "Microduino Core (Atmega168PA@16M,5V)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -70,7 +70,7 @@
"mcu": "atmega168p", "mcu": "atmega168p",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Microduino Core (Atmega168PA@8M,3.3V)", "name": "Microduino Core (Atmega168PA@8M,3.3V)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -91,7 +91,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Microduino Core (Atmega328P@16M,5V)", "name": "Microduino Core (Atmega328P@16M,5V)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -112,7 +112,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Microduino Core (Atmega328P@8M,3.3V)", "name": "Microduino Core (Atmega328P@8M,3.3V)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -135,7 +135,7 @@
"variant": "32u4", "variant": "32u4",
"vid": "0x2341" "vid": "0x2341"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Microduino Core USB (ATmega32U4@16M,5V)", "name": "Microduino Core USB (ATmega32U4@16M,5V)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -159,7 +159,7 @@
"mcu": "atmega644p", "mcu": "atmega644p",
"variant": "plus" "variant": "plus"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Microduino Core+ (Atmega644PA@16M,5V)", "name": "Microduino Core+ (Atmega644PA@16M,5V)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -180,7 +180,7 @@
"mcu": "atmega644p", "mcu": "atmega644p",
"variant": "plus" "variant": "plus"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Microduino Core+ (Atmega644PA@8M,3.3V)", "name": "Microduino Core+ (Atmega644PA@8M,3.3V)",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {

View File

@ -7,7 +7,7 @@
"mcu": "atmega328p", "mcu": "atmega328p",
"variant": "standard" "variant": "standard"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Raspduino", "name": "Raspduino",
"platform": "atmelavr", "platform": "atmelavr",
"upload": { "upload": {
@ -33,7 +33,7 @@
"vid": "0x2341", "vid": "0x2341",
"ldscript": "sam3x8e.ld" "ldscript": "sam3x8e.ld"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "SainSmart Due (Programming Port)", "name": "SainSmart Due (Programming Port)",
"platform": "atmelsam", "platform": "atmelsam",
"upload": { "upload": {
@ -41,7 +41,7 @@
"maximum_ram_size": 32768, "maximum_ram_size": 32768,
"maximum_size": 524288, "maximum_size": 524288,
"protocol": "sam-ba", "protocol": "sam-ba",
"require_upload_port" : true, "require_upload_port" : true,
"use_1200bps_touch": true, "use_1200bps_touch": true,
"wait_for_upload_port": true "wait_for_upload_port": true
}, },
@ -61,7 +61,7 @@
"vid": "0x2341", "vid": "0x2341",
"ldscript": "sam3x8e.ld" "ldscript": "sam3x8e.ld"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "SainSmart Due (USB Native Port)", "name": "SainSmart Due (USB Native Port)",
"platform": "atmelsam", "platform": "atmelsam",
"upload": { "upload": {
@ -69,7 +69,7 @@
"maximum_ram_size": 32768, "maximum_ram_size": 32768,
"maximum_size": 524288, "maximum_size": 524288,
"protocol": "sam-ba", "protocol": "sam-ba",
"require_upload_port" : true, "require_upload_port" : true,
"use_1200bps_touch": true, "use_1200bps_touch": true,
"wait_for_upload_port": true "wait_for_upload_port": true
}, },

View File

@ -3,9 +3,9 @@
"build": { "build": {
"f_cpu": "16000000L", "f_cpu": "16000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "nrf51822" "mcu": "nrf51822"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Nordic nRF51822-mKIT", "name": "Nordic nRF51822-mKIT",
"platform": "nordicnrf51", "platform": "nordicnrf51",
"upload": { "upload": {
@ -19,9 +19,9 @@
"build": { "build": {
"f_cpu": "16000000L", "f_cpu": "16000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "nrf51822" "mcu": "nrf51822"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Switch Science mbed HRM1017", "name": "Switch Science mbed HRM1017",
"platform": "nordicnrf51", "platform": "nordicnrf51",
"upload": { "upload": {
@ -35,9 +35,9 @@
"build": { "build": {
"f_cpu": "16000000L", "f_cpu": "16000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "nrf51822" "mcu": "nrf51822"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "RedBearLab nRF51822", "name": "RedBearLab nRF51822",
"platform": "nordicnrf51", "platform": "nordicnrf51",
"upload": { "upload": {
@ -51,9 +51,9 @@
"build": { "build": {
"f_cpu": "32000000L", "f_cpu": "32000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "nrf51822" "mcu": "nrf51822"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Nordic nRF51-DK", "name": "Nordic nRF51-DK",
"platform": "nordicnrf51", "platform": "nordicnrf51",
"upload": { "upload": {
@ -67,9 +67,9 @@
"build": { "build": {
"f_cpu": "16000000L", "f_cpu": "16000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "nrf51822" "mcu": "nrf51822"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "RedBearLab BLE Nano", "name": "RedBearLab BLE Nano",
"platform": "nordicnrf51", "platform": "nordicnrf51",
"upload": { "upload": {
@ -83,9 +83,9 @@
"build": { "build": {
"f_cpu": "32000000L", "f_cpu": "32000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "nrf51822" "mcu": "nrf51822"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Nordic nRF51-Dongle", "name": "Nordic nRF51-Dongle",
"platform": "nordicnrf51", "platform": "nordicnrf51",
"upload": { "upload": {
@ -100,9 +100,9 @@
"build": { "build": {
"f_cpu": "16000000L", "f_cpu": "16000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "nrf51822" "mcu": "nrf51822"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "JKSoft Wallbot BLE", "name": "JKSoft Wallbot BLE",
"platform": "nordicnrf51", "platform": "nordicnrf51",
"upload": { "upload": {

View File

@ -3,9 +3,9 @@
"build": { "build": {
"f_cpu": "96000000L", "f_cpu": "96000000L",
"cpu": "cortex-m3", "cpu": "cortex-m3",
"mcu": "lpc1768" "mcu": "lpc1768"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "mbed LPC1768", "name": "mbed LPC1768",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -19,9 +19,9 @@
"build": { "build": {
"f_cpu": "48000000L", "f_cpu": "48000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "lpc11u24" "mcu": "lpc11u24"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "mbed LPC11U24", "name": "mbed LPC11U24",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -35,9 +35,9 @@
"build": { "build": {
"f_cpu": "120000000L", "f_cpu": "120000000L",
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "lpc4088" "mcu": "lpc4088"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "EA LPC4088 QuickStart Board", "name": "EA LPC4088 QuickStart Board",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -51,9 +51,9 @@
"build": { "build": {
"f_cpu": "50000000L", "f_cpu": "50000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "lpc11u24" "mcu": "lpc11u24"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "DipCortex M0", "name": "DipCortex M0",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -67,9 +67,9 @@
"build": { "build": {
"f_cpu": "48000000L", "f_cpu": "48000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "lpc11u24" "mcu": "lpc11u24"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "BlueBoard-LPC11U24", "name": "BlueBoard-LPC11U24",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -83,9 +83,9 @@
"build": { "build": {
"f_cpu": "96000000L", "f_cpu": "96000000L",
"cpu": "cortex-m3", "cpu": "cortex-m3",
"mcu": "lpc1768" "mcu": "lpc1768"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Seeeduino-Arch-Pro", "name": "Seeeduino-Arch-Pro",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -99,9 +99,9 @@
"build": { "build": {
"f_cpu": "96000000L", "f_cpu": "96000000L",
"cpu": "cortex-m3", "cpu": "cortex-m3",
"mcu": "lpc1768" "mcu": "lpc1768"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "u-blox C027", "name": "u-blox C027",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -115,9 +115,9 @@
"build": { "build": {
"f_cpu": "48000000L", "f_cpu": "48000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "lpc1114fn28" "mcu": "lpc1114fn28"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "mbed LPC1114FN28", "name": "mbed LPC1114FN28",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -131,9 +131,9 @@
"build": { "build": {
"f_cpu": "48000000L", "f_cpu": "48000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "lpc11u35" "mcu": "lpc11u35"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "EA LPC11U35 QuickStart Board", "name": "EA LPC11U35 QuickStart Board",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -147,9 +147,9 @@
"build": { "build": {
"f_cpu": "48000000L", "f_cpu": "48000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "lpc11u35" "mcu": "lpc11u35"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "TG-LPC11U35-501", "name": "TG-LPC11U35-501",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -163,9 +163,9 @@
"build": { "build": {
"f_cpu": "72000000L", "f_cpu": "72000000L",
"cpu": "cortex-m3", "cpu": "cortex-m3",
"mcu": "lpc1549" "mcu": "lpc1549"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "LPCXpresso1549", "name": "LPCXpresso1549",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -179,9 +179,9 @@
"build": { "build": {
"f_cpu": "48000000L", "f_cpu": "48000000L",
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "lpc11u24" "mcu": "lpc11u24"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "Outrageous Circuits mBuino", "name": "Outrageous Circuits mBuino",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {
@ -195,9 +195,9 @@
"build": { "build": {
"f_cpu": "120000000L", "f_cpu": "120000000L",
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "lpc4088" "mcu": "lpc4088"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "EA LPC4088 Display Module", "name": "EA LPC4088 Display Module",
"platform": "nxplpc", "platform": "nxplpc",
"upload": { "upload": {

View File

@ -9,7 +9,7 @@
"mcu": "stm32f407vgt6", "mcu": "stm32f407vgt6",
"variant": "stm32f4" "variant": "stm32f4"
}, },
"frameworks": "cmsis,spl,opencm3,mbed", "frameworks": ["cmsis", "spl", "opencm3", "mbed"],
"name": "STM32F4DISCOVERY", "name": "STM32F4DISCOVERY",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -29,7 +29,7 @@
"mcu": "stm32l152rbt6", "mcu": "stm32l152rbt6",
"variant": "stm32l1" "variant": "stm32l1"
}, },
"frameworks": "cmsis,spl,opencm3", "frameworks": ["cmsis","spl","opencm3"],
"name": "STM32LDISCOVERY", "name": "STM32LDISCOVERY",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -65,7 +65,7 @@
"cpu": "cortex-m3", "cpu": "cortex-m3",
"mcu": "stm32f100rbt6" "mcu": "stm32f100rbt6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "STM32VLDISCOVERY", "name": "STM32VLDISCOVERY",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -81,7 +81,7 @@
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "stm32f051r8t6" "mcu": "stm32f051r8t6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "STM32F0DISCOVERY", "name": "STM32F0DISCOVERY",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -97,7 +97,7 @@
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "stm32f334c8t6" "mcu": "stm32f334c8t6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "32F3348DISCOVERY", "name": "32F3348DISCOVERY",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -113,7 +113,7 @@
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "stm32f401vct6" "mcu": "stm32f401vct6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "32F401CDISCOVERY", "name": "32F401CDISCOVERY",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -129,7 +129,7 @@
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "stm32f429zit6" "mcu": "stm32f429zit6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "32F429IDISCOVERY", "name": "32F429IDISCOVERY",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -145,7 +145,7 @@
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "stm32f030r8t6" "mcu": "stm32f030r8t6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo F030R8", "name": "ST Nucleo F030R8",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -161,7 +161,7 @@
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "stm32f070rbt6" "mcu": "stm32f070rbt6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo F070RB", "name": "ST Nucleo F070RB",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -177,7 +177,7 @@
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "stm32f072rbt6" "mcu": "stm32f072rbt6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo F072RB", "name": "ST Nucleo F072RB",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -193,7 +193,7 @@
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "stm32f091rct6" "mcu": "stm32f091rct6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo F091RC", "name": "ST Nucleo F091RC",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -209,7 +209,7 @@
"cpu": "cortex-m3", "cpu": "cortex-m3",
"mcu": "stm32f103rbt6" "mcu": "stm32f103rbt6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo F103RB", "name": "ST Nucleo F103RB",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -225,7 +225,7 @@
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "stm32f302r8t6" "mcu": "stm32f302r8t6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo F302R8", "name": "ST Nucleo F302R8",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -241,7 +241,7 @@
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "stm32f334r8t6" "mcu": "stm32f334r8t6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo F334R8", "name": "ST Nucleo F334R8",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -257,7 +257,7 @@
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "stm32f401ret6" "mcu": "stm32f401ret6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo F401RE", "name": "ST Nucleo F401RE",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -273,7 +273,7 @@
"cpu": "cortex-m4", "cpu": "cortex-m4",
"mcu": "stm32f411ret6" "mcu": "stm32f411ret6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo F411RE", "name": "ST Nucleo F411RE",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -289,7 +289,7 @@
"cpu": "cortex-m0", "cpu": "cortex-m0",
"mcu": "stm32l053r8t6" "mcu": "stm32l053r8t6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo L053R8", "name": "ST Nucleo L053R8",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {
@ -305,7 +305,7 @@
"cpu": "cortex-m3", "cpu": "cortex-m3",
"mcu": "stm32l152ret6" "mcu": "stm32l152ret6"
}, },
"frameworks": "mbed", "frameworks": ["mbed"],
"name": "ST Nucleo L152RE", "name": "ST Nucleo L152RE",
"platform": "ststm32", "platform": "ststm32",
"upload": { "upload": {

View File

@ -5,7 +5,7 @@
"f_cpu": "16000000L", "f_cpu": "16000000L",
"mcu": "atmega32u4" "mcu": "atmega32u4"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Teensy 2.0", "name": "Teensy 2.0",
"platform": "teensy", "platform": "teensy",
"upload": { "upload": {
@ -22,7 +22,7 @@
"f_cpu": "16000000L", "f_cpu": "16000000L",
"mcu": "at90usb1286" "mcu": "at90usb1286"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Teensy++ 2.0", "name": "Teensy++ 2.0",
"platform": "teensy", "platform": "teensy",
"upload": { "upload": {
@ -42,7 +42,7 @@
"mcu": "mk20dx128", "mcu": "mk20dx128",
"cpu": "cortex-m4" "cpu": "cortex-m4"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Teensy 3.0", "name": "Teensy 3.0",
"platform": "teensy", "platform": "teensy",
"upload": { "upload": {
@ -62,7 +62,7 @@
"mcu": "mk20dx256", "mcu": "mk20dx256",
"cpu": "cortex-m4" "cpu": "cortex-m4"
}, },
"frameworks": "arduino", "frameworks": ["arduino"],
"name": "Teensy 3.1", "name": "Teensy 3.1",
"platform": "teensy", "platform": "teensy",
"upload": { "upload": {

View File

@ -6,7 +6,7 @@
"mcu": "msp430f5529", "mcu": "msp430f5529",
"variant": "launchpad_f5529" "variant": "launchpad_f5529"
}, },
"frameworks": "energia", "frameworks": ["energia"],
"name": "LaunchPad w/ msp430f5529 (16MHz)", "name": "LaunchPad w/ msp430f5529 (16MHz)",
"platform": "timsp430", "platform": "timsp430",
"upload": { "upload": {
@ -24,7 +24,7 @@
"mcu": "msp430f5529", "mcu": "msp430f5529",
"variant": "launchpad_f5529" "variant": "launchpad_f5529"
}, },
"frameworks": "energia", "frameworks": ["energia"],
"name": "LaunchPad w/ msp430f5529 (25MHz)", "name": "LaunchPad w/ msp430f5529 (25MHz)",
"platform": "timsp430", "platform": "timsp430",
"upload": { "upload": {
@ -42,7 +42,7 @@
"mcu": "msp430fr5739", "mcu": "msp430fr5739",
"variant": "fraunchpad" "variant": "fraunchpad"
}, },
"frameworks": "energia", "frameworks": ["energia"],
"name": "FraunchPad w/ msp430fr5739", "name": "FraunchPad w/ msp430fr5739",
"platform": "timsp430", "platform": "timsp430",
"upload": { "upload": {
@ -60,7 +60,7 @@
"mcu": "msp430fr5969", "mcu": "msp430fr5969",
"variant": "launchpad_fr5969" "variant": "launchpad_fr5969"
}, },
"frameworks": "energia", "frameworks": ["energia"],
"name": "LaunchPad w/ msp430fr5969", "name": "LaunchPad w/ msp430fr5969",
"platform": "timsp430", "platform": "timsp430",
"upload": { "upload": {
@ -78,7 +78,7 @@
"mcu": "msp430g2231", "mcu": "msp430g2231",
"variant": "launchpad" "variant": "launchpad"
}, },
"frameworks": "energia", "frameworks": ["energia"],
"name": "LaunchPad w/ msp430g2231 (1 MHz)", "name": "LaunchPad w/ msp430g2231 (1 MHz)",
"platform": "timsp430", "platform": "timsp430",
"upload": { "upload": {
@ -96,7 +96,7 @@
"mcu": "msp430g2452", "mcu": "msp430g2452",
"variant": "launchpad" "variant": "launchpad"
}, },
"frameworks": "energia", "frameworks": ["energia"],
"name": "LaunchPad w/ msp430g2452 (16MHz)", "name": "LaunchPad w/ msp430g2452 (16MHz)",
"platform": "timsp430", "platform": "timsp430",
"upload": { "upload": {
@ -114,7 +114,7 @@
"mcu": "msp430g2553", "mcu": "msp430g2553",
"variant": "launchpad" "variant": "launchpad"
}, },
"frameworks": "energia", "frameworks": ["energia"],
"name": "LaunchPad w/ msp430g2553 (16MHz)", "name": "LaunchPad w/ msp430g2553 (16MHz)",
"platform": "timsp430", "platform": "timsp430",
"upload": { "upload": {

View File

@ -8,7 +8,7 @@
"mcu": "lplm4f120h5qr", "mcu": "lplm4f120h5qr",
"variant": "stellarpad" "variant": "stellarpad"
}, },
"frameworks": "energia,opencm3", "frameworks": ["energia", "opencm3"],
"name": "LaunchPad (Stellaris) w/ lm4f120 (80MHz)", "name": "LaunchPad (Stellaris) w/ lm4f120 (80MHz)",
"platform": "titiva", "platform": "titiva",
"upload": { "upload": {
@ -27,7 +27,7 @@
"mcu": "lptm4c1230c3pm", "mcu": "lptm4c1230c3pm",
"variant": "stellarpad" "variant": "stellarpad"
}, },
"frameworks": "energia,opencm3", "frameworks": ["energia", "opencm3"],
"name": "LaunchPad (Tiva C) w/ tm4c123 (80MHz)", "name": "LaunchPad (Tiva C) w/ tm4c123 (80MHz)",
"platform": "titiva", "platform": "titiva",
"upload": { "upload": {
@ -46,7 +46,7 @@
"mcu": "lptm4c1294ncpdt", "mcu": "lptm4c1294ncpdt",
"variant": "launchpad_129" "variant": "launchpad_129"
}, },
"frameworks": "energia,opencm3", "frameworks": ["energia", "opencm3"],
"name": "LaunchPad (Tiva C) w/ tm4c129 (120MHz)", "name": "LaunchPad (Tiva C) w/ tm4c129 (120MHz)",
"platform": "titiva", "platform": "titiva",
"upload": { "upload": {

View File

@ -94,11 +94,11 @@ def fill_project_envs(project_file, board_types, disable_auto_uploading):
data = builtin_boards[type_] data = builtin_boards[type_]
# find default framework for board # find default framework for board
framework = data.get("frameworks", None).split(",")[0] frameworks = data.get("frameworks")
content.append("[env:autogen_%s]" % type_) content.append("[env:autogen_%s]" % type_)
content.append("platform = %s" % data['platform']) content.append("platform = %s" % data['platform'])
if framework: if frameworks:
content.append("framework = %s" % framework) content.append("framework = %s" % frameworks[0])
content.append("board = %s" % type_) content.append("board = %s" % type_)
content.append("%stargets = upload" % ("# " if disable_auto_uploading content.append("%stargets = upload" % ("# " if disable_auto_uploading

View File

@ -41,7 +41,7 @@ def test_init_special_board(platformio_setup, clirunner, validate_cliresult):
config = util.get_project_config() config = util.get_project_config()
expected_result = [ expected_result = [
("platform", str(uno['platform'])), ("platform", str(uno['platform'])),
("framework", str(uno['framework'])), ("framework", str(uno['frameworks'][0])),
("board", "uno"), ("board", "uno"),
("targets", "upload") ("targets", "upload")
] ]