esptool 4.10.dev2__tar.gz → 4.11.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. {esptool-4.10.dev2/esptool.egg-info → esptool-4.11.0}/PKG-INFO +1 -1
  2. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/base_fields.py +7 -1
  3. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/emulate_efuse_controller_base.py +4 -0
  4. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c5/fields.py +0 -6
  5. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h4/fields.py +0 -3
  6. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32p4/emulate_efuse_controller.py +1 -1
  7. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32p4/fields.py +111 -6
  8. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32p4/mem_definition.py +29 -1
  9. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32c5.yaml +46 -46
  10. esptool-4.11.0/espefuse/efuse_defs/esp32p4_v3.0.yaml +174 -0
  11. {esptool-4.10.dev2 → esptool-4.11.0}/espsecure/__init__.py +1 -4
  12. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/__init__.py +1 -1
  13. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/bin_image.py +2 -0
  14. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/cmds.py +56 -43
  15. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/loader.py +18 -11
  16. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32c2.py +6 -0
  17. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32c3.py +10 -1
  18. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32c5.py +20 -4
  19. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32c6.py +30 -5
  20. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32c61.py +13 -4
  21. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32p4.py +83 -4
  22. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/1/README.md +1 -1
  23. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32.json +8 -0
  24. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32c2.json +8 -0
  25. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32c3.json +8 -0
  26. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32c5.json +8 -0
  27. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32c5beta3.json +8 -0
  28. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32c6.json +8 -0
  29. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32c61.json +8 -0
  30. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32c6beta.json +8 -0
  31. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32h2.json +8 -0
  32. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32h2beta1.json +8 -0
  33. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32h2beta2.json +8 -0
  34. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32p4.json +8 -0
  35. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32p4rc1.json +8 -0
  36. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32s2.json +8 -0
  37. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32s3.json +8 -0
  38. esptool-4.11.0/esptool/targets/stub_flasher/1/esp32s3beta2.json +8 -0
  39. esptool-4.11.0/esptool/targets/stub_flasher/1/esp8266.json +8 -0
  40. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/util.py +25 -17
  41. {esptool-4.10.dev2 → esptool-4.11.0/esptool.egg-info}/PKG-INFO +1 -1
  42. {esptool-4.10.dev2 → esptool-4.11.0}/esptool.egg-info/SOURCES.txt +2 -0
  43. {esptool-4.10.dev2 → esptool-4.11.0}/pyproject.toml +1 -1
  44. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32.json +0 -8
  45. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32c2.json +0 -8
  46. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32c3.json +0 -8
  47. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32c5.json +0 -8
  48. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32c5beta3.json +0 -8
  49. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32c6.json +0 -8
  50. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32c61.json +0 -8
  51. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32c6beta.json +0 -8
  52. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32h2.json +0 -8
  53. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32h2beta1.json +0 -8
  54. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32h2beta2.json +0 -8
  55. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32p4.json +0 -8
  56. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32s2.json +0 -8
  57. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32s3.json +0 -8
  58. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp32s3beta2.json +0 -8
  59. esptool-4.10.dev2/esptool/targets/stub_flasher/1/esp8266.json +0 -8
  60. {esptool-4.10.dev2 → esptool-4.11.0}/LICENSE +0 -0
  61. {esptool-4.10.dev2 → esptool-4.11.0}/MANIFEST.in +0 -0
  62. {esptool-4.10.dev2 → esptool-4.11.0}/README.md +0 -0
  63. {esptool-4.10.dev2 → esptool-4.11.0}/esp_rfc2217_server/__init__.py +0 -0
  64. {esptool-4.10.dev2 → esptool-4.11.0}/esp_rfc2217_server/__main__.py +0 -0
  65. {esptool-4.10.dev2 → esptool-4.11.0}/esp_rfc2217_server/esp_port_manager.py +0 -0
  66. {esptool-4.10.dev2 → esptool-4.11.0}/esp_rfc2217_server/redirector.py +0 -0
  67. {esptool-4.10.dev2 → esptool-4.11.0}/esp_rfc2217_server.py +0 -0
  68. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/__init__.py +0 -0
  69. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/__main__.py +0 -0
  70. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/__init__.py +0 -0
  71. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/base_operations.py +0 -0
  72. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/csv_table_parser.py +0 -0
  73. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32/__init__.py +0 -0
  74. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32/emulate_efuse_controller.py +0 -0
  75. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32/fields.py +0 -0
  76. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32/mem_definition.py +0 -0
  77. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32/operations.py +0 -0
  78. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c2/__init__.py +0 -0
  79. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c2/emulate_efuse_controller.py +0 -0
  80. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c2/fields.py +0 -0
  81. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c2/mem_definition.py +0 -0
  82. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c2/operations.py +0 -0
  83. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c3/__init__.py +0 -0
  84. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c3/emulate_efuse_controller.py +0 -0
  85. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c3/fields.py +0 -0
  86. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c3/mem_definition.py +0 -0
  87. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c3/operations.py +0 -0
  88. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c5/__init__.py +0 -0
  89. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c5/emulate_efuse_controller.py +0 -0
  90. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c5/mem_definition.py +0 -0
  91. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c5/operations.py +0 -0
  92. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c5beta3/__init__.py +0 -0
  93. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c5beta3/emulate_efuse_controller.py +0 -0
  94. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c5beta3/fields.py +0 -0
  95. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c5beta3/mem_definition.py +0 -0
  96. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c5beta3/operations.py +0 -0
  97. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c6/__init__.py +0 -0
  98. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c6/emulate_efuse_controller.py +0 -0
  99. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c6/fields.py +0 -0
  100. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c6/mem_definition.py +0 -0
  101. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c6/operations.py +0 -0
  102. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c61/__init__.py +0 -0
  103. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c61/emulate_efuse_controller.py +0 -0
  104. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c61/fields.py +0 -0
  105. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c61/mem_definition.py +0 -0
  106. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32c61/operations.py +0 -0
  107. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h2/__init__.py +0 -0
  108. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h2/emulate_efuse_controller.py +0 -0
  109. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h2/fields.py +0 -0
  110. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h2/mem_definition.py +0 -0
  111. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h2/operations.py +0 -0
  112. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h21/__init__.py +0 -0
  113. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h21/emulate_efuse_controller.py +0 -0
  114. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h21/fields.py +0 -0
  115. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h21/mem_definition.py +0 -0
  116. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h21/operations.py +0 -0
  117. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h2beta1/__init__.py +0 -0
  118. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h2beta1/emulate_efuse_controller.py +0 -0
  119. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h2beta1/fields.py +0 -0
  120. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h2beta1/mem_definition.py +0 -0
  121. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h2beta1/operations.py +0 -0
  122. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h4/__init__.py +0 -0
  123. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h4/emulate_efuse_controller.py +0 -0
  124. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h4/mem_definition.py +0 -0
  125. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32h4/operations.py +0 -0
  126. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32p4/__init__.py +0 -0
  127. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32p4/operations.py +0 -0
  128. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s2/__init__.py +0 -0
  129. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s2/emulate_efuse_controller.py +0 -0
  130. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s2/fields.py +0 -0
  131. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s2/mem_definition.py +0 -0
  132. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s2/operations.py +0 -0
  133. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s3/__init__.py +0 -0
  134. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s3/emulate_efuse_controller.py +0 -0
  135. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s3/fields.py +0 -0
  136. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s3/mem_definition.py +0 -0
  137. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s3/operations.py +0 -0
  138. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s3beta2/__init__.py +0 -0
  139. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s3beta2/emulate_efuse_controller.py +0 -0
  140. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s3beta2/fields.py +0 -0
  141. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s3beta2/mem_definition.py +0 -0
  142. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/esp32s3beta2/operations.py +0 -0
  143. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/mem_definition_base.py +0 -0
  144. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse/util.py +0 -0
  145. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32.yaml +0 -0
  146. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32c2.yaml +0 -0
  147. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32c3.yaml +0 -0
  148. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32c5beta3.yaml +0 -0
  149. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32c6.yaml +0 -0
  150. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32c61.yaml +0 -0
  151. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32h2.yaml +0 -0
  152. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32h21.yaml +0 -0
  153. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32h2_v0.0_v1.1.yaml +0 -0
  154. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32h4.yaml +0 -0
  155. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32p4.yaml +0 -0
  156. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32s2.yaml +0 -0
  157. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse/efuse_defs/esp32s3.yaml +0 -0
  158. {esptool-4.10.dev2 → esptool-4.11.0}/espefuse.py +0 -0
  159. {esptool-4.10.dev2 → esptool-4.11.0}/espsecure/__main__.py +0 -0
  160. {esptool-4.10.dev2 → esptool-4.11.0}/espsecure/esp_hsm_sign/__init__.py +0 -0
  161. {esptool-4.10.dev2 → esptool-4.11.0}/espsecure/esp_hsm_sign/exceptions.py +0 -0
  162. {esptool-4.10.dev2 → esptool-4.11.0}/espsecure.py +0 -0
  163. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/__main__.py +0 -0
  164. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/config.py +0 -0
  165. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/reset.py +0 -0
  166. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/__init__.py +0 -0
  167. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32.py +0 -0
  168. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32c5beta3.py +0 -0
  169. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32c6beta.py +0 -0
  170. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32h2.py +0 -0
  171. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32h21.py +0 -0
  172. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32h2beta1.py +0 -0
  173. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32h2beta2.py +0 -0
  174. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32h4.py +0 -0
  175. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32s2.py +0 -0
  176. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32s3.py +0 -0
  177. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp32s3beta2.py +0 -0
  178. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/esp8266.py +0 -0
  179. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/2/LICENSE-APACHE +0 -0
  180. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/2/LICENSE-MIT +0 -0
  181. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/2/README.md +0 -0
  182. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/2/esp32.json +0 -0
  183. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/2/esp32c2.json +0 -0
  184. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/2/esp32c3.json +0 -0
  185. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/2/esp32c6.json +0 -0
  186. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/2/esp32h2.json +0 -0
  187. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/2/esp32s2.json +0 -0
  188. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/targets/stub_flasher/2/esp32s3.json +0 -0
  189. {esptool-4.10.dev2 → esptool-4.11.0}/esptool/uf2_writer.py +0 -0
  190. {esptool-4.10.dev2 → esptool-4.11.0}/esptool.egg-info/dependency_links.txt +0 -0
  191. {esptool-4.10.dev2 → esptool-4.11.0}/esptool.egg-info/requires.txt +0 -0
  192. {esptool-4.10.dev2 → esptool-4.11.0}/esptool.egg-info/top_level.txt +0 -0
  193. {esptool-4.10.dev2 → esptool-4.11.0}/esptool.py +0 -0
  194. {esptool-4.10.dev2 → esptool-4.11.0}/setup.cfg +0 -0
  195. {esptool-4.10.dev2 → esptool-4.11.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: esptool
3
- Version: 4.10.dev2
3
+ Version: 4.11.0
4
4
  Summary: A serial utility to communicate & flash code to Espressif chips.
5
5
  Author: Fredrik Ahlberg (themadinventor), Angus Gratton (projectgus), Espressif Systems
6
6
  License: GPLv2+
@@ -488,8 +488,14 @@ class EspEfusesBase(object):
488
488
  print("Re-connecting...")
489
489
  baudrate = esp._port.baudrate
490
490
  port = esp._port.port
491
+ connect_mode = (
492
+ "usb-reset"
493
+ if esp._get_pid() == esp.USB_JTAG_SERIAL_PID
494
+ else "default-reset"
495
+ )
496
+ print(f"Port: {port}, Baudrate: {baudrate}, Connect mode: {connect_mode}")
491
497
  esp._port.close()
492
- return esptool.cmds.detect_chip(port, baudrate)
498
+ return esptool.cmds.detect_chip(port, baudrate, connect_mode)
493
499
 
494
500
  def get_index_block_by_name(self, name):
495
501
  for block in self.blocks:
@@ -18,6 +18,7 @@ class EmulateEfuseControllerBase(object):
18
18
  Blocks = None
19
19
  Fields = None
20
20
  REGS = None
21
+ USB_JTAG_SERIAL_PID = 0x1001
21
22
 
22
23
  def __init__(self, efuse_file=None, debug=False):
23
24
  self.debug = debug
@@ -75,6 +76,9 @@ class EmulateEfuseControllerBase(object):
75
76
  blk = self.Blocks.get(self.Blocks.BLOCKS[block])
76
77
  self.write_reg(blk.wr_addr + (4 * n), value)
77
78
 
79
+ def _get_pid(self):
80
+ return -1
81
+
78
82
  """ << esptool method end """
79
83
 
80
84
  def handle_writing_event(self, addr, value):
@@ -410,9 +410,6 @@ class EfuseKeyPurposeField(EfuseField):
410
410
  ("ECDSA_KEY_P256", 1, None, "Reverse", "need_rd_protect"), # ECDSA key P256
411
411
  ("ECDSA_KEY", 1, None, "Reverse", "need_rd_protect"), # ECDSA key P256
412
412
  ("RESERVED", 1, None, None, "no_need_rd_protect"), # Reserved
413
- ("XTS_AES_256_KEY_1", 2, None, "Reverse", "need_rd_protect"), # XTS_AES_256_KEY_1 (flash/PSRAM encryption)
414
- ("XTS_AES_256_KEY_2", 3, None, "Reverse", "need_rd_protect"), # XTS_AES_256_KEY_2 (flash/PSRAM encryption)
415
- ("XTS_AES_256_KEY", -1, "VIRTUAL", None, "no_need_rd_protect"), # Virtual purpose splits to XTS_AES_256_KEY_1 and XTS_AES_256_KEY_2
416
413
  ("XTS_AES_128_KEY", 4, None, "Reverse", "need_rd_protect"), # XTS_AES_128_KEY (flash/PSRAM encryption)
417
414
  ("HMAC_DOWN_ALL", 5, None, None, "need_rd_protect"), # HMAC Downstream mode
418
415
  ("HMAC_DOWN_JTAG", 6, None, None, "need_rd_protect"), # JTAG soft enable key (uses HMAC Downstream mode)
@@ -422,9 +419,6 @@ class EfuseKeyPurposeField(EfuseField):
422
419
  ("SECURE_BOOT_DIGEST1", 10, "DIGEST", None, "no_need_rd_protect"), # SECURE_BOOT_DIGEST1 (Secure Boot key digest)
423
420
  ("SECURE_BOOT_DIGEST2", 11, "DIGEST", None, "no_need_rd_protect"), # SECURE_BOOT_DIGEST2 (Secure Boot key digest)
424
421
  ("KM_INIT_KEY", 12, None, None, "need_rd_protect"), # init key that is used for the generation of AES/ECDSA key
425
- ("XTS_AES_256_PSRAM_KEY_1", 13, None, "Reverse", "need_rd_protect"), # XTS_AES_256_PSRAM_KEY_1 (PSRAM encryption)
426
- ("XTS_AES_256_PSRAM_KEY_2", 14, None, "Reverse", "need_rd_protect"), # XTS_AES_256_PSRAM_KEY_1 (PSRAM encryption)
427
- ("XTS_AES_256_PSRAM_KEY", -2, "VIRTUAL", None, "no_need_rd_protect"), # Virtual purpose splits to XTS_AES_256_PSRAM_KEY_1 and XTS_AES_256_PSRAM_KEY_1
428
422
  ("XTS_AES_128_PSRAM_KEY", 15, None, "Reverse", "need_rd_protect"), # XTS_AES_128_PSRAM_KEY (PSRAM encryption)
429
423
  ("ECDSA_KEY_P192", 16, None, "Reverse", "need_rd_protect"), # ECDSA key P192
430
424
  ("ECDSA_KEY_P384_L", 17, None, "Reverse", "need_rd_protect"), # ECDSA key P384 low
@@ -394,8 +394,6 @@ class EfuseKeyPurposeField(EfuseField):
394
394
  KEY_PURPOSES = [
395
395
  ("USER", 0, None, None, "no_need_rd_protect"), # User purposes (software-only use)
396
396
  ("ECDSA_KEY", 1, None, "Reverse", "need_rd_protect"), # ECDSA key
397
- ("XTS_AES_256_KEY_1", 2, None, "Reverse", "need_rd_protect"), # XTS_AES_256_KEY_1 (flash/PSRAM encryption)
398
- ("XTS_AES_256_KEY_2", 3, None, "Reverse", "need_rd_protect"), # XTS_AES_256_KEY_2 (flash/PSRAM encryption)
399
397
  ("XTS_AES_128_KEY", 4, None, "Reverse", "need_rd_protect"), # XTS_AES_128_KEY (flash/PSRAM encryption)
400
398
  ("HMAC_DOWN_ALL", 5, None, None, "need_rd_protect"), # HMAC Downstream mode
401
399
  ("HMAC_DOWN_JTAG", 6, None, None, "need_rd_protect"), # JTAG soft enable key (uses HMAC Downstream mode)
@@ -405,7 +403,6 @@ class EfuseKeyPurposeField(EfuseField):
405
403
  ("SECURE_BOOT_DIGEST1", 10, "DIGEST", None, "no_need_rd_protect"), # SECURE_BOOT_DIGEST1 (Secure Boot key digest)
406
404
  ("SECURE_BOOT_DIGEST2", 11, "DIGEST", None, "no_need_rd_protect"), # SECURE_BOOT_DIGEST2 (Secure Boot key digest)
407
405
  ("KM_INIT_KEY", 12, None, None, "need_rd_protect"), # init key that is used for the generation of AES/ECDSA key
408
- ("XTS_AES_256_KEY", -1, "VIRTUAL", None, "no_need_rd_protect"), # Virtual purpose splits to XTS_AES_256_KEY_1 and XTS_AES_256_KEY_2
409
406
  ]
410
407
  # fmt: on
411
408
 
@@ -27,7 +27,7 @@ class EmulateEfuseController(EmulateEfuseControllerBase):
27
27
  """ esptool method start >>"""
28
28
 
29
29
  def get_major_chip_version(self):
30
- return 0
30
+ return 3
31
31
 
32
32
  def get_minor_chip_version(self):
33
33
  return 0
@@ -67,7 +67,10 @@ class EspEfuses(base_fields.EspEfusesBase):
67
67
  extend_efuse_table=None,
68
68
  ):
