Merge branch 'feature/eth_iram_optimization' into 'master'

feat(esp_eth): added IRAM optimization option for internal EMAC

Closes WIFI-6226

See merge request espressif/esp-idf!25704
This commit is contained in:
Ondrej Kosta
2023-09-07 00:35:56 +08:00
4 changed files with 31 additions and 0 deletions

View File

@ -2,6 +2,7 @@ idf_build_get_property(components_to_build BUILD_COMPONENTS)
set(srcs) set(srcs)
set(include) set(include)
set(ld_fragments linker.lf)
# As CONFIG_ETH_ENABLED comes from Kconfig, it is not evaluated yet # As CONFIG_ETH_ENABLED comes from Kconfig, it is not evaluated yet
# when components are being registered. # when components are being registered.
# Thus, always add the (private) requirements, regardless of Kconfig # Thus, always add the (private) requirements, regardless of Kconfig
@ -51,6 +52,7 @@ endif()
idf_component_register(SRCS "${srcs}" idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS ${include} INCLUDE_DIRS ${include}
LDFRAGMENTS ${ld_fragments}
REQUIRES esp_event # For using "ESP_EVENT_DECLARE_BASE" in header file REQUIRES esp_event # For using "ESP_EVENT_DECLARE_BASE" in header file
PRIV_REQUIRES ${priv_requires}) PRIV_REQUIRES ${priv_requires})
if(CONFIG_ETH_ENABLED) if(CONFIG_ETH_ENABLED)

View File

@ -111,6 +111,13 @@ menu "Ethernet"
cause obvious performance loss. cause obvious performance loss.
endif endif
config ETH_IRAM_OPTIMIZATION
bool "Enable IRAM optimization"
default n
help
If enabled, functions related to RX/TX are placed into IRAM. It can improve Ethernet throughput.
If disabled, all functions are placed into FLASH.
endif # ETH_USE_ESP32_EMAC endif # ETH_USE_ESP32_EMAC
menuconfig ETH_USE_SPI_ETHERNET menuconfig ETH_USE_SPI_ETHERNET

View File

@ -0,0 +1,19 @@
[mapping:esp_eth]
archive: libesp_eth.a
entries:
if ETH_IRAM_OPTIMIZATION = y:
esp_eth:esp_eth_transmit (noflash_text)
esp_eth:esp_eth_transmit_vargs (noflash_text)
esp_eth_mac_esp:emac_esp32_transmit (noflash_text)
esp_eth_mac_esp:emac_esp32_transmit_multiple_bufs (noflash_text)
esp_eth_mac_esp:emac_esp32_receive (noflash_text)
esp_eth_mac_esp:emac_esp32_rx_task (noflash_text)
[mapping:esp_eth_hal]
archive: libhal.a
entries:
if ETH_IRAM_OPTIMIZATION = y:
emac_hal:emac_hal_transmit_frame (noflash)
emac_hal:emac_hal_transmit_multiple_buf_frame (noflash)
emac_hal:emac_hal_alloc_recv_buf (noflash)
emac_hal:emac_hal_receive_frame (noflash)

View File

@ -21,3 +21,6 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization # Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y CONFIG_LWIP_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y