Commit Graph
57 Commits
Author SHA1 Message Date
Xiao Xufeng 789ce684c9 fix(mmap): fixed some API read wrong data via mmap when flash being erased/written while XIP on PSRAM
Before:

The cache won't be disabled when XIP on psram. But during flash
erasing/programming, read data will be courrupt.

When XIP in psram is enabled, the image is not mapped to the cache so
usually there will be no flash access. The only way to read from flash
is via the driver or use mmap. The driver has protection during erasing,
while th mmap region not.

Now:

Mmap APIs provide a flag to make mmap->unmap region mutually exclusive
to flash erase/programming when XIP from psram. SPI Flash write APIs
will benefit from this. When the flag is used, no concurrent access to
mapped region will happen while writing; otherwise the cache will be
disable to avoid data corruption.

Most ESP-IDF APIs calls mmap with this flag. As for users calling
mmap-like APIs directly, they can choose whether to enable this by a
flag.

Closes https://github.com/espressif/esp-idf/issues/14897
2026-06-16 01:00:43 +08:00
harshal.patil f68bc1ba9f fix(secure_boot): range-check ECDSA r,s in bootloader before ROM verify 2026-06-12 14:38:47 +05:30
harshal.patil c5e03fd55c fix(esp_rom): Patch ets_ecdsa_verify() to include signature bounds check 2026-06-09 10:59:12 +05:30
Guillaume Souchere a56354e9ab feat(heap): move TLSF ROM patches and related files from esp_rom to heap
The TLSF ROM patch code (rom_patch_tlsf.c, rom_patch_multi_heap.c),
their headers, and the per-target *.rom.heap.ld linker scripts are
semantically owned by the heap component, not esp_rom. Move them
accordingly:

- components/esp_rom/patches/esp_rom_tlsf.c
  → components/heap/rom_patches/rom_patch_tlsf.c
- components/esp_rom/patches/esp_rom_multi_heap.c
  → components/heap/rom_patches/rom_patch_multi_heap.c
- components/esp_rom/include/esp_rom_tlsf.h
  → components/heap/rom_patches/include/rom_patch_tlsf.h
- components/esp_rom/include/esp_rom_multi_heap.h
  → components/heap/rom_patches/include/rom_patch_multi_heap.h
- components/esp_rom/<target>/ld/<target>.rom.heap.ld (×8)
  → components/heap/port/<target>/ld/<target>.rom.heap.ld

Update heap/CMakeLists.txt to:
- use target_linker_script() directly for *.rom.heap.ld
- guard post-registration ROM patch setup with NOT BOOTLOADER_BUILD
- drop stale CONFIG_HEAP_TLSF_CHECK_PATCH symbol reference
- drop esp_rom_include_multi_heap_patch from TLSF_CHECK_PATCH guard

Remove the corresponding entries from esp_rom/CMakeLists.txt.
2026-04-23 12:21:31 +02:00
wuzhenghui c59c3a2c8d fix(esp_rom): sync spi_flash_disable/enable_cache patches to rom implementation 2026-03-09 21:21:24 +08:00
Chen Chen eeb24057c4 refactor(hal): graduate systimer hal driver into esp_hal_systimer 2026-02-06 18:08:57 +08:00
Alexey Lapshin f6cd2fe970 Merge branch 'feature/update-toolchain-to-esp-15.2.0_20250929.4-6d3fdb7' into 'master'
Make Picolibc the default libc

See merge request espressif/esp-idf!43620
2025-12-04 01:14:01 +04:00
Alexey Lapshin 31810ae993 feat(esp_libc): make picolibc default libc 2025-12-03 13:31:42 +07:00
morris 3d31f510d0 refactor(hal_wdt): esp_hal_wdt also maintains the ROM implementation 2025-12-01 23:16:09 +08:00
Song Ruo Jing 4b8633cc2b refactor(rom/gpio): add 'rom_' prefix to GPIO ROM functions 2025-11-07 15:26:52 +08:00
Xiao Xufeng 83ca12c8e0 fix(esp_flash): fixed issue of escaping boundary check
Also patched corresponding ROM functions
2025-06-24 15:30:11 +08:00
Alexey Lapshin ec68cb3300 feat(newlib): riscv: add CONFIG_LIBC_OPTIMIZED_MISALIGNED_ACCESS config option
This option replaces implementations of functions from ROM:
  - memcpy
  - memcmp
  - memmove
  - str[n]cpy
  - str[n]cmp