69
69
  self.Blocks = EfuseDefineBlocks()
70
- self.Fields = EfuseDefineFields(extend_efuse_table)
70
+ chip_revision = 300 if skip_connect else esp.get_chip_revision()
71
+ revision_file = "esp32p4_v3.0" if chip_revision >= 300 else None
72
+ print(f"Loading eFuses for {esp.CHIP_NAME} v{chip_revision / 100:.1f}...")
73
+ self.Fields = EfuseDefineFields(extend_efuse_table, revision=revision_file)
71
74
  self.REGS = EfuseDefineRegisters
72
75
  self.BURN_BLOCK_DATA_NAMES = self.Blocks.get_burn_block_data_names()
73
76
  self.BLOCKS_FOR_KEYS = self.Blocks.get_blocks_for_keys()
@@ -291,9 +294,63 @@ class EfuseField(base_fields.EfuseFieldBase):
291
294
  "keypurpose": EfuseKeyPurposeField,
292
295
  "t_sensor": EfuseTempSensor,
293
296
  "adc_tp": EfuseAdcPointCalibration,
297
+ "wafer": EfuseWafer,
298
+ "recovery_bootloader": EfuseBtldrRecoveryField,
294
299
  }.get(efuse.class_type, EfuseField)(parent, efuse)
295
300
 
