From ace9ae0b246be737229ada4060327adfb2ee6ee9 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Mon, 9 Nov 2015 18:10:43 +0200 Subject: [PATCH] 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) #