Commit Graph

8020 Commits

Author SHA1 Message Date
Alexey Lapshin
8834cb9a5e fix(cmake): detect toolchain response-file recursion via path prefix
Skip only @response-file flags under IDF_TOOLCHAIN_BUILD_DIR using
quote-aware parse and cmake_path(IS_PREFIX). Cache the toolchain build
dir as REALPATH so prefix checks compare against a stable path spelling.
2026-09-19 10:44:09 +08:00
morris
69bab4a284 fix(g1_components): add esp_hal_cache to HAL component list
Include esp_hal_cache so the G1-restricted build still pulls in the
cache HAL after it was extracted from the generic HAL.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 18:08:34 +08:00
morris
150466f598 refactor(lcd): use LZ4-compressed binary images in i80_controller example
- Remove the EXAMPLE_LCD_IMAGE_SOURCE Kconfig option (embedded binary vs
  file system) and always load images from LittleFS.
- Convert the PNG images into LZ4-compressed LVGL binary images (.bin)
at
  build time using LVGLImage.py, and flash them to a LittleFS partition.
- Upgrade lvgl to 9.6.0 and add the espressif/lz4 component; link the
external LZ4 library into lvgl.
- Split the example: main.c focuses on the esp_lcd i80 API, while the
LVGL
  porting (lvgl_port.c) and the UI (lvgl_demo_ui.c) live in separate
files.
- Rework the demo animation to use the LVGL animation engine (lv_anim)
with
  easing paths instead of a manual software timer for smoother
rendering.
- Remove the embedded C image arrays (esp_logo.c, esp_text.c) and the
  obsolete sdkconfig.ci.image_in_{bin,fs} variants.
2026-09-18 13:50:16 +08:00
Roland Dobai
bd0820d403 Merge branch 'fix/markup-in-output' into 'master'
Correctly escape strings using status_message decorator

See merge request espressif/esp-idf!52756
2026-09-17 16:58:09 +02:00
Erhan Kurubas
345406ec48 Merge branch 'trace_encoder_snapshot_coredump' into 'master'
Add trace snapshot to the coredump file

See merge request espressif/esp-idf!52451
2026-09-17 14:41:18 +02:00
Roland Dobai
c43f19f44c fix(panic): pass the DUT serial port to espcoredump 2026-09-17 18:15:26 +08:00
Lu Ai Jun
3dd1a4671a Merge branch 'fix/sys_test_apps_using_wrong_config' into 'master'
CI: fix psram config for system test apps

See merge request espressif/esp-idf!51559
2026-09-17 15:58:44 +08:00
Erhan Kurubas
4d8f4f3b25 test(esp_riscv_trace): Add coredump snapshot note coverage
Check the ESP_RISCV_TRACE ELF note and per-core PT_LOAD segments
after an abort, without decoding the trace stream.
2026-09-16 15:00:57 +02:00
Sudeep Mohanty
6933b41314 Merge branch 'feat/ulp_component_split' into 'master'
refactor(ulp): separate the ULP coprocessor code from the driver

Closes IDF-15957

See merge request espressif/esp-idf!52268
2026-09-15 11:49:23 +02:00
Island
29e854ad3c Merge branch 'feat/bluedroid_enc_adv_data' into 'master'
feat(ble/bluedroid): move Encrypted Advertising Data APIs into the host

See merge request espressif/esp-idf!51898
2026-09-15 14:12:00 +08:00
Marek Fiala
d648b858bb feat(tools): adopt esp-pylib for mcp-server logging and ports
Migrate the MCP server extension to the shared esp-pylib library:
- replace raw stderr prints with esp_pylib.logger.log (note/err)
- route informational logs to stderr via set_info_stream so stdout
  stays reserved for the MCP JSON-RPC transport
- enumerate connected devices via esp_pylib.serial_ports.get_port_names
- stub the new imports in the mcp_ext unit tests

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 15:20:45 +02:00
Marek Fiala
3f005c8a4d feat(tools): mcp-server added monitor-device tool
Add a `monitor_device` MCP tool that lets an AI agent run a scripted,
non-interactive `esp-idf-monitor` session against a flashed device and
get back a short status plus a log file path, instead of raw serial
output inline.

Under the hood:

