From 4ceae4654b21ef4024d209edff43d828c6acb605 Mon Sep 17 00:00:00 2001 From: KonstantinKondrashov Date: Fri, 9 Jun 2023 19:10:47 +0800 Subject: [PATCH] efuse: Do not load real efuses before some test (some chips have burned efuse blocks) --- .../test/one_key_block/test_efuse_keys.c | 32 +++++++++++++++++++ .../test/with_key_purposes/test_efuse_keys.c | 32 +++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/components/efuse/test/one_key_block/test_efuse_keys.c b/components/efuse/test/one_key_block/test_efuse_keys.c index 43b29ed5b1..45ad31aa47 100644 --- a/components/efuse/test/one_key_block/test_efuse_keys.c +++ b/components/efuse/test/one_key_block/test_efuse_keys.c @@ -24,7 +24,11 @@ __attribute__((unused)) static const char* TAG = "efuse_key_test"; TEST_CASE("Test keys and purposes, rd, wr, wr_key_purposes are in the initial state", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); for (esp_efuse_block_t num_key = EFUSE_BLK_KEY0; num_key < EFUSE_BLK_KEY_MAX; ++num_key) { @@ -112,7 +116,11 @@ TEST_CASE("Test esp_efuse_write_key for virt mode", "[efuse]") { uint8_t rd_key[32] = { 0xEE }; esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif TEST_ESP_ERR(ESP_ERR_INVALID_ARG, esp_efuse_write_key(EFUSE_BLK_KEY0, ESP_EFUSE_KEY_PURPOSE_USER, &rd_key, 33)); TEST_ESP_ERR(ESP_ERR_INVALID_ARG, esp_efuse_write_key(EFUSE_BLK3, ESP_EFUSE_KEY_PURPOSE_USER, NULL, sizeof(rd_key))); @@ -122,7 +130,11 @@ TEST_CASE("Test esp_efuse_write_key for virt mode", "[efuse]") for (esp_efuse_purpose_t purpose = ESP_EFUSE_KEY_PURPOSE_USER; purpose < ESP_EFUSE_KEY_PURPOSE_MAX; ++purpose) { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); if (purpose == ESP_EFUSE_KEY_PURPOSE_XTS_AES_128_KEY) { @@ -141,7 +153,11 @@ TEST_CASE("Test esp_efuse_write_key for virt mode", "[efuse]") TEST_CASE("Test 1 esp_efuse_write_key for FPGA", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_TRUE(esp_efuse_key_block_unused(EFUSE_BLK_KEY0)); TEST_ASSERT_TRUE(esp_efuse_block_is_empty(EFUSE_BLK_KEY0)); @@ -164,7 +180,11 @@ TEST_CASE("Test 1 esp_efuse_write_key for FPGA", "[efuse]") TEST_CASE("Test 2 esp_efuse_write_key for FPGA", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_TRUE(esp_efuse_key_block_unused(EFUSE_BLK_KEY0)); TEST_ASSERT_TRUE(esp_efuse_block_is_empty(EFUSE_BLK_KEY0)); @@ -183,7 +203,11 @@ TEST_CASE("Test 2 esp_efuse_write_key for FPGA", "[efuse]") TEST_CASE("Test 3 esp_efuse_write_key for FPGA", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_TRUE(esp_efuse_key_block_unused(EFUSE_BLK_KEY0)); TEST_ASSERT_TRUE(esp_efuse_block_is_empty(EFUSE_BLK_KEY0)); @@ -208,7 +232,11 @@ TEST_CASE("Test 3 esp_efuse_write_key for FPGA", "[efuse]") TEST_CASE("Test esp_efuse_write_keys", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_TRUE(esp_efuse_key_block_unused(EFUSE_BLK_KEY0)); TEST_ASSERT_TRUE(esp_efuse_block_is_empty(EFUSE_BLK_KEY0)); @@ -253,7 +281,11 @@ TEST_CASE("Test esp_efuse_write_keys", "[efuse]") TEST_CASE("Test esp_efuse_write_keys for returned errors", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_TRUE(esp_efuse_key_block_unused(EFUSE_BLK_KEY0)); TEST_ASSERT_TRUE(esp_efuse_block_is_empty(EFUSE_BLK_KEY0)); diff --git a/components/efuse/test/with_key_purposes/test_efuse_keys.c b/components/efuse/test/with_key_purposes/test_efuse_keys.c index 1341795ed3..67ca7b3d71 100644 --- a/components/efuse/test/with_key_purposes/test_efuse_keys.c +++ b/components/efuse/test/with_key_purposes/test_efuse_keys.c @@ -25,7 +25,11 @@ __attribute__((unused)) static const char* TAG = "efuse_key_test"; TEST_CASE("Test keys and purposes, rd, wr, wr_key_purposes are in the initial state", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); for (esp_efuse_block_t num_key = EFUSE_BLK_KEY0; num_key < EFUSE_BLK_KEY_MAX; ++num_key) { @@ -139,7 +143,11 @@ TEST_CASE("Test esp_efuse_write_key for virt mode", "[efuse]") continue; } esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_FALSE(esp_efuse_find_purpose(g_purpose, NULL)); @@ -174,7 +182,11 @@ TEST_CASE("Test esp_efuse_write_key for virt mode", "[efuse]") TEST_CASE("Test 1 esp_efuse_write_key for FPGA", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_EQUAL_MESSAGE(EFUSE_BLK_KEY_MAX - EFUSE_BLK_KEY0, esp_efuse_count_unused_key_blocks(), "Efuses should be in initial state"); @@ -208,7 +220,11 @@ TEST_CASE("Test 1 esp_efuse_write_key for FPGA", "[efuse]") TEST_CASE("Test 2 esp_efuse_write_key for FPGA", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_EQUAL_MESSAGE(EFUSE_BLK_KEY_MAX - EFUSE_BLK_KEY0, esp_efuse_count_unused_key_blocks(), "Efuses should be in initial state"); @@ -243,7 +259,11 @@ TEST_CASE("Test 2 esp_efuse_write_key for FPGA", "[efuse]") TEST_CASE("Test esp_efuse_write_keys", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_EQUAL_MESSAGE(EFUSE_BLK_KEY_MAX - EFUSE_BLK_KEY0, esp_efuse_count_unused_key_blocks(), "Efuses should be in initial state"); esp_efuse_block_t key_block = EFUSE_BLK_MAX; @@ -317,7 +337,11 @@ TEST_CASE("Test esp_efuse_write_keys", "[efuse]") TEST_CASE("Test esp_efuse_write_keys for returned errors", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_EQUAL_MESSAGE(EFUSE_BLK_KEY_MAX - EFUSE_BLK_KEY0, esp_efuse_count_unused_key_blocks(), "Efuses should be in initial state"); @@ -346,7 +370,11 @@ TEST_CASE("Test esp_efuse_write_keys for returned errors", "[efuse]") TEST_CASE("Test revocation APIs", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_FALSE(esp_efuse_get_digest_revoke(0)); @@ -382,7 +410,11 @@ TEST_CASE("Test revocation APIs", "[efuse]") TEST_CASE("Test set_write_protect_of_digest_revoke", "[efuse]") { esp_efuse_utility_reset(); +#ifdef CONFIG_IDF_ENV_FPGA esp_efuse_utility_update_virt_blocks(); +#else + esp_efuse_utility_erase_virt_blocks(); +#endif esp_efuse_utility_debug_dump_blocks(); TEST_ASSERT_FALSE(esp_efuse_get_digest_revoke(0));