feat(efuse): Support eFuses and doc for ESP32P4

This commit is contained in:
KonstantinKondrashov
2023-09-11 22:29:41 +08:00
parent 2557513fb5
commit b29f6d5a40
13 changed files with 377 additions and 32 deletions

View File

@@ -73,6 +73,7 @@ typedef enum {
ESP_EFUSE_KEY_PURPOSE_SECURE_BOOT_DIGEST0 = 9, /**< SECURE_BOOT_DIGEST0 (Secure Boot key digest) */
ESP_EFUSE_KEY_PURPOSE_SECURE_BOOT_DIGEST1 = 10, /**< SECURE_BOOT_DIGEST1 (Secure Boot key digest) */
ESP_EFUSE_KEY_PURPOSE_SECURE_BOOT_DIGEST2 = 11, /**< SECURE_BOOT_DIGEST2 (Secure Boot key digest) */
ESP_EFUSE_KEY_PURPOSE_KM_INIT_KEY = 12, /**< KM_INIT_KEY */
ESP_EFUSE_KEY_PURPOSE_MAX, /**< MAX PURPOSE */
} esp_efuse_purpose_t;

View File

@@ -305,6 +305,9 @@ esp_err_t esp_efuse_write_key(esp_efuse_block_t block, esp_efuse_purpose_t purpo
#endif //#ifdef SOC_EFUSE_SUPPORT_XTS_AES_256_KEYS
#if SOC_ECDSA_SUPPORTED
purpose == ESP_EFUSE_KEY_PURPOSE_ECDSA_KEY ||
#endif
#if SOC_KEY_MANAGER_SUPPORTED
purpose == ESP_EFUSE_KEY_PURPOSE_KM_INIT_KEY ||
#endif
purpose == ESP_EFUSE_KEY_PURPOSE_HMAC_DOWN_ALL ||
purpose == ESP_EFUSE_KEY_PURPOSE_HMAC_DOWN_JTAG ||

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -290,7 +290,7 @@ TEST_CASE("Test esp_efuse_write_keys", "[efuse]")
#else
esp_efuse_purpose_t purpose1[BLOCKS_NEEDED1] = {
ESP_EFUSE_KEY_PURPOSE_XTS_AES_128_KEY,
ESP_EFUSE_KEY_PURPOSE_RESERVED
ESP_EFUSE_KEY_PURPOSE_HMAC_DOWN_ALL
};
#endif
uint8_t keys1[BLOCKS_NEEDED1][32] = {{0xEE}};
@@ -437,19 +437,24 @@ TEST_CASE("Test set_write_protect_of_digest_revoke", "[efuse]")
TEST_ESP_OK(esp_efuse_set_write_protect_of_digest_revoke(2));
TEST_ASSERT_TRUE(esp_efuse_get_write_protect_of_digest_revoke(2));
#if CONFIG_EFUSE_VIRTUAL
TEST_ESP_OK(esp_efuse_set_digest_revoke(0));
TEST_ESP_OK(esp_efuse_set_digest_revoke(1));
TEST_ESP_OK(esp_efuse_set_digest_revoke(2));
TEST_ASSERT_TRUE(esp_efuse_get_digest_revoke(0));
TEST_ASSERT_TRUE(esp_efuse_get_digest_revoke(1));
TEST_ASSERT_TRUE(esp_efuse_get_digest_revoke(2));
#endif // CONFIG_EFUSE_VIRTUAL
#if CONFIG_EFUSE_FPGA_TEST && !CONFIG_EFUSE_VIRTUAL
TEST_ESP_ERR(ESP_FAIL, esp_efuse_set_digest_revoke(0));
TEST_ESP_ERR(ESP_FAIL, esp_efuse_set_digest_revoke(1));
TEST_ESP_ERR(ESP_FAIL, esp_efuse_set_digest_revoke(2));
// the write protection bits are set and the revocation bits will not be changed.
TEST_ASSERT_FALSE(esp_efuse_get_digest_revoke(0));
TEST_ASSERT_FALSE(esp_efuse_get_digest_revoke(1));
TEST_ASSERT_FALSE(esp_efuse_get_digest_revoke(2));
#else
TEST_ASSERT_TRUE(esp_efuse_get_digest_revoke(0));
TEST_ASSERT_TRUE(esp_efuse_get_digest_revoke(1));
TEST_ASSERT_TRUE(esp_efuse_get_digest_revoke(2));
#endif // CONFIG_EFUSE_FPGA_TEST && !CONFIG_EFUSE_VIRTUAL
}
#endif // SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY