mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
spi_flash: Expose an accessor the current SPI flash guard functions
Change places which uses g_flash_guard_default_ops to use this. Probably exact same data, but a bit cleaner.
This commit is contained in:
parent
e72e5a9706
commit
7a924bd85a
@ -212,27 +212,27 @@ IRAM_ATTR TEST_CASE("ETSTimers arm & disarm run from IRAM", "[ets_timer]")
|
||||
|
||||
/* arm a disabled timer, then disarm a live timer */
|
||||
|
||||
g_flash_guard_default_ops.start(); // Disables flash cache
|
||||
spi_flash_guard_get()->start(); // Disables flash cache
|
||||
|
||||
ets_timer_arm(&timer1, INTERVAL, false);
|
||||
// redundant call is deliberate (test code path if already armed)
|
||||
ets_timer_arm(&timer1, INTERVAL, false);
|
||||
ets_timer_disarm(&timer1);
|
||||
|
||||
g_flash_guard_default_ops.end(); // Re-enables flash cache
|
||||
spi_flash_guard_get()->end(); // Re-enables flash cache
|
||||
|
||||
TEST_ASSERT_FALSE(flag); // didn't expire yet
|
||||
|
||||
/* do the same thing but wait for the timer to expire */
|
||||
|
||||
g_flash_guard_default_ops.start();
|
||||
spi_flash_guard_get()->start();
|
||||
ets_timer_arm(&timer1, INTERVAL, false);
|
||||
g_flash_guard_default_ops.end();
|
||||
spi_flash_guard_get()->end();
|
||||
|
||||
vTaskDelay(2 * INTERVAL / portTICK_PERIOD_MS);
|
||||
TEST_ASSERT_TRUE(flag);
|
||||
|
||||
g_flash_guard_default_ops.start();
|
||||
spi_flash_guard_get()->start();
|
||||
ets_timer_disarm(&timer1);
|
||||
g_flash_guard_default_ops.end();
|
||||
spi_flash_guard_get()->end();
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ TEST_CASE("heap_caps metadata test", "[heap]")
|
||||
*/
|
||||
static IRAM_ATTR __attribute__((noinline)) bool iram_malloc_test()
|
||||
{
|
||||
g_flash_guard_default_ops.start(); // Disables flash cache
|
||||
spi_flash_guard_get()->start(); // Disables flash cache
|
||||
|
||||
bool result = true;
|
||||
void *x = heap_caps_malloc(64, MALLOC_CAP_32BIT);
|
||||
@ -114,7 +114,7 @@ static IRAM_ATTR __attribute__((noinline)) bool iram_malloc_test()
|
||||
result = result && (y != NULL);
|
||||
heap_caps_free(y);
|
||||
|
||||
g_flash_guard_default_ops.end(); // Re-enables flash cache
|
||||
spi_flash_guard_get()->end(); // Re-enables flash cache
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -214,7 +214,7 @@ void spi_flash_op_unlock()
|
||||
|
||||
void IRAM_ATTR spi_flash_disable_interrupts_caches_and_other_cpu()
|
||||
{
|
||||
spi_flash_op_lockspi_flash_op_lock();
|
||||
spi_flash_op_lock();
|
||||
esp_intr_noniram_disable();
|
||||
spi_flash_disable_cache(0, &s_flash_op_cache_state[0]);
|
||||
}
|
||||
|
@ -137,6 +137,11 @@ void IRAM_ATTR spi_flash_guard_set(const spi_flash_guard_funcs_t *funcs)
|
||||
s_flash_guard_ops = funcs;
|
||||
}
|
||||
|
||||
const spi_flash_guard_funcs_t *IRAM_ATTR spi_flash_guard_get()
|
||||
{
|
||||
return s_flash_guard_ops;
|
||||
}
|
||||
|
||||
size_t IRAM_ATTR spi_flash_get_chip_size()
|
||||
{
|
||||
return g_rom_flashchip.chip_size;
|
||||
|
@ -324,6 +324,15 @@ typedef struct {
|
||||
*/
|
||||
void spi_flash_guard_set(const spi_flash_guard_funcs_t* funcs);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get the guard functions used for flash access
|
||||
*
|
||||
* @return The guard functions that were set via spi_flash_guard_set(). These functions
|
||||
* can be called if implementing custom low-level SPI flash operations.
|
||||
*/
|
||||
const spi_flash_guard_funcs_t *spi_flash_guard_get();
|
||||
|
||||
/**
|
||||
* @brief Default OS-aware flash access guard functions
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user