Commit Graph

276 Commits

Author SHA1 Message Date
Michael (XIAO Xufeng)
f6da7f3305 spi_flash: add config option to override flash size in bootloader header
Sometimes the flash size read from bootloader is not correct. This may
forbid SPI Flash driver from reading the the area larger than the size
in bootloader header.

When the new config option is enabled, the latest configured
ESPTOOLPY_FLAHSIZE in the app header will be used to override the value
read from bootloader header.
2021-02-23 01:23:53 +08:00
Mahavir Jain
e032384c7f spi_flash: add config option to enable encrypted partition read/write
This feature can be disabled to save some IRAM (approx 1KB) for cases
where flash encryption feature is not required.
2021-02-02 05:10:34 +00:00
Mahavir Jain
0715c86211 Revert "esp_partition: disable encrypted reads/writes if flash encryption is disabled"
This reverts commit bf35ef1ce7.

It has been noticed that there are scenarios where even though firmware is not enabled
with flash encryption config feature, it should be able to write to encrypted partitions.

This revert adds the feature back which was removed around v4.0 timelines, and same
change will be backported to all releases (upto v4.0) for consistency.
2021-02-02 05:10:34 +00:00
Li Shuai
ab63824600 added psram stack check in backtrace 2020-11-20 07:13:11 +00:00
Ivan Grokhotkov
37fb85b998 Merge branch 'bugfix/spi_flash_yield_coredump_v4.1' into 'release/v4.1'
spi_flash: don't call vTaskDelay in non-os context (v4.1)

See merge request espressif/esp-idf!10298
2020-10-03 14:52:55 +08:00
jiangguangming
387905a4ad flash_mmap: restore interrupt and cache before err return 2020-09-24 09:59:06 +08:00
jiangguangming
0ff3ceba32 flash_mmap: can mmap after get enough free MMU pages 2020-09-24 09:59:06 +08:00
Ivan Grokhotkov
e348a291ad spi_flash: don't call vTaskDelay in non-os context
Fixes regression in core dump, when a crash happens in interrupt
context.
2020-09-18 15:34:32 +00:00
Angus Gratton
9b7dca3769 Merge branch 'bugfix/bootloader_common_get_sha256_of_partition_v4.1' into 'release/v4.1'
bootloader_support: Fix bootloader_common_get_sha256_of_partition(), can handle a long image (v4.1)

See merge request espressif/esp-idf!9953
2020-08-24 13:37:27 +08:00
Michael (XIAO Xufeng)
d8061fa8d9 Merge branch 'bugfix/esp_flash_revert_qe_clear_4.1' into 'release/v4.1'
esp_flash: fix the regression of non-quad mode by default chip driver, bugs in add_device and deprecate cs_id (4.1)

See merge request espressif/esp-idf!8836
2020-08-20 19:11:00 +08:00
Michael (XIAO Xufeng)
6e148c0051 Merge branch 'bugfix/esp_flash_write_performance_regression_4.1' into 'release/v4.1'
esp_flash: fix the write performance regression (Backport v4.1)

See merge request espressif/esp-idf!8800
2020-08-20 19:09:59 +08:00
KonstantinKondrashov
55fafa887c bootloader_support: Fix bootloader_common_get_sha256_of_partition, can handle a long image
Closes: IDFGH-3594
2020-08-05 22:09:15 +08:00
Mahavir Jain
56accfe4c4 spi_flash: esp32: fix regression in encrypted flash write
In commit 309376f51a, it seems like regression
was added to use ROM level API for disabling flash write protection. This
started random firmware crashes (on specific modules) with exception
`IllegalInstruction` during encrypted flash writes.

Fix here removes relevant ROM API call, since disabling flash write protection
is already ensured by caller of this API.

