Commit Graph

75 Commits

Author SHA1 Message Date
Erhan Kurubas
2c11810ad9 feat(esp_riscv_trace): add riscv trace encoder driver with hal/ll layer 2026-07-17 12:42:13 +02:00
hebinglin
e71b30c279 feat(esp_hw_support): add analog_wait calibration in sleep flow for h4 2026-07-14 17:13:32 +08:00
Meet Patel
383e9adb82 feat(kasan): add Kernel Address Sanitizer (KASAN) support for ESP-IDF
Add KASAN support for detecting heap memory safety bugs (buffer
overflows, underflows, use-after-free) at runtime using compiler
instrumentation and shadow memory. Gated behind
CONFIG_IDF_EXPERIMENTAL_FEATURES, with touch points kept to esp_system
and heap so other components stay untouched.

- Core runtime (esp_system/kasan.c, esp_kasan.h): nibble-based shadow
  memory in DRAM, poison/unpoison, per-access validation, and __asan_*
  stubs; hot-path stubs in IRAM so they stay valid with the flash cache
  off. Shadow init runs before heap bring-up.
- Heap integration (heap/heap_kasan*.c): alloc/free hooks add redzones,
  a quarantine FIFO, and shadow updates.
- Panic handling: disable checks once at the panic handler entry so
  backtrace and stack dumps can read redzones without nested reports.
- Build system: -fsanitize=kernel-address for app code, with HAL, SoC,
  esp_rom, SPI flash, esp_hw_support, bootloader_support, FreeRTOS, and
  heap internals excluded from instrumentation.
- Test app (tools/test_apps/system/kasan_test): Unity tests for
  overflow, underflow, use-after-free, and all sized __asan_* stubs,
  with halt and no-halt configurations.
- Docs: document KASAN in the heap memory debugging guide (EN and CN).
2026-06-24 11:27:00 +05:30
Guillaume Souchere
9835daba70 feat(freertos/vfs): add Linux cooperative syscall dispatch with VFS FD registration
Rework the syscall interposition architecture so FreeRTOS works
standalone (without VFS) and VFS optionally overrides with strong
symbols.  All kernel FDs are registered with VFS via
esp_vfs_register_fd_with_local_fd, so the application only sees
VFS-allocated FD numbers, preventing numerical collisions between
kernel FDs and VFS-internal FD slots.

FreeRTOS side:
- Create linux_port_coop_internal.h with LINUX_COOP_IO_LOOP,
  LINUX_COOP_RESOLVE, linux_coop_yield and FD state table functions
- Export cooperative I/O primitives (freertos_linux_coop_read/write/
  open/close/fcntl/select/pread/pwrite/readv/writev/recv/send/
  recvfrom/sendto/recvmsg/sendmsg/connect/accept/pselect/poll/
  socket/socketpair/pipe/pipe2/dup/dup2/syscalls_init)
- Define weak POSIX symbols calling through to the cooperative
  primitives; keep nanosleep/sleep/usleep as strong (not FD-related)
- Refactor freertos_linux_coop_syscalls.h into a pure public API header

VFS side:
- Register the Linux host FS with esp_vfs_register_fs_with_id() as a
  proper VFS driver; register stdin/stdout/stderr at init (priority 99)
- Rewrite vfs_linux.c with strong POSIX symbols dispatching through
  esp_vfs_*
- Add strong overrides for FD-creating syscalls (open, pipe, pipe2,
  socket, socketpair, dup, dup2, accept) that register returned FDs
  with VFS
- Add strong overrides for FD-translating syscalls (readv, writev,
  recv, send, recvfrom, sendto, recvmsg, sendmsg, connect, pselect,
  poll) that translate VFS FD to kernel FD
- Delete vfs_coop_syscalls.c (absorbed into FreeRTOS weak + VFS strong)
- Update CMakeLists.txt: remove vfs_coop_syscalls.c, add linker hook
2026-06-04 11:36:34 +02:00
hebinglin
5710783a89 feat(esp_hw_support): support entry 2 xtalx2 power pu in esp32h4 2026-05-21 19:55:37 +08:00
Marius Vikhammer
8e2b416c38 feat(esp_system): add CPU lockup debug support for esp32h4 and esp32s31 2026-04-22 11:11:02 +08:00
Marius Vikhammer
ee50fa20e3 refactor(esp_libc): move newlib time init into esp_libc component 2026-04-13 15:11:57 +08:00
Marius Vikhammer
e4bc0e9554 fix(esp_coex): move coex init from esp_system to esp_coex component
CMakev2's DEFERRED mode for idf_component_optional_requires only links
optional components already present in the dependency graph. This caused
esp_coex headers to be unavailable when building minimal examples on
targets with both WiFi and IEEE802154 (e.g. esp32c5, esp32c6).

