516 Commits

Author SHA1 Message Date
Meet Patel
25fe69f946 Merge branch 'bugfix/pthread_find_key_uaf' into 'master'
fix(pthread,ulp): harden TLS key lookup and ULP bss_size validation

Closes SEC-248 and SEC-1122

See merge request espressif/esp-idf!50410
2026-07-11 23:18:21 +05:30
Renz Christian Bagaporo
907f4a66d9 Merge branch 'fix/lp_core_gpio_wakeup' into 'master'
fix(ulp): wake pin wakes ESP32-P4 from deep sleep on P4

Closes IDF-15823

See merge request espressif/esp-idf!49855
2026-07-10 07:44:36 +08:00
Meet Patel
8c92af6201 fix(ulp): validate bss_size before zeroing ULP BSS region
Crafted ULP binaries could specify a bss_size larger than the reserved
memory, causing memset to zero past the ULP region boundary.
2026-07-06 22:56:21 +05:30
morris
651d6a283f refactor(esp_common): centralize ALIGN_UP/ALIGN_DOWN into esp_macros.h
Remove ~50 duplicate local definitions of ALIGN_UP/ALIGN_DOWN/ALIGN_UP_BY/
ALIGN_DOWN_BY across the codebase and replace them with canonical
ESP_ALIGN_UP/ESP_ALIGN_DOWN from esp_macros.h.
2026-07-06 13:36:06 +08:00
Renz Bagaporo
e382c58e46 fix(ulp): clear LP GPIO edge wakeup latch 2026-07-02 16:43:46 +09:00
Renz Bagaporo
b4215c6d4d test(ulp): add gpio wakeup test 2026-07-02 16:43:46 +09:00
Sudeep Mohanty
8541991224 Merge branch 'fix/lp_spi_driver_and_tests' into 'master'
fix(ulp/lp_spi): fix stale data in driver

Closes IDF-11471, IDF-11472, and IDFCI-10465

See merge request espressif/esp-idf!48972
2026-06-30 15:50:26 +02:00
Sudeep Mohanty
ae1386e891 test(ulp/lp_spi): improve test stability and add cleanup
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 10:21:56 +02:00
Sudeep Mohanty
a019532119 fix(ulp/lp_spi): fix driver bugs and add bus deinit API
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 10:21:34 +02:00
Sudeep Mohanty
c5d8ff7ef6 fix(ulp): make LP peripheral default config macros C++ compatible
Use dual-path macros: C keeps fragment-style designated initializers;
C++ uses GNU statement expressions (ESP_LOG_CONFIG_INIT pattern).
Add compile-only C++ regression tests for LP UART/I2C and ULP RISC-V I2C.

Closes https://github.com/espressif/esp-idf/issues/18369

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 12:16:39 +02:00
Samuel Obuch
7fac3ca134 Merge branch 'fix/lp_core_noreset_under_debug_option' into 'master'
fix(lp_core): fix build for CONFIG_ULP_NORESET_UNDER_DEBUG=n

See merge request espressif/esp-idf!49831
2026-06-22 11:05:10 +02:00
Marius Vikhammer
ecd0b36adb Merge branch 'fix/lp-core-rc-fast-delay' into 'master'
fix(ulp): use SoC RC_FAST frequency for LP core delay

Closes IDFCI-10618

See merge request espressif/esp-idf!49797
2026-06-22 14:00:28 +08:00
Samuel Obuch
a555e67f0b fix(lp_core): fix build for CONFIG_ULP_NORESET_UNDER_DEBUG=n 2026-06-19 13:09:18 +02:00
Marius Vikhammer
d74d5959da test(ulp): check LP core apps avoid soft-float helpers
Inspect generated LP core ELF files so accidental floating-point helper linkage is caught in CI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 14:08:14 +08:00
Marius Vikhammer
dd5533e911 fix(ulp): use RC_FAST approximation for LP core fallback
Use the shared SoC RC_FAST approximation when the target has no RTC_FAST source option.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 11:58:40 +08:00
Marius Vikhammer
7b1da65f95 fix(ulp): use SoC RC_FAST frequency for LP core delay
Use the target RC_FAST approximation for LP core delay conversion.
This prevents ESP32-S31 from under-delaying when running from RC_FAST.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 11:46:23 +08:00
Meet Patel
d72bdfedc9 fix(ulp): force SW channel control in ULP-RISC-V ADC read
On ESP32-S2/S3 the ULP-RISC-V ADC shares the RTC SAR controller with the
main CPU. ulp_adc_init() sets sar1_en_pad_force = 1 so software selects
the channel, but deep-sleep entry resets it to 0 (ULP/HW control). After
that, the per-read channel selection in ulp_riscv_adc_read_channel() is
ignored and every channel returns the same stale value. Single-channel
worked only because the channel never changed.

