diff --git a/platformio/boards/arduino.json b/platformio/boards/arduino.json index 4d84f47a..84fa14ff 100644 --- a/platformio/boards/arduino.json +++ b/platformio/boards/arduino.json @@ -1,8 +1,8 @@ { "LilyPadUSB": { "build": { - "board": "AVR_LILYPAD_USB", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_LILYPAD_USB", "f_cpu": "8000000L", "mcu": "atmega32u4", "pid": "0x9208", @@ -24,8 +24,8 @@ }, "atmegangatmega168": { "build": { - "board": "AVR_NG", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_NG", "f_cpu": "16000000L", "mcu": "atmega168", "variant": "standard" @@ -41,8 +41,8 @@ }, "atmegangatmega8": { "build": { - "board": "AVR_NG", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_NG", "f_cpu": "16000000L", "mcu": "atmega8", "variant": "standard" @@ -58,8 +58,8 @@ }, "btatmega168": { "build": { - "board": "AVR_BT", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_BT", "f_cpu": "16000000L", "mcu": "atmega168", "variant": "eightanaloginputs" @@ -76,8 +76,8 @@ }, "btatmega328": { "build": { - "board": "AVR_BT", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_BT", "f_cpu": "16000000L", "mcu": "atmega328p", "variant": "eightanaloginputs" @@ -94,8 +94,8 @@ }, "diecimilaatmega168": { "build": { - "board": "AVR_DUEMILANOVE", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_DUEMILANOVE", "f_cpu": "16000000L", "mcu": "atmega168", "variant": "standard" @@ -111,8 +111,8 @@ }, "diecimilaatmega328": { "build": { - "board": "AVR_DUEMILANOVE", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_DUEMILANOVE", "f_cpu": "16000000L", "mcu": "atmega328p", "variant": "standard" @@ -128,8 +128,8 @@ }, "esplora": { "build": { - "board": "AVR_ESPLORA", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_ESPLORA", "f_cpu": "16000000L", "mcu": "atmega32u4", "pid": "0x803c", @@ -151,8 +151,8 @@ }, "ethernet": { "build": { - "board": "AVR_ETHERNET", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_ETHERNET", "f_cpu": "16000000L", "mcu": "atmega328p", "variant": "ethernet" @@ -168,8 +168,8 @@ }, "fio": { "build": { - "board": "AVR_FIO", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_FIO", "f_cpu": "8000000L", "mcu": "atmega328p", "variant": "eightanaloginputs" @@ -185,8 +185,8 @@ }, "leonardo": { "build": { - "board": "AVR_LEONARDO", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_LEONARDO", "f_cpu": "16000000L", "mcu": "atmega32u4", "pid": "0x8036", @@ -208,8 +208,8 @@ }, "lilypadatmega168": { "build": { - "board": "AVR_LILYPAD", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_LILYPAD", "f_cpu": "8000000L", "mcu": "atmega168", "variant": "standard" @@ -225,8 +225,8 @@ }, "lilypadatmega328": { "build": { - "board": "AVR_LILYPAD", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_LILYPAD", "f_cpu": "8000000L", "mcu": "atmega328p", "variant": "standard" @@ -242,8 +242,8 @@ }, "megaADK": { "build": { - "board": "AVR_ADK", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_ADK", "f_cpu": "16000000L", "mcu": "atmega2560", "variant": "mega" @@ -259,8 +259,8 @@ }, "megaatmega1280": { "build": { - "board": "AVR_MEGA", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MEGA", "f_cpu": "16000000L", "mcu": "atmega1280", "variant": "mega" @@ -276,8 +276,8 @@ }, "megaatmega2560": { "build": { - "board": "AVR_MEGA2560", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MEGA2560", "f_cpu": "16000000L", "mcu": "atmega2560", "variant": "mega" @@ -293,8 +293,8 @@ }, "micro": { "build": { - "board": "AVR_MICRO", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MICRO", "f_cpu": "16000000L", "mcu": "atmega32u4", "pid": "0x8037", @@ -316,8 +316,8 @@ }, "miniatmega168": { "build": { - "board": "AVR_MINI", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MINI", "f_cpu": "16000000L", "mcu": "atmega168", "variant": "eightanaloginputs" @@ -333,8 +333,8 @@ }, "miniatmega328": { "build": { - "board": "AVR_MINI", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_MINI", "f_cpu": "16000000L", "mcu": "atmega328p", "variant": "eightanaloginputs" @@ -350,8 +350,8 @@ }, "nanoatmega168": { "build": { - "board": "AVR_NANO", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_NANO", "f_cpu": "16000000L", "mcu": "atmega168", "variant": "eightanaloginputs" @@ -367,8 +367,8 @@ }, "nanoatmega328": { "build": { - "board": "AVR_NANO", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_NANO", "f_cpu": "16000000L", "mcu": "atmega328p", "variant": "eightanaloginputs" @@ -384,8 +384,8 @@ }, "pro16MHzatmega168": { "build": { - "board": "AVR_PRO", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_PRO", "f_cpu": "16000000L", "mcu": "atmega168", "variant": "eightanaloginputs" @@ -401,8 +401,8 @@ }, "pro16MHzatmega328": { "build": { - "board": "AVR_PRO", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_PRO", "f_cpu": "16000000L", "mcu": "atmega328p", "variant": "eightanaloginputs" @@ -418,8 +418,8 @@ }, "pro8MHzatmega168": { "build": { - "board": "AVR_PRO", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_PRO", "f_cpu": "8000000L", "mcu": "atmega168", "variant": "eightanaloginputs" @@ -435,8 +435,8 @@ }, "pro8MHzatmega328": { "build": { - "board": "AVR_PRO", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_PRO", "f_cpu": "8000000L", "mcu": "atmega328p", "variant": "eightanaloginputs" @@ -452,8 +452,8 @@ }, "robotControl": { "build": { - "board": "AVR_ROBOT_CONTROL", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_ROBOT_CONTROL", "f_cpu": "16000000L", "mcu": "atmega32u4", "pid": "0x8038", @@ -475,8 +475,8 @@ }, "robotMotor": { "build": { - "board": "AVR_ROBOT_MOTOR", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_ROBOT_MOTOR", "f_cpu": "16000000L", "mcu": "atmega32u4", "pid": "0x8039", @@ -498,8 +498,8 @@ }, "uno": { "build": { - "board": "AVR_UNO", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_UNO", "f_cpu": "16000000L", "mcu": "atmega328p", "variant": "standard" @@ -515,8 +515,8 @@ }, "yun": { "build": { - "board": "AVR_YUN", "core": "arduino", + "extra_flags": "-DARDUINO_ARCH_AVR -DARDUINO_AVR_YUN", "f_cpu": "16000000L", "mcu": "atmega32u4", "pid": "0x8041", @@ -536,5 +536,29 @@ "via_ssh": true, "wait_for_upload_port": true } - } + }, + "due": { + "build": { + "core": "arduino", + "extra_flags": "-D__SAM3X8E__ -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM", + "f_cpu": "84000000L", + "mcu": "cortex-m3", + "pid": "0x003e", + "usb_product": "Arduino Due", + "variant": "arduino_due_x", + "vid": "0x2341", + "ldscript": "sam3x8e.ld" + }, + "name": "Arduino Due (Programming Port)", + "platform": "sam", + "upload": { + "disable_flushing": true, + "maximum_ram_size": 524288, + "maximum_size": 28672, + "protocol": "sam-ba", + "speed": 57600, + "use_1200bps_touch": true, + "wait_for_upload_port": false + } + } } diff --git a/platformio/boards/stm32.json b/platformio/boards/stm32.json index 03c7a803..bebf43ca 100644 --- a/platformio/boards/stm32.json +++ b/platformio/boards/stm32.json @@ -2,11 +2,11 @@ "stm32f4discovery": { "build": { "core": "stm32", + "extra_flags": "-DSTM32F40_41xxx", "f_cpu": "168000000L", "ldscript": "stm32f405x6.ld", "mcu": "cortex-m4", - "variant": "stm32f4", - "extra_flags": "-DSTM32F40_41xxx" + "variant": "stm32f4" }, "name": "STM32F4Discovery (168 MHz) with digital accelerometer, digital microphone, audio DAC", "platform": "stm32", @@ -18,11 +18,11 @@ "stm32ldiscovery": { "build": { "core": "stm32", + "extra_flags": "-DSTM32L1XX_MD", "f_cpu": "32000000L", "ldscript": "stm32l15xx6.ld", "mcu": "cortex-m3", - "variant": "stm32l1", - "extra_flags": "-DSTM32L1XX_MD" + "variant": "stm32l1" }, "name": "STM32LDiscovery (32 MHz) ultra low-power development kit", "platform": "stm32", @@ -34,11 +34,11 @@ "stm32f3discovery": { "build": { "core": "stm32", + "extra_flags": "-DSTM32F303xC", "f_cpu": "72000000L", "ldscript": "stm32f30xx.ld", "mcu": "cortex-m4", - "variant": "stm32f3", - "extra_flags": "-DSTM32F303xC" + "variant": "stm32f3" }, "name": "STM32F3Discovery (72 MHz) with accelerometer, gyroscope and e-compass", "platform": "stm32", diff --git a/platformio/builder/main.py b/platformio/builder/main.py index e2383e00..3bde0b9d 100644 --- a/platformio/builder/main.py +++ b/platformio/builder/main.py @@ -84,15 +84,6 @@ if "BOARD" in env: env.Replace(UPLOAD_PROTOCOL="${BOARD_OPTIONS['upload']['protocol']}") if "UPLOAD_SPEED" not in env: env.Replace(UPLOAD_SPEED="${BOARD_OPTIONS['upload']['speed']}") - # specific linker script - if "ldscript" in env.get("BOARD_OPTIONS", {}).get("build", {}): - env.Replace( - LINKFLAGS=["-T", join( - "$PIOHOME_DIR", "packages", "ldscripts", - "${BOARD_OPTIONS['build']['ldscript']}")] - ) - if "extra_flags" in env.get("BOARD_OPTIONS", {}).get("build", {}): - env.MergeFlags(env.subst("${BOARD_OPTIONS['build']['extra_flags']}")) if "IGNORE_LIBS" in env: env['IGNORE_LIBS'] = [l.strip() for l in env['IGNORE_LIBS'].split(",")] diff --git a/platformio/builder/scripts/frameworks/arduino.py b/platformio/builder/scripts/frameworks/arduino.py index 34e12edd..aa353081 100644 --- a/platformio/builder/scripts/frameworks/arduino.py +++ b/platformio/builder/scripts/frameworks/arduino.py @@ -2,7 +2,7 @@ # See LICENSE for details. """ - Build script for Android Framework (based on Wiring). + Build script for Arduino Framework (based on Wiring). """ from os.path import join @@ -26,24 +26,55 @@ if "usb_product" in env.subst("${BOARD_OPTIONS['build']}"): "${BOARD_OPTIONS['build']['usb_product']}").replace('"', "")) ] -# include board variant -env.VariantDir( - join("$BUILD_DIR", "FrameworkArduinoVariant"), - join("$PLATFORMFW_DIR", "variants", "${BOARD_OPTIONS['build']['variant']}") -) - env.Append( CPPDEFINES=[ - "ARDUINO_ARCH_%s" % env.subst("$PLATFORM").upper()[-3:], - "ARDUINO=%d" % ARDUINO_VERSION, - "ARDUINO_${BOARD_OPTIONS['build']['board']}" + "ARDUINO=%d" % ARDUINO_VERSION ] + ARDUINO_USBDEFINES, + CPPPATH=[ - join("$BUILD_DIR", "FrameworkArduino"), - join("$BUILD_DIR", "FrameworkArduinoVariant") + join("$BUILD_DIR", "FrameworkArduino") ] ) +# include board variant +if "variant" in env.get("BOARD_OPTIONS", {}).get("build", {}): + env.VariantDir( + join("$BUILD_DIR", "FrameworkArduinoVariant"), + join("$PLATFORMFW_DIR", "variants", + "${BOARD_OPTIONS['build']['variant']}") + ) + env.Append( + CPPPATH=[ + join("$BUILD_DIR", "FrameworkArduinoVariant") + ] + ) + +if env.get("BOARD_OPTIONS", {}).get("platform", None) == "sam": + env.VariantDir( + join("$BUILD_DIR", "FrameworkCMSISInc"), + join("$PLATFORMFW_DIR", "system", "CMSIS", "CMSIS", "include") + ) + env.VariantDir( + join("$BUILD_DIR", "FrameworkLibSamInc"), + join("$PLATFORMFW_DIR", "system", "libsam") + ) + env.VariantDir( + join("$BUILD_DIR", "FrameworkDeviceInc"), + join("$PLATFORMFW_DIR", "system", "CMSIS", "Device", "ATMEL") + ) + env.Append( + CPPPATH=[ + join("$BUILD_DIR", "FrameworkCMSISInc"), + join("$BUILD_DIR", "FrameworkLibSamInc"), + join("$BUILD_DIR", "FrameworkDeviceInc") + ] + ) + env.Append( + LINKFLAGS=[ + "-T", join("$PIOHOME_DIR", "packages", "ldscripts", + "${BOARD_OPTIONS['build']['ldscript']}") + ] + ) # # Target: Build Core Library diff --git a/platformio/builder/scripts/frameworks/opencm3.py b/platformio/builder/scripts/frameworks/opencm3.py index 82c9a5bb..d07357c4 100644 --- a/platformio/builder/scripts/frameworks/opencm3.py +++ b/platformio/builder/scripts/frameworks/opencm3.py @@ -156,8 +156,8 @@ merge_ld_scripts(ldscript_path) generate_nvic_files() # override ldscript by opencm3 -assert env['LINKFLAGS'][0] == "-T" -env['LINKFLAGS'][1] = ldscript_path +assert "-T" in env['LINKFLAGS'] +env['LINKFLAGS'][env['LINKFLAGS'].index("-T") + 1] = ldscript_path libs = [] env.VariantDir( diff --git a/platformio/builder/scripts/frameworks/spl.py b/platformio/builder/scripts/frameworks/spl.py index 239a6ba2..62801bfd 100644 --- a/platformio/builder/scripts/frameworks/spl.py +++ b/platformio/builder/scripts/frameworks/spl.py @@ -50,7 +50,7 @@ if "STM32F40_41xxx" in extra_flags: elif "STM32F303xC" in extra_flags: ignore_files += ["stm32f30x_hrtim.c"] elif "STM32L1XX_MD" in extra_flags: - ignore_files += ["stm32l1xx_flash_ramfunc.c"] # removed warning + ignore_files += ["stm32l1xx_flash_ramfunc.c"] libs = [] libs.append(envsafe.BuildLibrary( diff --git a/platformio/builder/scripts/sam.py b/platformio/builder/scripts/sam.py new file mode 100644 index 00000000..a8c98183 --- /dev/null +++ b/platformio/builder/scripts/sam.py @@ -0,0 +1,137 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +""" + Builder for Atmel SAM series of microcontrollers +""" + +from os.path import join + +from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild, Builder, Default, + DefaultEnvironment) + +from platformio.util import get_serialports + +env = DefaultEnvironment() + +env.Replace( + AR="arm-none-eabi-ar", + AS="arm-none-eabi-gcc", + CC="arm-none-eabi-gcc", + CXX="arm-none-eabi-g++", + OBJCOPY="arm-none-eabi-objcopy", + RANLIB="arm-none-eabi-ranlib", + + ARFLAGS=["rcs"], + + ASFLAGS=[ + "-c", + "-g", # include debugging info (so errors include line numbers) + "-x", "assembler-with-cpp", + "-Wall", + "-mthumb", + "-mcpu=${BOARD_OPTIONS['build']['mcu']}" + ], + + CCFLAGS=[ + "-g", # include debugging info (so errors include line numbers) + "-Os", # optimize for size + "-Wall", # show warnings + "-ffunction-sections", # place each function in its own section + "-fdata-sections", + "-MMD", # output dependency info + "-mcpu=${BOARD_OPTIONS['build']['mcu']}", + "-mthumb" + ], + + CXXFLAGS=[ + "-fno-rtti", + "-fno-exceptions" + ], + + CPPDEFINES=[ + "F_CPU=$BOARD_F_CPU" + ], + + LINKFLAGS=[ + "-Os", + "-Wl,--gc-sections", + "-mcpu=${BOARD_OPTIONS['build']['mcu']}", + "-mthumb" + ], + + UPLOADER=join("$PIOPACKAGES_DIR", "$PIOPACKAGE_UPLOADER", "bossac"), + UPLOADERFLAGS=[ + "--info", + "--debug", + "--port", "$UPLOAD_PORT", + "--erase", + "--write", + "--verify", + "--boot" + ], + UPLOADBINCMD='"$UPLOADER" $UPLOADERFLAGS $SOURCES' +) + +env.Append( + BUILDERS=dict( + ElfToBin=Builder( + action=" ".join([ + "$OBJCOPY", + "-O", + "binary", + "$SOURCES", + "$TARGET"]), + suffix=".bin" + ) + ) +) + +CORELIBS = env.ProcessGeneral() + +# +# Target: Build executable and linkable firmware +# + +target_elf = env.BuildFirmware(CORELIBS + ["m", "gcc"]) + +# +# Target: Build the .bin file +# + +if "uploadlazy" in COMMAND_LINE_TARGETS: + target_bin = join("$BUILD_DIR", "firmware.bin") +else: + target_bin = env.ElfToBin(join("$BUILD_DIR", "firmware"), target_elf) + +# +# Target: Upload by default .bin file +# + +upload = env.Alias(["upload", "uploadlazy"], target_bin, ("$UPLOADBINCMD")) +AlwaysBuild(upload) + +# +# Check for $UPLOAD_PORT variable +# + +is_uptarget = (set(["upload", "uploadlazy"]) & set(COMMAND_LINE_TARGETS)) + +if is_uptarget: + # try autodetect upload port + if "UPLOAD_PORT" not in env: + for item in get_serialports(): + if "VID:PID" in item['hwid']: + print "Auto-detected UPLOAD_PORT: %s" % item['port'] + env.Replace(UPLOAD_PORT=item['port']) + break + + if "UPLOAD_PORT" not in env: + print("WARNING!!! Please specify environment 'upload_port' or use " + "global --upload-port option.\n") + +# +# Setup default targets +# + +Default(target_bin) diff --git a/platformio/builder/scripts/stm32.py b/platformio/builder/scripts/stm32.py index 38b3af25..3793e7de 100644 --- a/platformio/builder/scripts/stm32.py +++ b/platformio/builder/scripts/stm32.py @@ -48,6 +48,20 @@ env.Replace( "-fno-exceptions" ], + CPPDEFINES=[ + "F_CPU=$BOARD_F_CPU", + "${BOARD_OPTIONS['build']['variant'].upper()}" + ], + + LINKFLAGS=[ + "-Os", + "-nostartfiles", + "-nostdlib", + "-Wl,--gc-sections", + "-mthumb", + "-mcpu=${BOARD_OPTIONS['build']['mcu']}" + ], + UPLOADER=join("$PIOPACKAGES_DIR", "tool-stlink", "st-flash"), UPLOADERFLAGS=[ "write", # write in flash @@ -58,25 +72,6 @@ env.Replace( UPLOADCMD="$UPLOADER $UPLOADERFLAGS" ) - -env.Append( - CPPDEFINES=[ - "F_CPU=$BOARD_F_CPU", - "${BOARD_OPTIONS['build']['variant'].upper()}" - ] -) - -env.Append( - LINKFLAGS=[ - "-Os", - "-nostartfiles", - "-nostdlib", - "-Wl,--gc-sections", - "-mthumb", - "-mcpu=${BOARD_OPTIONS['build']['mcu']}" - ] -) - if env.get("BOARD_OPTIONS", {}).get("build", {}).get("mcu")[-2:] == "m4": env.Append( ASFLAGS=[ diff --git a/platformio/builder/scripts/titiva.py b/platformio/builder/scripts/titiva.py index e5c39a88..613e6aef 100644 --- a/platformio/builder/scripts/titiva.py +++ b/platformio/builder/scripts/titiva.py @@ -59,11 +59,6 @@ env.Replace( "F_CPU=$BOARD_F_CPU" ], - UPLOADER=join("$PIOPACKAGES_DIR", "tool-lm4flash", "lm4flash"), - UPLOADCMD="$UPLOADER $SOURCES" -) - -env.Append( LINKFLAGS=[ "-Os", "-nostartfiles", @@ -74,7 +69,10 @@ env.Append( "-mfloat-abi=hard", "-mfpu=fpv4-sp-d16", "-fsingle-precision-constant" - ] + ], + + UPLOADER=join("$PIOPACKAGES_DIR", "tool-lm4flash", "lm4flash"), + UPLOADCMD="$UPLOADER $SOURCES" ) env.Append( diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 7f6ceb08..09aba659 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -16,6 +16,16 @@ from platformio.util import get_serialports def ProcessGeneral(env): corelibs = [] + # specific linker script + if "ldscript" in env.get("BOARD_OPTIONS", {}).get("build", {}): + env.Append( + LINKFLAGS=["-T", join( + "$PIOHOME_DIR", "packages", "ldscripts", + "${BOARD_OPTIONS['build']['ldscript']}")] + ) + if "extra_flags" in env.get("BOARD_OPTIONS", {}).get("build", {}): + env.MergeFlags(env.subst("${BOARD_OPTIONS['build']['extra_flags']}")) + if "BUILD_FLAGS" in env: env.MergeFlags(env['BUILD_FLAGS']) diff --git a/platformio/platforms/sam.py b/platformio/platforms/sam.py new file mode 100644 index 00000000..3bc6ac9b --- /dev/null +++ b/platformio/platforms/sam.py @@ -0,0 +1,34 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +from platformio.platforms.base import BasePlatform + + +class SamPlatform(BasePlatform): + + """ + An embedded platform for Atmel SAM microcontrollers + (with Arduino Framework) + """ + + PACKAGES = { + + "toolchain-gccarmnoneeabi": { + "alias": "toolchain", + "default": True + }, + + "ldscripts": { + "default": True + }, + + "framework-arduinosam": { + "alias": "framework", + "default": True + }, + + "tool-bossac": { + "alias": "uploader", + "default": True + } + }