Moving init_coexist to esp_coex removes the cross-component dependency
and ensures the init function is only compiled when esp_coex itself is
part of the build. A linker hook is added to guarantee the object file
is not silently discarded by the linker.

Made-with: Cursor
2026-03-10 10:31:19 +08:00
Li Shuai
66457467c6 fix(ci): fix ci issue of startup order doesn't match the reference file 2026-03-05 18:11:17 +08:00
wuzhenghui
d2be19ba18 feat(esp_hw_support): support esp32s31 system sleep retention 2026-03-03 21:42:48 +08:00
Xiao Xufeng
8dbf23630a refactor(spi_flash): reorganize header files and improve API encapsulation
This commit reorganizes SPI flash header files to better reflect their
visibility and intended usage:

1. Rename `esp_flash_port/` to `esp_flash_chips/`:
   - Better reflects that these headers are for chip driver implementations
   - All chip driver headers moved to `esp_flash_chips/` directory
   - Added README.md explaining semi-public nature of these headers

2. Move internal headers to `esp_private/`:
   - `esp_flash_internal.h` -> `esp_private/esp_flash_internal.h`
   - `memspi_host_driver.h` -> `esp_private/memspi_host_driver.h`

3. Move chip driver related headers to `esp_flash_chips/`:
   - `esp_private/esp_flash_types.h` -> `esp_flash_chips/esp_flash_types.h`
   - `spi_flash/spi_flash_defs.h` -> `esp_flash_chips/spi_flash_defs.h`
   - `spi_flash_override.h` -> `esp_flash_chips/spi_flash_override.h`
   - All `spi_flash_chip_*.h` headers moved to `esp_flash_chips/`

4. Code improvements:
   - Remove unused includes (e.g., `spi_flash_override.h` from `cache_utils.c`)
   - Use public API `esp_flash_get_size()` instead of direct member access
   - Add `esp_flash_is_quad_mode` to linker.lf for IRAM placement

5. Documentation updates:
   - Add README.md in `esp_flash_chips/` explaining semi-public headers
   - Update programming guide with warnings about internal headers
   - Update both English and Chinese documentation

6. Update all references across the codebase:
   - Update includes in `spi_flash` component
   - Update `bootloader_support`, `app_update`, `esp_tee`, `espcoredump`
   - Update example projects

Breaking changes:
- Headers moved to new locations require include path updates
- `custom_flash_driver` example temporarily disabled until external
  components are updated
2026-01-23 03:38:54 +08:00
Xiao Xufeng
758cf6e1a3 refactor(spi_flash): move internal types to private headers and refactor initialization
This commit refactors the SPI flash component to improve encapsulation and
modularity by moving internal types and functions to private headers, and
reorganizing initialization code.

Key changes:

1. Move PSRAM frequency constraint macro from soc_caps.h to mspi_ll.h
   - Rename SOC_SPI_MEM_PSRAM_FREQ_AXI_CONSTRAINED to
     MSPI_TIMING_LL_PSRAM_FREQ_AXI_CONSTRAINED
   - Move macro definition to chip-specific mspi_ll.h files (C5, C61, H4, P4, S31)
   - Update usage in clk_utils.c and esp_flash_spi_init.c
   - Remove old macro from all soc_caps.h files

2. Move internal types to private headers
   - Move esp_flash_t structure to esp_private/esp_flash_types.h
   - Move esp_flash_os_functions_t to esp_private/spi_flash_os.h
   - Update all internal files to include private headers
   - Keep forward declarations in public esp_flash.h

3. Move chip driver header to internal directory
   - Move spi_flash_chip_driver.h to esp_flash_port/spi_flash_chip_driver.h
   - Update all references to use new path
   - Add esp_private/esp_flash_types.h include to the moved header