Re-assert RTC controller (sar1_en_pad_force = 1) before selecting the
channel on each read so multi-channel sampling works after deep sleep.
2026-06-17 21:57:10 +05:30
Meet Patel
c0601e512b feat(ulp): add multi-channel ADC init for ULP
ulp_adc_init() could only configure a single ADC channel, so monitoring
several channels from the ULP on one ADC unit was not possible. Add
ulp_adc_multi_channel_init() to configure multiple channels with
per-channel attenuation while keeping the existing single-channel API
unchanged.

Closes https://github.com/espressif/esp-idf/issues/11160
2026-06-16 12:50:58 +05:30
Abanoub Salah
8e53a4a5df fix(ulp_riscv): Prioritize error bits over data flags in I2C interrupt wait 2026-06-15 10:13:18 +03:00
Marius Vikhammer
5e0e916591 Merge branch 'fix/lp_core_s31_pdma_intr_entry' into 'master'
fix(ulp): fix LP core interrupt vector entry for LP PDMA on esp32s31

See merge request espressif/esp-idf!49521
2026-06-11 15:55:43 +08:00
Marius Vikhammer
0577a6bf87 fix(ulp): fix LP core interrupt vector entry for LP PDMA on esp32s31 2026-06-10 15:03:57 +08:00
Marius Vikhammer
42bb45db22 fix(ulp): fixes potential race-condition for lp-timer wakeup with lp-core
Reconfigure wakeup time before enabling the wakeup source to avoid
a wakeup from potentially stale values.

Closes https://github.com/espressif/esp-idf/issues/17009
2026-06-10 11:10:01 +08:00
hebinglin
46ff88717c fix(ulp): fix lp uart keep wakeup triggered 2026-06-08 16:17:09 +08:00
Alexey Lapshin
7bcf7dcbcf feat(lp_core): optimize ulp_lp_core_delay_X functions 2026-06-04 16:12:21 +07:00
Guillaume Souchere
33e774397c Merge branch 'feat/error-code-registration' into 'master'
feat(esp_common): implement composable error code registration via link-time arrays

Closes IDF-15105 and IDF-15486

See merge request espressif/esp-idf!46125
2026-06-01 09:40:37 +02:00
Marius Vikhammer
6f21ebaf90 Merge branch 'ci/enable_s31_ulp_multi_dev' into 'master'
ci(ulp): re-enable multi dev tests for S31 ULP

Closes IDF-15572

See merge request espressif/esp-idf!48890
2026-05-28 17:46:11 +08:00
Guillaume Souchere
d670774f5c feat(esp_common): implement composable error code registration via link-time arrays
Refactor the esp_err_to_name() system to decouple esp_common from
higher-level components. Instead of a monolithic generated table,
each component registers its error codes into a dedicated linker
section (.esp_err_msg_table) via idf_define_esp_err_codes() in its
CMakeLists.txt.

New files:
- tools/err_codes_extract.py: extract ESP_ERR_* defines from headers to CSV
- tools/err_codes_to_c.py: generate C source placing entries into linker section
- tools/err_codes_to_rst.py: generate RST documentation from error codes
- tools/cmake/err_codes.cmake: CMake module providing idf_define_esp_err_codes()
- components/esp_common/include/esp_err_codes.h: esp_err_msg_t typedef
- components/esp_common/src/esp_err_to_name_new.c: new lookup using link-time array
- tools/test_apps/build_system/err_codes_check/: CI test app

Changes:
- Remove all optional component dependencies from esp_common/CMakeLists.txt
- Add .esp_err_msg_table section to all 5 linker scripts
- Register error codes in 18 components via idf_define_esp_err_codes()
- Add new scripts to .gitlab/ci/rules.yml build_check patterns
- use new scripts to generate doc and add CI validation
- Update esp_err.rst to add description of composable code registration
2026-05-28 09:53:32 +02:00
Marius Vikhammer
0772dc6bf4 ci(ulp): re-enable multi dev tests for S31 ULP 2026-05-26 16:22:29 +08:00
Sudeep Mohanty
c105ea3af8 fix(ulp): initialize sources to prevent scope leakage in cmakev2 2026-05-21 10:05:48 +02:00
Marius Vikhammer
b35f528beb test(ulp): migrate I2C tests to new slave driver 2026-05-15 09:38:52 +08:00
Marius Vikhammer
652f605d8b Merge branch 'bugfix/ulp_riscv_rtc_i2c_test_fix' into 'master'
fix(ulp_riscv_i2c): Fix spurious pass in RTC I2C multi-device test

See merge request espressif/esp-idf!48497
2026-05-14 09:14:17 +08:00
Sudeep Mohanty
0d869cad61 fix(ulp_riscv_i2c): Fix spurious pass in RTC I2C multi-device test
The test was passing without real I2C communication due to a GPIO
mismatch (slave on GPIO 6/7 vs RTC I2C master on GPIO 2/3), single-byte
zero-coincidence, unchecked ULP return values, and an insufficient
RTC I2C timeout.

Fix slave GPIOs, increase test length, check I2C return values, add
proper assertions, and set an adequate RTC I2C timeout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-13 14:30:55 +02:00
Marius Vikhammer
73dc40eb8a Merge branch 'feature/s31_lp_i2c' into 'master'
feat(ulp): support I2C on ULP for S31

