diff --git a/components/esp_ringbuf/Kconfig b/components/esp_ringbuf/Kconfig index db646218c1..b0258c19b7 100644 --- a/components/esp_ringbuf/Kconfig +++ b/components/esp_ringbuf/Kconfig @@ -11,14 +11,15 @@ menu "ESP Ringbuf" config RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH bool "Place ISR ringbuf functions into flash" + depends on RINGBUF_PLACE_FUNCTIONS_INTO_FLASH default n help - Place non-ISR ringbuf functions (like xRingbufferSendFromISR/xRingbufferReceiveFromISR) into flash. + Place ISR ringbuf functions (like xRingbufferSendFromISR/xRingbufferReceiveFromISR) into flash. This frees up IRAM, but the functions can no longer be called when the cache is disabled or from an IRAM interrupt context. - This option is not compatible with ESP-IDF drivers which is configured to run the ISR from an IRAM context, - e.g. CONFIG_UART_ISR_IN_IRAM. + This option is not compatible with ESP-IDF drivers which are configured to + run the ISR from an IRAM context, e.g. CONFIG_UART_ISR_IN_IRAM. endmenu diff --git a/components/esp_ringbuf/linker.lf b/components/esp_ringbuf/linker.lf index fb7a09986d..89064751e9 100644 --- a/components/esp_ringbuf/linker.lf +++ b/components/esp_ringbuf/linker.lf @@ -8,6 +8,7 @@ entries: ringbuf: prvGetCurMaxSizeByteBuf (default) ringbuf: prvInitializeNewRingbuffer (default) ringbuf: prvReceiveGeneric (default) + ringbuf: prvGetFreeSize (default) ringbuf: vRingbufferDelete (default) ringbuf: vRingbufferGetInfo (default) ringbuf: vRingbufferReturnItem (default) @@ -15,11 +16,17 @@ entries: ringbuf: xRingbufferCanRead (default) ringbuf: xRingbufferCreate (default) ringbuf: xRingbufferCreateStatic (default) + ringbuf: xRingbufferCreateNoSplit (default) ringbuf: xRingbufferReceive (default) ringbuf: xRingbufferReceiveSplit (default) ringbuf: xRingbufferReceiveUpTo (default) ringbuf: xRingbufferRemoveFromQueueSetRead (default) ringbuf: xRingbufferSend (default) + ringbuf: xRingbufferSendAcquire (default) + ringbuf: xRingbufferSendComplete (default) + ringbuf: xRingbufferPrintInfo (default) + ringbuf: xRingbufferGetMaxItemSize (default) + ringbuf: xRingbufferGetCurFreeSize (default) if RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH = y: ringbuf: prvReturnItemByteBuf (default) @@ -32,7 +39,9 @@ entries: ringbuf: prvAcquireItemNoSplit (default) ringbuf: prvCheckItemFitsByteBuffer (default) ringbuf: prvCheckItemFitsDefault (default) + ringbuf: prvCheckItemAvail (default) ringbuf: prvSendItemDoneNoSplit (default) + ringbuf: prvReceiveGenericFromISR (default) ringbuf: xRingbufferSendFromISR (default) ringbuf: xRingbufferReceiveFromISR (default) ringbuf: xRingbufferReceiveSplitFromISR (default) diff --git a/components/esp_ringbuf/test/test_ringbuf.c b/components/esp_ringbuf/test/test_ringbuf.c index cd98cfbad7..e048d3c9f2 100644 --- a/components/esp_ringbuf/test/test_ringbuf.c +++ b/components/esp_ringbuf/test/test_ringbuf.c @@ -1019,6 +1019,7 @@ TEST_CASE("Test static ring buffer SMP", "[esp_ringbuf]") } #endif +#if !CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH && !CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH /* -------------------------- Test ring buffer IRAM ------------------------- */ static IRAM_ATTR __attribute__((noinline)) bool iram_ringbuf_test(void) @@ -1044,3 +1045,4 @@ TEST_CASE("Test ringbuffer functions work with flash cache disabled", "[esp_ring { TEST_ASSERT( iram_ringbuf_test() ); } +#endif /* !CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH && !CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH */