Commit Graph

239 Commits

Author SHA1 Message Date
Michael (XIAO Xufeng)
3df60ecd9c bootloader: add xmc spi_flash startup flow to improve reliability 2021-11-19 12:34:33 +05:30
Angus Gratton
c572e0bf5f paritition_table: Verify the partition table md5sum when loading the app
Additionally, always enable the partition MD5 check if flash encryption is on in
Release mode. This ensures the partition table ciphertext has not been modified
(CVE-2021-27926).

The exception is pre-V3.1 ESP-IDF bootloaders and partition tables, which
don't have support for the MD5 entry.
2021-06-02 16:30:02 +10:00
wuzhenghui
4be9f15803 remove othercore cache disable 2021-04-27 14:36:23 +08:00
Michael (XIAO Xufeng)
e65ed8c959 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-26 10:12:16 +08:00
Mahavir Jain
d82adb482b 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-01-29 11:45:50 +05:30
Mahavir Jain
9c169a1812 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-01-29 11:45:50 +05:30
Jiang Jiang Jian
f42e5745e6 Merge branch 'bugfix/can_mmap_after_get_enough_free_mmu_pages_v4.0' into 'release/v4.0'
flash_mmap: can mmap after get enough free MMU pages (backport v4.0)

See merge request espressif/esp-idf!10586
2020-11-16 19:40:26 +08:00
Jiang Jiang Jian
e3db779b95 Merge branch 'bugfix/customer_baidu_psram_stack_backtrace_v4.0' into 'release/v4.0'
backport v4.0: added psram stack check in backtrace

See merge request espressif/esp-idf!8474
2020-11-12 21:00:36 +08:00
Angus Gratton
36f3845331 Merge branch 'bugfix/bootloader_common_get_sha256_of_partition_v4.0' into 'release/v4.0'
bootloader_support: Fix bootloader_common_get_sha256_of_partition(), can handle a long image (v4.0)

See merge request espressif/esp-idf!9954
2020-11-11 10:42:28 +08:00
jiangguangming
0305b4a778 flash_mmap: restore interrupt and cache before err return 2020-09-24 10:02:58 +08:00
jiangguangming
e93daa4e81 flash_mmap: can mmap after get enough free MMU pages 2020-09-24 10:02:58 +08:00
Ivan Grokhotkov
c928bcc4b8 spi_flash: don't call vTaskDelay in non-os context
Fixes regression in core dump, when a crash happens in interrupt
context.
2020-09-04 21:24:32 +02:00
KonstantinKondrashov
a6dc125aec bootloader: Adds bootloader_sha256_flash_contents() 2020-08-07 17:16:21 +08:00
KonstantinKondrashov
e3edc15f94 bootloader_support: Fix bootloader_common_get_sha256_of_partition, can handle a long image
Closes: IDFGH-3594
2020-08-05 23:19:48 +08:00
Michael (XIAO Xufeng)
26d7fb7744 Merge branch 'ci/resume_esp_flash_tests_4.0' into 'release/v4.0'
ci: resume esp_flash unit tests (v4.0)