296
301
 
302
+ class EfuseBtldrRecoveryField(EfuseField):
303
+ """
304
+ Handles composite recovery bootloader flash sector fields for ESP32-P4 ECO5 (v3.0).
305
+ Combines/splits the following eFuse fields:
306
+ - RECOVERY_BOOTLOADER_FLASH_SECTOR_0_1 (bits 1:0, uint:2)
307
+ - RECOVERY_BOOTLOADER_FLASH_SECTOR_2_2 (bit 2, bool)
308
+ - RECOVERY_BOOTLOADER_FLASH_SECTOR_3_6 (bits 6:3, uint:4)
309
+ - RECOVERY_BOOTLOADER_FLASH_SECTOR_7_7 (bit 7, bool)
310
+ - RECOVERY_BOOTLOADER_FLASH_SECTOR_8_10 (bits 10:8, uint:3)
311
+ - RECOVERY_BOOTLOADER_FLASH_SECTOR_11_11(bit 11, bool)
312
+ """
313
+
314
+ FIELD_ORDER = [
315
+ ("RECOVERY_BOOTLOADER_FLASH_SECTOR_0_1", 0, 2),
316
+ ("RECOVERY_BOOTLOADER_FLASH_SECTOR_2_2", 2, 1),
317
+ ("RECOVERY_BOOTLOADER_FLASH_SECTOR_3_6", 3, 4),
318
+ ("RECOVERY_BOOTLOADER_FLASH_SECTOR_7_7", 7, 1),
319
+ ("RECOVERY_BOOTLOADER_FLASH_SECTOR_8_10", 8, 3),
320
+ ("RECOVERY_BOOTLOADER_FLASH_SECTOR_11_11", 11, 1),
321
+ ]
322
+
323
+ def get(self, from_read=True):
324
+ value = 0
325
+ for field_name, bit_offset, bit_len in self.FIELD_ORDER:
326
+ field = self.parent[field_name]
327
+ field_val = field.get(from_read)
328
+ assert field.bit_len == bit_len
329
+ value |= (field_val & ((1 << bit_len) - 1)) << bit_offset
330
+ return value
331
+
332
+ def save(self, new_value):
333
+ for field_name, bit_offset, bit_len in self.FIELD_ORDER:
334
+ field = self.parent[field_name]
335
+ field_val = (new_value >> bit_offset) & ((1 << bit_len) - 1)
336
+ field.save(field_val)
337
+ print(
338
+ f"\t - '{field.name}' {field.get_bitstring()} -> {field.get_bitstring(from_read=False)}"
339
+ )
340
+
341
+
342
+ class EfuseWafer(EfuseField):
343
+ def get(self, from_read=True):
344
+ hi_bits = self.parent["WAFER_VERSION_MAJOR_HI"].get(from_read)
345
+ assert self.parent["WAFER_VERSION_MAJOR_HI"].bit_len == 1
346
+ lo_bits = self.parent["WAFER_VERSION_MAJOR_LO"].get(from_read)
347
+ assert self.parent["WAFER_VERSION_MAJOR_LO"].bit_len == 2
348
+ return (hi_bits << 2) + lo_bits
349
+
350
+ def save(self, new_value):
351
+ raise esptool.FatalError(f"Burning {self.name} is not supported")
352
+
353
+
297
354
  class EfuseTempSensor(EfuseField):
298
355
  def get(self, from_read=True):
299
356
  value = self.get_bitstring(from_read)
@@ -380,10 +437,11 @@ class EfuseMacField(EfuseField):
380
437
 
381
438
  # fmt: off
382
439
  class EfuseKeyPurposeField(EfuseField):
383
- key_purpose_len = 4 # bits for key purpose
440
+ key_purpose_len = 5 # bits for key purpose
384
441
  KeyPurposeType = Tuple[str, int, Optional[str], Optional[str], str]
385
442
  KEY_PURPOSES: List[KeyPurposeType] = [
386
443
  ("USER", 0, None, None, "no_need_rd_protect"), # User purposes (software-only use)
444
+ ("ECDSA_KEY_P256", 1, None, "Reverse", "need_rd_protect"), # ECDSA key P256
387
445
  ("ECDSA_KEY", 1, None, "Reverse", "need_rd_protect"), # ECDSA key
388
446
  ("XTS_AES_256_KEY_1", 2, None, "Reverse", "need_rd_protect"), # XTS_AES_256_KEY_1 (flash/PSRAM encryption)
389
447
  ("XTS_AES_256_KEY_2", 3, None, "Reverse", "need_rd_protect"), # XTS_AES_256_KEY_2 (flash/PSRAM encryption)
@@ -397,6 +455,10 @@ class EfuseKeyPurposeField(EfuseField):
397
455
  ("SECURE_BOOT_DIGEST2", 11, "DIGEST", None, "no_need_rd_protect"), # SECURE_BOOT_DIGEST2 (Secure Boot key digest)
398
456
  ("KM_INIT_KEY", 12, None, None, "need_rd_protect"), # init key that is used for the generation of AES/ECDSA key
399
457
  ("XTS_AES_256_KEY", -1, "VIRTUAL", None, "no_need_rd_protect"), # Virtual purpose splits to XTS_AES_256_KEY_1 and XTS_AES_256_KEY_2
458
+ ("ECDSA_KEY_P192", 16, None, "Reverse", "need_rd_protect"), # ECDSA key P192
459
+ ("ECDSA_KEY_P384_L", 17, None, "Reverse", "need_rd_protect"), # ECDSA key P384 low
460
+ ("ECDSA_KEY_P384_H", 18, None, "Reverse", "need_rd_protect"), # ECDSA key P384 high
461
+ ("ECDSA_KEY_P384", -3, "VIRTUAL", None, "need_rd_protect"), # Virtual purpose splits to ECDSA_KEY_P384_L and ECDSA_KEY_P384_H
400
462
  ]
401
463
  CUSTOM_KEY_PURPOSES: List[KeyPurposeType] = []
402
464
  for id in range(0, 1 << key_purpose_len):
@@ -436,9 +498,25 @@ class EfuseKeyPurposeField(EfuseField):
436
498
  return key[4] == "need_rd_protect"
437
499
 
438
500
  def get(self, from_read=True):
439
- for p in self.KEY_PURPOSES:
440
- if p[1] == self.get_raw(from_read):
441
- return p[0]
501
+ # Handle special case for KEY_PURPOSE_<digit>_H fields (e.g., KEY_PURPOSE_0_H ... KEY_PURPOSE_9_H)
502
+ if self.name.startswith("KEY_PURPOSE_") and self.name.endswith("_H"):
503
+ return self.get_raw(from_read)
504
+ else:
505
+ if any(
506
+ efuse is not None
507
+ and getattr(efuse, "name", None) == "KEY_PURPOSE_0_H"
508
+ for efuse in self.parent
509
+ ): # check if the hi bit field for KEY_PURPOSE_.. exists
510
+ hi_bits = self.parent[f"{self.name}_H"].get_raw(from_read)
511
+ assert self.parent[f"{self.name}_H"].bit_len == 1
512
+ lo_bits = self.parent[f"{self.name}"].get_raw(from_read)
513
+ assert self.parent[f"{self.name}"].bit_len == 4
514
+ raw_val = (hi_bits << 4) + lo_bits
515
+ else:
516
+ raw_val = self.get_raw(from_read)
517
+ for p in self.KEY_PURPOSES:
518
+ if p[1] == raw_val:
519
+ return p[0]
442
520
  return "FORBIDDEN_STATE"
443
521
 
444
522
  def get_name(self, raw_val):
@@ -448,4 +526,31 @@ class EfuseKeyPurposeField(EfuseField):
448
526
 
449
527
  def save(self, new_value):
450
528
  raw_val = int(self.check_format(str(new_value)))
451
- return super(EfuseKeyPurposeField, self).save(raw_val)
529
+ # Check if _H field exists (5-bit key purpose split into lo/hi)
530
+ if (any(
531
+ efuse is not None
532
+ and getattr(efuse, "name", None) == "KEY_PURPOSE_0_H"
533
+ for efuse in self.parent
534
+ )
535
+ and self.name.startswith("KEY_PURPOSE_")
536
+ and not self.name.endswith("_H")
537
+ ):
538
+ FIELD_ORDER = [
539
+ (self.name, 0), # lo bits (bits 0-3)
540
+ (f"{self.name}_H", 4), # hi bit (bit 4)
541
+ ]
542
+ for field_name, bit_offset in FIELD_ORDER:
543
+ field = self.parent[field_name]
544
+ field_val = (raw_val >> bit_offset) & ((1 << field.bit_len) - 1)
545
+ print(field_val, field_name)
546
+ if field_val != 0:
547
+ if field_name.endswith("_H"):
548
+ field.save(field_val)
549
+ else:
550
+ super().save(field_val)
551
+ print(
552
+ f"\t - '{field.name}' {field.get_bitstring()} -> {field.get_bitstring(from_read=False)}"
553
+ )
554
+ else:
555
+ # Single field, just save as usual
556
+ super().save(raw_val)
@@ -12,6 +12,7 @@ from ..mem_definition_base import (
12
12
  EfuseBlocksBase,
13
13
  EfuseFieldsBase,
14
14
  EfuseRegistersBase,
15
+ Field,
15
16
  )
16
17
  from typing import List
17
18
 
@@ -111,7 +112,7 @@ class EfuseDefineBlocks(EfuseBlocksBase):
111
112
 
112
113
 
