test_efuse.c 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <errno.h>
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include "unity.h"
  7. #include "esp_log.h"
  8. #include <string.h>
  9. #include "esp_efuse.h"
  10. #include "esp_efuse_table.h"
  11. #include "esp_efuse_utility.h"
  12. #include "esp_efuse_test_table.h"
  13. #include "esp32/rom/efuse.h"
  14. #include "bootloader_random.h"
  15. #include "sdkconfig.h"
  16. #ifdef CONFIG_EFUSE_VIRTUAL
  17. TEST_CASE("Test a write/read protection", "[efuse]")
  18. {
  19. esp_efuse_utility_reset();
  20. esp_efuse_utility_erase_virt_blocks();
  21. esp_efuse_utility_debug_dump_blocks();
  22. TEST_ESP_ERR(ESP_ERR_NOT_SUPPORTED, esp_efuse_set_write_protect(EFUSE_BLK0));
  23. TEST_ESP_ERR(ESP_ERR_NOT_SUPPORTED, esp_efuse_set_read_protect(EFUSE_BLK0));
  24. size_t out_cnt;
  25. esp_efuse_read_field_cnt(ESP_EFUSE_WR_DIS_BLK1, &out_cnt);
  26. TEST_ASSERT_EQUAL_INT(0, out_cnt);
  27. TEST_ESP_OK(esp_efuse_set_write_protect(EFUSE_BLK1));
  28. esp_efuse_read_field_cnt(ESP_EFUSE_WR_DIS_BLK1, &out_cnt);
  29. TEST_ASSERT_EQUAL_INT(1, out_cnt);
  30. TEST_ESP_ERR(ESP_ERR_EFUSE_CNT_IS_FULL, esp_efuse_set_write_protect(EFUSE_BLK1));
  31. TEST_ESP_OK(esp_efuse_set_write_protect(EFUSE_BLK2));
  32. esp_efuse_read_field_cnt(ESP_EFUSE_WR_DIS_BLK2, &out_cnt);
  33. TEST_ASSERT_EQUAL_INT(1, out_cnt);
  34. TEST_ESP_OK(esp_efuse_set_write_protect(EFUSE_BLK3));
  35. esp_efuse_read_field_cnt(ESP_EFUSE_WR_DIS_BLK3, &out_cnt);
  36. TEST_ASSERT_EQUAL_INT(1, out_cnt);
  37. esp_efuse_utility_debug_dump_blocks();
  38. esp_efuse_read_field_cnt(ESP_EFUSE_RD_DIS_BLK1, &out_cnt);
  39. TEST_ASSERT_EQUAL_INT(0, out_cnt);
  40. TEST_ESP_OK(esp_efuse_set_read_protect(EFUSE_BLK1));
  41. esp_efuse_read_field_cnt(ESP_EFUSE_RD_DIS_BLK1, &out_cnt);
  42. TEST_ASSERT_EQUAL_INT(1, out_cnt);
  43. TEST_ESP_ERR(ESP_ERR_EFUSE_CNT_IS_FULL, esp_efuse_set_read_protect(EFUSE_BLK1));
  44. TEST_ESP_OK(esp_efuse_set_read_protect(EFUSE_BLK2));
  45. esp_efuse_read_field_cnt(ESP_EFUSE_RD_DIS_BLK2, &out_cnt);
  46. TEST_ASSERT_EQUAL_INT(1, out_cnt);
  47. TEST_ESP_OK(esp_efuse_set_read_protect(EFUSE_BLK3));
  48. esp_efuse_read_field_cnt(ESP_EFUSE_RD_DIS_BLK3, &out_cnt);
  49. TEST_ASSERT_EQUAL_INT(1, out_cnt);
  50. esp_efuse_utility_debug_dump_blocks();
  51. esp_efuse_utility_reset();
  52. esp_efuse_utility_erase_virt_blocks();
  53. }
  54. #endif // #ifdef CONFIG_EFUSE_VIRTUAL