Merge pull request #98 from valeros/develop

Improve building of ASM files; Update Teensy Core to 1.21
This commit is contained in:
Ivan Kravets
2015-02-24 19:17:58 +02:00
11 changed files with 128 additions and 52 deletions

View File

@ -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
}

View File

@ -0,0 +1,21 @@
How to buid PlatformIO based project
====================================
1. `Install PlatformIO <http://docs.platformio.org/en/latest/installation.html>`_
2. Download `source code with examples <https://github.com/ivankravets/platformio/archive/develop.zip>`_
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

View File

@ -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 <SPI.h>
#include <Ethernet.h>
// 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);
}
}
}

View File

@ -57,7 +57,8 @@ env = DefaultEnvironment()
SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "baseavr.py"))) 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( env.Replace(
UPLOADER=join("$PIOPACKAGES_DIR", "tool-micronucleus", "micronucleus"), UPLOADER=join("$PIOPACKAGES_DIR", "tool-micronucleus", "micronucleus"),
UPLOADERFLAGS=[ UPLOADERFLAGS=[

View File

@ -11,18 +11,17 @@ env = DefaultEnvironment()
env.Replace( env.Replace(
AR="arm-none-eabi-ar", AR="arm-none-eabi-ar",
AS="arm-none-eabi-gcc", AS="arm-none-eabi-as",
CC="arm-none-eabi-gcc", CC="arm-none-eabi-gcc",
CXX="arm-none-eabi-g++", CXX="arm-none-eabi-g++",
OBJCOPY="arm-none-eabi-objcopy", OBJCOPY="arm-none-eabi-objcopy",
RANLIB="arm-none-eabi-ranlib", RANLIB="arm-none-eabi-ranlib",
SIZETOOL="arm-none-eabi-size", SIZETOOL="arm-none-eabi-size",
ASCOM=("$AS -o $TARGET -c -x assembler-with-cpp "
"$CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES"),
ARFLAGS=["rcs"], ARFLAGS=["rcs"],
ASPPFLAGS=["-x", "assembler-with-cpp"],
CPPFLAGS=[ CPPFLAGS=[
"-g", # include debugging info (so errors include line numbers) "-g", # include debugging info (so errors include line numbers)
"-Os", # optimize for size "-Os", # optimize for size
@ -58,8 +57,7 @@ if env.get("BOARD_OPTIONS", {}).get("build", {}).get("cpu", "")[-2:] == "m4":
env.Append( env.Append(
ASFLAGS=[ ASFLAGS=[
"-mfloat-abi=hard", "-mfloat-abi=hard",
"-mfpu=fpv4-sp-d16", "-mfpu=fpv4-sp-d16"
"-fsingle-precision-constant"
], ],
CCFLAGS=[ CCFLAGS=[
"-mfloat-abi=hard", "-mfloat-abi=hard",

View File

@ -11,19 +11,18 @@ env = DefaultEnvironment()
env.Replace( env.Replace(
AR="avr-ar", AR="avr-ar",
AS="avr-gcc", AS="avr-as",
CC="avr-gcc", CC="avr-gcc",
CXX="avr-g++", CXX="avr-g++",
OBJCOPY="avr-objcopy", OBJCOPY="avr-objcopy",
RANLIB="avr-ranlib", RANLIB="avr-ranlib",
SIZETOOL="avr-size", SIZETOOL="avr-size",
ASCOM=("$AS -o $TARGET -c -x assembler-with-cpp "
"$CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES"),
ARFLAGS=["rcs"], ARFLAGS=["rcs"],
CCFLAGS=[ ASPPFLAGS=["-x", "assembler-with-cpp"],
CPPFLAGS=[
"-g", # include debugging info (so errors include line numbers) "-g", # include debugging info (so errors include line numbers)
"-Os", # optimize for size "-Os", # optimize for size
"-Wall", # show warnings "-Wall", # show warnings
@ -33,15 +32,15 @@ env.Replace(
"-mmcu=$BOARD_MCU" "-mmcu=$BOARD_MCU"
], ],
CPPDEFINES=[
"F_CPU=$BOARD_F_CPU"
],
CXXFLAGS=[ CXXFLAGS=[
"-fno-exceptions", "-fno-exceptions",
"-fno-threadsafe-statics" "-fno-threadsafe-statics"
], ],
CPPDEFINES=[
"F_CPU=$BOARD_F_CPU"
],
LINKFLAGS=[ LINKFLAGS=[
"-Os", "-Os",
"-mmcu=$BOARD_MCU", "-mmcu=$BOARD_MCU",

View File

@ -52,7 +52,7 @@ if "usb_product" in BOARD_BUILDOPTS:
if env.get("PLATFORM") == "teensy": if env.get("PLATFORM") == "teensy":
ARDUINO_USBDEFINES += [ ARDUINO_USBDEFINES += [
"ARDUINO=106", "ARDUINO=10600",
"TEENSYDUINO=%d" % ARDUINO_VERSION "TEENSYDUINO=%d" % ARDUINO_VERSION
] ]
else: else:

View File

@ -19,14 +19,13 @@ elif env.get("BOARD_OPTIONS", {}).get("build", {}).get("core") == "teensy3":
env.Append( env.Append(
CPPDEFINES=[ CPPDEFINES=[
"USB_PID=null",
"USB_VID=null",
"USB_SERIAL", "USB_SERIAL",
"LAYOUT_US_ENGLISH" "LAYOUT_US_ENGLISH"
], ],
CXXFLAGS=[ CXXFLAGS=[
"-std=gnu++0x" "-std=gnu++0x",
"-felide-constructors"
] ]
) )

View File

@ -16,18 +16,17 @@ env = DefaultEnvironment()
env.Replace( env.Replace(
AR="msp430-ar", AR="msp430-ar",
AS="msp430-gcc", AS="msp430-as",
CC="msp430-gcc", CC="msp430-gcc",
CXX="msp430-g++", CXX="msp430-g++",
OBJCOPY="msp430-objcopy", OBJCOPY="msp430-objcopy",
RANLIB="msp430-ranlib", RANLIB="msp430-ranlib",
SIZETOOL="msp430-size", SIZETOOL="msp430-size",
ASCOM=("$AS -o $TARGET -c -x assembler-with-cpp "
"$CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES"),
ARFLAGS=["rcs"], ARFLAGS=["rcs"],
ASPPFLAGS=["-x", "assembler-with-cpp"],
CCFLAGS=[ CCFLAGS=[
"-g", # include debugging info (so errors include line numbers) "-g", # include debugging info (so errors include line numbers)
"-Os", # optimize for size "-Os", # optimize for size

View File

@ -9,12 +9,20 @@ from os.path import basename, dirname, isdir, isfile, join, normpath
from time import sleep from time import sleep
from SCons.Script import Exit, SConscript, SConscriptChdir from SCons.Script import Exit, SConscript, SConscriptChdir
from SCons.Util import case_sensitive_suffixes
from serial import Serial from serial import Serial
from platformio.util import get_serialports from platformio.util import get_serialports
def ProcessGeneral(env): 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", {}): if "extra_flags" in env.get("BOARD_OPTIONS", {}).get("build", {}):
env.MergeFlags(env.subst("${BOARD_OPTIONS['build']['extra_flags']}")) env.MergeFlags(env.subst("${BOARD_OPTIONS['build']['extra_flags']}"))