- The agent supplies a plain-text command body (expect/send/sleep/reset/
  exit/comments). `assemble_monitor_script_from_agent_commands()` frames
  it into a script the monitor's non-interactive command mode can
  consume via stdin: it appends `exit` if the agent didn't already end
  with one, and rewrites every bare `expect <regex>` into `expect
  --timeout <timeout_sec> <regex>` via `_monitor_normalize_expect_line()`
  (an already-bounded `expect --timeout ...` line is left untouched so
  the monitor itself reports a bad value). A leading `reset` is not
  prepended - the monitor already resets the chip when it opens the
  port - and any `reset` the agent wrote is left in place.
  `_monitor_parse_sleep_duration()` extracts each `sleep <n>` duration.
  The effective timeout is the sum of every bounded expect duration
  plus every sleep duration. Scripts whose sum exceeds
  `MONITOR_MAX_SCRIPT_SEC` are rejected. If the script has neither
  expect nor sleep (for example only `send`), `timeout_sec` is used so
  the process still has a kill bound.

- `monitor_device()` runs `python -m esp_idf_monitor` via
  `subprocess.run(..., input=script, timeout=2 * effective_timeout)`.
  `no_reset` is forwarded as `--no-reset` so the connection reset can be
  skipped; an explicit `-p` is forwarded when a port is given. Extra
  arguments match `idf.py monitor` where a build exists: baud (`baud`
  tool arg, else `monitor_baud` from `project_description.json`),
  toolchain prefix, `--target`/`--revision`, coredump/panic decode, and
  ELF files with the app ELF first. The 2x hard timeout is a safety net
  independent of the script's own `expect --timeout`/`exit` logic; on
  `TimeoutExpired` the process is killed but any output already captured
  is preserved and logged. `decode_stream()` normalizes that captured
  output, which can be `bytes` on the timeout path even though the
  process otherwise runs in text mode.

- The monitor's exit code drives the reported status via
  `_monitor_status()`, using `EXIT_EXPECT_TIMEOUT` and
  `EXIT_SCRIPT_ERROR` from `esp_idf_monitor.base.constants`: 0 is
  success, 110 means an `expect` pattern never showed up before its
  `--timeout` elapsed, 2 means the monitor rejected the script (bad
  syntax/timeout/regex), anything else is reported generically.

- Serial output and the monitor's own messages share one pipe
  (`stderr=STDOUT`) so decoded panic backtraces stay next to the lines
  that triggered them. `_save_monitor_output()` writes the full merge to
  `<tempdir>/esp_idf_mcp_log/action_monitor/monitor_<timestamp>.log` and
  reports a dedicated `Log file:` line. On non-zero exit or process
  kill, a short tail of that same merge is also returned inline so the
  agent has some failure context without a second file read. If the log
  file can't be written, it falls back to inlining a truncated tail.

Closes https://github.com/espressif/esp-idf/issues/18757
Closes https://github.com/espressif/esp-idf/pull/18385

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 15:20:45 +02:00
Jan Beran
566fc21018 fix: correctly escape strings using status_message decorator
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 14:55:52 +02:00
Roland Dobai
2e6d41c2e9 Merge branch 'task/buildv2_gdbinit_multi_exec' into 'master'
feat(cmakev2): parameterize gdbinit for multi-executable builds

Closes IDF-15860

See merge request espressif/esp-idf!51239
2026-09-10 10:59:42 +02:00
Armando (Dou Yiwen)
496c0b6377 Merge branch 'refactor/flash_refactor' into 'master'
spi_flash: split driver and os driver into `spi_flash` and `esp_mspi` components

Closes IDF-15210

See merge request espressif/esp-idf!45409
2026-09-10 07:29:01 +00:00
Roland Dobai
e9362463b4 Merge branch 'feat/pylib_standalone_scripts' into 'master'
Adopted esp-pylib for various standalone scripts

See merge request espressif/esp-idf!49944
2026-09-09 15:24:05 +02:00
morris
da3e20988f Merge branch 'ci/reenable_h4_eco2_target_test' into 'master'
feat(esp32h4): remove the support of esp32h4 rev0

Closes IDF-16110

