From ace9ae0b246be737229ada4060327adfb2ee6ee9 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Mon, 9 Nov 2015 18:10:43 +0200 Subject: [PATCH 1/4] Initial support for RFduino. --- platformio/boards/nordicnrf51.json | 20 +++++++++++++++++++ .../builder/scripts/frameworks/arduino.py | 15 ++++++++++++++ platformio/builder/scripts/nordicnrf51.py | 16 ++++++++++++++- 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/platformio/boards/nordicnrf51.json b/platformio/boards/nordicnrf51.json index beaedcd9..e9b7c5fb 100644 --- a/platformio/boards/nordicnrf51.json +++ b/platformio/boards/nordicnrf51.json @@ -142,5 +142,25 @@ }, "url": "https://developer.mbed.org/platforms/Delta-DFCM-NNN40/", "vendor": "Delta" + }, + "rfduino": { + "build": { + "core": "arduino", + "extra_flags": "-D__RFduino__", + "f_cpu": "16000000L", + "ldscript": "rfduino.ld", + "cpu": "cortex-m0", + "mcu": "nrf51822", + "variant": "rfduino" + }, + "frameworks": ["arduino"], + "name": "RFduino", + "platform": "nordicnrf51", + "upload": { + "maximum_ram_size": 8192, + "maximum_size": 131072 + }, + "url": "http://www.rfduino.com/product/rfd22102-rfduino-dip/index.html", + "vendor": "RFduino" } } diff --git a/platformio/builder/scripts/frameworks/arduino.py b/platformio/builder/scripts/frameworks/arduino.py index 69e00df3..a04e5643 100644 --- a/platformio/builder/scripts/frameworks/arduino.py +++ b/platformio/builder/scripts/frameworks/arduino.py @@ -49,6 +49,21 @@ elif env.get("PLATFORM") == "espressif": LIBS=["smartconfig", "pp", "main", "wpa", "lwip", "net80211", "wps", "crypto", "phy", "hal", "gcc", "m"] ) +elif env.get("PLATFORM") == "nordicnrf51": + PLATFORMFW_DIR = join( + "$PIOPACKAGES_DIR", + "framework-arduinonordicnrf51" + ) + env.Prepend( + CPPPATH=[ + join("$PLATFORMFW_DIR", "system", "CMSIS", "CMSIS", "Include"), + join("$PLATFORMFW_DIR", "system", "RFduino"), + join("$PLATFORMFW_DIR", "system", "RFduino", "include") + ], + LIBPATH=[join("$PLATFORMFW_DIR", "variants", "${BOARD_OPTIONS['build']['variant']}")], + LIBS=["RFduino", "RFduinoBLE", "RFduinoGZLL", "RFduinoSystem"] + ) + env.Replace(PLATFORMFW_DIR=PLATFORMFW_DIR) diff --git a/platformio/builder/scripts/nordicnrf51.py b/platformio/builder/scripts/nordicnrf51.py index 0abdf698..01b336a3 100644 --- a/platformio/builder/scripts/nordicnrf51.py +++ b/platformio/builder/scripts/nordicnrf51.py @@ -14,6 +14,17 @@ env = DefaultEnvironment() SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py"))) +if env.subst("$BOARD") == "rfduino": + env.Append( + CPPFLAGS=["-fno-builtin"], + LINKFLAGS=["--specs=nano.specs"] + ), + env.Replace( + UPLOADER=join("$PIOPACKAGES_DIR", "tool-rfdloader", "rfdloader"), + UPLOADERFLAGS=["-q", "$UPLOAD_PORT", "$SOURCES"], + UPLOADCMD="$UPLOADER $UPLOADERFLAGS" + ) + # # Target: Build executable and linkable firmware # @@ -40,7 +51,10 @@ AlwaysBuild(target_size) # Target: Upload by default .bin file # -upload = env.Alias(["upload", "uploadlazy"], target_firm, env.UploadToDisk) +if "mbed" in env.subst("$FRAMEWORK"): + upload = env.Alias(["upload", "uploadlazy"], target_firm, env.UploadToDisk) +else: + upload = env.Alias(["upload", "uploadlazy"], target_firm, "$UPLOADCMD") AlwaysBuild(upload) # From 1c5d34cb5f6099669872251066406fb833df0337 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Mon, 9 Nov 2015 20:24:41 +0200 Subject: [PATCH 2/4] Update nordicnrf51 platform for RFduino. --- platformio/builder/scripts/frameworks/arduino.py | 6 +++++- platformio/builder/scripts/nordicnrf51.py | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/platformio/builder/scripts/frameworks/arduino.py b/platformio/builder/scripts/frameworks/arduino.py index a04e5643..607065b2 100644 --- a/platformio/builder/scripts/frameworks/arduino.py +++ b/platformio/builder/scripts/frameworks/arduino.py @@ -60,7 +60,11 @@ elif env.get("PLATFORM") == "nordicnrf51": join("$PLATFORMFW_DIR", "system", "RFduino"), join("$PLATFORMFW_DIR", "system", "RFduino", "include") ], - LIBPATH=[join("$PLATFORMFW_DIR", "variants", "${BOARD_OPTIONS['build']['variant']}")], + LIBPATH=[join( + "$PLATFORMFW_DIR", + "variants", + "${BOARD_OPTIONS['build']['variant']}") + ], LIBS=["RFduino", "RFduinoBLE", "RFduinoGZLL", "RFduinoSystem"] ) diff --git a/platformio/builder/scripts/nordicnrf51.py b/platformio/builder/scripts/nordicnrf51.py index 01b336a3..fd4e1661 100644 --- a/platformio/builder/scripts/nordicnrf51.py +++ b/platformio/builder/scripts/nordicnrf51.py @@ -51,10 +51,10 @@ AlwaysBuild(target_size) # Target: Upload by default .bin file # -if "mbed" in env.subst("$FRAMEWORK"): - upload = env.Alias(["upload", "uploadlazy"], target_firm, env.UploadToDisk) -else: +if env.subst("$BOARD") == "rfduino": upload = env.Alias(["upload", "uploadlazy"], target_firm, "$UPLOADCMD") +else: + upload = env.Alias(["upload", "uploadlazy"], target_firm, env.UploadToDisk) AlwaysBuild(upload) # From b94cc655c2c262478ba956815a70c2d17fe89299 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Mon, 9 Nov 2015 21:02:05 +0200 Subject: [PATCH 3/4] Fix lint error. --- platformio/builder/scripts/frameworks/arduino.py | 10 ++++++---- platformio/builder/scripts/nordicnrf51.py | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/platformio/builder/scripts/frameworks/arduino.py b/platformio/builder/scripts/frameworks/arduino.py index 607065b2..c499fe75 100644 --- a/platformio/builder/scripts/frameworks/arduino.py +++ b/platformio/builder/scripts/frameworks/arduino.py @@ -60,10 +60,12 @@ elif env.get("PLATFORM") == "nordicnrf51": join("$PLATFORMFW_DIR", "system", "RFduino"), join("$PLATFORMFW_DIR", "system", "RFduino", "include") ], - LIBPATH=[join( - "$PLATFORMFW_DIR", - "variants", - "${BOARD_OPTIONS['build']['variant']}") + LIBPATH=[ + join( + "$PLATFORMFW_DIR", + "variants", + "${BOARD_OPTIONS['build']['variant']}" + ) ], LIBS=["RFduino", "RFduinoBLE", "RFduinoGZLL", "RFduinoSystem"] ) diff --git a/platformio/builder/scripts/nordicnrf51.py b/platformio/builder/scripts/nordicnrf51.py index fd4e1661..68bf1eb5 100644 --- a/platformio/builder/scripts/nordicnrf51.py +++ b/platformio/builder/scripts/nordicnrf51.py @@ -18,7 +18,7 @@ if env.subst("$BOARD") == "rfduino": env.Append( CPPFLAGS=["-fno-builtin"], LINKFLAGS=["--specs=nano.specs"] - ), + ) env.Replace( UPLOADER=join("$PIOPACKAGES_DIR", "tool-rfdloader", "rfdloader"), UPLOADERFLAGS=["-q", "$UPLOAD_PORT", "$SOURCES"], From cc46fa34e8c0feb002f9d623adc9baa969ccfadc Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Tue, 10 Nov 2015 00:12:30 +0200 Subject: [PATCH 4/4] Add "framework-arduinonordicnrf51" for the platform --- platformio/platforms/nordicnrf51.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/platformio/platforms/nordicnrf51.py b/platformio/platforms/nordicnrf51.py index e3a09a0d..75a4cf66 100644 --- a/platformio/platforms/nordicnrf51.py +++ b/platformio/platforms/nordicnrf51.py @@ -26,6 +26,10 @@ class Nordicnrf51Platform(BasePlatform): "framework-mbed": { "default": True + }, + + "framework-arduinonordicnrf51": { + "default": False } }