diff --git a/examples/teensy/teensy-blink/src/Blink.pde b/examples/teensy/teensy-blink/src/Blink.pde deleted file mode 100644 index c111b45d..00000000 --- a/examples/teensy/teensy-blink/src/Blink.pde +++ /dev/null @@ -1,28 +0,0 @@ -/* LED Blink, Teensyduino Tutorial #1 - http://www.pjrc.com/teensy/tutorial.html - - This example code is in the public domain. -*/ -#ifdef TEENSY20 - const int ledPin = 11; -#elif TEENSY20PP - const int ledPin = 6; -#else - const int ledPin = 13; -#endif - -void setup() { - // initialize the digital pin as an output. - pinMode(ledPin, OUTPUT); -} - -// the loop() methor runs over and over again, -// as long as the board has power - -void loop() { - digitalWrite(ledPin, HIGH); // set the LED on - delay(300); // wait for a second - digitalWrite(ledPin, LOW); // set the LED off - delay(100); // wait for a second -} - diff --git a/examples/teensy/teensy-internal-libs/README.rst b/examples/teensy/teensy-internal-libs/README.rst new file mode 100644 index 00000000..5cea44c9 --- /dev/null +++ b/examples/teensy/teensy-internal-libs/README.rst @@ -0,0 +1,21 @@ +How to buid PlatformIO based project +==================================== + +1. `Install PlatformIO `_ +2. Download `source code with examples `_ +3. Extract ZIP archive +4. Run these commands: + +.. code-block:: bash + + # Change directory to example + > cd platformio-develop/examples/teensy/teensy-internal-libs + + # Process example project + > platformio run + + # Upload firmware + > platformio run --target upload + + # Clean build files + > platformio run --target clean diff --git a/examples/teensy/teensy-blink/platformio.ini b/examples/teensy/teensy-internal-libs/platformio.ini similarity index 100% rename from examples/teensy/teensy-blink/platformio.ini rename to examples/teensy/teensy-internal-libs/platformio.ini diff --git a/examples/teensy/teensy-internal-libs/src/ChatServer.ino b/examples/teensy/teensy-internal-libs/src/ChatServer.ino new file mode 100644 index 00000000..d50e5a65 --- /dev/null +++ b/examples/teensy/teensy-internal-libs/src/ChatServer.ino @@ -0,0 +1,79 @@ +/* + Chat Server + + A simple server that distributes any incoming messages to all + connected clients. To use telnet to your device's IP address and type. + You can see the client's input in the serial monitor as well. + Using an Arduino Wiznet Ethernet shield. + + Circuit: + * Ethernet shield attached to pins 10, 11, 12, 13 + * Analog inputs attached to pins A0 through A5 (optional) + + created 18 Dec 2009 + by David A. Mellis + modified 9 Apr 2012 + by Tom Igoe + + */ + +#include +#include + +// Enter a MAC address and IP address for your controller below. +// The IP address will be dependent on your local network. +// gateway and subnet are optional: +byte mac[] = { + 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; +IPAddress ip(192,168,1, 177); +IPAddress gateway(192,168,1, 1); +IPAddress subnet(255, 255, 0, 0); + + +// telnet defaults to port 23 +EthernetServer server(23); +boolean alreadyConnected = false; // whether or not the client was connected previously + +void setup() { + // initialize the ethernet device + Ethernet.begin(mac, ip, gateway, subnet); + // start listening for clients + server.begin(); + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for Leonardo only + } + + + Serial.print("Chat server address:"); + Serial.println(Ethernet.localIP()); +} + +void loop() { + // wait for a new client: + EthernetClient client = server.available(); + + // when the client sends the first byte, say hello: + if (client) { + if (!alreadyConnected) { + // clead out the input buffer: + client.flush(); + Serial.println("We have a new client"); + client.println("Hello, client!"); + alreadyConnected = true; + } + + if (client.available() > 0) { + // read the bytes incoming from the client: + char thisChar = client.read(); + // echo the bytes back to the client: + server.write(thisChar); + // echo the bytes to the server as well: + Serial.write(thisChar); + } + } +} + + + diff --git a/platformio/builder/scripts/atmelavr.py b/platformio/builder/scripts/atmelavr.py index e860e0d0..4cf5276e 100644 --- a/platformio/builder/scripts/atmelavr.py +++ b/platformio/builder/scripts/atmelavr.py @@ -57,7 +57,8 @@ env = DefaultEnvironment() SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "baseavr.py"))) -if "digispark" in env.get("BOARD_OPTIONS", {}).get("build", {}).get("core", ""): +if "digispark" in env.get( + "BOARD_OPTIONS", {}).get("build", {}).get("core", ""): env.Replace( UPLOADER=join("$PIOPACKAGES_DIR", "tool-micronucleus", "micronucleus"), UPLOADERFLAGS=[ diff --git a/platformio/builder/scripts/basearm.py b/platformio/builder/scripts/basearm.py index 94ccfec4..0cb81b83 100644 --- a/platformio/builder/scripts/basearm.py +++ b/platformio/builder/scripts/basearm.py @@ -11,18 +11,17 @@ env = DefaultEnvironment() env.Replace( AR="arm-none-eabi-ar", - AS="arm-none-eabi-gcc", + AS="arm-none-eabi-as", CC="arm-none-eabi-gcc", CXX="arm-none-eabi-g++", OBJCOPY="arm-none-eabi-objcopy", RANLIB="arm-none-eabi-ranlib", SIZETOOL="arm-none-eabi-size", - ASCOM=("$AS -o $TARGET -c -x assembler-with-cpp " - "$CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES"), - ARFLAGS=["rcs"], + ASPPFLAGS=["-x", "assembler-with-cpp"], + CPPFLAGS=[ "-g", # include debugging info (so errors include line numbers) "-Os", # optimize for size @@ -58,8 +57,7 @@ if env.get("BOARD_OPTIONS", {}).get("build", {}).get("cpu", "")[-2:] == "m4": env.Append( ASFLAGS=[ "-mfloat-abi=hard", - "-mfpu=fpv4-sp-d16", - "-fsingle-precision-constant" + "-mfpu=fpv4-sp-d16" ], CCFLAGS=[ "-mfloat-abi=hard", diff --git a/platformio/builder/scripts/baseavr.py b/platformio/builder/scripts/baseavr.py index f089937b..912250bf 100644 --- a/platformio/builder/scripts/baseavr.py +++ b/platformio/builder/scripts/baseavr.py @@ -11,19 +11,18 @@ env = DefaultEnvironment() env.Replace( AR="avr-ar", - AS="avr-gcc", + AS="avr-as", CC="avr-gcc", CXX="avr-g++", OBJCOPY="avr-objcopy", RANLIB="avr-ranlib", SIZETOOL="avr-size", - ASCOM=("$AS -o $TARGET -c -x assembler-with-cpp " - "$CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES"), - ARFLAGS=["rcs"], - CCFLAGS=[ + ASPPFLAGS=["-x", "assembler-with-cpp"], + + CPPFLAGS=[ "-g", # include debugging info (so errors include line numbers) "-Os", # optimize for size "-Wall", # show warnings @@ -33,15 +32,15 @@ env.Replace( "-mmcu=$BOARD_MCU" ], + CPPDEFINES=[ + "F_CPU=$BOARD_F_CPU" + ], + CXXFLAGS=[ "-fno-exceptions", "-fno-threadsafe-statics" ], - CPPDEFINES=[ - "F_CPU=$BOARD_F_CPU" - ], - LINKFLAGS=[ "-Os", "-mmcu=$BOARD_MCU", diff --git a/platformio/builder/scripts/frameworks/arduino.py b/platformio/builder/scripts/frameworks/arduino.py index 5fb45c86..77ef6c88 100644 --- a/platformio/builder/scripts/frameworks/arduino.py +++ b/platformio/builder/scripts/frameworks/arduino.py @@ -52,7 +52,7 @@ if "usb_product" in BOARD_BUILDOPTS: if env.get("PLATFORM") == "teensy": ARDUINO_USBDEFINES += [ - "ARDUINO=106", + "ARDUINO=10600", "TEENSYDUINO=%d" % ARDUINO_VERSION ] else: diff --git a/platformio/builder/scripts/teensy.py b/platformio/builder/scripts/teensy.py index 9f96c7ff..a6f9837c 100644 --- a/platformio/builder/scripts/teensy.py +++ b/platformio/builder/scripts/teensy.py @@ -19,14 +19,13 @@ elif env.get("BOARD_OPTIONS", {}).get("build", {}).get("core") == "teensy3": env.Append( CPPDEFINES=[ - "USB_PID=null", - "USB_VID=null", "USB_SERIAL", "LAYOUT_US_ENGLISH" ], CXXFLAGS=[ - "-std=gnu++0x" + "-std=gnu++0x", + "-felide-constructors" ] ) diff --git a/platformio/builder/scripts/timsp430.py b/platformio/builder/scripts/timsp430.py index 38acec2f..98fbd1d1 100644 --- a/platformio/builder/scripts/timsp430.py +++ b/platformio/builder/scripts/timsp430.py @@ -16,18 +16,17 @@ env = DefaultEnvironment() env.Replace( AR="msp430-ar", - AS="msp430-gcc", + AS="msp430-as", CC="msp430-gcc", CXX="msp430-g++", OBJCOPY="msp430-objcopy", RANLIB="msp430-ranlib", SIZETOOL="msp430-size", - ASCOM=("$AS -o $TARGET -c -x assembler-with-cpp " - "$CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES"), - ARFLAGS=["rcs"], + ASPPFLAGS=["-x", "assembler-with-cpp"], + CCFLAGS=[ "-g", # include debugging info (so errors include line numbers) "-Os", # optimize for size diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 153966ff..79dd62a6 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -9,12 +9,20 @@ from os.path import basename, dirname, isdir, isfile, join, normpath from time import sleep from SCons.Script import Exit, SConscript, SConscriptChdir +from SCons.Util import case_sensitive_suffixes from serial import Serial from platformio.util import get_serialports def ProcessGeneral(env): + # fix ASM handling under non-casitive OS + if not case_sensitive_suffixes('.s', '.S'): + env.Replace( + AS="$CC", + ASCOM="$ASPPCOM" + ) + if "extra_flags" in env.get("BOARD_OPTIONS", {}).get("build", {}): env.MergeFlags(env.subst("${BOARD_OPTIONS['build']['extra_flags']}"))