4. Refactor initialization functions
   - Move init_flash from esp_system/startup_funcs.c to
     spi_flash/esp_flash_spi_init.c
   - Create new init_pm_flash_freq_limit function in startup_funcs.c
     to call esp_pm_flash_freq_limit_init() conditionally
   - Update system_init_fn.txt with new function locations

5. Improve API encapsulation
   - Replace direct access to esp_flash_t->size in
     esp_partition_register_external() with esp_flash_get_size() API
   - Move esp_flash_is_quad_mode from inline function to regular function
     in esp_flash_api.c

6. Update component dependencies
   - Add esp_driver_gpio to spi_flash component PRIV_REQUIRES
   - Remove unused includes and clean up header dependencies

These changes improve code organization by clearly separating public APIs
from internal implementation details, making the codebase more maintainable
and reducing the risk of breaking changes to internal structures.
2026-01-23 03:38:54 +08:00
hebinglin
94b54832f8 change(esp_hw_support): remove sleep_mmu_retention related flow for esp32c5 eco1 2026-01-12 14:15:48 +08:00
armando
7fe40f12ba feat(mspi): supported mspi flash and psram isr 2025-12-26 01:04:45 +00:00
Mahavir Jain
06805d177c Merge branch 'feature/mbedtls_psa_migration_migrate_esp_http' into 'master'
Migrate esp_http_client and esp_http_server to PSA API

See merge request espressif/esp-idf!41035
2025-11-03 09:39:54 +05:30
Erhan Kurubas
1dac8685db feat(tracing): add new component for tracing 2025-10-30 12:15:35 +01:00
Ashish Sharma
acf89924c8 feat(esp_http): migrate esp_http to PSA API 2025-10-26 10:13:14 +08:00
Erhan Kurubas
2ef718fc29 change(app_trace): breaking changes related to destination selection
- Destination selection is unified for SystemView and app_trace
- Destination param is removed from app_trace APIs
- Destinaiton and related configuration now can be override from users
  with a callback from system_init_fn
2025-10-18 02:28:31 +08:00
Marius Vikhammer
a257812e14 feat(stdio): added esp_stdio component
esp_stdio contains everything the old esp_vfs_console contained (the vfs stdio glue layer)
as well as other functionality related to stdio (previously referred to as console)
2025-10-16 10:01:59 +08:00
Alexey Lapshin
9281e78381 change(esp_libc): rename newlib component to esp_libc 2025-09-09 22:00:44 +08:00
hebinglin
bc4c9952bb change(esp_hw_support): support cpu domain power down and cpu retention for esp32h4 beta5 2025-09-01 10:13:51 +08:00
Marius Vikhammer
56e0c11bb6 feat(usb_cdc_console): moved usb-cdc ROM console to new component: esp_usb_cdc_rom_console 2025-08-22 09:37:47 +08:00
Aditya Patwardhan
03ffe90f95 feat(soc): Added soc capabilities related to RNG for ESP32C5 2025-07-23 14:22:09 +05:30
wuzhenghui
bc5bef5556 feat(esp_hw_support): fix some issues and update esp32c61 eco3 sleep features 2025-06-27 13:59:53 +08:00
Konstantin Kondrashov
3a7c1a2e74 feat(bootloader): Bootloader OTA update with recovery bootloader feat 2025-06-12 18:47:33 +08:00
armando
3cbe162bf0 refactor(mspi): change mspi timing tuning dirrectory structure 2025-05-19 11:50:43 +08:00
Li Shuai
689924724f change(esp_hw_support): cpu domain and retention support for esp32h21 2025-03-24 15:50:20 +08:00
armando
ac8cfadab0 refactor(psram): cleanup psram component code structure 2025-03-20 15:17:01 +08:00
Armando
339c24ca47 refactor(mspi): added mspi_timing_tuning dir 2024-12-04 09:45:03 +08:00
Alexey Lapshin
888b5f7e8d feat(newlib): add picolibc support 2024-12-02 21:35:56 +07:00
Lou Tianhao
9529c4ece4 fix(esp_hw_support): fix mmu memory powered down issue by software backup and restore mmu table content
squash! fix(esp_hw_support): fix mmu memory powered down issue by software backup and restore mmu table content
2024-09-20 14:07:18 +08:00
Lou Tianhao
a30ed69f69 feat(pm): support top retention for esp32c61 2024-09-20 14:07:18 +08:00
hrushikesh.bhosale
aaf1f868d5 fix(nvs_sec_provider): Added check for nvs_keys partition
Added check to whether nvs_keys partition is provided or not in partiton csv.
Converted nvs_sec_provider_register_flash_enc_ctr and nvs_sec_provider_register_hmac_ctr
functions from __attribute__(constructor) to ESP_SYSTEM_INIT_FN.
2024-09-10 12:12:02 +08:00
Lou Tianhao
4393343ac9 fix(ci): some actions taken to pass ci 2024-08-29 14:15:41 +08:00
Lou Tianhao
d6737c3207 refactor(esp_hw_support): refactor sleep clock, split it to support multiple targets 2024-08-28 10:44:08 +08:00
Li Shuai
86e384b563 fix(esp_hw_support): fix mmu memory powered down issue by software backup and restore mmu table content 2024-08-28 10:44:08 +08:00
Marius Vikhammer
385439213a change(pthread): changed pthread to not pull in init functions if not used
The pthread_init function would always get included in the binary,
even when no pthread functions were used.

