mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
esp_ringbuf: fix default placement from flash to IRAM
In earlier change this component was decoupled from freertos and hence regression was introduced which changed default placement to flash. Some device drivers make use of ringbuffer while flash cache is being disabled and hence default placement should instead be internal memory. Closes: https://github.com/espressif/esp-idf/issues/2517
This commit is contained in:
parent
d91b18080b
commit
49130c6b34
@ -153,6 +153,7 @@ SECTIONS
|
||||
/* Code marked as runnning out of IRAM */
|
||||
_iram_text_start = ABSOLUTE(.);
|
||||
*(.iram1 .iram1.*)
|
||||
*libesp_ringbuf.a:(.literal .text .literal.* .text.*)
|
||||
*libfreertos.a:(.literal .text .literal.* .text.*)
|
||||
*libheap.a:multi_heap.*(.literal .text .literal.* .text.*)
|
||||
*libheap.a:multi_heap_poisoning.*(.literal .text .literal.* .text.*)
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include "freertos/semphr.h"
|
||||
#include "freertos/ringbuf.h"
|
||||
#include "driver/timer.h"
|
||||
#include "esp_spi_flash.h"
|
||||
#include "unity.h"
|
||||
|
||||
//Definitions used in multiple test cases
|
||||
@ -604,3 +605,22 @@ TEST_CASE("Test ring buffer SMP", "[freertos]")
|
||||
vSemaphoreDelete(rx_done);
|
||||
vSemaphoreDelete(tasks_done);
|
||||
}
|
||||
|
||||
static IRAM_ATTR __attribute__((noinline)) bool iram_ringbuf_test()
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
spi_flash_guard_get()->start(); // Disables flash cache
|
||||
RingbufHandle_t handle = xRingbufferCreate(CONT_DATA_TEST_BUFF_LEN, RINGBUF_TYPE_NOSPLIT);
|
||||
result = result && (handle != NULL);
|
||||
xRingbufferGetMaxItemSize(handle);
|
||||
vRingbufferDelete(handle);
|
||||
spi_flash_guard_get()->end(); // Re-enables flash cache
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
TEST_CASE("Test ringbuffer functions work with flash cache disabled", "[freertos]")
|
||||
{
|
||||
TEST_ASSERT( iram_ringbuf_test() );
|
||||
}
|
||||
|
@ -6,4 +6,4 @@ COMPONENT_ADD_LDFLAGS += -Wl,--undefined=uxTopUsedPriority
|
||||
COMPONENT_ADD_INCLUDEDIRS := include
|
||||
COMPONENT_PRIV_INCLUDEDIRS := include/freertos
|
||||
|
||||
tasks.o event_groups.o timers.o queue.o ringbuf.o: CFLAGS += -D_ESP_FREERTOS_INTERNAL
|
||||
tasks.o event_groups.o timers.o queue.o: CFLAGS += -D_ESP_FREERTOS_INTERNAL
|
||||
|
Loading…
x
Reference in New Issue
Block a user