See merge request espressif/esp-idf!9793
2020-08-02 17:15:24 +08:00
Li Shuai
374ad7d38f added psram stack check in backtrace 2020-08-02 05:27:41 +00:00
Michael (XIAO Xufeng)
818a2f8768 ci: resume esp_flash unit tests 2020-07-29 10:00:23 +08:00
Michael (XIAO Xufeng)
7f99280b40 spi_flash: add unit test for read/write performance (no performance
check)
2020-07-15 14:41:02 +08:00
Michael (XIAO Xufeng)
ffc46954ae esp_flash: fix the write performance regression
Also changed internal delay unit into microsecond.
2020-07-15 02:20:35 +08:00
Armando
b88982b666 esp_flash: fix cache exception when CS pin is through IOMUX 2020-06-28 15:52:58 +08:00
Armando
59c1bf4d8f esp_flash: fix the cleanup when add device fails 2020-06-28 15:52:58 +08:00
Armando
aa5b4fb372 esp_flash: fix the regression of non-quad mode by default chip driver 2020-06-28 15:52:58 +08:00
KonstantinKondrashov
754f59fba7 spi_flash(new driver): Add a Kconfig option - Bypass a block erase and always do sector erase
Closes: IDF-1561
2020-05-22 05:07:20 +00:00
KonstantinKondrashov
9926b875d8 spi_flash(LEGACY_IMPL): Add a Kconfig option - Bypass a block erase and always do sector erase
Closes: IDF-1561
2020-05-22 05:07:20 +00:00
KonstantinKondrashov
79831e64fd spi_flash: Add into sim/stubs the esp_timer 2020-05-22 05:07:20 +00:00
KonstantinKondrashov
a128eae7b8 spi_flash(new driver): Add vTaskDelay while a long erasing 2020-05-22 05:07:20 +00:00
KonstantinKondrashov
98ac272a3f 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-22 05:07:20 +00:00
Gabriel Durante
c7ac9a296d Added Cpp compatibility for components/spi_flash/include/esp_flash_spi_init.h
Merges https://github.com/espressif/esp-idf/pull/4260
2020-04-02 23:22:10 +02:00
Angus Gratton
c38c3ff3f0 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-09 09:59:43 +11:00
Angus Gratton
af4c6ac0f3 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:11:26 +11:00
Michael (XIAO Xufeng)
6f6677ac42 spi: move deprecated functions into internal header
Resolves https://github.com/espressif/esp-idf/issues/4132
2019-12-24 17:43:32 +08:00
Angus Gratton
510ec904c9 spi_flash tests: Fix exclusion of new API tests in legacy mode 2019-12-11 15:57:49 +11:00
Michael (XIAO Xufeng)
b5d04a21fb 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-11-21 12:26:15 +08:00
Michael (XIAO Xufeng)
337b1df430 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-11-21 12:26:15 +08:00
Michael (XIAO Xufeng)
41e64bd79c esp_flash: rename internal variables for better readability
chip_drv in HAL are renamed as host
2019-11-21 12:26:14 +08:00
Michael (XIAO Xufeng)
2b7681ec4f 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-11-21 12:26:14 +08:00
Jiang Jiang Jian
2056b891d3 Merge branch 'bugfix/ext_flash_load_partitions_v4.0' into 'release/v4.0'
spi_flash: ensure partition table loaded when esp_partition_register_external is called (backport v4.0)

See merge request espressif/esp-idf!6402
2019-10-21 10:33:01 +08:00
Ajita Chavan
32b8b60dc5 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 15:00:00 +08:00
Ivan Grokhotkov
0fc30f4379 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-10-18 11:14:32 +02:00
Ivan Grokhotkov
e5ff431b35 Merge branch 'fix/esp_flash_coredump_4.0' into 'release/v4.0'
esp_flash: fix coredump issues (backport v4.0)

See merge request espressif/esp-idf!6136
2019-09-26 21:26:53 +08:00
michael
0bba92b2a0 esp_flash: put adapter to legacy functions into IRAM to be back-compatible 2019-09-18 15:16:00 +08:00
Michael (XIAO Xufeng)
d3b54ec84a esp_flash: fix the coredump issue
During coredump, dangerous-area-checking should be disabled, and cache
disabling should be replaced by a safer version.

Dangerous-area-checking used to be in the HAL, but it seems to be more
fit to os functions. So it's moved to os functions. Interfaces are
provided to switch between os functions during coredump.
2019-09-18 14:30:23 +08:00
Michael (XIAO Xufeng)
e4b44f3488 esp_flash: fix coredump for legacy spi flash API
When legacy mode is used, the coredump still fails during linking
because "esp_flash_init_default_chip", "esp_flash_app_init" and
"esp_flash_default_chip " are not compiled and linked.

Instead of using ``if`` macros in callers, these functions are protected
by ``if`` macros in the header, and also not compiled in the sources.
"esp_flash_default_chip" variable is compiled with safe default value.
2019-09-18 14:28:12 +08:00
Michael (XIAO Xufeng)
b9a2639ab4 esp_flash: add support for encrypted read and write
Using legacy implementation.
2019-09-16 17:10:08 +08:00
Ivan Grokhotkov
b17ca9cb38 unit-test-app: add config with flash encryption enabled 2019-09-10 17:20:19 +02:00
Ivan Grokhotkov
801010dac6 spi_flash: fix mmap unit tests for flash encryption 2019-09-10 17:20:19 +02:00
Ivan Grokhotkov
ad100e497a spi_flash: remove duplicate definition of spi_flash_unlock
The other (static) definition is in flash_ops.c, all references are
also in flash_ops.c.
2019-09-10 17:18:51 +02:00
Michael (XIAO Xufeng)
a626b26cf9 esp_flash: improve the comments a bit 2019-08-20 14:05:35 +08:00
Michael (XIAO Xufeng)
1cc860216e esp_flash: fix the set/get write protection functions
Add support for get write protection support, fixed the duplicated
set_write_protection link.

All the write_protection check in the top layer are removed. The lower
levels (chip) should ensure to disable write protection before the
operation start.
2019-08-20 14:05:35 +08:00
Angus Gratton
058ef98c33 Merge branch 'feature/cmake_default_build_system' into 'master'
cmake: Make CMake the default build system

Closes IDF-198 and IDF-325

See merge request espressif/esp-idf!5328
2019-07-10 08:16:39 +08:00