build system: Linker scripts or binary libraries should trigger a re-link
Add binary libraries and linker scripts to the list of dependencies for the ELF file.
Fixes TW7816.
See merge request !307
Fix broken WiFi due to intr allocation code.
TL;DR: The dynamic interrupt allocation code fixed something up to the point it broke. This code breaks off the broken code, fixing everything.
The dynamic allocated interrupt patch also fixed a bug in FreeRTOSs interrupt handling for two cores, which caused the two cores to (most of the time) have exactly the same interrupts enabled. This made WiFi fail: it would wait on a semaphore but never figure out the other core had set the semaphore, so it would keep waiting in the idle task for ever. This was caused by both the cross-core interrupt as well as the tick interrupt being disabled.
The culplrit for this appeared to be the WiFi driver, which enabled a FRC2 interrupt. The code enabling this, through a respectable amount of defines, called a rom function which called a HAL function... which was configured in such a way that it worked okay if both CPUs happened to have the same interrupts set, but broke as soon as that was not the case, possibly setting only the interrupt that was enabled and clearing all others.
The fix for this is to not use the ROM functions, but provide our own instead. Fortunately, this can be done without changes in the WiFi libs.
This MR also addresses a potentially dangerous ESP_LOG as well as some, according to the ISA document, needed rsyncs in the interrupt enable/disable code. It also marks int 9 and 10 as reserved, the WiFi code seems to use this.
See merge request !308
“Full” printf uses more stack space than “nano” printf, and more space than available in the idle task.
This caused stack overflow in TLS delete test. Replacing printf with ets_printf.
add supported stress test to CI
add supported stress test to CI:
stress test requires long time to execute. They will only be executed when variable NIGHT_BUILD=YES. Therefore we'll use gitlab-API trigger to execute stress test cases.
See merge request !220
drivers: remove file paths from log statements
Function name and error string are usually sufficient to find the place which has triggered an error.
`__FILE__` macro generates a string which has absolute file name (with our build system), which add many long strings to the program binary.
Also change log tags to lower case to match style used elsewhere.
Fixes https://github.com/espressif/esp-idf/issues/126
See merge request !282
Flash encryption support
Flash encryption support in build system, tooling
To come in future MR:
* On-device key generation on first boot (for production devices), need to finalise testing of bootloader entropy seeding.
* spi_flash_encrypted_write to support non-32-byte block writes (at least optionally.)
* I think a lot of the bootloader_support component can possibly be rolled into "spiflash" and other components, to use a common API.
See merge request !240
Add dynamic interrupt allocation mechanism
This adds:
- Dynamic allocation of interrupts. Pass it the features of the interrupt you want, it'll set you up with an int.
- Shared interrupts. Enables multiple peripheral drivers to use the same interrupt.
- Marking what interrupts are fully executable from IRAM; if an int isn't marked like that it will get disabled once flash cache gets disabled.
Also:
- Modifies driver to be in line with these changes
See merge request !254
Fail CI build on warnings
This allows developers to add CFLAGS for -Wno-error=XXX while developing, but before code passes the CI build then it must be warning-free.
See merge request !279
newlib: add "full" formatting support
This change adds support for 64-bit formats and C99 features to newlib printf/scanf functions. This support is enabled by default in menuconfig, but can be switched off to reduce code size.
Also adds missing functions such as fmod and fmodf.
- Fixes https://github.com/espressif/esp-idf/issues/52
- Fixes https://github.com/espressif/esp-idf/issues/83
See merge request !274
- add two versions of libc: libc.a and libc_nano.a. First one has full C99 formatting support, second one uses “nano” formatting functions available in ROM.
- fix linker error for fmod, fmodf, atof, atoff
- update tests
UART console selection
This change adds a set of menuconfig options to set custom UART#, baud rate, and pins, for console output.
Ref. TW8146
Also includes the following changes:
- `uart_tx_wait_idle`: fix issue with last character not transmitted. ROM function `uart_tx_wait_idle` may have a bug which causes the function to return before the final character is fully transmitted. This replaces `uart_tx_wait_idle` declaration with a static inline definition which fixes the issue. Also replaces the use of `uart_tx_flush` with `uart_tx_wait_idle` in `esp_restart`, to remove garbage in console output on restart.
- `rtc_printf` is temporary replaced with a no-op, pending a new release of librtc.a. Current release assumes that UART0 is used for output,
and switches UART0 baud rate while doing frequency changes and printing some log output. This doesn’t work if a different UART is used for output.
- disable boot watchdog only after starting the main task. Boot watchdogs were disabled very early in startup code. It was possible to introduce an infinite loop anywhere in the many functions called from startup code, and this would not be detected by interrupt watchdog and task watchdog. This change postpones disabling of boot watchdogs to the point when the scheduler is running. Also replaces register expressed using integer address with a name. This change is not directly related to the previous ones, but was found while debugging UART selection features.
See merge request !288
Removal of spurious newline character in debug statement
There was a debug statement in the code that included an additional newline character that wasn't needed.
From github PR: https://github.com/espressif/esp-idf/pull/124
See merge request !291
On Xtensa windowed ABI backtrace is easy to do, and it's immensely
useful for debugging, so - do it by default.
We try to be careful and not deref bogus pointers while walking the
frames.
Example output (from debugging espressif/esp-idf#133):
Backtrace: 0x1:0x3ffc51e0 0x400e9dfa:0x3ffc5210 0x400e9ebc:0x3ffc5230 0x400ec487:0x3ffc5260
With just addr2line utility from binutils, this already pinpoints the
location of the crash.