The functions used in the firmware will be better optimized for misaligned
memory. Here are some measurements in CPU cycles for 4096-byte buffers:

  memcpy:  28676 -> 4128
  memcmp:  49147 -> 14259
  memmove: 33896 -> 8086
  strcpy:  32771 -> 17313
  strcmp:  32775 -> 13191
2025-03-26 17:27:24 +07:00
Alexey Lapshin 888b5f7e8d feat(newlib): add picolibc support 2024-12-02 21:35:56 +07:00
morris d6ac628f7a change(esp_rom): comment out conflict gpio functions
The GPIO function names has conflict with the public API used by
esp_driver_gpio component.

For now, we simply comment out the conflict ones.

Later, we should consider reusing the GPIO rom APIs.
2024-10-10 16:01:05 +08:00
Marius Vikhammer b809267359 fix(rom): fixed systimer always using ROM implementation 2024-03-06 09:47:12 +08:00
Cao Sen Miao 6768805d20 fix(uart,usj...): Fix wrong serial number that has been parsed to rom functions,
Closes https://github.com/espressif/esp-idf/issues/12958
2024-01-18 10:51:51 +08:00
Guillaume Souchere 93d4b0b38c fix(heap): Patch tlsf_check_pool in ROM heap
The integrity_walker now calls the integrity check hook to control
free AND used blocks of memory in the TLSF pool. This integrity walker
function is called from tlsf_check_pool.

This commit creates a patch of integrity_walker function to update the
outdated implementation in the ROM.
2023-11-01 09:47:41 +01:00
morris 4123e611dc esp_rom: add common ROM API to update CPU tick rate 2023-04-19 13:21:26 +08:00
Jiang Guang Ming fc9538c63d Merge branch 'feature/add_more_pytest_config_to_flash_mmap' into 'master'
flash mmap: more config options for flash mmap test app

See merge request espressif/esp-idf!21991
2023-03-08 13:44:29 +08:00
jiangguangming 87f2eb9e2a esp_rom: put rom cache related functions to cache.h 2023-03-07 14:51:24 +08:00
Jiang Guang Ming 3556fe9326 spi_flash: enable spi flash cache test on c6 h2 2023-03-04 07:23:59 -08:00
Marius Vikhammer c2f9392be5 Merge branch 'feature/h2_wdt' into 'master'
wdt: add support for H2

Closes IDF-6643 and IDF-6678

See merge request espressif/esp-idf!22422
2023-02-24 13:48:20 +08:00
Marius Vikhammer 5d26a0de9a wdt: add support for H2 2023-02-23 11:22:51 +08:00
Song Ruo Jing 2c2a62e323 clk_tree: Add basic clock support for esp32h2
- Support SOC ROOT clock source switch
- Support CPU frequency change
- Support RTC SLOW clock source switch
- Support RTC SLOW clock + RC FAST calibration

Remove FPGA build for esp32h2
2023-02-20 17:15:02 +08:00
Jiang Guang Ming 7d25e3853c Merge branch 'bugfix/update_esp_rom_newlib_time_c6_h2' into 'master'
update esp rom newlib-time on c2 c6 and h2

See merge request espressif/esp-idf!22142
2023-02-06 15:36:04 +08:00
morris 753eab91ee Merge branch 'feature/usj_support_h2' into 'master'
USJ console support on esp32h2

Closes IDF-6239

