Add support for RFDuino // Resolve #319

This commit is contained in:
Ivan Kravets committed 2015-12-26 21:24:01 +02:00
commit 1b7b2ca0a2
11 files changed
+148 -8

No files matched your search

+1 -1
View File
@@ -14,7 +14,7 @@
import sys
VERSION = (2, 7, "0.dev0")
VERSION = (2, 7, "0.dev1")
__version__ = ".".join([str(s) for s in VERSION])
__title__ = "platformio"
+20
View File
@@ -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"
}
}
+1 -6
View File
@@ -111,12 +111,7 @@ if "BOARD" in env:
UPLOAD_SPEED="${BOARD_OPTIONS['upload'].get('speed', None)}")
if "ldscript" in env.get("BOARD_OPTIONS", {}).get("build", {}):
env.Replace(
LDSCRIPT_PATH=(
env['BOARD_OPTIONS']['build']['ldscript']
if isfile(env['BOARD_OPTIONS']['build']['ldscript'])
else join("$PIOHOME_DIR", "packages", "ldscripts",
"${BOARD_OPTIONS['build']['ldscript']}")
)
LDSCRIPT_PATH="${BOARD_OPTIONS['build']['ldscript']}"
)
if env['PLATFORM'] != env.get("BOARD_OPTIONS", {}).get("platform"):
@@ -60,6 +60,34 @@ elif env.get("PLATFORM") == "espressif":
LIBS=["smartconfig", "pp", "main", "wpa", "lwip",
"net80211", "wps", "crypto", "phy", "hal", "axtls", "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']}"
),
join(
"$PLATFORMFW_DIR",
"variants",
"${BOARD_OPTIONS['build']['variant']}",
"linker_scripts",
"gcc"
),
],
LIBS=["RFduino", "RFduinoBLE", "RFduinoGZLL", "RFduinoSystem"]
)
env.Replace(PLATFORMFW_DIR=PLATFORMFW_DIR)
+17 -1
View File
@@ -25,6 +25,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
#
@@ -51,7 +62,12 @@ AlwaysBuild(target_size)
# Target: Upload by default .bin file
#
upload = env.Alias(["upload", "uploadlazy"], target_firm, env.UploadToDisk)
if env.subst("$BOARD") == "rfduino":
upload = env.Alias(
["upload", "uploadlazy"], target_firm,
[lambda target, source, env: env.AutodetectUploadPort(), "$UPLOADCMD"])
else:
upload = env.Alias(["upload", "uploadlazy"], target_firm, env.UploadToDisk)
AlwaysBuild(upload)
#
+7
View File
@@ -47,6 +47,10 @@ PLATFORM_PACKAGES = {
("Arduino Wiring-based Framework (ESP8266 Core)",
"https://github.com/esp8266/Arduino")
],
"framework-arduinonordicnrf51": [
("Arduino Wiring-based Framework (RFDuino Core)",
"https://github.com/RFduino/RFduino")
],
"framework-energiamsp430": [
("Energia Wiring-based Framework (MSP430 Core)",
"http://energia.nu/reference/")
@@ -139,6 +143,9 @@ PLATFORM_PACKAGES = {
],
"tool-esptool": [
("esptool-ck", "https://github.com/igrr/esptool-ck")
],
"tool-rfdloader": [
("rfdloader", "https://github.com/RFduino/RFduino")
]
}
+14
View File
@@ -37,8 +37,22 @@ class Nordicnrf51Platform(BasePlatform):
"framework-mbed": {
"alias": "framework"
},
"framework-arduinonordicnrf51": {
"alias": "framework"
},
"tool-rfdloader": {
}
}
def get_name(self):
return "Nordic nRF51"
def configure_default_packages(self, envoptions, targets):
if envoptions.get("board") == "rfduino":
self.PACKAGES['tool-rfdloader']['alias'] = "uploader"
return BasePlatform.configure_default_packages(
self, envoptions, targets)