From dfe39f386d6e5b239515ccfb572828bc1889e23c Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 24 Dec 2015 23:09:40 +0200 Subject: [PATCH] Add support for the new Adafruit boards Bluefruit Micro and Feather // Resolve #403 --- HISTORY.rst | 6 ++ platformio/__init__.py | 2 +- platformio/boards/adafruit.json | 134 +++++++++++++++++++------ platformio/builder/scripts/atmelavr.py | 4 + platformio/builder/scripts/baseavr.py | 2 +- 5 files changed, 118 insertions(+), 30 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 989e9c39..1a99488e 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,6 +4,12 @@ Release History PlatformIO 2.0 -------------- +2.6.4 (2015-12-??) +~~~~~~~~~~~~~~~~~~ + +* Added support for the new Adafruit boards Bluefruit Micro and Feather + (`issue #403 `_) + 2.6.3 (2015-12-21) ~~~~~~~~~~~~~~~~~~ diff --git a/platformio/__init__.py b/platformio/__init__.py index 3573fb8e..ac3c20e8 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -VERSION = (2, 6, "4.dev0") +VERSION = (2, 6, "4.dev1") __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/platformio/boards/adafruit.json b/platformio/boards/adafruit.json index 6e81d2f7..cf4018f8 100644 --- a/platformio/boards/adafruit.json +++ b/platformio/boards/adafruit.json @@ -2,7 +2,7 @@ "flora8": { "build": { "core": "arduino", - "extra_flags": "-DARDUINO_ARCH_AVR", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_FLORA8", "f_cpu": "8000000L", "mcu": "atmega32u4", "usb_product": "Adafruit Flora", @@ -21,16 +21,92 @@ "require_upload_port" : true, "speed": 57600, "use_1200bps_touch": true, - "wait_for_upload_port": false + "wait_for_upload_port": true }, "url": "http://www.adafruit.com/product/659", "vendor": "Adafruit" }, + "bluefruitmicro": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_BLUEFRUITMICRO", + "f_cpu": "8000000L", + "mcu": "atmega32u4", + "usb_product": "Bluefruit Micro", + "pid": "0x800A", + "variant": "bluefruitmicro", + "vid": "0x239A" + }, + "frameworks": ["arduino"], + "name": "Adafruit Bluefruit Micro", + "platform": "atmelavr", + "upload": { + "disable_flushing": true, + "maximum_ram_size": 2560, + "maximum_size": 28672, + "protocol": "avr109", + "require_upload_port" : true, + "speed": 57600, + "use_1200bps_touch": true, + "wait_for_upload_port": true + }, + "url": "https://www.adafruit.com/products/2661", + "vendor": "Adafruit" + }, + + "gemma": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_GEMMA", + "f_cpu": "8000000L", + "mcu": "attiny85", + "variant": "tiny8" + }, + "frameworks": ["arduino"], + "name": "Adafruit Gemma", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 512, + "maximum_size": 8192, + "protocol": "usbtiny" + }, + "url": "http://www.adafruit.com/products/1222", + "vendor": "Adafruit" + }, + + "feather32u4": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_FEATHER32U4", + "f_cpu": "8000000L", + "mcu": "atmega32u4", + "usb_product": "Feather 32u4", + "pid": "0x800C", + "variant": "feather32u4", + "vid": "0x239C" + }, + "frameworks": ["arduino"], + "name": "Adafruit Feather", + "platform": "atmelavr", + "upload": { + "disable_flushing": true, + "maximum_ram_size": 2560, + "maximum_size": 28672, + "protocol": "avr109", + "require_upload_port" : true, + "speed": 57600, + "use_1200bps_touch": true, + "wait_for_upload_port": true + }, + "url": "https://learn.adafruit.com/adafruit-feather-32u4-bluefruit-le/", + "vendor": "Adafruit" + }, + "trinket3": { "build": { "core": "arduino", - "extra_flags": "-DARDUINO_ARCH_AVR", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_TRINKET3", "f_cpu": "8000000L", "mcu": "attiny85", "variant": "tiny8" @@ -47,30 +123,10 @@ "vendor": "Adafruit" }, - "gemma": { - "build": { - "core": "arduino", - "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_GEMMA", - "f_cpu": "8000000L", - "mcu": "attiny85", - "variant": "gemma" - }, - "frameworks": ["arduino"], - "name": "Adafruit Gemma", - "platform": "atmelavr", - "upload": { - "maximum_ram_size": 512, - "maximum_size": 8192, - "protocol": "usbtiny" - }, - "url": "http://www.adafruit.com/products/1222", - "vendor": "Adafruit" - }, - "trinket5": { "build": { "core": "arduino", - "extra_flags": "-DARDUINO_ARCH_AVR", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_TRINKET5", "f_cpu": "16000000L", "mcu": "attiny85", "variant": "tiny8" @@ -87,10 +143,32 @@ "vendor": "Adafruit" }, + "metro": { + "build": { + "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_METRO", + "f_cpu": "16000000L", + "mcu": "atmega328p", + "variant": "standard" + }, + "frameworks": ["arduino"], + "name": "Adafruit Metro", + "platform": "atmelavr", + "upload": { + "maximum_ram_size": 2048, + "maximum_size": 32256, + "protocol": "arduino", + "require_upload_port" : true, + "speed": 115200 + }, + "url": "https://www.adafruit.com/products/2466", + "vendor": "Adafruit" + }, + "protrinket3": { "build": { "core": "arduino", - "extra_flags": "-DARDUINO_ARCH_AVR", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_PROTRINKET3", "f_cpu": "12000000L", "mcu": "atmega328p", "variant": "eightanaloginputs" @@ -110,7 +188,7 @@ "protrinket5": { "build": { "core": "arduino", - "extra_flags": "-DARDUINO_ARCH_AVR", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_PROTRINKET5", "f_cpu": "16000000L", "mcu": "atmega328p", "variant": "eightanaloginputs" @@ -129,7 +207,7 @@ "protrinket3ftdi": { "build": { "core": "arduino", - "extra_flags": "-DARDUINO_ARCH_AVR", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_PROTRINKET3FTDI", "f_cpu": "16000000L", "mcu": "atmega328p", "variant": "eightanaloginputs" @@ -150,7 +228,7 @@ "protrinket5ftdi": { "build": { "core": "arduino", - "extra_flags": "-DARDUINO_ARCH_AVR", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_PROTRINKET5FTDI", "f_cpu": "16000000L", "mcu": "atmega328p", "variant": "eightanaloginputs" diff --git a/platformio/builder/scripts/atmelavr.py b/platformio/builder/scripts/atmelavr.py index ab4d181d..74a33e9e 100644 --- a/platformio/builder/scripts/atmelavr.py +++ b/platformio/builder/scripts/atmelavr.py @@ -27,11 +27,15 @@ from platformio.util import get_serialports def BeforeUpload(target, source, env): # pylint: disable=W0613,W0621 + if "program" in COMMAND_LINE_TARGETS: + return + if "micronucleus" in env['UPLOADER']: print "Please unplug/plug device ..." upload_options = env.get("BOARD_OPTIONS", {}).get("upload", {}) + # Deprecated: compatibility with old projects. Use `program` instead if "usb" in env.subst("$UPLOAD_PROTOCOL"): upload_options['require_upload_port'] = False env.Replace(UPLOAD_SPEED=None) diff --git a/platformio/builder/scripts/baseavr.py b/platformio/builder/scripts/baseavr.py index ae2aed7c..6f79a030 100644 --- a/platformio/builder/scripts/baseavr.py +++ b/platformio/builder/scripts/baseavr.py @@ -39,7 +39,7 @@ env.Replace( "-Wall", # show warnings "-ffunction-sections", # place each function in its own section "-fdata-sections", - "-MMD", # output dependency info + # "-MMD", # output dependency info "-mmcu=$BOARD_MCU" ],