Scripts, makefiles, and users who do no changes will not have exceptions
enabled during builds. This should avoid the sketch inflation issue for
users who are space constrained, while allowing users who care about
exceptions to enable them through the IDE.
* [PUYA] Applied ESPeasy puya_v3.patch
Applied the patch to get the starting point as described in https://github.com/esp8266/Arduino/issues/5493
* [PUYA] Only allocate memory when PUYA detected
core 2.5.0 PUYA patch, no puya:
Description Function #calls call/sec min (ms) Avg (ms) max (ms)
Save File 4 0.25 34.755 45.264 67.620
Free Mem: 16168
core 2.5.0 PUYA patch, Faked Puya detect:
Description Function #calls call/sec min (ms) Avg (ms) max (ms)
Save File 2 0.04 41.332 57.544 73.756
Free Mem: 11560
* [PUYA] Check for PUYA chip as soon as possible at boot
Check for PUYA chip in call for `getFlashChipId()`
This will only be done once and the result of the get function is also cached.
* [PUYA] Use limited buffer (512 byte) allocated at first write
No need to allocate a buffer when not writing to flash.
The default buffer size is 512 bytes, which is 2 pages in the flash chip.
* [PUYA] Lower PUYA flash buffer to 1 page (256 B)
As discussed here: https://github.com/esp8266/Arduino/issues/5493#issuecomment-447543279
* [PUYA] Fix indents naming and return conditions
* [PUYA] Move Puya write code to spi_flash_write_puya
* [PUYA] Make spi_flash_write_puya static and define PUYA_SUPPORT
* [PUYA] Add some SPI flash vendor IDs
As requested by @igrr https://github.com/esp8266/Arduino/pull/5504#discussion_r242016184
* [PUYA] All suggested changes.
See: https://github.com/esp8266/Arduino/pull/5504#pullrequestreview-186145820
* Move functions out of IRAM when possible
umm_init() is called in OS startup after flash is enabled, and never
again.
cont_get_free_stack() shouldn't be called from IRQ.
Don't inline _iram_read_byte() function.
* Move system fault handler to flash, use new printf
The __wrap_system_restart call has been in flash for quite a while and
seems to be working fine. There were some support routines that were
placed in IRAM (mistakenly thinking the wrap_restart caller was also in
IRAM) which are now moved to flash.
Clean up the printf code to use the new stdlib which handles PGM_P
strings as format and arguments without any difficulty.
* Make STR macro more unique
Add double-underscores to some string assistance macros to avoid
conflicts with user applications.
* Use function, not macro, to save code space
Save ~2KB final bin size by using a ets_printf_P function and not
an inline macro. IRAM and HEAP unaffected.
* Don't actually touch the SP in the dump
Store a copy of the incoming stack pointer in the postmortem in order
to avoid actually changing the SP when a crash happend in BearSSL.
* Make C++ uncaught exceptions explicit
Use the term "Unhandled C++ exception" instead of just "Unhandled
exception" to make it clear such crashes are caused by a C++ throw
and now a system exception.
* ci: fix checking for presence of CI_GITHUB_API_KEY
CI_GITHUB_API_KEY is always set when evaluating job include/exclude conditions, and it only gets removed when the job starts. Move the check into the script.
* ci: split build jobs into separate shell scripts
The new non-exception libstdc++ was not referenced in the linker script,
allowing it to end up in IRAM when not needed. Add the line to match
and move it into IROM where it belongs.
* Keep signing commands in platform.txt on release
The boards packager was deleting what was at the time it was written
unused lines in fht platform.txt file before deploying to Arduino.
One of these lines is now needed for signing to work, so don't delete
it.
Also, explicitly call "python signing.py" because it looks like Arduino
is sanitizing/removing executable bits on files when extracting from
boards manager installations.
Fixes#5483
* Create the build subdir, if needed, for autosign
If the temporary build/core directory isn't available, make it in order
that Updater.cpp will see the generated signing header and not the one
in the main core.
* uart fixes and BW improvements
* uart: read_char straightly use hw buffer
* +attributes for functions called by ISR
* uart: BW improvements
read_char straightly use hw buffer (+ ~10%bw)
read by block (+ ~190%bw) (instead of generic Stream::readBytes)
attributes for functions called by ISR
remove overrun message
remove some ISR flags which were not honoured
* fix merge
* fix buffer overflow
* serial stress test sketch
* astyle
* serial stress example: interactive keyboard, stop reading, overrun
* serial device test: bandwidth & overrun
* update + HardwareSerial::hasError()
* interactive overrun in example
* astyle
* Test using @plerup's SoftwareSerial as submodule (tag 3.4.1)
* update upstream ref (fix warning)
* host mock uart/read(buf,size)
* reset style changes in submodules before style diff
* update build_boards_manager_package.sh for submodules
* trigger CI (removing space)
* cannot reproduce locally the CI issue, setting bash -x option to get live trace
* remove previously added (in this PR) 'set -e' in package builder (passes local tests, not real CI)
script-comment new recipe.hooks.core.prebuild.3 (along with already commented .1 and .2)
moved CI package test to be first on the test list
remove 'set -x', wish me luck
The bug referenced in the code that required a custom macro to enable
PSTR/PROGMEM compilation ( https://github.com/esp8266/Arduino/issues/3369 )
was fixed a while back and all PROGMEM references now live in their own
save .sections.
This patch simply is the output of `sed -i s/PSTR_LEA/PSTR/g *` and
`sed -i s/PROGMEM_LEA/PROGMEM/g *` on the codebase and the removal
of those defines.
* lwip2: better handling of ipv4_addr/t type + 3 sntp servers
* bump lwip2 version
* Only with FEATURES=1: 3 sntp servers and AutoIP enabled (169.254 when dhcp server fails)
* Only with FEATURES=1: 3 sntp servers and AutoIP enabled (169.254 when dhcp server fails)
* local CI runner: select build type
* new ipv4_addr/t definition makes things easier for IPAddress
* update local CI runner
* lwip2 changes
* lwip2: port esp-ping and espconn
Remove the -fno-jump-tables since the new toolchain places these tables
in ROM now. Rebuild using the toolchain. Saves 1-3KB of flash and
has 0 RAM impact plus may make certain bits marginally faster by using
a LUT instead of a if-else-else chain.
The complete toolchain, including mkspiffs, esptool, C, C++, newlib,
and others (BearSSL excluded) is now built and uploaded with a single
command to ensure repeatability and minimize manual mistakes. All
OSes and architectures are built at a time.
Update to 2.5.0-2 throught the chain.
* LEAmDNS Responder (II)
Created a new branch to solve commit conflicts with recent changes to ESP8266mDNSResponder.cpp by d-a-v.
* Removed millis() roll-over issues
* fix LEA-mDNS
* astyle on lea-mdns examples
* add compatibility with lwIP-v1
* ditto
* use strncasecmp instead of lwip's strnicmp from lwIP-v2 (thanks @devyte)
* ditto
* fixes
* Update mDNS_Clock.ino
unindent
* Update mDNS_ServiceMonitor.ino
unindent
* Update LEAmDNS.h
Add setInstanceName() forwarder for compat
* Disable DEBUG_ESP_MDNS_RESPONDER by default
* [Fixed] Debug output line
DEBUG_OUTPUT needs to go inside DEBUG_EX_ function otherwise throw error if DEBUG_ESP_MDNS_RESPONDER is not defined
* Make exceptions a configurable menu
Add a menu, Exceptions, which allows exceptions to be disabled for ROM
sensitive scripts. Default is enabled.
* Update to latest JSON builder
* Fix the template.json with latest core patches
* Add 64-bit %ll printf format support
Adds support for %lld, %llx, etc. 64-bit integer printing, useful
for logging timestamps and other things.
Fixes#5430
* Remove unwanted updated JSON
* weak hook early_setup() #2111#2133#2136
* rename to early_init (more "c" vs early_setup which is more "c++arduino")
* example
* improve earlyWiFi example, slightly change AddrList interface, move WiFi sketches into WiFi examples
* fix CI
* fix local CI runner
* fix local CI runner
* rename early_init() to preinit()
* + static ESP8266WiFiClass::preinit_wifi_off()
* update early disable wifi example
* example update
* IPv6 example update
* Update ESP8266WiFiGeneric.h
camelCase for static method name
* Update ESP8266WiFiGeneric.cpp
camelCase for static method name
* Update EarlyDisableWiFi.ino
Expand comment, fix static method name
* Update core_esp8266_main.cpp
Expanded comment.
* Update core_esp8266_main.cpp
Expanded comment
* Update EarlyDisableWiFi.ino
Expanded comment