113
114
  class EfuseDefineFields(EfuseFieldsBase):
114
- def __init__(self, extend_efuse_table) -> None:
115
+ def __init__(self, extend_efuse_table, revision=None) -> None:
115
116
  # List of efuse fields from TRM the chapter eFuse Controller.
116
117
  self.EFUSES = []
117
118
  self.KEYBLOCKS = []
@@ -120,6 +121,8 @@ class EfuseDefineFields(EfuseFieldsBase):
120
121
 
121
122
  dir_name = os.path.dirname(os.path.abspath(__file__))
122
123
  dir_name, file_name = os.path.split(dir_name)
124
+ if revision is not None:
125
+ file_name = revision
123
126
  file_name = file_name + ".yaml"
124
127
  dir_name, _ = os.path.split(dir_name)
125
128
  efuse_file = os.path.join(dir_name, "efuse_defs", file_name)
@@ -148,6 +151,31 @@ class EfuseDefineFields(EfuseFieldsBase):
148
151
  self.BLOCK2_CALIBRATION_EFUSES.append(efuse)
149
152
  self.ALL_EFUSES[i] = None
150
153
 
154
+ f = Field()
155
+ f.name = "WAFER_VERSION_MAJOR"
156
+ f.block = 0
157
+ f.bit_len = 3
158
+ f.type = f"uint:{f.bit_len}"
159
+ f.category = "identity"
160
+ f.class_type = "wafer"
161
+ f.description = "calc WAFER VERSION MAJOR from (WAFER_VERSION_MAJOR_HI << 2) + WAFER_VERSION_MAJOR_LO (read only)"
162
+ self.CALC.append(f)
163
+
164
+ if any(
165
+ efuse is not None
166
+ and getattr(efuse, "name", None) == "RECOVERY_BOOTLOADER_FLASH_SECTOR_0_1"
167
+ for efuse in self.ALL_EFUSES
168
+ ):
169
+ f = Field()
170
+ f.name = "RECOVERY_BOOTLOADER_FLASH_SECTOR"
171
+ f.block = 0
172
+ f.bit_len = 12
173
+ f.type = f"uint:{f.bit_len}"
174
+ f.category = "config"
175
+ f.class_type = "recovery_bootloader"
176
+ f.description = "recovery_bootloader = RECOVERY_BOOTLOADER_FLASH_SECTOR_0_1 + 2_2 + 3_6 + 7_7 + 8_10 + 11_11"
177
+ self.CALC.append(f)
178
+
151
179
  for efuse in self.ALL_EFUSES:
152
180
  if efuse is not None:
153
181
  self.EFUSES.append(efuse)
@@ -3,65 +3,65 @@ EFUSES:
3
3
  WR_DIS : {show: y, blk : 0, word: 0, pos : 0, len : 32, start : 0, type : 'uint:32', wr_dis: null, rd_dis: null, alt : '', dict : '', desc: Disable programming of individual eFuses, rloc: EFUSE_RD_WR_DIS_REG, bloc: 'B0,B1,B2,B3'}
