Pārlūkot izejas kodu

Merge branch 'feature/update_esp32h2_rom_caps' into 'master'

esp_rom: update esp32h2 rom caps

See merge request espressif/esp-idf!21373
Jiang Guang Ming 3 gadi atpakaļ
vecāks
revīzija
ad3693ca97

+ 23 - 19
components/esp_rom/CMakeLists.txt

@@ -255,27 +255,31 @@ else() # Regular app build
                 # Normal(Non-nano) formatting functions in ROM are also built for 64-bit time_t.
                 rom_linker_script("newlib-normal")
             endif()
-       endif()
+        endif()
 
     elseif(target STREQUAL "esp32h2")
-       rom_linker_script("newlib")
-       rom_linker_script("version")
-       rom_linker_script("phy")
-       rom_linker_script("coexist")
-       rom_linker_script("net80211")
-       rom_linker_script("pp")
-
-       if(time_t_size EQUAL 8)
-           # The ROM functions listed in this linker script depend on sizeof(time_t).
-           # Since ROM for ESP32-H2 was compiled for 64-bit time_t, only link these functions
-           # if the toolchain is also using 64-bit time_t.
-           rom_linker_script("newlib-time")
-
-           if(CONFIG_NEWLIB_NANO_FORMAT)
-               # nano formatting functions in ROM are also built for 64-bit time_t.
-               rom_linker_script("newlib-nano")
-           endif()
-       endif()
+        rom_linker_script("newlib")
+        rom_linker_script("version")
+        rom_linker_script("phy")
+        rom_linker_script("coexist")
+        rom_linker_script("net80211")
+        rom_linker_script("pp")
+
+        if(CONFIG_SPI_FLASH_ROM_IMPL)
+            rom_linker_script("spiflash")
+        endif()
+
+        if(time_t_size EQUAL 8)
+            # The ROM functions listed in this linker script depend on sizeof(time_t).
+            # Since ROM for ESP32-H2 was compiled for 64-bit time_t, only link these functions
+            # if the toolchain is also using 64-bit time_t.
+            rom_linker_script("newlib-time")
+
+            if(CONFIG_NEWLIB_NANO_FORMAT)
+                # nano formatting functions in ROM are also built for 64-bit time_t.
+                rom_linker_script("newlib-nano")
+            endif()
+        endif()
 
     endif()
 

+ 24 - 0
components/esp_rom/esp32h2/Kconfig.soc_caps.in

@@ -26,3 +26,27 @@ config ESP_ROM_HAS_RETARGETABLE_LOCKING
 config ESP_ROM_GET_CLK_FREQ
     bool
     default y
+
+config ESP_ROM_HAS_RVFPLIB
+    bool
+    default y
+
+config ESP_ROM_HAS_HAL_WDT
+    bool
+    default y
+
+config ESP_ROM_HAS_HAL_SYSTIMER
+    bool
+    default y
+
+config ESP_ROM_HAS_HEAP_TLSF
+    bool
+    default y
+
+config ESP_ROM_HAS_LAYOUT_TABLE
+    bool
+    default y
+
+config ESP_ROM_HAS_SPI_FLASH
+    bool
+    default y

+ 6 - 0
components/esp_rom/esp32h2/esp_rom_caps.h

@@ -12,3 +12,9 @@
 #define ESP_ROM_USB_SERIAL_DEVICE_NUM       (3) // UART uses USB_SERIAL_JTAG port in ROM.
 #define ESP_ROM_HAS_RETARGETABLE_LOCKING    (1) // ROM was built with retargetable locking
 #define ESP_ROM_GET_CLK_FREQ                (1) // Get clk frequency with rom function `ets_get_cpu_frequency`
+#define ESP_ROM_HAS_RVFPLIB                 (1) // ROM has the rvfplib
+#define ESP_ROM_HAS_HAL_WDT                 (1) // ROM has the implementation of Watchdog HAL driver
+#define ESP_ROM_HAS_HAL_SYSTIMER            (1) // ROM has the implementation of Systimer HAL driver
+#define ESP_ROM_HAS_HEAP_TLSF               (1) // ROM has the implementation of the tlsf and multi-heap library
+#define ESP_ROM_HAS_LAYOUT_TABLE            (1) // ROM has the layout table
+#define ESP_ROM_HAS_SPI_FLASH               (1) // ROM has the implementation of SPI Flash driver

+ 4 - 2
components/esp_rom/esp32h2/ld/esp32h2.rom.ld

@@ -183,8 +183,10 @@ wdt_hal_is_enabled = 0x400003b4;
  ***************************************/
 
 /* Functions */
-systimer_hal_init = 0x400003b8;
-systimer_hal_deinit = 0x400003bc;
+/* The following ROM functions are commented out because they're patched in the esp_rom_systimer.c */
+/* systimer_hal_init = 0x400003b8; */
+/* systimer_hal_deinit = 0x400003bc; */
+
 systimer_hal_set_tick_rate_ops = 0x400003c0;
 systimer_hal_get_counter_value = 0x400003c4;
 systimer_hal_get_time = 0x400003c8;

+ 1 - 1
components/esp_rom/patches/esp_rom_systimer.c

@@ -64,7 +64,7 @@ void systimer_hal_counter_value_advance(systimer_hal_context_t *hal, uint32_t co
 }
 #endif // CONFIG_IDF_TARGET_ESP32C2
 
-#if CONFIG_IDF_TARGET_ESP32C6
+#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32H2
 void systimer_hal_init(systimer_hal_context_t *hal)
 {
     hal->dev = &SYSTIMER;