Explorar o código

esp_wifi: Put some rx code to iram

xiehang %!s(int64=6) %!d(string=hai) anos
pai
achega
5e7f43f3d1

+ 9 - 0
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

+ 9 - 0
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

+ 10 - 0
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"

+ 1 - 1
components/esp_wifi/lib

@@ -1 +1 @@
-Subproject commit 99eb8ac56fe651e7116744e1704e02d0d2828d88
+Subproject commit f3c39df1c428b065e05a431c6f8685790531baf5

+ 6 - 0
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)

+ 2 - 1
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
+CONFIG_SPIRAM_OCCUPY_NO_HOST=y
+CONFIG_ESP32_WIFI_RX_IRAM_OPT=n

+ 1 - 0
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