4
4
  RD_DIS : {show: y, blk : 0, word: 1, pos : 0, len : 7, start : 32, type : 'uint:7', wr_dis : 0, rd_dis: null, alt : '', dict : '', desc: Disable reading from BlOCK4-10, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[6:0]', bloc: 'B4[6:0]'}
5
5
  BOOTLOADER_ANTI_ROLLBACK_SECURE_VERSION_HI: {show: y, blk : 0, word: 1, pos : 7, len : 1, start : 39, type : bool, wr_dis: null, rd_dis: null, alt : '', dict : '', desc: Represents the anti-rollback secure version of the 2nd stage bootloader used by the ROM bootloader (the high part of the field), rloc: 'EFUSE_RD_REPEAT_DATA0_REG[7]', bloc: 'B4[7]'}
6
- DIS_ICACHE : {show: y, blk : 0, word: 1, pos : 8, len : 1, start : 40, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: 'Represents whether cache is disabled. 1: Disabled 0: Enabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[8]', bloc: 'B5[0]'}
7
- DIS_USB_JTAG : {show: y, blk : 0, word: 1, pos : 9, len : 1, start : 41, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the USB-to-JTAG function in USB Serial/JTAG is disabled. Note that \hyperref[fielddesc:EFUSEDISUSBJTAG]{EFUSE\_DIS\_USB\_JTAG} is available only when \hyperref[fielddesc:EFUSEDISUSBSERIALJTAG]{EFUSE\_DIS\_USB\_SERIAL\_JTAG} is configured to 0. For more information; please refer to Chapter \ref{mod:bootctrl} \textit{\nameref{mod:bootctrl}}.1: Disabled0: Enabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[9]', bloc: 'B5[1]'}
8
- BOOTLOADER_ANTI_ROLLBACK_EN : {show: y, blk : 0, word: 1, pos: 10, len : 1, start : 42, type : bool, wr_dis: null, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the ani-rollback check for the 2nd stage bootloader is enabled.1: Enabled0: Disabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[10]', bloc: 'B5[2]'}
9
- DIS_USB_SERIAL_JTAG : {show: n, blk : 0, word: 1, pos: 11, len : 1, start : 43, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: 'Represents whether USB Serial/JTAG is disabled.1: Disabled0: Enabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[11]', bloc: 'B5[3]'}
10
- DIS_FORCE_DOWNLOAD : {show: y, blk : 0, word: 1, pos: 12, len : 1, start : 44, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the function that forces chip into Download mode is disabled. 1: Disabled0: Enabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[12]', bloc: 'B5[4]'}
11
- SPI_DOWNLOAD_MSPI_DIS : {show: y, blk : 0, word: 1, pos: 13, len : 1, start : 45, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: 'Represents whether SPI0 controller during boot\_mode\_download is disabled.0: Enabled1: Disabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[13]', bloc: 'B5[5]'}
12
- DIS_TWAI : {show: y, blk : 0, word: 1, pos: 14, len : 1, start : 46, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: "Represents whether TWAI$^\xAE$ function is disabled.1: Disabled0: Enabled", rloc: 'EFUSE_RD_REPEAT_DATA0_REG[14]', bloc: 'B5[6]'}
13
- JTAG_SEL_ENABLE : {show: y, blk : 0, word: 1, pos: 15, len : 1, start : 47, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the selection of a JTAG signal source through the strapping pin value is enabled when all of \hyperref[fielddesc:EFUSEDISPADJTAG]{EFUSE\_DIS\_PAD\_JTAG}; \hyperref[fielddesc:EFUSEDISUSBJTAG]{EFUSE\_DIS\_USB\_JTAG} and \hyperref[fielddesc:EFUSEDISUSBSERIALJTAG]{EFUSE\_DIS\_USB\_SERIAL\_JTAG} are configured to 0. For more information; please refer to Chapter \ref{mod:bootctrl} \textit{\nameref{mod:bootctrl}}.1: Enabled0: Disabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[15]', bloc: 'B5[7]'}
14
- SOFT_DIS_JTAG : {show: y, blk : 0, word: 1, pos: 16, len : 3, start : 48, type : 'uint:3', wr_dis : 31, rd_dis: null, alt : '', dict : '', desc: 'Represents whether PAD JTAG is disabled in the soft way. It can be restarted via HMAC. Odd count of bits with a value of 1: DisabledEven count of bits with a value of 1: Enabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[18:16]', bloc: 'B6[2:0]'}
15
- DIS_PAD_JTAG : {show: y, blk : 0, word: 1, pos: 19, len : 1, start : 51, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: 'Represents whether PAD JTAG is disabled in the hard way (permanently).1: Disabled0: Enabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[19]', bloc: 'B6[3]'}
16
- DIS_DOWNLOAD_MANUAL_ENCRYPT : {show: y, blk : 0, word: 1, pos: 20, len : 1, start : 52, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: 'Represents whether flash encryption is disabled (except in SPI boot mode).1: Disabled0: Enabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[20]', bloc: 'B6[4]'}
6
+ DIS_ICACHE : {show: y, blk : 0, word: 1, pos : 8, len : 1, start : 40, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "Enabled", 1: "Disabled"}', desc: Represents whether cache is disabled, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[8]', bloc: 'B5[0]'}
7
+ DIS_USB_JTAG : {show: y, blk : 0, word: 1, pos : 9, len : 1, start : 41, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "Enabled", 1: "Disabled"}', desc: 'Represents whether the USB-to-JTAG function in USB Serial/JTAG is disabled. Note that EFUSE_DIS_USB_JTAG is available only when EFUSE_DIS_USB_SERIAL_JTAG is configured to 0', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[9]', bloc: 'B5[1]'}
8
+ BOOTLOADER_ANTI_ROLLBACK_EN : {show: y, blk : 0, word: 1, pos: 10, len : 1, start : 42, type : bool, wr_dis: null, rd_dis: null, alt : '', dict: '{0: "Disabled", 1: "Enabled"}', desc: Represents whether the ani-rollback check for the 2nd stage bootloader is enabled, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[10]', bloc: 'B5[2]'}
9
+ DIS_USB_SERIAL_JTAG : {show: n, blk : 0, word: 1, pos: 11, len : 1, start : 43, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "Enabled", 1: "Disabled"}', desc: Represents whether USB Serial/JTAG is disabled, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[11]', bloc: 'B5[3]'}
10
+ DIS_FORCE_DOWNLOAD : {show: y, blk : 0, word: 1, pos: 12, len : 1, start : 44, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "Enabled", 1: "Disabled"}', desc: Represents whether the function that forces chip into Download mode is disabled, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[12]', bloc: 'B5[4]'}
11
+ SPI_DOWNLOAD_MSPI_DIS : {show: y, blk : 0, word: 1, pos: 13, len : 1, start : 45, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "Enabled", 1: "Disabled"}', desc: Represents whether SPI0 controller during boot_mode_download is disabled, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[13]', bloc: 'B5[5]'}
12
+ DIS_TWAI : {show: y, blk : 0, word: 1, pos: 14, len : 1, start : 46, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "Enabled", 1: "Disabled"}', desc: Represents whether TWAI function is disabled, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[14]', bloc: 'B5[6]'}
13
+ JTAG_SEL_ENABLE : {show: y, blk : 0, word: 1, pos: 15, len : 1, start : 47, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "Disabled", 1: "Enabled"}', desc: 'Represents whether the selection of a JTAG signal source through the strapping pin value is enabled when all of EFUSE_DIS_PAD_JTAG; EFUSE_DIS_USB_JTAG and EFUSE_DIS_USB_SERIAL_JTAG are configured to 0', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[15]', bloc: 'B5[7]'}
14
+ SOFT_DIS_JTAG : {show: y, blk : 0, word: 1, pos: 16, len : 3, start : 48, type : 'uint:3', wr_dis : 31, rd_dis: null, alt : '', dict : '', desc: 'Represents whether PAD JTAG is disabled in the soft way. It can be restarted via HMAC. Odd count of bits with a value of 1: Disabled; Even count of bits with a value of 1: Enabled', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[18:16]', bloc: 'B6[2:0]'}
15
+ DIS_PAD_JTAG : {show: y, blk : 0, word: 1, pos: 19, len : 1, start : 51, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "Enabled", 1: "Disabled"}', desc: Represents whether PAD JTAG is disabled in the hard way (permanently), rloc: 'EFUSE_RD_REPEAT_DATA0_REG[19]', bloc: 'B6[3]'}
16
+ DIS_DOWNLOAD_MANUAL_ENCRYPT : {show: y, blk : 0, word: 1, pos: 20, len : 1, start : 52, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "Enabled", 1: "Disabled"}', desc: Represents whether flash encryption is disabled (except in SPI boot mode), rloc: 'EFUSE_RD_REPEAT_DATA0_REG[20]', bloc: 'B6[4]'}
17
17
  USB_DREFH : {show: n, blk : 0, word: 1, pos: 21, len : 2, start : 53, type : 'uint:2', wr_dis : 30, rd_dis: null, alt : '', dict : '', desc: Represents the single-end input threshold vrefh; 1.76 V to 2 V with step of 80 mV, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[22:21]', bloc: 'B6[6:5]'}
18
18
  USB_DREFL : {show: n, blk : 0, word: 1, pos: 23, len : 2, start : 55, type : 'uint:2', wr_dis : 30, rd_dis: null, alt : '', dict : '', desc: Represents the single-end input threshold vrefl; 1.76 V to 2 V with step of 80 mV, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[24:23]', bloc: 'B6[7],B7[0]'}
19
- USB_EXCHG_PINS : {show: y, blk : 0, word: 1, pos: 25, len : 1, start : 57, type : bool, wr_dis : 30, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the D+ and D- pins is exchanged.1: Exchanged0: Not exchanged', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[25]', bloc: 'B7[1]'}
20
- VDD_SPI_AS_GPIO : {show: y, blk : 0, word: 1, pos: 26, len : 1, start : 58, type : bool, wr_dis : 30, rd_dis: null, alt : '', dict : '', desc: 'Represents whether VDD SPI pin is functioned as GPIO.1: Functioned0: Not functioned', rloc: 'EFUSE_RD_REPEAT_DATA0_REG[26]', bloc: 'B7[2]'}
21
- WDT_DELAY_SEL : {show: y, blk : 0, word: 1, pos: 27, len : 2, start : 59, type : 'uint:2', wr_dis : 3, rd_dis: null, alt : '', dict : '', desc: "Represents RTC watchdog timeout threshold.0: The originally configured STG0 threshold \xD7 21: The originally configured STG0 threshold \xD7 42: The originally configured STG0 threshold \xD7 83: The originally configured STG0 threshold \xD7 16", rloc: 'EFUSE_RD_REPEAT_DATA0_REG[28:27]', bloc: 'B7[4:3]'}
19
+ USB_EXCHG_PINS : {show: y, blk : 0, word: 1, pos: 25, len : 1, start : 57, type : bool, wr_dis : 30, rd_dis: null, alt : '', dict: '{0: "Not exchanged", 1: "Exchanged"}', desc: Represents whether the D+ and D- pins is exchanged, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[25]', bloc: 'B7[1]'}
20
+ VDD_SPI_AS_GPIO : {show: y, blk : 0, word: 1, pos: 26, len : 1, start : 58, type : bool, wr_dis : 30, rd_dis: null, alt : '', dict: '{0: "Not functioned", 1: "Functioned"}', desc: Represents whether VDD SPI pin is functioned as GPIO, rloc: 'EFUSE_RD_REPEAT_DATA0_REG[26]', bloc: 'B7[2]'}
21
+ WDT_DELAY_SEL : {show: y, blk : 0, word: 1, pos: 27, len : 2, start : 59, type : 'uint:2', wr_dis : 3, rd_dis: null, alt : '', dict : '', desc: "Represents RTC watchdog timeout threshold. The originally configured STG0 threshold * (2 ^ (EFUSE_WDT_DELAY_SEL + 1))", rloc: 'EFUSE_RD_REPEAT_DATA0_REG[28:27]', bloc: 'B7[4:3]'}
22
22
  BOOTLOADER_ANTI_ROLLBACK_SECURE_VERSION_LO: {show: y, blk : 0, word: 1, pos: 29, len : 3, start : 61, type : 'uint:3', wr_dis: null, rd_dis: null, alt : '', dict : '', desc: Represents the anti-rollback secure version of the 2nd stage bootloader used by the ROM bootloader (the low part of the field), rloc: 'EFUSE_RD_REPEAT_DATA0_REG[31:29]', bloc: 'B7[7:5]'}
23
- KM_DISABLE_DEPLOY_MODE : {show: y, blk : 0, word: 2, pos : 0, len : 4, start : 64, type : 'uint:4', wr_dis : 1, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the new key deployment of key manager is disabled. Bit0: Represents whether the new ECDSA key deployment is disabled0: Enabled1: DisabledBit1: Represents whether the new XTS-AES (flash and PSRAM) key deployment is disabled0: Enabled1: DisabledBit2: Represents whether the new HMAC key deployment is disabled0: Enabled1: DisabledBit3: Represents whether the new DS key deployment is disabled0: Enabled1: Disabled', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[3:0]', bloc: 'B8[3:0]'}
24
- KM_RND_SWITCH_CYCLE : {show: y, blk : 0, word: 2, pos : 4, len : 2, start : 68, type : 'uint:2', wr_dis : 1, rd_dis: null, alt : '', dict : '', desc: 'Represents the cycle at which the Key Manager switches random numbers.0: Controlled by the \hyperref[fielddesc:KEYMNGRNDSWITCHCYCLE]{KEYMNG\_RND\_SWITCH\_CYCLE} register. For more information; please refer to Chapter \ref{mod:keymng} \textit{\nameref{mod:keymng}}1: 8 Key Manager clock cycles2: 16 Key Manager clock cycles3: 32 Key Manager clock cycles', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[5:4]', bloc: 'B8[5:4]'}
25
- KM_DEPLOY_ONLY_ONCE : {show: y, blk : 0, word: 2, pos : 6, len : 4, start : 70, type : 'uint:4', wr_dis : 1, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the corresponding key can be deployed only once.Bit0: Represents whether the ECDSA key can be deployed only once0: The key can be deployed multiple times1: The key can be deployed only onceBit1: Represents whether the XTS-AES (flash and PSRAM) key can be deployed only once0: The key can be deployed multiple times1: The key can be deployed only onceBit2: Represents whether the HMAC key can be deployed only once0: The key can be deployed multiple times1: The key can be deployed only onceBit3: Represents whether the DS key can be deployed only once0: The key can be deployed multiple times1: The key can be deployed only once', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[9:6]', bloc: 'B8[7:6],B9[1:0]'}
26
- FORCE_USE_KEY_MANAGER_KEY : {show: y, blk : 0, word: 2, pos: 10, len : 4, start : 74, type : 'uint:4', wr_dis : 1, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the corresponding key must come from Key Manager. Bit0: Represents whether the ECDSA key must come from Key Manager.0: The key does not need to come from Key Manager1: The key must come from Key ManagerBit1: Represents whether the XTS-AES (flash and PSRAM) key must come from Key Manager.0: The key does not need to come from Key Manager1: The key must come from Key ManagerBit2: Represents whether the HMAC key must come from Key Manager.0: The key does not need to come from Key Manager1: The key must come from Key ManagerBit3: Represents whether the DS key must come from Key Manager.0: The key does not need to come from Key Manager1: The key must come from Key Manager', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[13:10]', bloc: 'B9[5:2]'}
27
- FORCE_DISABLE_SW_INIT_KEY : {show: y, blk : 0, word: 2, pos: 14, len : 1, start : 78, type : bool, wr_dis : 1, rd_dis: null, alt : '', dict : '', desc: 'Represents whether to disable the use of the initialization key written by software and instead force use efuse\_init\_key.0: Enable1: Disable', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[14]', bloc: 'B9[6]'}
28
- BOOTLOADER_ANTI_ROLLBACK_UPDATE_IN_ROM : {show: y, blk : 0, word: 2, pos: 15, len : 1, start : 79, type : bool, wr_dis: null, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the ani-rollback SECURE_VERSION will be updated from the ROM bootloader.1: Enable0: Disable', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[15]', bloc: 'B9[7]'}
23
+ KM_DISABLE_DEPLOY_MODE : {show: y, blk : 0, word: 2, pos : 0, len : 4, start : 64, type : 'uint:4', wr_dis : 1, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the new key deployment of key manager is disabled. Bit0: ECDSA key deployment (0: Enabled, 1: Disabled). Bit1: XTS-AES (flash and PSRAM) key deployment (0: Enabled, 1: Disabled). Bit2: HMAC key deployment (0: Enabled, 1: Disabled). Bit3: DS key deployment (0: Enabled, 1: Disabled)', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[3:0]', bloc: 'B8[3:0]'}
24
+ KM_RND_SWITCH_CYCLE : {show: y, blk : 0, word: 2, pos : 4, len : 2, start : 68, type : 'uint:2', wr_dis : 1, rd_dis: null, alt : '', dict: '{0: "Controlled by the KEYMNG_RND_SWITCH_CYCLE register", 1: "8 Key Manager clock cycles", 2: "16 Key Manager clock cycles", 3: "32 Key Manager clock cycles"}', desc: Represents the cycle at which the Key Manager switches random numbers, rloc: 'EFUSE_RD_REPEAT_DATA1_REG[5:4]', bloc: 'B8[5:4]'}
25
+ KM_DEPLOY_ONLY_ONCE : {show: y, blk : 0, word: 2, pos : 6, len : 4, start : 70, type : 'uint:4', wr_dis : 1, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the corresponding key can be deployed only once. Bit0: ECDSA key (0: Multiple times, 1: Only once). Bit1: XTS-AES (flash and PSRAM) key (0: Multiple times, 1: Only once). Bit2: HMAC key (0: Multiple times, 1: Only once). Bit3: DS key (0: Multiple times, 1: Only once)', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[9:6]', bloc: 'B8[7:6],B9[1:0]'}
26
+ FORCE_USE_KEY_MANAGER_KEY : {show: y, blk : 0, word: 2, pos: 10, len : 4, start : 74, type : 'uint:4', wr_dis : 1, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the corresponding key must come from Key Manager. Bit0: ECDSA key (0: Not required, 1: Required). Bit1: XTS-AES (flash and PSRAM) key (0: Not required, 1: Required). Bit2: HMAC key (0: Not required, 1: Required). Bit3: DS key (0: Not required, 1: Required)', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[13:10]', bloc: 'B9[5:2]'}
27
+ FORCE_DISABLE_SW_INIT_KEY : {show: y, blk : 0, word: 2, pos: 14, len : 1, start : 78, type : bool, wr_dis : 1, rd_dis: null, alt : '', dict: '{0: "Enable", 1: "Disable"}', desc: Represents whether to disable the use of the initialization key written by software and instead force use efuse_init_key, rloc: 'EFUSE_RD_REPEAT_DATA1_REG[14]', bloc: 'B9[6]'}
28
+ BOOTLOADER_ANTI_ROLLBACK_UPDATE_IN_ROM : {show: y, blk : 0, word: 2, pos: 15, len : 1, start : 79, type : bool, wr_dis: null, rd_dis: null, alt : '', dict: '{0: "Disable", 1: "Enable"}', desc: Represents whether the ani-rollback SECURE_VERSION will be updated from the ROM bootloader, rloc: 'EFUSE_RD_REPEAT_DATA1_REG[15]', bloc: 'B9[7]'}
29
29
  SPI_BOOT_CRYPT_CNT : {show: y, blk : 0, word: 2, pos: 16, len : 3, start : 80, type : 'uint:3', wr_dis : 4, rd_dis: null, alt : '', dict: '{0: "Disable", 1: "Enable", 3: "Disable", 7: "Enable"}', desc: Enables flash encryption when 1 or 3 bits are set and disables otherwise, rloc: 'EFUSE_RD_REPEAT_DATA1_REG[18:16]', bloc: 'B10[2:0]'}
30
30
  SECURE_BOOT_KEY_REVOKE0 : {show: y, blk : 0, word: 2, pos: 19, len : 1, start : 83, type : bool, wr_dis : 5, rd_dis: null, alt : '', dict : '', desc: Revoke 1st secure boot key, rloc: 'EFUSE_RD_REPEAT_DATA1_REG[19]', bloc: 'B10[3]'}
31
31
  SECURE_BOOT_KEY_REVOKE1 : {show: y, blk : 0, word: 2, pos: 20, len : 1, start : 84, type : bool, wr_dis : 6, rd_dis: null, alt : '', dict : '', desc: Revoke 2nd secure boot key, rloc: 'EFUSE_RD_REPEAT_DATA1_REG[20]', bloc: 'B10[4]'}
32
32
  SECURE_BOOT_KEY_REVOKE2 : {show: y, blk : 0, word: 2, pos: 21, len : 1, start : 85, type : bool, wr_dis : 7, rd_dis: null, alt : '', dict : '', desc: Revoke 3rd secure boot key, rloc: 'EFUSE_RD_REPEAT_DATA1_REG[21]', bloc: 'B10[5]'}
33
- KEY_PURPOSE_0 : {show: y, blk : 0, word: 2, pos: 22, len : 5, start : 86, type : 'uint:5', wr_dis : 8, rd_dis: null, alt : KEY0_PURPOSE, dict : '', desc: 'Represents the purpose of Key0. See Table \ref{tab:efuse-key-purpose}', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[26:22]', bloc: 'B10[7:6],B11[2:0]'}
34
- KEY_PURPOSE_1 : {show: y, blk : 0, word: 2, pos: 27, len : 5, start : 91, type : 'uint:5', wr_dis : 9, rd_dis: null, alt : KEY1_PURPOSE, dict : '', desc: 'Represents the purpose of Key1. See Table \ref{tab:efuse-key-purpose}', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[31:27]', bloc: 'B11[7:3]'}
35
- KEY_PURPOSE_2 : {show: y, blk : 0, word: 3, pos : 0, len : 5, start : 96, type : 'uint:5', wr_dis : 10, rd_dis: null, alt : KEY2_PURPOSE, dict : '', desc: 'Represents the purpose of Key2. See Table \ref{tab:efuse-key-purpose}', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[4:0]', bloc: 'B12[4:0]'}
36
- KEY_PURPOSE_3 : {show: y, blk : 0, word: 3, pos : 5, len : 5, start: 101, type : 'uint:5', wr_dis : 11, rd_dis: null, alt : KEY3_PURPOSE, dict : '', desc: 'Represents the purpose of Key3. See Table \ref{tab:efuse-key-purpose}', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[9:5]', bloc: 'B12[7:5],B13[1:0]'}
37
- KEY_PURPOSE_4 : {show: y, blk : 0, word: 3, pos: 10, len : 5, start: 106, type : 'uint:5', wr_dis : 12, rd_dis: null, alt : KEY4_PURPOSE, dict : '', desc: 'Represents the purpose of Key4. See Table \ref{tab:efuse-key-purpose}', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[14:10]', bloc: 'B13[6:2]'}
38
- KEY_PURPOSE_5 : {show: y, blk : 0, word: 3, pos: 15, len : 5, start: 111, type : 'uint:5', wr_dis : 13, rd_dis: null, alt : KEY5_PURPOSE, dict : '', desc: 'Represents the purpose of Key5. See Table \ref{tab:efuse-key-purpose}', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[19:15]', bloc: 'B13[7],B14[3:0]'}
39
- SEC_DPA_LEVEL : {show: y, blk : 0, word: 3, pos: 20, len : 2, start: 116, type : 'uint:2', wr_dis : 14, rd_dis: null, alt : '', dict : '', desc: 'Represents the security level of anti-DPA attack. The level is adjusted by configuring the clock random frequency division mode.0: Security level is SEC\_DPA\_OFF1: Security level is SEC\_DPA\_LOW2: Security level is SEC\_DPA\_MIDDLE3: Security level is SEC\_DPA\_HIGHFor more information; please refer to Chapter \ref{mod:sysreg} \textit{\nameref{mod:sysreg}} > Section \ref{sec:sysreg-anti-dpa-attack-security-control} \textit{\nameref{sec:sysreg-anti-dpa-attack-security-control}}.', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[21:20]', bloc: 'B14[5:4]'}
33
+ KEY_PURPOSE_0 : {show: y, blk : 0, word: 2, pos: 22, len : 5, start : 86, type : 'uint:5', wr_dis : 8, rd_dis: null, alt : KEY0_PURPOSE, dict : '', desc: 'Represents the purpose of Key0.', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[26:22]', bloc: 'B10[7:6],B11[2:0]'}
34
+ KEY_PURPOSE_1 : {show: y, blk : 0, word: 2, pos: 27, len : 5, start : 91, type : 'uint:5', wr_dis : 9, rd_dis: null, alt : KEY1_PURPOSE, dict : '', desc: 'Represents the purpose of Key1.', rloc: 'EFUSE_RD_REPEAT_DATA1_REG[31:27]', bloc: 'B11[7:3]'}
35
+ KEY_PURPOSE_2 : {show: y, blk : 0, word: 3, pos : 0, len : 5, start : 96, type : 'uint:5', wr_dis : 10, rd_dis: null, alt : KEY2_PURPOSE, dict : '', desc: 'Represents the purpose of Key2.', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[4:0]', bloc: 'B12[4:0]'}
36
+ KEY_PURPOSE_3 : {show: y, blk : 0, word: 3, pos : 5, len : 5, start: 101, type : 'uint:5', wr_dis : 11, rd_dis: null, alt : KEY3_PURPOSE, dict : '', desc: 'Represents the purpose of Key3.', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[9:5]', bloc: 'B12[7:5],B13[1:0]'}
37
+ KEY_PURPOSE_4 : {show: y, blk : 0, word: 3, pos: 10, len : 5, start: 106, type : 'uint:5', wr_dis : 12, rd_dis: null, alt : KEY4_PURPOSE, dict : '', desc: 'Represents the purpose of Key4.', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[14:10]', bloc: 'B13[6:2]'}
38
+ KEY_PURPOSE_5 : {show: y, blk : 0, word: 3, pos: 15, len : 5, start: 111, type : 'uint:5', wr_dis : 13, rd_dis: null, alt : KEY5_PURPOSE, dict : '', desc: 'Represents the purpose of Key5.', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[19:15]', bloc: 'B13[7],B14[3:0]'}
39
+ SEC_DPA_LEVEL : {show: y, blk : 0, word: 3, pos: 20, len : 2, start: 116, type : 'uint:2', wr_dis : 14, rd_dis: null, alt : '', dict: '{0: "SEC_DPA_OFF", 1: "SEC_DPA_LOW", 2: "SEC_DPA_MIDDLE", 3: "SEC_DPA_HIGH"}', desc: Represents the security level of anti-DPA attack. The level is adjusted by configuring the clock random frequency division mode, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[21:20]', bloc: 'B14[5:4]'}
40
40
  RECOVERY_BOOTLOADER_FLASH_SECTOR_HI : {show: y, blk : 0, word: 3, pos: 22, len : 3, start: 118, type : 'uint:3', wr_dis: null, rd_dis: null, alt : '', dict : '', desc: Represents the starting flash sector (flash sector size is 0x1000) of the recovery bootloader used by the ROM bootloader If the primary bootloader fails. 0 and 0xFFF - this feature is disabled. (The high part of the field), rloc: 'EFUSE_RD_REPEAT_DATA2_REG[24:22]', bloc: 'B14[7:6],B15[0]'}
41
- SECURE_BOOT_EN : {show: y, blk : 0, word: 3, pos: 25, len : 1, start: 121, type : bool, wr_dis : 15, rd_dis: null, alt : '', dict : '', desc: 'Represents whether Secure Boot is enabled.1: Enabled0: Disabled', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[25]', bloc: 'B15[1]'}
42
- SECURE_BOOT_AGGRESSIVE_REVOKE : {show: y, blk : 0, word: 3, pos: 26, len : 1, start: 122, type : bool, wr_dis : 16, rd_dis: null, alt : '', dict : '', desc: 'Represents whether aggressive revocation of Secure Boot is enabled.1: Enabled0: Disabled', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[26]', bloc: 'B15[2]'}
43
- KM_XTS_KEY_LENGTH_256 : {show: y, blk : 0, word: 3, pos: 27, len : 1, start: 123, type : bool, wr_dis : 1, rd_dis: null, alt : '', dict : '', desc: 'Represents which key flash encryption uses.0: XTS-AES-256 key1: XTS-AES-128 key', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[27]', bloc: 'B15[3]'}
41
+ SECURE_BOOT_EN : {show: y, blk : 0, word: 3, pos: 25, len : 1, start: 121, type : bool, wr_dis : 15, rd_dis: null, alt : '', dict: '{0: "Disabled", 1: "Enabled"}', desc: Represents whether Secure Boot is enabled, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[25]', bloc: 'B15[1]'}
42
+ SECURE_BOOT_AGGRESSIVE_REVOKE : {show: y, blk : 0, word: 3, pos: 26, len : 1, start: 122, type : bool, wr_dis : 16, rd_dis: null, alt : '', dict: '{0: "Disabled", 1: "Enabled"}', desc: Represents whether aggressive revocation of Secure Boot is enabled, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[26]', bloc: 'B15[2]'}
43
+ KM_XTS_KEY_LENGTH_256 : {show: y, blk : 0, word: 3, pos: 27, len : 1, start: 123, type : bool, wr_dis : 1, rd_dis: null, alt : '', dict: '{0: "XTS-AES-256 key", 1: "XTS-AES-128 key"}', desc: Represents which key flash encryption uses, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[27]', bloc: 'B15[3]'}
44
44
  FLASH_TPUW : {show: y, blk : 0, word: 3, pos: 28, len : 4, start: 124, type : 'uint:4', wr_dis : 18, rd_dis: null, alt : '', dict : '', desc: 'Represents the flash waiting time after power-up. Measurement unit: ms. When the value is less than 15; the waiting time is the programmed value. Otherwise; the waiting time is a fixed value; i.e. 30 ms', rloc: 'EFUSE_RD_REPEAT_DATA2_REG[31:28]', bloc: 'B15[7:4]'}
45
- DIS_DOWNLOAD_MODE : {show: y, blk : 0, word: 4, pos : 0, len : 1, start: 128, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict : '', desc: 'Represents whether Download mode is disable or enable. 1. Disable 0: Enable', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[0]', bloc: 'B16[0]'}
46
- DIS_DIRECT_BOOT : {show: y, blk : 0, word: 4, pos : 1, len : 1, start: 129, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict : '', desc: 'Represents whether direct boot mode is disabled or enabled. 1. Disable 0: Enable', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[1]', bloc: 'B16[1]'}
47
- DIS_USB_SERIAL_JTAG_ROM_PRINT : {show: y, blk : 0, word: 4, pos : 2, len : 1, start: 130, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict : '', desc: 'Represents whether print from USB-Serial-JTAG is disabled or enabled. 1. Disable 0: Enable', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[2]', bloc: 'B16[2]'}
48
- LOCK_KM_KEY : {show: y, blk : 0, word: 4, pos : 3, len : 1, start: 131, type : bool, wr_dis : 1, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the keys in the Key Manager are locked after deployment.0: Not locked1: Locked', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[3]', bloc: 'B16[3]'}
49
- DIS_USB_SERIAL_JTAG_DOWNLOAD_MODE : {show: y, blk : 0, word: 4, pos : 4, len : 1, start: 132, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the USB-Serial-JTAG download function is disabled or enabled. 1: Disable 0: Enable', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[4]', bloc: 'B16[4]'}
50
- ENABLE_SECURITY_DOWNLOAD : {show: y, blk : 0, word: 4, pos : 5, len : 1, start: 133, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict : '', desc: 'Represents whether security download is enabled. Only downloading into flash is supported. Reading/writing RAM or registers is not supported (i.e. stub download is not supported).1: Enabled0: Disabled', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[5]', bloc: 'B16[5]'}
51
- UART_PRINT_CONTROL : {show: y, blk : 0, word: 4, pos : 6, len : 2, start: 134, type : 'uint:2', wr_dis : 18, rd_dis: null, alt : '', dict: '{0: "Enable", 1: "Enable when GPIO8 is low at reset", 2: "Enable when GPIO8 is high at reset", 3: "Disable"}', desc: Set the default UARTboot message output mode, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[7:6]', bloc: 'B16[7:6]'}
52
- FORCE_SEND_RESUME : {show: y, blk : 0, word: 4, pos : 8, len : 1, start: 136, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict : '', desc: 'Represents whether ROM code is forced to send a resume command during SPI boot.1: Forced. 0: Not forced.', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[8]', bloc: 'B17[0]'}
45
+ DIS_DOWNLOAD_MODE : {show: y, blk : 0, word: 4, pos : 0, len : 1, start: 128, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict: '{0: "Enable", 1: "Disable"}', desc: Represents whether Download mode is disable or enable, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[0]', bloc: 'B16[0]'}
46
+ DIS_DIRECT_BOOT : {show: y, blk : 0, word: 4, pos : 1, len : 1, start: 129, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict: '{0: "Enable", 1: "Disable"}', desc: Represents whether direct boot mode is disabled or enabled, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[1]', bloc: 'B16[1]'}
47
+ DIS_USB_SERIAL_JTAG_ROM_PRINT : {show: y, blk : 0, word: 4, pos : 2, len : 1, start: 130, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict: '{0: "Enable", 1: "Disable"}', desc: Represents whether print from USB-Serial-JTAG is disabled or enabled, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[2]', bloc: 'B16[2]'}
48
+ LOCK_KM_KEY : {show: y, blk : 0, word: 4, pos : 3, len : 1, start: 131, type : bool, wr_dis : 1, rd_dis: null, alt : '', dict: '{0: "Not locked", 1: "Locked"}', desc: Represents whether the keys in the Key Manager are locked after deployment, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[3]', bloc: 'B16[3]'}
49
+ DIS_USB_SERIAL_JTAG_DOWNLOAD_MODE : {show: y, blk : 0, word: 4, pos : 4, len : 1, start: 132, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict: '{0: "Enable", 1: "Disable"}', desc: Represents whether the USB-Serial-JTAG download function is disabled or enabled, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[4]', bloc: 'B16[4]'}
50
+ ENABLE_SECURITY_DOWNLOAD : {show: y, blk : 0, word: 4, pos : 5, len : 1, start: 133, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict: '{0: "Disabled", 1: "Enabled"}', desc: 'Represents whether security download is enabled. Only downloading into flash is supported. Reading/writing RAM or registers is not supported (i.e. stub download is not supported)', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[5]', bloc: 'B16[5]'}
51
+ UART_PRINT_CONTROL : {show: y, blk : 0, word: 4, pos : 6, len : 2, start: 134, type : 'uint:2', wr_dis : 18, rd_dis: null, alt : '', dict: '{0: "Enable", 1: "Enable when GPIO8 is low at reset", 2: "Enable when GPIO8 is high at reset", 3: "Disable"}', desc: Set the default UART boot message output mode, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[7:6]', bloc: 'B16[7:6]'}
52
+ FORCE_SEND_RESUME : {show: y, blk : 0, word: 4, pos : 8, len : 1, start: 136, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict: '{0: "Not forced", 1: "Forced"}', desc: Represents whether ROM code is forced to send a resume command during SPI boot, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[8]', bloc: 'B17[0]'}
53
53
  SECURE_VERSION : {show: y, blk : 0, word: 4, pos : 9, len : 9, start: 137, type : 'uint:9', wr_dis : 18, rd_dis: null, alt : '', dict : '', desc: Represents the app secure version used by ESP-IDF anti-rollback feature, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[17:9]', bloc: 'B17[7:1],B18[1:0]'}
54
54
  RESERVE_0_146 : {show: n, blk : 0, word: 4, pos: 18, len : 7, start: 146, type : 'uint:7', wr_dis: null, rd_dis: null, alt : '', dict : '', desc: Reserved; it was created by set_missed_fields_in_regs func, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[24:18]', bloc: 'B18[7:2],B19[0]'}
55
- SECURE_BOOT_DISABLE_FAST_WAKE : {show: y, blk : 0, word: 4, pos: 25, len : 1, start: 153, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict : '', desc: 'Represents whether FAST VERIFY ON WAKE is disabled when Secure Boot is enabled.1: Disabled0: Enabled', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[25]', bloc: 'B19[1]'}
56
- HYS_EN_PAD : {show: y, blk : 0, word: 4, pos: 26, len : 1, start: 154, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: "Represents whether the hysteresis function of PAD0 \u2013 PAD27 is enabled.1: Enabled0: Disabled", rloc: 'EFUSE_RD_REPEAT_DATA3_REG[26]', bloc: 'B19[2]'}
57
- XTS_DPA_PSEUDO_LEVEL : {show: y, blk : 0, word: 4, pos: 27, len : 2, start: 155, type : 'uint:2', wr_dis : 14, rd_dis: null, alt : '', dict : '', desc: 'Represents the pseudo round level of XTS-AES anti-DPA attack.0: Disabled1: Low2: Moderate3: High', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[28:27]', bloc: 'B19[4:3]'}
58
- XTS_DPA_CLK_ENABLE : {show: y, blk : 0, word: 4, pos: 29, len : 1, start: 157, type : bool, wr_dis : 14, rd_dis: null, alt : '', dict : '', desc: 'Represents whether XTS-AES anti-DPA attack clock is enabled.0: Disable1: Enabled', rloc: 'EFUSE_RD_REPEAT_DATA3_REG[29]', bloc: 'B19[5]'}
55
+ SECURE_BOOT_DISABLE_FAST_WAKE : {show: y, blk : 0, word: 4, pos: 25, len : 1, start: 153, type : bool, wr_dis : 18, rd_dis: null, alt : '', dict: '{0: "Enabled", 1: "Disabled"}', desc: Represents whether FAST VERIFY ON WAKE is disabled when Secure Boot is enabled, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[25]', bloc: 'B19[1]'}
56
+ HYS_EN_PAD : {show: y, blk : 0, word: 4, pos: 26, len : 1, start: 154, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "Disabled", 1: "Enabled"}', desc: Represents whether the hysteresis function of PAD0 - PAD27 is enabled, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[26]', bloc: 'B19[2]'}
57
+ XTS_DPA_PSEUDO_LEVEL : {show: y, blk : 0, word: 4, pos: 27, len : 2, start: 155, type : 'uint:2', wr_dis : 14, rd_dis: null, alt : '', dict: '{0: "Disabled", 1: "Low", 2: "Moderate", 3: "High"}', desc: Represents the pseudo round level of XTS-AES anti-DPA attack, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[28:27]', bloc: 'B19[4:3]'}
58
+ XTS_DPA_CLK_ENABLE : {show: y, blk : 0, word: 4, pos: 29, len : 1, start: 157, type : bool, wr_dis : 14, rd_dis: null, alt : '', dict: '{0: "Disable", 1: "Enabled"}', desc: Represents whether XTS-AES anti-DPA attack clock is enabled, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[29]', bloc: 'B19[5]'}
59
59
  RESERVE_0_158 : {show: n, blk : 0, word: 4, pos: 30, len : 1, start: 158, type : bool, wr_dis: null, rd_dis: null, alt : '', dict : '', desc: Reserved; it was created by set_missed_fields_in_regs func, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[30]', bloc: 'B19[6]'}
60
60
  SECURE_BOOT_SHA384_EN : {show: y, blk : 0, word: 4, pos: 31, len : 1, start: 159, type : bool, wr_dis : 14, rd_dis: null, alt : '', dict : '', desc: Represents if the chip supports Secure Boot using SHA-384, rloc: 'EFUSE_RD_REPEAT_DATA3_REG[31]', bloc: 'B19[7]'}
61
- HUK_GEN_STATE : {show: y, blk : 0, word: 5, pos : 0, len : 9, start: 160, type : 'uint:9', wr_dis : 19, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the HUK generate mode is valid.Odd count of bits with a value of 1: InvalidEven count of bits with a value of 1: Valid', rloc: 'EFUSE_RD_REPEAT_DATA4_REG[8:0]', bloc: 'B20,B21[0]'}
62
- XTAL_48M_SEL : {show: y, blk : 0, word: 5, pos : 9, len : 3, start: 169, type : 'uint:3', wr_dis : 17, rd_dis: null, alt : '', dict : '', desc: 'Represents whether XTAL frequency is 48MHz or not. If not; 40MHz XTAL will be used. If this field contains Odd number bit 1: Enable 48MHz XTAL\ Even number bit 1: Enable 40MHz XTAL', rloc: 'EFUSE_RD_REPEAT_DATA4_REG[11:9]', bloc: 'B21[3:1]'}
63
- XTAL_48M_SEL_MODE : {show: y, blk : 0, word: 5, pos: 12, len : 1, start: 172, type : bool, wr_dis : 17, rd_dis: null, alt : '', dict : '', desc: 'Represents what determines the XTAL frequency in \textbf{Joint Download Boot} mode. For more information; please refer to Chapter \ref{mod:bootctrl} \textit{\nameref{mod:bootctrl}}.0: Strapping PAD state1: \hyperref[fielddesc:EFUSEXTAL48MSEL]{EFUSE\_XTAL\_48M\_SEL} in eFuse', rloc: 'EFUSE_RD_REPEAT_DATA4_REG[12]', bloc: 'B21[4]'}
64
- ECC_FORCE_CONST_TIME : {show: y, blk : 0, word: 5, pos: 13, len : 1, start: 173, type : bool, wr_dis : 14, rd_dis: null, alt : '', dict : '', desc: 'Represents whether to force ECC to use constant-time mode for point multiplication calculation. 0: Not force1: Force', rloc: 'EFUSE_RD_REPEAT_DATA4_REG[13]', bloc: 'B21[5]'}
61
+ HUK_GEN_STATE : {show: y, blk : 0, word: 5, pos : 0, len : 9, start: 160, type : 'uint:9', wr_dis : 19, rd_dis: null, alt : '', dict : '', desc: 'Represents whether the HUK generate mode is valid. Odd count of bits with a value of 1: Invalid; Even count of bits with a value of 1: Valid', rloc: 'EFUSE_RD_REPEAT_DATA4_REG[8:0]', bloc: 'B20,B21[0]'}
62
+ XTAL_48M_SEL : {show: y, blk : 0, word: 5, pos : 9, len : 3, start: 169, type : 'uint:3', wr_dis : 17, rd_dis: null, alt : '', dict : '', desc: 'Represents whether XTAL frequency is 48MHz or not. If not; 40MHz XTAL will be used. If this field contains Odd number bit 1: Enable 48MHz XTAL; Even number bit 1: Enable 40MHz XTAL', rloc: 'EFUSE_RD_REPEAT_DATA4_REG[11:9]', bloc: 'B21[3:1]'}
63
+ XTAL_48M_SEL_MODE : {show: y, blk : 0, word: 5, pos: 12, len : 1, start: 172, type : bool, wr_dis : 17, rd_dis: null, alt : '', dict: '{0: "Strapping PAD state", 1: "EFUSE_XTAL_48M_SEL in eFuse"}', desc: Represents what determines the XTAL frequency in Joint Download Boot mode, rloc: 'EFUSE_RD_REPEAT_DATA4_REG[12]', bloc: 'B21[4]'}
64
+ ECC_FORCE_CONST_TIME : {show: y, blk : 0, word: 5, pos: 13, len : 1, start: 173, type : bool, wr_dis : 14, rd_dis: null, alt : '', dict: '{0: "Not force", 1: "Force"}', desc: Represents whether to force ECC to use constant-time mode for point multiplication calculation, rloc: 'EFUSE_RD_REPEAT_DATA4_REG[13]', bloc: 'B21[5]'}
65
65
  RECOVERY_BOOTLOADER_FLASH_SECTOR_LO : {show: y, blk : 0, word: 5, pos: 14, len : 9, start: 174, type : 'uint:9', wr_dis: null, rd_dis: null, alt : '', dict : '', desc: Represents the starting flash sector (flash sector size is 0x1000) of the recovery bootloader used by the ROM bootloader If the primary bootloader fails. 0 and 0xFFF - this feature is disabled. (The low part of the field), rloc: 'EFUSE_RD_REPEAT_DATA4_REG[22:14]', bloc: 'B21[7:6],B22[6:0]'}
66
66
  RESERVE_0_183 : {show: n, blk : 0, word: 5, pos: 23, len : 9, start: 183, type : 'uint:9', wr_dis: null, rd_dis: null, alt : '', dict : '', desc: Reserved; it was created by set_missed_fields_in_regs func, rloc: 'EFUSE_RD_REPEAT_DATA4_REG[31:23]', bloc: 'B22[7],B23'}
67
67
  MAC : {show: y, blk : 1, word: 0, pos : 0, len : 48, start : 0, type : 'bytes:6', wr_dis : 20, rd_dis: null, alt : MAC_FACTORY, dict : '', desc: MAC address, rloc: EFUSE_RD_MAC_SYS0_REG, bloc: 'B0,B1,B2,B3,B4,B5'}