See merge request espressif/esp-idf!22156
2023-02-02 17:07:19 +08:00
wuzhenghui 44df5b31af feature: add ram loadable app support 2023-02-01 17:57:22 +08:00
morris 3151f9c8f1 usj: bringup on esp32h2 2023-01-31 16:21:47 +08:00
wanglei 7cd87163a3 esp_rom: remove unsupported ld files (wifi related) for esp32h2 2023-01-30 11:28:26 +08:00
jiangguangming 5edbd290a0 esp_rom: remove esp32h2.rom.rvfp.ld 2023-01-29 16:40:35 +08:00
jiangguangming 4731d4322e esp_rom: remove newlib-time.ld from ROM built with 64-bit time_t 2023-01-29 16:37:13 +08:00
Cao Sen Miao 4713a9a7f2 ESP32H2: Introduce new chip target esp32h2, hello_world example supported 2022-12-29 12:29:14 +08:00
jiangguangming 7db7269a92 esp_rom: patch systimer_hal_init/deinit for esp32h2 rom 2022-12-04 11:23:30 +08:00
Cao Sen Miao 283e2c8e5f ESP32H2: Add ROM linker file and support 2022-12-01 10:31:17 +08:00
laokaiyao 8677216576 esp32h2: renaming esp32h2 to esp32h4 2022-11-08 17:05:33 +08:00
wuzhenghui 88c123f805 esp_rom: add esp_rom_software_reset and esp_rom_software_reset_cpu interface 2022-08-31 01:59:36 +00:00
Vilem Zavodny a00e8771a7 tjpgd: Remove ROM patches and tests. 2022-08-17 14:42:45 +02:00
Marius Vikhammer cfbe0a035b esp-rom: add missing spi-flash ROM API functions
Added symbols for the SPI flash API which we export from the ROM interface,
deleted functions which are not exported.

Closes https://github.com/espressif/esp-idf/issues/1212
2022-08-08 16:34:10 +08:00
GengYuchao 509ac4e748 Update esp32h2 beta2 lib to master 2022-07-05 15:15:41 +08:00
Cao Sen Miao a690a87829 spi_flash: Remove legacy spi_flash drivers 2022-07-01 11:01:34 +08:00
wuzhenghui 89319cd72f esp_rom: remove functions which depend on sizeof(struct stat) and all their callers for esp32h2-beta2 2022-06-09 10:40:09 +08:00
Wu Zheng Hui b98622c624 efuse: update efuse name 2022-05-28 22:03:16 +08:00
zhangwenxu 9440430db2 esp_phy: support esp32h2beta2 phy build 2022-05-16 10:50:44 +00:00
wuzhenghui 218e2c873d esp32h2beta2:rename __rom_printf_float/__rom_scanf_float 2022-03-29 14:13:06 +08:00
wuzhenghui ce9cb3a7a4 esp32h2beta2:update rom ld (ESP-ROM:esp32h2beta2-20211201) 2022-03-29 14:12:58 +08:00
Michael (XIAO Xufeng) d5bdf95580 hw_support: fixed regi2c not protected by lock on ESP32S2 2022-03-13 00:24:08 +08:00
morris ef00bd59dc esp_rom: extract int matrix route and cpu ticks getter 2022-02-09 13:52:20 +08:00
Ivan Grokhotkov 24c20d188e esp_rom: remove functions which depend on sizeof(struct stat)
...and all their callers.

With the upcoming switch from sizeof(time_t)==4 to sizeof(time_t)==8,
sizeof(struct stat) is also increasing.

A few newlib functions present in ROM allocate 'struct stat' on the
stack and call _fstat_r on this structure. The implementation of
fstat is provided in ESP-IDF. This implementation will often do
memset(st, 0, sizeof(*st)), where st is 'struct stat*', before setting
some fields of this structure. If IDF is built with sizeof(st)
different from sizeof(st) which ROM was built with, this will lead
to an out-of-bounds write and a stack corruption.

This commit removes problematic ROM functions from the linker script.
Here are the functions which allocate 'struct stat':
* _isatty_r (in ROM)
* __swhatbuf_r, called by __smakebuf_r, called by __swsetup_r and
  __srefill_r (in ROM)
* _fseeko_r (not in ROM)
* glob2 (not in ROM)
* _gettemp (not in ROM)

As a result, these functions are used from libc.a, and use correct
size of 'stat' structure.

Closes https://github.com/espressif/esp-idf/issues/7980
2022-01-06 15:20:04 +01:00
Cao Sen Miao d397464fc4 spi_flash: refactor spi_flash.h to esp_rom_spiflash.h but keep the content in spi_flash.h 2021-12-30 14:12:31 +08:00
wuzhenghui 388615add0 update esp32h2beta2 chip_id to 14 2021-11-24 12:30:43 +08:00