See merge request espressif/esp-idf!52538
2026-09-09 16:03:35 +08:00
Jakub Kocka
d6771a0608 change(tools): Unified outputs of various standalone scripts (esp-pylib) 2026-09-09 09:43:59 +02:00
Armando (Dou Yiwen)
5e181236b7 refactor(mspi): move esp_mspi_align and mspi_mem_barrier to esp_mspi 2026-09-09 14:17:00 +08:00
armando
6e3abd12a1 refactor(spi_flash): move os layer to esp_mspi and chip configs to spi_flash
Also fixes the implicit dependency on esp_partition.
2026-09-09 14:17:00 +08:00
Mahavir Jain
71c93b10b9 Merge branch 'test/s3_memprot_dram_exec_xfail' into 'master'
test(panic): apply the ESP32-S2 memprot expected failures to ESP32-S3

Closes IDFCI-13868

See merge request espressif/esp-idf!52444
2026-09-09 11:42:35 +05:30
zhiweijian
f5e9e2496a feat(ble/bluedroid): move Encrypted Advertising Data APIs into the host
Provide esp_ble_ead_encrypt/decrypt in Bluedroid and group the GAP Key
Material characteristic under the same EAD Kconfig menu.
2026-09-08 16:07:44 +08:00
Marius Vikhammer
c41541b83b fix(ipc): fixed IPC task ending up in PSRAM
With CONFIG_FREERTOS_PLACE_TASK_STACKS_IN_EXT_RAM enabled IPC
task would end up in PSRAM, causing issues with disabling cache
2026-09-08 11:37:35 +08:00
Marius Vikhammer
25555683b9 Merge branch 'feature/g1_improvements_cmake_v2' into 'master'
feat(build): fixed esp_usb_cdc_rom_console always being included in build

See merge request espressif/esp-idf!51981
2026-09-08 10:36:40 +08:00
Chen Jichang
c950e7bae0 feat(esp32h4): remove the support of esp32h4 rev0 2026-09-08 10:30:20 +08:00
luaijun
a3a20a7a27 fix: the incorrect SOC_PSRAM_SUPPORTED build condition with SOC_SPIRAM_SUPPORTED.
change: the light-sleep test so an internal-RAM helper task enters light sleep while the PSRAM-stacked Unity task is blocked.Verifies that light sleep succeeds and that the PSRAM-stacked task resumes correctly afterward.Removes the unreliable sleep-callback counter check.
2026-09-08 09:54:58 +08:00
morris
77d0058435 Merge branch 'ci/disable_h4_target_test_for_updating_runners' into 'master'
ci(esp32h4): disable h4 target test for updating runners

See merge request espressif/esp-idf!52449
2026-09-07 17:19:53 +08:00
Marius Vikhammer
b38c8a0625 Merge branch 'feat/llvm-opt-integration' into 'master'
feat(compiler): add ESP-IDF LLVM optimization enablement framework

See merge request espressif/esp-idf!51154
2026-09-07 10:11:37 +08:00
Alexey Gerenkov
6d01a64027 Merge branch 'feature/update-openocd-to-v0.12.0-esp32-20260831' into 'master'
feat(tools): update openocd version to v0.12.0-esp32-20260831

See merge request espressif/esp-idf!52371
2026-09-04 19:37:02 +08:00
Chen Jichang
e9c56e2d78 ci(esp32h4): disable h4 target test for updating runners 2026-09-04 17:19:46 +08:00
harshal.patil
2068cd1aa0 test(panic): apply the ESP32-S2 memprot expected failures to ESP32-S3
The DRAM and RTC_FAST execute cases race the CPU exception against the PMS or
cache interrupt on ESP32-S3 too, so the panic reason is not deterministic.
2026-09-04 14:13:04 +05:30
Roland Dobai
aa03e678f5 Merge branch 'fix/serial_port_target_mismatch' into 'master'
fix(tools): Detect serial port matching the project target

Closes IDF-15356

See merge request espressif/esp-idf!51466
2026-09-04 07:01:30 +02:00
Sudeep Mohanty
4756c1ec75 test(cmakev2): add gdbinit single and multi-binary tests
Cover the default single-executable output directory and per-executable
gdbinit generation in a multi-binary build.
2026-09-04 13:00:09 +08:00
Sudeep Mohanty
0ca0b8da52 feat(cmakev2): parameterize gdbinit for multi-executable builds
__generate_gdbinit wrote into a single shared directory and derived the
application ELF from a global property, so a project building multiple
executables had their gdbinit files overwrite each other. Take the ELF
path and output directory as arguments, and derive them per executable in
idf_build_generate_metadata.
2026-09-04 13:00:09 +08:00
Roland Dobai
c63f12f2d0 Merge branch 'fix/kconfig_test_format' into 'master'
fix: KConfig test output format