Closes IDF-14635

See merge request espressif/esp-idf!48405
2026-05-13 08:31:29 +08:00
Sudeep Mohanty
fbd587f10d Merge branch 'refactor/lp_periph_io_for_lp_core' into 'master'
refactor(ulp): use lp_gpio_matrix_* for LP core peripheral IO on matrix targets

See merge request espressif/esp-idf!48114
2026-05-12 14:02:08 +02:00
Marius Vikhammer
ab9cf37a1b feat(ulp): support I2C on ULP for S31 2026-05-12 17:32:23 +08:00
Marius Vikhammer
88b39e88c4 feat(ulp): support lp-core PMP on ESP32-S31 2026-05-12 09:20:30 +08:00
Sudeep Mohanty
6f044e6e81 refactor(ulp): use lp_gpio_matrix_* for LP core peripheral IO on matrix targets
On SOC_LP_GPIO_MATRIX_SUPPORTED targets, use lp_gpio_matrix_input and
lp_gpio_matrix_output instead of lp_gpio_connect_* so matrix outputs use
rtcio_hal_matrix_out (LP GPIO IOMUX applied in HAL).

LP UART remapped pins: drop rtc_gpio_iomux_func_sel(pin, 1); rtc_gpio_init
already selects RTCIO_LL_PIN_FUNC.

Non-matrix LP I2C: select dedicated LP I2C RTC IOMUX via rtc_gpio_iomux_output
(same mux register write as rtc_gpio_iomux_func_sel; matches HAL naming for
peripheral-owned output enable on dedicated mux functions).
2026-05-11 13:30:23 +02:00
Marius Vikhammer
2fa1906b0a Merge branch 'feature/s31_lp_mailbox' into 'master'
feat(ulp): enable LP mailbox on S31

Closes IDF-14637

See merge request espressif/esp-idf!48218
2026-05-09 10:58:41 +08:00
Marius Vikhammer
8611150899 Merge branch 'bugfix/ulp_max_mem' into 'master'
fix(ulp): correct target LP memory reservation limits

Closes IDF-11974

See merge request espressif/esp-idf!48065
2026-05-08 14:08:21 +08:00
Marius Vikhammer
6023f07868 feat(ulp): add support for mailbox on S31 2026-05-08 14:06:04 +08:00
Marius Vikhammer
0ab385ab88 fix(ulp): correct target LP memory reservation limits
The configured maximum should match each target's fixed LP/RTC
reservations so menuconfig does not advertise values that the linker
cannot support.

Keep the linker failure explicit about CONFIG_ULP_COPROC_RESERVE_MEM
because application RTC sections still share the remaining LP/RTC RAM.
2026-05-06 17:37:35 +08:00
Marius Vikhammer
353b637e16 Merge branch 'feature/s31_lp_uart_ulp' into 'master'
feat(ulp): add lp uart support for ULP on S31

Closes IDF-14634 and IDF-15567

See merge request espressif/esp-idf!48055
2026-05-06 15:43:12 +08:00
Marius Vikhammer
66d1d594e4 feat(ulp): add lp uart support for ULP on S31 2026-04-29 16:20:43 +08:00
Song Ruo Jing
1d50587ab2 refactor(rtcio): split rtcio/gpio switch with rtc iomux func sel func
This allows rtc_gpio_deinit to always switch the pad back to GPIO,
regardless of lp io clock enabled or not, so that gpio_config can
always switch the IO back to GPIO use after wakeup from deep sleep.
2026-04-29 12:17:37 +08:00
Marius Vikhammer
09f3b007f9 Merge branch 'feature/lp_core_hp_mem_support' into 'master'
feat(ulp): support placing ULP app in HP-RAM

See merge request espressif/esp-idf!47395
2026-04-29 11:33:04 +08:00
Marius Vikhammer
261bd160aa feat(ulp): support placing ULP app in HP-RAM 2026-04-29 09:47:33 +08:00
Sudeep Mohanty
cc025fa3d5 Merge branch 'fix/lp_uart_data_bits' into 'master'
fix(ulp/lp_core): fix LP UART data_bits validation and add full word-length test coverage

Closes PM-715, PM-660, IDFCI-10410, and IDFCI-10464

See merge request espressif/esp-idf!47432
2026-04-28 08:43:03 +02:00
Marius Vikhammer
defe1cde71 feat(ulp/lp_spi): bring up LP SPI on ESP32-S31
Add LP SPI HAL LL layer for ESP32-S31 and ESP32-P4, enable the
peripheral in soc_caps, and port the HP-side and LP-core-side SPI
drivers to use the new LL abstraction.
2026-04-28 10:20:02 +08:00
Sudeep Mohanty
4155acbdd1 fix(lp_core): repair LP UART read_bytes RX handling
Made-with: Cursor
2026-04-23 10:10:05 +02:00
Sudeep Mohanty
57b301f036 test(lp_core): add LP UART read_bytes multi-device tests
Made-with: Cursor
2026-04-23 10:10:05 +02:00