mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 18:17:13 +02:00
Merge pull request #98 from valeros/develop
Improve building of ASM files; Update Teensy Core to 1.21
This commit is contained in:
@ -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
|
|
||||||
}
|
|
||||||
|
|
21
examples/teensy/teensy-internal-libs/README.rst
Normal file
21
examples/teensy/teensy-internal-libs/README.rst
Normal 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
|
79
examples/teensy/teensy-internal-libs/src/ChatServer.ino
Normal file
79
examples/teensy/teensy-internal-libs/src/ChatServer.ino
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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=[
|
||||||
|
@ -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",
|
||||||
|
@ -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",
|
||||||
|
@ -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:
|
||||||
|
@ -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"
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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']}"))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user