Closes https://github.com/espressif/esp-idf/issues/5467
2020-06-29 14:51:58 +05:30
Angus Gratton
7ab2ffb45f spi_flash: Use per-chip flash_ops files for legacy API
Looks like when ESP32-S2 Beta support was merged, the separate files
were dropped by accident.
2020-06-29 14:49:28 +05:30
Armando
75dd9835f6 esp_flash: fix cache exception when CS pin is through IOMUX 2020-06-01 15:29:30 +08:00
Armando
bda0c84552 esp_flash: fix the cleanup when add device fails 2020-06-01 15:29:30 +08:00
Armando
eacefba1c6 esp_flash: fix the regression of non-quad mode by default chip driver 2020-06-01 15:29:30 +08:00
Michael (XIAO Xufeng)
6f410cb7c4 spi_flash: add unit test for read/write performance 2020-05-27 15:09:49 +08:00
Michael (XIAO Xufeng)
8df1369d0a esp_flash: fix the write performance regression
Also changed internal delay unit into microsecond.
2020-05-27 15:09:49 +08:00
KonstantinKondrashov
4214179de1 spi_flash(new driver): Add a Kconfig option - Bypass a block erase and always do sector erase
Closes: IDF-1561
2020-05-04 17:16:33 +08:00
KonstantinKondrashov
5c98ff015e spi_flash(LEGACY_IMPL): Add a Kconfig option - Bypass a block erase and always do sector erase
Closes: IDF-1561
2020-05-04 17:16:33 +08:00
KonstantinKondrashov
b56c7d9066 spi_flash: Add into sim/stubs the esp_timer 2020-05-04 17:16:33 +08:00
KonstantinKondrashov
d67e764ef6 spi_flash(new driver): Add vTaskDelay while a long erasing 2020-05-04 17:16:33 +08:00
KonstantinKondrashov
1554fd3d8a spi_flash(LEGACY_IMPL): Add vTaskDelay while a long erasing
Added Kconfig options to enable yield operation during flash erase

Closes: https://github.com/espressif/esp-idf/issues/2083
Closes: https://github.com/espressif/esp-idf/issues/4916
Closes: IDFGH-261
2020-05-04 15:48:22 +08:00
Angus Gratton
425486223e spi_flash: Remove 16KB free internal heap limit for esp_flash_read() into PSRAM
Allocation of the temporary internal buffer will now repeat until a small enough buffer can be
allocated, and only fail if less than a 256 byte block of internal RAM is free.

Adds unit test for the same, and generic test utility for creating memory pressure.
2020-03-05 17:10:22 +11:00
Angus Gratton
d6026823fa spi_flash: Fix over-allocation and OOM crash when reading from SPI flash to PSRAM buffers
Previously would try allocate buffer of minimum size 16KB not maximum size 16KB, causing
out of memory errors for any large reads, or if less than 16KB contiguous free heap.

Also, if using legacy API and internal allocation failed then implementation would abort()
instead of returning the error to the caller.

Added test for using large buffers in PSRAM.

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

Also reported on forum: https://esp32.com/viewtopic.php?f=13&t=14304&p=55972
2020-03-05 17:10:22 +11:00
Renz Christian Bagaporo
fb1dec37d8 spi_flash: reenable mmap tests on esp32s2beta 2020-01-10 16:17:01 +11:00
michael
4220752aed ut: Move tests back from "esp32" subfolder
DISABLED_FOR_TARGETS macros are used

Partly revert "ci: disable unavailable tests for esp32s2beta"

This partly reverts commit 76a3a5fb48.

Partly revert "ci: disable UTs for esp32s2beta without runners"

This partly reverts commit eb158e9a22.

Partly revert "fix unit test and examples for s2beta"

This partly reverts commit 9baa7826be.

Partly revert "efuse: Add support for esp32s2beta"

This partly reverts commit db84ba868c.
2020-01-06 17:13:53 +08:00
Angus Gratton
5139934767 bootloader_common: Fix esp_partition_get_sha256(), add unit tests
Regression in 438d513a95

Reported here: https://esp32.com/viewtopic.php?f=13&t=13250&p=52460
2019-12-30 13:47:47 +11:00
Michael (XIAO Xufeng)
2ffe0aca12 esp_flash: increase the timeout for block erase 2019-12-24 16:50:09 +08:00
Renz Christian Bagaporo
e6ad330018 ble_mesh_wifi_coexist example: Disable Wi-Fi RX IRAM optimisation
Otherwise IRAM usage is too high in this example.
2019-11-28 09:20:00 +08:00
chenjianqiang
9f9da9ec96 feat(timer): refator timer group driver
1. add hal and low-level layer for timer group
2. add callback functions to handle interrupt
3. add timer deinit function
4. add timer spinlock take function
2019-11-21 14:14:19 +08:00
Ivan Grokhotkov
a74988ae3b Merge branch 'bugfix/cpp_extern' into 'master'
Add extern C header guards to some files

