forked from espressif/esp-idf
Merge branch 'feature/esp_ringbuf_place_functions_in_flash_v5.0' into 'release/v5.0'
esp_ringbuf: Added functions to linker.lf file which can be placed in Flash (v5.0) See merge request espressif/esp-idf!23101
This commit is contained in:
@@ -11,14 +11,15 @@ menu "ESP Ringbuf"
|
|||||||
|
|
||||||
config RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH
|
config RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH
|
||||||
bool "Place ISR ringbuf functions into flash"
|
bool "Place ISR ringbuf functions into flash"
|
||||||
|
depends on RINGBUF_PLACE_FUNCTIONS_INTO_FLASH
|
||||||
default n
|
default n
|
||||||
help
|
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
|
This frees up IRAM, but the functions can no longer be called when the cache is disabled
|
||||||
or from an IRAM interrupt context.
|
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,
|
This option is not compatible with ESP-IDF drivers which are configured to
|
||||||
e.g. CONFIG_UART_ISR_IN_IRAM.
|
run the ISR from an IRAM context, e.g. CONFIG_UART_ISR_IN_IRAM.
|
||||||
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
@@ -8,6 +8,7 @@ entries:
|
|||||||
ringbuf: prvGetCurMaxSizeByteBuf (default)
|
ringbuf: prvGetCurMaxSizeByteBuf (default)
|
||||||
ringbuf: prvInitializeNewRingbuffer (default)
|
ringbuf: prvInitializeNewRingbuffer (default)
|
||||||
ringbuf: prvReceiveGeneric (default)
|
ringbuf: prvReceiveGeneric (default)
|
||||||
|
ringbuf: prvGetFreeSize (default)
|
||||||
ringbuf: vRingbufferDelete (default)
|
ringbuf: vRingbufferDelete (default)
|
||||||
ringbuf: vRingbufferGetInfo (default)
|
ringbuf: vRingbufferGetInfo (default)
|
||||||
ringbuf: vRingbufferReturnItem (default)
|
ringbuf: vRingbufferReturnItem (default)
|
||||||
@@ -15,11 +16,17 @@ entries:
|
|||||||
ringbuf: xRingbufferCanRead (default)
|
ringbuf: xRingbufferCanRead (default)
|
||||||
ringbuf: xRingbufferCreate (default)
|
ringbuf: xRingbufferCreate (default)
|
||||||
ringbuf: xRingbufferCreateStatic (default)
|
ringbuf: xRingbufferCreateStatic (default)
|
||||||
|
ringbuf: xRingbufferCreateNoSplit (default)
|
||||||
ringbuf: xRingbufferReceive (default)
|
ringbuf: xRingbufferReceive (default)
|
||||||
ringbuf: xRingbufferReceiveSplit (default)
|
ringbuf: xRingbufferReceiveSplit (default)
|
||||||
ringbuf: xRingbufferReceiveUpTo (default)
|
ringbuf: xRingbufferReceiveUpTo (default)
|
||||||
ringbuf: xRingbufferRemoveFromQueueSetRead (default)
|
ringbuf: xRingbufferRemoveFromQueueSetRead (default)
|
||||||
ringbuf: xRingbufferSend (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:
|
if RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH = y:
|
||||||
ringbuf: prvReturnItemByteBuf (default)
|
ringbuf: prvReturnItemByteBuf (default)
|
||||||
@@ -32,7 +39,9 @@ entries:
|
|||||||
ringbuf: prvAcquireItemNoSplit (default)
|
ringbuf: prvAcquireItemNoSplit (default)
|
||||||
ringbuf: prvCheckItemFitsByteBuffer (default)
|
ringbuf: prvCheckItemFitsByteBuffer (default)
|
||||||
ringbuf: prvCheckItemFitsDefault (default)
|
ringbuf: prvCheckItemFitsDefault (default)
|
||||||
|
ringbuf: prvCheckItemAvail (default)
|
||||||
ringbuf: prvSendItemDoneNoSplit (default)
|
ringbuf: prvSendItemDoneNoSplit (default)
|
||||||
|
ringbuf: prvReceiveGenericFromISR (default)
|
||||||
ringbuf: xRingbufferSendFromISR (default)
|
ringbuf: xRingbufferSendFromISR (default)
|
||||||
ringbuf: xRingbufferReceiveFromISR (default)
|
ringbuf: xRingbufferReceiveFromISR (default)
|
||||||
ringbuf: xRingbufferReceiveSplitFromISR (default)
|
ringbuf: xRingbufferReceiveSplitFromISR (default)
|
||||||
|
@@ -1019,6 +1019,7 @@ TEST_CASE("Test static ring buffer SMP", "[esp_ringbuf]")
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH && !CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH
|
||||||
/* -------------------------- Test ring buffer IRAM ------------------------- */
|
/* -------------------------- Test ring buffer IRAM ------------------------- */
|
||||||
|
|
||||||
static IRAM_ATTR __attribute__((noinline)) bool iram_ringbuf_test(void)
|
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() );
|
TEST_ASSERT( iram_ringbuf_test() );
|
||||||
}
|
}
|
||||||
|
#endif /* !CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH && !CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH */
|
||||||
|
Reference in New Issue
Block a user