This happens due to us using -u linker flags to force the linker to
consider the pthread library, to ensure the weak pthread functions in
the toolchain are overridden.

By restructing the code to rely on lazy inits instead we can avoid using
a init function, and therefor save some space.

Closes https://github.com/espressif/esp-idf/issues/14213
2024-08-27 10:00:04 +08:00
Mahavir Jain
1e8391f5fe fix(esp_security): keep esp_security as private dependency for esp_hw_support
- Only esp_hw_support -> esp_security as new private dependency
- In next major IDF release, the public interface can be moved
  esp_security component
2024-08-20 12:35:22 +08:00
C.S.M
931f95068a feat(spiram): Add temperature support for psram adjustment on esp32c5 2024-07-25 13:48:41 +08:00
Armando
893bd25c0b fix(psram): corrected psram early stage function name 2024-07-23 10:00:24 +08:00
Tomáš Rohlínek
a615f487dd feat(storage/vfs): add /dev/null for unwanted output redirection 2024-05-28 07:54:35 +02:00
Alexey Lapshin
994b4ed459 Merge branch 'feature/update-toolchain-to-esp-13.2.0_20240305' into 'master'
feat(tools): update toolchain version to esp-13.2.0_20240305

Closes IDFGH-2549

See merge request espressif/esp-idf!29430
2024-03-18 16:58:39 +08:00
Alexey Lapshin
4ac07fc575 feat(cxx): get rid of _Unwind_SetEnableExceptionFdeSorting 2024-03-15 12:36:00 +04:00
Wu Zheng Hui
5a682c3bbb Merge branch 'feature/optimize_chips_active_power' into 'master'
feat(system): Optimize the power consumption of esp32h2 and esp32c6 in the active state

Closes IDF-5658

See merge request espressif/esp-idf!27798
2024-03-14 12:08:33 +08:00
Sonika Rathi
a7d1da94b9 Merge branch 'update/add_esp_vfs_console_component' into 'master'
fix(esp_vfs_console): add esp_vfs_console component

Closes IDFGH-11900

See merge request espressif/esp-idf!28655
2024-03-12 23:37:41 +08:00
wuzhenghui
9e8e20227f feat(system): disable RNG module clock by default for save power 2024-03-12 10:10:41 +08:00
Guillaume Souchere
8a8ed00852 refactor(esp_psram): Decouple psram init from esp_system 2024-03-11 11:50:43 +01:00
sonika.rathi
e162903615 fix(esp_vfs_console): add esp_vfs_console component
move vfs_console related init steps from vfs component to new esp_vfs_console component
2024-03-11 10:18:10 +01:00
Guillaume Souchere
e2144e01c1 refactor(heap): decouple heap_init from esp_system 2024-03-05 07:30:38 +01:00
Jakob Hasse
64d37664b4 Merge branch 'refactor/cxx_startup_function_cleanup' into 'master'
refactor(cxx): moved C++ init functions to cxx component

Closes IDF-8768

See merge request espressif/esp-idf!29095
2024-03-05 10:17:42 +08:00