mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/uart_vfs_select_in_iram_v5.1' into 'release/v5.1'
fix: add UART VFS select callback in IRAM when CONFIG_UART_ISR_IN_IRAM is enabled (v5.1) See merge request espressif/esp-idf!27298
This commit is contained in:
commit
3e04fba477
@ -230,6 +230,7 @@ menu "Driver Configurations"
|
|||||||
config UART_ISR_IN_IRAM
|
config UART_ISR_IN_IRAM
|
||||||
bool "Place UART ISR function into IRAM"
|
bool "Place UART ISR function into IRAM"
|
||||||
depends on !RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH
|
depends on !RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH
|
||||||
|
select VFS_SELECT_IN_RAM if VFS_SUPPORT_SELECT
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
If this option is not selected, UART interrupt will be disabled for a long time and
|
If this option is not selected, UART interrupt will be disabled for a long time and
|
||||||
|
@ -134,3 +134,5 @@ entries:
|
|||||||
memp:do_memp_malloc_pool (noflash_text)
|
memp:do_memp_malloc_pool (noflash_text)
|
||||||
if ESP_ALLOW_BSS_SEG_EXTERNAL_MEMORY = y:
|
if ESP_ALLOW_BSS_SEG_EXTERNAL_MEMORY = y:
|
||||||
* (extram_bss)
|
* (extram_bss)
|
||||||
|
if VFS_SELECT_IN_RAM = y:
|
||||||
|
vfs_lwip:lwip_stop_socket_select_isr (noflash)
|
||||||
|
@ -8,6 +8,7 @@ list(APPEND pr driver
|
|||||||
esp_timer)
|
esp_timer)
|
||||||
|
|
||||||
idf_component_register(SRCS ${sources}
|
idf_component_register(SRCS ${sources}
|
||||||
|
LDFRAGMENTS "linker.lf"
|
||||||
INCLUDE_DIRS include
|
INCLUDE_DIRS include
|
||||||
PRIV_INCLUDE_DIRS private_include
|
PRIV_INCLUDE_DIRS private_include
|
||||||
PRIV_REQUIRES ${pr})
|
PRIV_REQUIRES ${pr})
|
||||||
|
@ -63,6 +63,13 @@ menu "Virtual file system"
|
|||||||
It is possible to suppress these debug outputs by enabling this
|
It is possible to suppress these debug outputs by enabling this
|
||||||
option.
|
option.
|
||||||
|
|
||||||
|
config VFS_SELECT_IN_RAM
|
||||||
|
bool "Make VFS driver select() callbacks IRAM-safe"
|
||||||
|
default n
|
||||||
|
depends on VFS_SUPPORT_SELECT
|
||||||
|
help
|
||||||
|
If enabled, VFS driver select() callback function will be placed in IRAM.
|
||||||
|
|
||||||
config VFS_SUPPORT_TERMIOS
|
config VFS_SUPPORT_TERMIOS
|
||||||
bool "Provide termios.h functions"
|
bool "Provide termios.h functions"
|
||||||
default y
|
default y
|
||||||
|
6
components/vfs/linker.lf
Normal file
6
components/vfs/linker.lf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[mapping:vfs]
|
||||||
|
archive: libvfs.a
|
||||||
|
entries:
|
||||||
|
if VFS_SELECT_IN_RAM = y:
|
||||||
|
vfs:esp_vfs_select_triggered_isr (noflash)
|
||||||
|
vfs_uart:select_notif_callback_isr (noflash)
|
@ -1133,6 +1133,7 @@ void esp_vfs_select_triggered_isr(esp_vfs_select_sem_t sem, BaseType_t *woken)
|
|||||||
// matter here stop_socket_select() will be called for only valid VFS drivers.
|
// matter here stop_socket_select() will be called for only valid VFS drivers.
|
||||||
const vfs_entry_t *vfs = s_vfs[i];
|
const vfs_entry_t *vfs = s_vfs[i];
|
||||||
if (vfs != NULL && vfs->vfs.stop_socket_select_isr != NULL) {
|
if (vfs != NULL && vfs->vfs.stop_socket_select_isr != NULL) {
|
||||||
|
// Note: If the UART ISR resides in IRAM, the function referenced by stop_socket_select_isr should also be placed in IRAM.
|
||||||
vfs->vfs.stop_socket_select_isr(sem.sem, woken);
|
vfs->vfs.stop_socket_select_isr(sem.sem, woken);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user