Просмотр исходного кода

Merge branch 'feature/add-ESP32-H2-target-support' into 'master'

feature: add the esp32h2 target support

See merge request espressif/esp-serial-flasher!58
Roland Dobai 2 лет назад
Родитель
Сommit
d50cb2b015

BIN
examples/binaries/Hello-world/ESP32_H2/bootloader.bin


BIN
examples/binaries/Hello-world/ESP32_H2/hello_world.bin


BIN
examples/binaries/Hello-world/ESP32_H2/partition-table.bin


+ 26 - 3
examples/common/example_common.c

@@ -60,6 +60,13 @@ extern const uint32_t ESP32_H4_hello_world_bin_size;
 extern const uint8_t  ESP32_H4_partition_table_bin[];
 extern const uint8_t  ESP32_H4_partition_table_bin[];
 extern const uint32_t ESP32_H4_partition_table_bin_size;
 extern const uint32_t ESP32_H4_partition_table_bin_size;
 
 
+extern const uint8_t  ESP32_H2_bootloader_bin[];
+extern const uint32_t ESP32_H2_bootloader_bin_size;
+extern const uint8_t  ESP32_H2_hello_world_bin[];
+extern const uint32_t ESP32_H2_hello_world_bin_size;
+extern const uint8_t  ESP32_H2_partition_table_bin[];
+extern const uint32_t ESP32_H2_partition_table_bin_size;
+
 void get_example_binaries(target_chip_t target, example_binaries_t *bins)
 void get_example_binaries(target_chip_t target, example_binaries_t *bins)
 {
 {
     if (target == ESP8266_CHIP) {
     if (target == ESP8266_CHIP) {
@@ -102,7 +109,17 @@ void get_example_binaries(target_chip_t target, example_binaries_t *bins)
         bins->app.data  = ESP32_H4_hello_world_bin;
         bins->app.data  = ESP32_H4_hello_world_bin;
         bins->app.size  = ESP32_H4_hello_world_bin_size;
         bins->app.size  = ESP32_H4_hello_world_bin_size;
         bins->app.addr  = APPLICATION_ADDRESS;
         bins->app.addr  = APPLICATION_ADDRESS;
-    } else {
+    } else if (target == ESP32H2_CHIP){
+        bins->boot.data = ESP32_H2_bootloader_bin;
+        bins->boot.size = ESP32_H2_bootloader_bin_size;
+        bins->boot.addr = BOOTLOADER_ADDRESS_V1;
+        bins->part.data = ESP32_H2_partition_table_bin;
+        bins->part.size = ESP32_H2_partition_table_bin_size;
+        bins->part.addr = PARTITION_ADDRESS;
+        bins->app.data  = ESP32_H2_hello_world_bin;
+        bins->app.size  = ESP32_H2_hello_world_bin_size;
+        bins->app.addr  = APPLICATION_ADDRESS;
+    }else {
         abort();
         abort();
     }
     }
 }
 }
@@ -110,13 +127,19 @@ void get_example_binaries(target_chip_t target, example_binaries_t *bins)
 
 
 extern const uint8_t  ESP32_H4_app_bin[];
 extern const uint8_t  ESP32_H4_app_bin[];
 extern const uint32_t ESP32_H4_app_bin_size;
 extern const uint32_t ESP32_H4_app_bin_size;
-
+extern const uint8_t  ESP32_H2_app_bin[];
+extern const uint32_t ESP32_H2_app_bin_size;
 void get_example_ram_app_binary(target_chip_t target, example_ram_app_binary_t *bin)
 void get_example_ram_app_binary(target_chip_t target, example_ram_app_binary_t *bin)
 {
 {
     if (target == ESP32H4_CHIP){
     if (target == ESP32H4_CHIP){
         bin->ram_app.data = ESP32_H4_app_bin;
         bin->ram_app.data = ESP32_H4_app_bin;
         bin->ram_app.size = ESP32_H4_app_bin_size;
         bin->ram_app.size = ESP32_H4_app_bin_size;
-    } else {
+    } 
+    else if(target == ESP32H2_CHIP){
+        bin->ram_app.data = ESP32_H2_app_bin;
+        bin->ram_app.size = ESP32_H2_app_bin_size;
+    }
+    else {
         abort();
         abort();
     }
     }
 }
 }

+ 4 - 0
examples/esp32_example/partitions.csv

@@ -0,0 +1,4 @@
+# Name,   Type, SubType, Offset,  Size, Flags
+nvs,      data, nvs,     ,        0x6000,
+phy_init, data, phy,     ,        0x1000,
+factory,  app,  factory, ,        1500K,