Closes IDFGH-2025 and IDFGH-2093

See merge request espressif/esp-idf!6611
2019-11-19 19:01:29 +08:00
wanglei
5e55ffc95a fix dummy issue in spi mem and make some spiflash api called from idf 2019-11-15 15:59:07 +00:00
wanglei
8bea8dacbc esp32s2beta: fix some macro and add flash wrap size condition 2019-11-15 15:59:07 +00:00
Gabriel Durante
5f0d257240 Added Cpp compatibility for components/spi_flash/include/esp_flash_spi_init.h
Merges https://github.com/espressif/esp-idf/pull/4260
2019-11-05 14:52:57 +01:00
Michael (XIAO Xufeng)
2660cb82ae spi_flash: support to verify written encrypted data
Also add unit test for encrypted_read
2019-10-30 05:49:50 +00:00
Angus Gratton
36cd75d7ed spi_flash tests: Fix exclusion of new API tests in legacy mode 2019-10-28 18:58:05 +11:00
Angus Gratton
894a3b4771 spi_flash: Remove duplicate spi_flash_rom_patch in CMakeLists.txt 2019-10-28 18:58:05 +11:00
Angus Gratton
8675a818f9 Merge branch 'master' into feature/esp32s2beta_merge 2019-10-22 13:51:49 +11:00
Ivan Grokhotkov
c7d8ef52ca Merge branch 'fix/esp_flash_no_qe' into 'master'
esp_flash: fix the QE write issue in high freq, and support UT for external chips

Closes IDF-888

See merge request espressif/esp-idf!5736
2019-10-20 13:59:30 +08:00
Ajita Chavan
56f73d7720 flash_ops: fix spi_flash_read with source buffer not from internal memory and size < 16
Closes https://github.com/espressif/esp-idf/issues/4010
2019-10-19 14:56:43 +08:00
Angus Gratton
496ede9bcd Merge branch 'master' into feature/esp32s2beta_merge 2019-10-15 14:59:27 +11:00
Michael (XIAO Xufeng)
eb104aa16f esp_flash: fix the quad issue for some GD flash chips
The GD flash with product ID 40H, is already used in Wrover-nosufix modules.
2019-10-14 17:25:59 +08:00
Michael (XIAO Xufeng)
1e1d50376b esp_flash: add unit test for external flash and QE toggling
Tests for external flash chips used to controlled by macros, one bin for
one chip. And tests are done manually. This commit refactored the test
so that all 3 chips can all run in single test.
2019-10-14 17:25:58 +08:00
Michael (XIAO Xufeng)
15d311bb80 esp_flash: rename internal variables for better readability
chip_drv in HAL are renamed as host
2019-10-14 17:25:58 +08:00
Michael (XIAO Xufeng)
571864e8ae esp_flash: fix set qe bit and write command issues
There used to be dummy phase before out phase in common command
transactions. This corrupts the data.

The code before never actually operate (clear) the QE bit, once it finds
the QE bit is set. It's hard to check whether the QE set/disable
functions work well.

This commit:

1. Cancel the dummy phase

2. Set and clear the QE bit according to chip settings, allowing tests
   for QE bits. However for some chips (Winbond for example), it's not
   forced to clear the QE bit if not able to.

3. Also refactor to allow chip_generic and other chips to share the same
   code to read and write qe bit; let common command and read command share
   configure_host_io_mode.

4. Rename read mode to io mode since maybe we will write data with quad
   mode one day.
2019-10-14 17:25:58 +08:00
Michael (XIAO Xufeng)
afbe1ba878 spi: move deprecated functions into internal header
Resolves https://github.com/espressif/esp-idf/issues/4132
2019-10-08 11:51:39 +08:00
Ivan Grokhotkov
5830f529d8 Merge branch 'master' into feature/esp32s2beta_merge 2019-10-02 19:01:39 +02:00
Ivan Grokhotkov
ccde8c7d2f spi_flash: load partition table before adding an external partition
esp_partition_register_external did not call load_partitions, so if
it was called before any call to esp_partition_find, then the main
partition table would never be loaded. Introduce new function,
ensure_partitions_loaded, and call it both from esp_partition_find and
esp_partition_register_external.

Closes https://github.com/espressif/esp-idf/issues/4116
2019-09-30 16:11:09 +02:00