diff --git a/platformio/boards/microchippic32.json b/platformio/boards/microchippic32.json new file mode 100644 index 00000000..6d29e2e5 --- /dev/null +++ b/platformio/boards/microchippic32.json @@ -0,0 +1,577 @@ +{ + "cerebot32mx4": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_CEREBOT_32MX4_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX460F512.ld", + "mcu": "32MX460F512L", + "variant": "Cerebot_32MX4" + }, + "frameworks": ["arduino"], + "name": "Digilent Cerebot 32MX4", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/cerebot-32mx4-limited-time-see-chipkit-pro-mx4/", + "vendor": "Digilent" + }, + + "cerebot32mx7": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_CEREBOT_32MX7_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX795F512.ld", + "mcu": "32MX795F512L", + "variant": "Cerebot_32MX7" + }, + "frameworks": ["arduino"], + "name": "Digilent Cerebot 32MX7", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=TDGL004", + "vendor": "Digilent" + }, + + "chipkit_mx3": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_CEREBOT_MX3CK_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX320F128.ld", + "mcu": "32MX320F128H", + "variant": "Cerebot_MX3cK" + }, + "frameworks": ["arduino"], + "name": "Digilent chipKIT MX3", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 126976, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/chipkit-mx3-microcontroller-board-with-pmod-headers/", + "vendor": "Digilent" + }, + + "chipkit_pro_mx4": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_CEREBOT_MX4CK_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX460F512.ld", + "mcu": "32MX460F512L", + "variant": "Cerebot_MX4cK" + }, + "frameworks": ["arduino"], + "name": "Digilent chipKIT Pro MX4", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/chipkit-pro-mx4-embedded-systems-trainer-board/", + "vendor": "Digilent" + }, + + "chipkit_pro_mx7": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_CEREBOT_MX7CK_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX795F512.ld", + "mcu": "32MX795F512L", + "variant": "Cerebot_MX7cK" + }, + "frameworks": ["arduino"], + "name": "Digilent chipKIT Pro MX7", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/chipkit-pro-mx7-advanced-peripherals-embedded-systems-trainer-board/", + "vendor": "Digilent" + }, + + "chipkit_pi": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_CHIPKIT_PI_", + "f_cpu": "40000000L", + "ldscript": "cchipKIT-application-32MX250F128.ld", + "mcu": "32MX250F128B", + "variant": "ChipKIT_Pi" + }, + "frameworks": ["arduino"], + "name": "Element14 chipKIT Pi", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 122880, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://www.element14.com/community/community/knode/dev_platforms_kits/element14_dev_kits/microchip-chipkit/chipkit_pi", + "vendor": "element14" + }, + + "chipkit_cmod": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_CMOD_", + "f_cpu": "40000000L", + "ldscript": "chipKIT-application-32MX150F128.ld", + "mcu": "32MX150F128D", + "variant": "Cmod" + }, + "frameworks": ["arduino"], + "name": "Digilent chipKIT Cmod", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 126976, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/chipkit-cmod-breadboardable-mz-microcontroller-board/", + "vendor": "Digilent" + }, + + "cui32stem": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_CUI32_ -D_USE_USB_FOR_SERIAL_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX795F512.ld", + "mcu": "32MX795F512H", + "variant": "CUI32stem" + }, + "frameworks": ["arduino"], + "name": "SeeedStudio CUI32stem", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://www.seeedstudio.com/wiki/CUI32Stem", + "vendor": "SeeedStudio" + }, + + "ubw32_mx460": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_UBW32_MX460_ -D_USE_USB_FOR_SERIAL_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX460F512.ld", + "mcu": "32MX460F512L", + "variant": "Default_100" + }, + "frameworks": ["arduino"], + "name": "UBW32 MX460", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://www.schmalzhaus.com/UBW32/", + "vendor": "UBW32" + }, + + "ubw32_mx795": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_UBW32_MX795_ -D_USE_USB_FOR_SERIAL_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX795F512.ld", + "mcu": "32MX795F512L", + "variant": "Default_100" + }, + "frameworks": ["arduino"], + "name": "UBW32 MX795", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://www.schmalzhaus.com/UBW32/", + "vendor": "UBW32" + }, + + "usbono_pic32": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_PONTECH_UAV100_ -D_USE_USB_FOR_SERIAL_ -Danything=1", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX440F512.ld", + "mcu": "32MX440F512H", + "variant": "Default_64" + }, + "frameworks": ["arduino"], + "name": "PONTECH UAV100", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://www.pontech.com/productdisplay/uav100", + "vendor": "PONTECH" + }, + + "chipkit_dp32": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_DP32_ -D_USE_USB_FOR_SERIAL_", + "f_cpu": "40000000L", + "ldscript": "chipKIT-application-32MX250F128.ld", + "mcu": "32MX250F128B", + "variant": "DP32" + }, + "frameworks": ["arduino"], + "name": "Digilent chipKIT DP32", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 122880, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/chipkit-dp32-dip-package-prototyping-microcontroller-board/", + "vendor": "Digilent" + }, + + "fubarino_mini": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_FUBARINO_MINI_ -D_USE_USB_FOR_SERIAL_", + "f_cpu": "48000000L", + "ldscript": "chipKIT-application-32MX250F128.ld", + "mcu": "32MX250F128D", + "variant": "Fubarino_Mini" + }, + "frameworks": ["arduino"], + "name": "Fubarino Mini", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 122880, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://fubarino.org/mini/", + "vendor": "Fubarino" + }, + + "fubarino_sd": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_FUBARINO_SD_ -D_USE_USB_FOR_SERIAL_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX795F512.ld", + "mcu": "32MX795F512H", + "variant": "Fubarino_SD" + }, + "frameworks": ["arduino"], + "name": "Fubarino SD (1.5)", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://fubarino.org/sd/index.html", + "vendor": "Fubarino" + }, + + "mega_pic32": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_MEGA_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX795F512.ld", + "mcu": "32MX795F512L", + "variant": "Max32" + }, + "frameworks": ["arduino"], + "name": "Digilent chipKIT MAX32", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/chipkit-max32-microcontroller-board-with-mega-r3-headers/", + "vendor": "Digilent" + }, + + "pinguino32": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_OLIMEX_PIC32_PINGUINO_ -D_USE_USB_FOR_SERIAL_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX440F256.ld", + "mcu": "32MX440F256H", + "variant": "Olimex_PIC32_Pinguino" + }, + "frameworks": ["arduino"], + "name": "Olimex PIC32-PINGUINO", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 258048, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "https://www.olimex.com/Products/Duino/PIC32/PIC32-PINGUINO/open-source-hardware", + "vendor": "Olimex" + }, + + "picadillo_35t": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_PICADILLO_35T_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX795F512.ld", + "mcu": "32MX795F512L", + "variant": "picadillo_35t" + }, + "frameworks": ["arduino"], + "name": "4DSystems PICadillo 35T", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://www.4dsystems.com.au/product/Picadillo_35T/", + "vendor": "4DSystems" + }, + + "quick240_usb": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_PONTECH_QUICK240_USB_ -D_USE_USB_FOR_SERIAL_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX795F512.ld", + "mcu": "32MX795F512L", + "variant": "quicK240" + }, + "frameworks": ["arduino"], + "name": "PONTECH quicK240", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://quick240.com/quicki/", + "vendor": "PONTECH" + }, + + "chipkit_uc32": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_UC32_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX340F512.ld", + "mcu": "32MX340F512H", + "variant": "uC32" + }, + "frameworks": ["arduino"], + "name": "Digilent chipKIT uC32", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/chipkit-uc32-basic-microcontroller-board-with-uno-r3-headers/", + "vendor": "Digilent" + }, + + "uno_pic32": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_UNO_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX320F128.ld", + "mcu": "32MX320F128H", + "variant": "Uno32" + }, + "frameworks": ["arduino"], + "name": "Digilent chipKIT UNO32", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 16384, + "maximum_size": 126976, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/chipkit-uno32-basic-microcontroller-board-retired-see-chipkit-uc32/", + "vendor": "Digilent" + }, + + "chipkit_wf32": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_WF32_", + "f_cpu": "80000000L", + "ldscript": "chipKIT-application-32MX695F512.ld", + "mcu": "32MX695F512L", + "variant": "WF32" + }, + "frameworks": ["arduino"], + "name": "Digilent chipKIT WF32", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 131072, + "maximum_size": 520192, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/chipkit-wf32-wifi-enabled-microntroller-board-with-uno-r3-headers/", + "vendor": "Digilent" + }, + + "chipkit_wifire": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_WIFIRE_", + "f_cpu": "200000000UL", + "ldscript": "MZ-application-32MZ2048ECX.ld", + "mcu": "32MZ2048ECG100", + "variant": "WiFire" + }, + "frameworks": ["arduino"], + "name": "Digilent chipKIT WiFire", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 2080768, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/chipkit-wi-fire-wifi-enabled-mz-microcontroller-board/", + "vendor": "Digilent" + }, + + "openscope": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_OPENSCOPE_", + "f_cpu": "200000000UL", + "ldscript": "MZ-application-32MZ2048ECX.ld", + "mcu": "32MZ2048EFG124", + "variant": "OpenScope" + }, + "frameworks": ["arduino"], + "name": "Digilent OpenScope", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 524288, + "maximum_size": 2080768, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/", + "vendor": "Digilent" + }, + + "openbci": { + "build": { + "core": "pic32", + "extra_flags": "-D_BOARD_DP32_ -D_USE_USB_FOR_SERIAL_", + "f_cpu": "40000000L", + "ldscript": "chipKIT-application-32MX250F128.ld", + "mcu": "32MX250F128B", + "variant": "OpenBCI" + }, + "frameworks": ["arduino"], + "name": "Digilent OpenScope", + "platform": "microchippic32", + "upload": { + "maximum_ram_size": 32768, + "maximum_size": 122880, + "protocol": "stk500v2", + "require_upload_port" : true, + "speed": 115200, + "wait_for_upload_port": true + }, + "url": "http://store.digilentinc.com/", + "vendor": "Digilent" + } +} diff --git a/platformio/builder/scripts/frameworks/arduino.py b/platformio/builder/scripts/frameworks/arduino.py index 0204d63a..9bb86f23 100644 --- a/platformio/builder/scripts/frameworks/arduino.py +++ b/platformio/builder/scripts/frameworks/arduino.py @@ -97,6 +97,23 @@ elif env.get("PLATFORM") == "nordicnrf51": LIBS=["RFduino", "RFduinoBLE", "RFduinoGZLL", "RFduinoSystem"] ) +elif env.get("PLATFORM") == "microchippic32": + PLATFORMFW_DIR = join( + "$PIOPACKAGES_DIR", + "framework-arduinomicrochippic32" + ) + env.Prepend( + LIBPATH=[ + join( + "$PLATFORMFW_DIR", "cores", + "${BOARD_OPTIONS['build']['core']}" + ), + join( + "$PLATFORMFW_DIR", "variants", + "${BOARD_OPTIONS['build']['variant']}" + ) + ] + ) env.Replace(PLATFORMFW_DIR=PLATFORMFW_DIR) diff --git a/platformio/builder/scripts/microchippic32.py b/platformio/builder/scripts/microchippic32.py new file mode 100644 index 00000000..263aa00c --- /dev/null +++ b/platformio/builder/scripts/microchippic32.py @@ -0,0 +1,169 @@ +# Copyright 2014-2016 Ivan Kravets +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" + Builder for Microchip PIC32 microcontrollers +""" + +from os.path import join + +from SCons.Script import ( + COMMAND_LINE_TARGETS, AlwaysBuild, Builder, Default, DefaultEnvironment) + + +env = DefaultEnvironment() + +env.Replace( + AR="pic32-ar", + AS="pic32-as", + CC="pic32-gcc", + CXX="pic32-g++", + OBJCOPY="pic32-objcopy", + RANLIB="pic32-ranlib", + SIZETOOL="pic32-size", + + ARFLAGS=["rcs"], + + ASFLAGS=[ + "-g1", + "-O2", + "-Wa,--gdwarf-2", + "-mprocessor=$BOARD_MCU" + ], + + CCFLAGS=[ + "-w", + "-g", + "-O2", + "-MMD", + "-mdebugger", + "-mno-smart-io", + "-mprocessor=$BOARD_MCU", + "-ffunction-sections", + "-fdata-sections", + "-Wcast-align", + "-fno-short-double", + "-ftoplevel-reorder" + ], + + CXXFLAGS=["-fno-exceptions"], + + CPPDEFINES=[ + "F_CPU=$BOARD_F_CPU", + "MPIDEVER=16777998", + "MPIDE=150", + "IDE=Arduino" + ], + + LINKFLAGS=[ + "-w", + "-Os", + "-mdebugger", + "-mprocessor=$BOARD_MCU", + "-mno-peripheral-libs", + "-nostartfiles", + "-Wl,--gc-sections", + "-Wl,--script=chipKIT-application-COMMON%s.ld" % ( + "-MZ" if "MZ" in env.get("BOARD_OPTIONS", {}).get( + "build", {}).get("mcu") else "") + ], + + LIBS=["m"], + + SIZEPRINTCMD='"$SIZETOOL" -B -d $SOURCES', + + UPLOADER=join("$PIOPACKAGES_DIR", "tool-pic32prog", "pic32prog"), + UPLOADERFLAGS=[ + "-d", '"$UPLOAD_PORT"' + "-b", "$UPLOAD_SPEED", + ], + UPLOADCMD='"$UPLOADER" $UPLOADERFLAGS $SOURCES', + + PROGNAME="firmware", + PROGSUFFIX=".elf" +) + +if int(env.get("BOARD_OPTIONS", {}).get( + "upload", {}).get("maximum_ram_size", 0)) < 65535: + env.Append( + CCFLAGS=["-G1024"] + ) + + +env.Append( + BUILDERS=dict( + ElfToEep=Builder( + action=" ".join([ + "$OBJCOPY", + "-O", + "ihex", + "-j", + ".eeprom", + '--set-section-flags=.eeprom="alloc,load"', + "--no-change-warnings", + "--change-section-lma", + ".eeprom=0", + "$SOURCES", + "$TARGET"]), + suffix=".eep" + ), + + ElfToHex=Builder( + action=" ".join([ + "$OBJCOPY", + "-O", + "ihex", + "-R", + ".eeprom", + "$SOURCES", + "$TARGET"]), + suffix=".hex" + ) + ) +) + +# +# Target: Build executable and linkable firmware +# + +target_elf = env.BuildProgram() + +# +# Target: Build the .hex +# + +if "uploadlazy" in COMMAND_LINE_TARGETS: + target_firm = join("$BUILD_DIR", "firmware.hex") +else: + target_firm = env.ElfToHex(join("$BUILD_DIR", "firmware"), target_elf) + +# +# Target: Print binary size +# + +target_size = env.Alias("size", target_elf, "$SIZEPRINTCMD") +AlwaysBuild(target_size) + +# +# Target: Upload firmware +# + +upload = env.Alias(["upload", "uploadlazy"], target_firm, "$UPLOADCMD") +AlwaysBuild(upload) + +# +# Target: Define targets +# + +Default([target_firm, target_size]) diff --git a/platformio/platforms/base.py b/platformio/platforms/base.py index e9498f8e..bce123d5 100644 --- a/platformio/platforms/base.py +++ b/platformio/platforms/base.py @@ -47,6 +47,10 @@ PLATFORM_PACKAGES = { ("Arduino Wiring-based Framework (ESP8266 Core)", "https://github.com/esp8266/Arduino") ], + "framework-arduinomicrochippic32": [ + ("Arduino Wiring-based Framework (PIC32 Core)", + "https://github.com/chipKIT32/chipKIT-core") + ], "framework-arduinonordicnrf51": [ ("Arduino Wiring-based Framework (RFduino Core)", "https://github.com/RFduino/RFduino") @@ -120,6 +124,9 @@ PLATFORM_PACKAGES = { "toolchain-icestorm": [ ("GCC for FPGA IceStorm", "http://www.clifford.at/icestorm/") ], + "toolchain-microchippic32": [ + ("GCC for Microchip PIC32", "https://github.com/chipKIT32/chipKIT-cxx") + ], "tool-scons": [ ("SCons software construction tool", "http://www.scons.org") ], @@ -156,7 +163,10 @@ PLATFORM_PACKAGES = { "tool-mkspiffs": [ ("Tool to build and unpack SPIFFS images", "https://github.com/igrr/mkspiffs") - ] + ], + "tool-pic32prog": [ + ("pic32prog", "https://github.com/sergev/pic32prog") + ], } diff --git a/platformio/platforms/microchippic32.py b/platformio/platforms/microchippic32.py new file mode 100644 index 00000000..aa132f35 --- /dev/null +++ b/platformio/platforms/microchippic32.py @@ -0,0 +1,46 @@ +# Copyright 2014-2016 Ivan Kravets +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from platformio.platforms.base import BasePlatform + + +class Microchippic32Platform(BasePlatform): + + """ + Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer + high performance microcontrollers, and all the tools needed to develop + your embedded projects. PIC32 MCUs gives your application the processing + power, memory and peripherals your design needs! + + http://www.microchip.com/design-centers/32-bit + """ + + PACKAGES = { + + "toolchain-gccmicrochippic32": { + "alias": "toolchain", + "default": True + }, + + "framework-arduinomicrochippic32": { + "alias": "framework" + }, + + "tool-pic32prog": { + "alias": "uploader" + } + } + + def get_name(self): + return "Microchip PIC32"