kopia lustrzana https://github.com/espressif/esp-idf
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/2517pull/2683/head
rodzic
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
|
||||
|
|
Ładowanie…
Reference in New Issue