+ 1 - 0
examples/esp32_example/sdkconfig.defaults

@@ -0,0 +1 @@
+CONFIG_PARTITION_TABLE_CUSTOM=y

+ 1 - 1
idf_component.yml

@@ -1,3 +1,3 @@
-version: "0.0.7"
+version: "0.0.8"
 description: Serial flasher component provides portable library for flashing or loading ram loadble app to Espressif SoCs from other host microcontroller
 description: Serial flasher component provides portable library for flashing or loading ram loadble app to Espressif SoCs from other host microcontroller
 url: https://github.com/espressif/esp-serial-flasher
 url: https://github.com/espressif/esp-serial-flasher

+ 3 - 2
include/esp_loader.h

@@ -63,8 +63,9 @@ typedef enum {
     ESP32S3_CHIP = 4,
     ESP32S3_CHIP = 4,
     ESP32C2_CHIP = 5,
     ESP32C2_CHIP = 5,
     ESP32H4_CHIP = 6,
     ESP32H4_CHIP = 6,
-    ESP_MAX_CHIP = 7,
-    ESP_UNKNOWN_CHIP = 7
+    ESP32H2_CHIP = 7,
+    ESP_MAX_CHIP = 8,
+    ESP_UNKNOWN_CHIP = 8
 } target_chip_t;
 } target_chip_t;
 
 
 /**
 /**

+ 15 - 0
src/esp_targets.c

@@ -151,6 +151,21 @@ static const esp_target_t esp_target[ESP_MAX_CHIP] = {
         .chip_magic_value = {0xca26cc22, 0x6881b06f}, // ESP32H4-BETA1, ESP32H4-BETA2
         .chip_magic_value = {0xca26cc22, 0x6881b06f}, // ESP32H4-BETA1, ESP32H4-BETA2
         .read_spi_config = spi_config_esp32xx,
         .read_spi_config = spi_config_esp32xx,
     },
     },
+    // ESP32H2
+    {
+        .regs = {
+            .cmd  = ESP32xx_SPI_REG_BASE + 0x00,
+            .usr  = ESP32xx_SPI_REG_BASE + 0x18,
+            .usr1 = ESP32xx_SPI_REG_BASE + 0x1c,
+            .usr2 = ESP32xx_SPI_REG_BASE + 0x20,
+            .w0   = ESP32xx_SPI_REG_BASE + 0x58,
+            .mosi_dlen = ESP32xx_SPI_REG_BASE + 0x24,
+            .miso_dlen = ESP32xx_SPI_REG_BASE + 0x28,
+        },
+        .efuse_base = 0x6001A000,
+        .chip_magic_value = {0xd7b73e80, 0},
+        .read_spi_config = spi_config_esp32xx,
+    },
 };
 };
 
 
 const target_registers_t *get_esp_target_data(target_chip_t chip)
 const target_registers_t *get_esp_target_data(target_chip_t chip)

+ 7 - 0
test/test.cpp

@@ -118,6 +118,7 @@ map<target_chip_t, uint32_t> chip_magic_value = {
     {ESP32C3_CHIP,  0x6921506f},
     {ESP32C3_CHIP,  0x6921506f},
     {ESP32S3_CHIP,  0x00000009},
     {ESP32S3_CHIP,  0x00000009},
     {ESP32H4_CHIP,  0xca26cc22},
     {ESP32H4_CHIP,  0xca26cc22},
+    {ESP32H2_CHIP,  0xd7b73e80},
 };
 };
 
 
 void queue_connect_response(target_chip_t target = ESP32_CHIP, uint32_t magic_value = 0)
 void queue_connect_response(target_chip_t target = ESP32_CHIP, uint32_t magic_value = 0)
@@ -207,6 +208,12 @@ TEST_CASE( "Can detect attached target" )
         REQUIRE( esp_loader_get_target() == ESP32H4_CHIP );
         REQUIRE( esp_loader_get_target() == ESP32H4_CHIP );
     }
     }
 
 
+    SECTION( "Can detect ESP32H2" ) {
+        queue_connect_response(ESP32H2_CHIP);
+        REQUIRE_SUCCESS( esp_loader_connect(&connect_config) );
+        REQUIRE( esp_loader_get_target() == ESP32H2_CHIP );
+    }
+
     SECTION( "Can detect ESP32C3" ) {
     SECTION( "Can detect ESP32C3" ) {
         queue_connect_response(ESP32C3_CHIP);
         queue_connect_response(ESP32C3_CHIP);
         REQUIRE_SUCCESS( esp_loader_connect(&connect_config) );
         REQUIRE_SUCCESS( esp_loader_connect(&connect_config) );