|
|
|
|
|
|
|
|
|
|
|
# `framework-arduinoteensy-cxx20` |
|
|
|
|
|
A fork of the PlatformIO ArduinoTeensy framework compatible with GCC 10 & C++20. |
|
|
|
|
|
|
|
|
|
|
|
# Usage |
|
|
|
|
|
|
|
|
|
|
|
## Prerequisites |
|
|
|
|
|
|
|
|
|
|
|
In order to build with this framework, you'll need to clone a few repos. |
|
|
|
|
|
|
|
|
|
|
|
### Clone framework and dependencies |
|
|
|
|
|
|
|
|
|
|
|
First, clone this repository: |
|
|
|
|
|
|
|
|
|
|
|
```sh |
|
|
|
|
|
git clone https://github.com/thevisus/framework-arduinoteensy-cxx20.git |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
This framework is compatible with the GNU ARM Embedded Toolchain v10.2.1. A |
|
|
|
|
|
corresponding [PlatformIO |
|
|
|
|
|
toolchain](https://github.com/thevisus/toolchain-gcc-arm-embedded) is therefore |
|
|
|
|
|
necessary: |
|
|
|
|
|
|
|
|
|
|
|
```sh |
|
|
|
|
|
git clone https://github.com/thevisus/toolchain-gcc-arm-embedded.git |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
Finally, a PlatformIO "platform" is needed to drive the build: |
|
|
|
|
|
|
|
|
|
|
|
```sh |
|
|
|
|
|
git clone https://github.com/thevisus/teensy-gcc10.git |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
Each of these needs to be installed locally via PlatformIO. The `pio` command or |
|
|
|
|
|
similar management software should be able to do this. The simplest method, on |
|
|
|
|
|
Linux/macOS is to symlink the projects into the PlatformIO user directory: |
|
|
|
|
|
|
|
|
|
|
|
```sh |
|
|
|
|
|
ln -s /path/to/framework-arduinoteensy-cxx20 $HOME/.platformio/packages |
|
|
|
|
|
ln -s /path/to/toolchain-gcc-arm-embedded $HOME/.platformio/packages |
|
|
|
|
|
ln -s /path/to/teensy-gcc10 $HOME/.platformio/platforms |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
You may check the full platform's availability using `pio`: |
|
|
|
|
|
|
|
|
|
|
|
```sh |
|
|
|
|
|
pio platform show teensy-gcc10 |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
## Configuring a project |
|
|
|
|
|
|
|
|
|
|
|
In your project's `platform.ini`, adjust your environment settings similar to |
|
|
|
|
|
the following: |
|
|
|
|
|
|
|
|
|
|
|
```ini |
|
|
|
|
|
[platformio] |
|
|
|
|
|
default_envs = teensy41 |
|
|
|
|
|
|
|
|
|
|
|
[env:teensy41] |
|
|
|
|
|
platform = teensy-gcc10 |
|
|
|
|
|
platform_packages = toolchain-gcc-arm-embedded |
|
|
|
|
|
board = teensy41 |
|
|
|
|
|
framework = arduino |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
## Building a project |
|
|
|
|
|
|
|
|
|
|
|
If everything is setup correctly, you may build your project per usual. |
|
|
|
|
|
|
|
|
|
|
|
```sh |
|
|
|
|
|
# compile |
|
|
|
|
|
pio run |
|
|
|
|
|
# upload |
|
|
|
|
|
pio run --target upload |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
### Example Makefile |
|
|
|
|
|
|
|
|
|
|
|
Driving the pio process via `make` can be accomplished with a simple Makefile. |
|
|
|
|
|
(NB: this version assumes `make` will be invoked from within `vim`; if that's |
|
|
|
|
|
not the case, remove the `-c vim` portions.) |
|
|
|
|
|
|
|
|
|
|
|
```Makefile |
|
|
|
|
|
all: |
|
|
|
|
|
pio -c vim run |
|
|
|
|
|
|
|
|
|
|
|
upload: |
|
|
|
|
|
pio -c vim run --target upload |
|
|
|
|
|
|
|
|
|
|
|
clean: |
|
|
|
|
|
pio -c vim run --target clean |
|
|
|
|
|
|
|
|
|
|
|
program: |
|
|
|
|
|
pio -c vim run --target program |
|
|
|
|
|
|
|
|
|
|
|
uploadfs: |
|
|
|
|
|
pio -c vim run --target uploadfs |
|
|
|
|
|
|
|
|
|
|
|
update: |
|
|
|
|
|
pio -c vim update |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
# Upstream |
|
|
|
|
|
The code in `cores` is up-to-date as of late 2020 from the original |
|
|
|
|
|
https://github.com/PaulStoffregen/cores repo, combined with the libraries and |
|
|
|
|
|
tools found in PlatformIO's original framework-arduinoteensy. It's a bit of a |
|
|
|
|
|
mish-mash, but is fairly up-to-date and functional (tested and run in live |
|
|
|
|
|
systems for several months now). |
|
|
|
|
|
|
|
|
|
|
|
However, due to the amalgamation of repos and a variety of other reasons, the |
|
|
|
|
|
`cores` code will only be minimally updated for critical fixes, if at all. |
|
|
|
|
|
Instead, a leaner version of the 4.1 core, intended to be built with the |
|
|
|
|
|
[dds](https://github.com/vector-of-bool/dds) toolchain is actively maintained at |
|
|
|
|
|
my personal Gitea: https://git.thevis.us/visus/teensy-core-4.1 |
|
|
|
|
|
|
|
|
|
|
|
# License |
|
|
|
|
|
``` |
|
|
|
|
|
Teensyduino Core Library |
|
|
|
|
|
http://www.pjrc.com/teensy/ |
|
|
|
|
|
Copyright (c) 2017 PJRC.COM, LLC. |
|
|
|
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining |
|
|
|
|
|
a copy of this software and associated documentation files (the |
|
|
|
|
|
"Software"), to deal in the Software without restriction, including |
|
|
|
|
|
without limitation the rights to use, copy, modify, merge, publish, |
|
|
|
|
|
distribute, sublicense, and/or sell copies of the Software, and to |
|
|
|
|
|
permit persons to whom the Software is furnished to do so, subject to |
|
|
|
|
|
the following conditions: |
|
|
|
|
|
|
|
|
|
|
|
1. The above copyright notice and this permission notice shall be |
|
|
|
|
|
included in all copies or substantial portions of the Software. |
|
|
|
|
|
|
|
|
|
|
|
2. If the Software is incorporated into a build system that allows |
|
|
|
|
|
selection among a list of target devices, hen similar target |
|
|
|
|
|
devices manufactured by PJRC.COM must be included in the list of |
|
|
|
|
|
target devices and selectable in the same manner. |
|
|
|
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|
|
|
|
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|
|
|
|
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|
|
|
|
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
|
|
|
|
|
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
|
|
|
|
|
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
|
|
|
|
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
|
|
|
|
|
SOFTWARE. |
|
|
|
|
|
``` |
|
|
|
|
|
|