SpiFlashOpResult SPIEraseChip(void);
/**
- * @brief Erase a block of flash.
+ * @brief Erase a 32KB block of flash
+ * Uses SPI flash command 52h.
* Please do not call this function in SDK.
*
* @param uint32_t block_num : Which block to erase.
* @brief Erase some sectors.
* Please do not call this function in SDK.
*
+ * @note If calling this function, first set
+ * g_rom_flashchip.block_size = 32768; or call SPIParamCfg()
+ * with appropriate parameters. This is due to a ROM bug, the
+ * block erase command in use is a 32KB erase but after reset
+ * the block_size field is incorrectly set to 65536.
+ *
* @param uint32_t start_addr : Start addr to erase, should be sector aligned.
*
* @param uint32_t area_len : Length to erase, should be sector aligned.
#include "esp_log.h"
#include "cache_utils.h"
+/* bytes erased by SPIEraseBlock() ROM function */
+#define BLOCK_ERASE_SIZE 32768
+
#if CONFIG_SPI_FLASH_ENABLE_COUNTERS
static const char* TAG = "spi_flash";
static spi_flash_counters_t s_flash_stats;
}
size_t start = start_addr / SPI_FLASH_SEC_SIZE;
size_t end = start + size / SPI_FLASH_SEC_SIZE;
- const size_t sectors_per_block = 16;
+ const size_t sectors_per_block = BLOCK_ERASE_SIZE / SPI_FLASH_SEC_SIZE;
COUNTER_START();
spi_flash_disable_interrupts_caches_and_other_cpu();
SpiFlashOpResult rc;