Implemented a new method for allowing folks to preserve their TinyUF2 bootloader setup when flashing their boards via Arduino IDE, without being locked out of not using it if they want to use a different partition.
Adafruit had already added support for keeping (reflashing) the TinyUF2 bootloader when flashing via Arduino IDE (thanks @ladyada ), but the issue with it is it doesn't allow users to not choose to use it. Even if they select a specific partition scheme from the partition drop down list, it ignores that selection and only does the TinyUF2 partitioning/bootloader thing.
We wanted to let users choose between keeping their TinyUF2 partitioning and bootloader, or choose another partition scheme and have the TinyUF2 support disabled and just operate like they would expect.
We've implemented this by adding the TinyUF2 support as a partition scheme option, and using these build options in platform.txt to choose to use teh UF2 path or use the standard path.
Added an option for using precompiled libraries.
Empty if there is no precompilation.
```
compiler.libraries.ldflags=
```
Compiler Message when there is precompilation.
```
Compiling libraries...
Compiling library "aquestalk-esp32"
Library aquestalk-esp32 has been declared precompiled:
Using precompiled library in C:\Users\tanaka\Documents\Arduino\libraries\aquestalk-esp32\src\esp32
```
The precompiler cannot be used because it is not set up now.
* [FEATURE] ARDUINO_PARTITION_xxx build flag
Proposition: adding `-DARDUINO_PARTITION_{build.partitions}` flag to make the build partition information available at compile time.
Use cas example:
```C
#if defined ARDUINO_PARTITION_default
// prevent compilation
#error "This sketch needs 'Minimal SPIFFS' partition scheme to compile"
// or disable sketch features that need flash space
#define USE_HUGE_BITMAP_IMAGES false
#endif
```
* Adding -DARDUINO_PARTITION_{build.partitions} (see #5804)
* Fix build compilation due to changes in the HW_TIMER's structs
* Fix compilation warnings and errors with USB
* Update USBCDC.cpp
* Update CMakeLists.txt
* Update HWCDC.cpp
* Add initial support for USB MSC
* Add Firmware Upload/Download With MSC
Current running firmware is available as file inside the MSC Disk. To update the firmware on the ESP, just copy a regular firmware bin into the drive
* Support overwriting of the firmware file
Overwriting a file is done totally differently on MacOS, Windows and Linux. This change supports it on all of them.
* Allow CDC, FirmwareMSC and DFU to be enabled on boot
* Add example ESP32-S2 USB-ONLY board
* Various device code optimizations
Added `end()` methods to MSC classes
Made begin() methods safe to be called multiple times
Optimized CDC class
* Fix CDC Connect/Disconnect detection in Arduino IDE on Windows
* Rework cdc_write
* Update ESP32-S2 board configs
* Fix compile archive arguments for the new toolchain
* Add menu to S2 for picking through which port to upload
Internal USB CDC requires to reset and wait for the new port (because persistence is not yet stable)
* USB CDC should also be started in main
* Fix URL and USB version for WebUSB
* Update vendor callback API
* Update CDC::write to use TX_DONE semaphore
* Update USB_Serial example
* Update toolchain
* Update package_esp32_index.template.json
* add optional component dependencies after Kconfig options are known (#5404)
Until this commit, Kconfig options (e.g. CONFIG_TINYUSB_ENABLED) were
used in conditions preceding idf_component_register to determine which
components need to be added to `arduino` component requirements.
However the Kconfig options aren't known at the early expansion stage,
when the component CMakeLists.txt files are expanded the first time
and requirements are evaluated. So all the conditions evaluated as if
the options were not set.
This commit changes the logic to only add these components as
dependencies when the Kconfig options are known. Dependencies become
"weak", which means that if one of the components isn't included into
the build for some reason, it is not added as a dependency.
This may happen, for example, if the component is not present in the
`components` directory or is excluded by setting `COMPONENTS` variable
in the project CMakeLists.txt file.
This also ensures that if the component is not present, it will not be
added as a dependency, and this will allow the build to proceed.
Follow-up to https://github.com/espressif/arduino-esp32/pull/5391.
Closes https://github.com/espressif/arduino-esp32/issues/5319.
* IDF master d93887f9f
* PlatformIO updates for CI (#5387)
* Update PlatformIO CI build script
- Switch to the latest toolchains 8.4.0 for ESP32, ESP32S2, ESP32C3
- Use PlatformIO from master branch for better robustness
* Update package.json for PlatformIO
Co-authored-by: Ivan Grokhotkov <ivan@espressif.com>
Co-authored-by: Valerii Koval <valeros@users.noreply.github.com>
Additional compile arguments can be given by a file named "build_opt.h".
This enables users to easily extend their arguments on a central place.
The script has been taken from stm32duino's Arduino_Core_STM32 package
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
done on behalf of @ladyada, this PR does:
Add Adafruit FunHouse and upcoming Adafruit Feather Esp32s2
Update Adafruit magtag and metro esp32s2 to have tinyuf2 as factory app
Also modify platform.txt as discussed in adafruit#2 + adafruit#3 + adafruit#4 to add support for
Board/variant partition.csv, bootloader.bin ( priority is user sketch > variant > build.parition/boot )
upload.extra_flags to optionally flash tinyuf2 as factory application
Remove duplicated parameter in running python script in linux and windows
Please review and let me know if you want any changes.
Notes: tinyuf2 is a uf2 bootloader for multiple platforms. For esp32s2, it is an factory app to perform uf2 firmware update.
Previously sketches or examples that had spaces anywhere in their absolute
path caused a total build failure. By adding quotes around the path in
platform.txt, they now build correctly
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
The latest versions of Arduino IDE shifted the responsibility for precompiled libraries support to the core developers, which breaks precompiled library support in esp32 Arduino core. See https://github.com/arduino/ArduinoCore-avr/pull/52 for more details:
```
In this new version of the builder we are not doing any heuristics to find the right spot where the ldflags should be inserted (this was causing many bugs on its own); instead, we fully trust the core makers to add explicit support to precompiled libs.
```
This chage re-enables precompiled library support in the esp32 Arduino core.
Add a file named `partitions.csv` to your sketch folder and define the partitions inside. In order to not get `Sketch too big`, please select appropriate partition scheme from the board menu