* Remove redundant/wrong second board.mcu in boards.txt
Fixes#380
Boards.txt had the setting board.mcu twice. The first one was correct,
while the second one wasn't and shouldn't have been there. Remove it.
* Include fix from @rei-vilo in #381
By default RTTI (Run-Time Type Information) is disabled because most apps
don't need run time type info enabled. However, certain libraries expect
to be able to query types of objects at runtime, so add a menu to enable it.
Per #276, #277, #274 there seems to be an issue with interrupts and some
other low-level ARM operations when using the distributed libstdc++.
Use the default libstdc++ built with the toolchain, instead.
Fixes#277Fixes#276Fixes#274
When a Python MSI/etc. is installed under Windows, it sets a global
PYTHONHOME and other variables. Our shipped Python can end up using
these variables and attempt to load the wrong PYC files and fail
to run.
Avoid by using -I isolated mode in Python calls
Fixes#252
The Pico SDK has some magic with const pointers that generates lots of
"ignored qualifer" warnings on the more pedantic modes. To clean the
normal builds up, disable this warning for now. At some point a PR to
the PICO-SDK may be indicated.
Fixes#236
Compiler warning flags were completely ignored/missed in platform.txt.
Add them, as normal, and include -Werror=return-type because GCC will
produce crashing apps when a function return value is missing.
* add missing character for debug level "Wire"
if Debug Level "Wire" is chosen, the compiler posts error
> arm-none-eabi-g++: error: DDEBUG_RP2040_WIRE: No such file or directory
Add the missing '-' to correct the issue.
* change must be made via makeboards.py
The generator script needs to be fixed and rerun. If we just update the boards.txt, changes will be lost on a rebuild.
* Update boards.txt
boards.txt as generated by revised makeboards.py
* correct spelling issue for CI tool
* initial tinyusb lib port
* add Adafruit_TinyUSB_Arduino as submodules
* add yield() to main loop
* sync with tinyusb lib latest
* add USB manufacturer and product
* fix typo in tinyusb lib
* sync with master
updating implementation
* Rationalize link stage command line
Make the build process less insane.
* clean up delay
* clean up platform and board
* update makeboards.py for generating usbstack menu
* update tinyusb lib to 1.0.0
Older builds included C++ locale information in RAM/flash as well as a
bunch of exception code which can't get called since they're not enabled.
Remove them by adjusting final link command and not instantiating them
in main.cpp in the first place.
Blink went from:
> Sketch uses 215604 bytes (10%) of program storage space. Maximum is 2093056 bytes.
> Global variables use 18152 bytes (6%) of dynamic memory, leaving 243992 bytes for local variables. Maximum is 262144 bytes.
To:
> Sketch uses 56112 bytes (5%) of program storage space. Maximum is 1044480 bytes.
> Global variables use 12152 bytes (4%) of dynamic memory, leaving 249992 bytes for local variables. Maximum is 262144 bytes.
For a savings of **155KB of flash** and **6KB of RAM**
Can't have cores/rp2040/api in the include path because the Arduino API
dir has a "String.h" file. On Windows, because it is case-insensitive
normally, this overrides the POSIX "string.h" header leading to bad
stuff.
Add manual redirect includes for commonly accessed headers in the
cores/rp2040 path instead.
Build all 4 different boot_stage2 objects with SPI/2 and SPI/4 options.
Add a menu to the generic board to allow selecting between them.
Use the potato/4 boot2 for the Adafruit Feather until we have a better
version verified.
Fixes#42
Add support for Adafruit Feather RP2040 (8MB). Identified with a unique
USB PID so it displays properly once programmed one time. Moved LED to
pin 13 (per the website docs), but have no board to test.
Add over/underclocking menus, applied at boot. Use at your own risk, as
usual.
Add shims to allocate flash space for a filesystem (but not implemented
yet).
Add a "generic" RP2040 board
Add a CoreMutex class which implements a deadlock-safe mutex and reqork
the SerialUSB and SerialUART classes to use it to synchronize output
when in a multicore sketch.
Properly quote all instances of file paths and runtime paths in the
platform file to ensure thathaving a username with spaces in it won't
break the compile.
Fixes#6
Allow ::print() to go to a serial port instead of dropping.
Will allow for full VFS/etc. with standard FILE semantics, or at least
::putc and ::getc on STDOUT/STDERR to work.
Windows is case-insensitive, causing "String.h" to override "string.h" in
includes. Adjust the platform.txt appropriately.
Rebuild elf2uf2 as static to avoid startup errors on Windows boxes w/o MinGW.
Add smarts to the UF2 uploader to potentially trigger a reboot if the
device passed in is /dev/tty* or COM*. Will cause reboot to USB
bootloader and standard UF2 upload will happen w/o any user
intervention.
Some paths hardcoded to my custom toolchain build dir, will be updated
to a package.json tools setup soon.
https://github.com/earlephilhower/pico-quick-toolchain
Blink and Fade examples work (i.e. digitalWrite/analogWrite/delay).
Includes a discovery script which will detect RPI Picos in UF2 bootmode.