kopia lustrzana https://github.com/espressif/esp-idf
spi_flash(LEGACY_IMPL): Add a Kconfig option - Bypass a block erase and always do sector erase
Closes: IDF-1561pull/5191/head
rodzic
0f6fe0c8e9
commit
304f67e42a
|
@ -100,6 +100,14 @@ menu "SPI Flash driver"
|
|||
this option, and the lock will be bypassed on SPI1 bus. Otherwise if extra devices
|
||||
are needed to attach to SPI1 bus, enable this option.
|
||||
|
||||
config SPI_FLASH_BYPASS_BLOCK_ERASE
|
||||
bool "Bypass a block erase and always do sector erase"
|
||||
default n
|
||||
help
|
||||
Some flash chips can have very high "max" erase times, especially for block erase (32KB or 64KB).
|
||||
This option allows to bypass "block erase" and always do sector erase commands.
|
||||
This will be much slower overall in most cases, but improves latency for other code to run.
|
||||
|
||||
config SPI_FLASH_YIELD_DURING_ERASE
|
||||
bool "Enables yield operation during flash erase"
|
||||
default y
|
||||
|
|
|
@ -247,11 +247,14 @@ esp_err_t IRAM_ATTR spi_flash_erase_range(size_t start_addr, size_t size)
|
|||
int64_t start_time_us = esp_timer_get_time();
|
||||
#endif
|
||||
spi_flash_guard_start();
|
||||
#ifndef CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE
|
||||
if (sector % sectors_per_block == 0 && end - sector >= sectors_per_block) {
|
||||
rc = esp_rom_spiflash_erase_block(sector / sectors_per_block);
|
||||
sector += sectors_per_block;
|
||||
COUNTER_ADD_BYTES(erase, sectors_per_block * SPI_FLASH_SEC_SIZE);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
rc = esp_rom_spiflash_erase_sector(sector);
|
||||
++sector;
|
||||
COUNTER_ADD_BYTES(erase, SPI_FLASH_SEC_SIZE);
|
||||
|
|
Ładowanie…
Reference in New Issue