From 5e7f43f3d12c0a50e4b5a8b3f382cdf7bfa74008 Mon Sep 17 00:00:00 2001 From: xiehang Date: Fri, 25 Oct 2019 16:44:48 +0800 Subject: [PATCH] esp_wifi: Put some rx code to iram --- components/esp32/ld/esp32_fragments.lf | 9 +++++++++ components/esp32s2beta/ld/esp32s2beta_fragments.lf | 9 +++++++++ components/esp_wifi/Kconfig | 10 ++++++++++ components/esp_wifi/lib | 2 +- components/esp_wifi/linker.lf | 6 ++++++ tools/unit-test-app/configs/psram | 3 ++- tools/unit-test-app/configs/psram_2 | 1 + 7 files changed, 38 insertions(+), 2 deletions(-) diff --git a/components/esp32/ld/esp32_fragments.lf b/components/esp32/ld/esp32_fragments.lf index abf8fa8bf..c729c86c8 100644 --- a/components/esp32/ld/esp32_fragments.lf +++ b/components/esp32/ld/esp32_fragments.lf @@ -48,6 +48,10 @@ entries: entries: .wifi0iram+ +[sections:wifi_rx_iram] +entries: + .wifirxiram+ + [scheme:default] entries: if APP_BUILD_USE_FLASH_SECTIONS = y: @@ -66,6 +70,7 @@ entries: rtc_rodata -> rtc_data rtc_bss -> rtc_bss wifi_iram -> flash_text + wifi_rx_iram -> flash_text [scheme:rtc] entries: @@ -91,3 +96,7 @@ entries: [scheme:wifi_iram] entries: wifi_iram -> iram0_text + +[scheme:wifi_rx_iram] +entries: + wifi_rx_iram -> iram0_text diff --git a/components/esp32s2beta/ld/esp32s2beta_fragments.lf b/components/esp32s2beta/ld/esp32s2beta_fragments.lf index 932197caf..83a282dcb 100644 --- a/components/esp32s2beta/ld/esp32s2beta_fragments.lf +++ b/components/esp32s2beta/ld/esp32s2beta_fragments.lf @@ -48,6 +48,10 @@ entries: entries: .wifi0iram+ +[sections:wifi_rx_iram] +entries: + .wifirxiram+ + [scheme:default] entries: text -> flash_text @@ -62,6 +66,7 @@ entries: rtc_rodata -> rtc_data rtc_bss -> rtc_bss wifi_iram -> flash_text + wifi_rx_iram -> flash_text [scheme:rtc] entries: @@ -87,3 +92,7 @@ entries: [scheme:wifi_iram] entries: wifi_iram -> iram0_text + +[scheme:wifi_rx_iram] +entries: + wifi_rx_iram -> iram0_text diff --git a/components/esp_wifi/Kconfig b/components/esp_wifi/Kconfig index 4f60d8228..35ed66a8c 100644 --- a/components/esp_wifi/Kconfig +++ b/components/esp_wifi/Kconfig @@ -309,6 +309,7 @@ menu "Wi-Fi" default n config ESP32_WIFI_IRAM_OPT + depends on !(BT_ENABLED && ESP32_SPIRAM_SUPPORT) bool "WiFi IRAM speed optimization" default y help @@ -316,6 +317,15 @@ menu "Wi-Fi" When this option is disabled, more than 10Kbytes of IRAM memory will be saved but Wi-Fi throughput will be reduced. + config ESP32_WIFI_RX_IRAM_OPT + depends on !(BT_ENABLED && ESP32_SPIRAM_SUPPORT) + bool "WiFi RX IRAM speed optimization" + default y + help + Select this option to place frequently called Wi-Fi library RX functions in IRAM. + When this option is disabled, more than 17Kbytes of IRAM memory will be saved + but Wi-Fi performance will be reduced. + endmenu # Wi-Fi menu "PHY" diff --git a/components/esp_wifi/lib b/components/esp_wifi/lib index 99eb8ac56..f3c39df1c 160000 --- a/components/esp_wifi/lib +++ b/components/esp_wifi/lib @@ -1 +1 @@ -Subproject commit 99eb8ac56fe651e7116744e1704e02d0d2828d88 +Subproject commit f3c39df1c428b065e05a431c6f8685790531baf5 diff --git a/components/esp_wifi/linker.lf b/components/esp_wifi/linker.lf index a322d395a..a520fc14e 100644 --- a/components/esp_wifi/linker.lf +++ b/components/esp_wifi/linker.lf @@ -13,9 +13,15 @@ archive: libpp.a entries: if ESP32_WIFI_IRAM_OPT = y: * (wifi_iram) + + if ESP32_WIFI_RX_IRAM_OPT = y: + * (wifi_rx_iram) [mapping:net80211] archive: libnet80211.a entries: if ESP32_WIFI_IRAM_OPT = y: * (wifi_iram) + + if ESP32_WIFI_RX_IRAM_OPT = y: + * (wifi_rx_iram) diff --git a/tools/unit-test-app/configs/psram b/tools/unit-test-app/configs/psram index 889fb9315..3798a1a9d 100644 --- a/tools/unit-test-app/configs/psram +++ b/tools/unit-test-app/configs/psram @@ -1,4 +1,5 @@ TEST_EXCLUDE_COMPONENTS=libsodium bt app_update driver esp32 spi_flash CONFIG_ESP32_SPIRAM_SUPPORT=y CONFIG_ESP_INT_WDT_TIMEOUT_MS=800 -CONFIG_SPIRAM_OCCUPY_NO_HOST=y \ No newline at end of file +CONFIG_SPIRAM_OCCUPY_NO_HOST=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=n diff --git a/tools/unit-test-app/configs/psram_2 b/tools/unit-test-app/configs/psram_2 index 2ede7d7d9..ff86b482d 100644 --- a/tools/unit-test-app/configs/psram_2 +++ b/tools/unit-test-app/configs/psram_2 @@ -2,3 +2,4 @@ TEST_COMPONENTS=driver esp32 spi_flash CONFIG_ESP32_SPIRAM_SUPPORT=y CONFIG_ESP_INT_WDT_TIMEOUT_MS=800 CONFIG_SPIRAM_OCCUPY_NO_HOST=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=n