See merge request espressif/esp-idf!52329
2026-09-03 12:52:44 +02:00
Samuel Obuch
0a1d19eba1 feat(tools): update openocd version to v0.12.0-esp32-20260831 2026-09-03 07:46:42 +00:00
Marius Vikhammer
157d6b1669 feat(build): fixed esp_usb_cdc_rom_console always being included in build 2026-09-03 15:09:38 +08:00
chenqian
25046e7959 feat(compiler): add ESP-IDF LLVM optimization enablement framework
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 13:02:58 +08:00
morris
0f42b6c4f3 Merge branch 'refactor/dac_examples' into 'master'
refactor(dac): remove adc read back in dac example, prepare for s31

See merge request espressif/esp-idf!52030
2026-09-02 20:04:22 +08:00
Daniel Paul
1c70539375 fix: KConfig test output format 2026-09-02 13:19:40 +02:00
Marius Vikhammer
ff6371a140 Merge branch 'task/remove_build_components_var_in_buildv2' into 'master'
change(build): drop BUILD_COMPONENTS support and migrate test_apps to not use it for buildv2

Closes IDF-15859

See merge request espressif/esp-idf!51695
2026-09-02 19:19:08 +08:00
Vojtech Piroch
19676ffa46 fix(tools): Detect serial port matching the project target
Auto-detect used to pick the first Espressif device, even when it did
not match IDF_TARGET. With several boards attached, flash/monitor could
talk to the wrong chip.

Pass the project target into esptool so unmatched ports are skipped.
Resolve the port after ensure_build_directory() so the target is known.
For monitor on an unconfigured project, probe the connected chip and
pass it directly to idf_monitor without configuring the project.
2026-09-02 17:18:57 +08:00
Mahavir Jain
a1f17cebdc Merge branch 'fix/s3_memprot_panic_report' into 'master'
Report ESP32-S3 PMS violations as memory protection faults

See merge request espressif/esp-idf!52109
2026-09-02 13:41:24 +05:30
Marius Vikhammer
58ab269d3a Merge branch 'feat/app-rollback-auto-confirmation' into 'master'
feat(app_update): Add auto-confirmation of OTA updates

Closes IDF-15981

See merge request espressif/esp-idf!50531
2026-09-02 15:54:30 +08:00
Sudeep Mohanty
53ea9b200e refactor(ulp): select ULP architecture component as common component
The subproject knows which architecture it builds for, so a ULP program names
only its own dependencies.
2026-09-02 09:31:07 +02:00
Sudeep Mohanty
cb2b2f9b78 refactor(ulp): build the ULP coprocessor code as per-architecture components
A ULP program is built against ulp_riscv, lp_core or ulp_fsm, each stating its
own sources, dependencies and memory layout. Sources shared with the driver
stay in components/ulp.
2026-09-02 09:31:07 +02:00
Sudeep Mohanty
1bec6e09d9 refactor(ulp): make the ULP subproject directory explicit
components/ulp/cmake holds the project that builds a ULP program. Name it
subproject, as the bootloader does.
2026-09-02 09:31:07 +02:00
Konstantin Kondrashov
de1e5035b5 feat(app_update): Add auto-confirmation of OTA updates
Enable rollback auto-confirmation by default
2026-09-01 12:53:21 +03:00
Jakub Kocka
2a07ad46e7 ci(tools): Clip idf.py failure logs so Windows log_cli cannot stall
pytest.ini enables log_cli, so logging the full ninja stdout after a
failed first-time build is one multi-MB ERROR. That hung shard 3/6 for
hours after the hints test. Log the last 80 lines; keep the full output
on the exception and at DEBUG.
2026-09-01 09:18:32 +02:00
Jakub Kocka
02a689149c ci(tools): Don't abort idf_copy when a worktree submodule is a gitlink
git worktree add materializes submodules as gitlink files. rmtree() cannot
remove those, and exists()+iterdir() on a source gitlink raises and falls
back to shutil.copytree, which leaves mbedtls/include as a file. Unlink
dest gitlinks and only copy populated source directories.
2026-09-01 09:18:31 +02:00