esptool 4.9.dev1__tar.gz → 4.9.dev2__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 (162) hide show
  1. {esptool-4.9.dev1/esptool.egg-info → esptool-4.9.dev2}/PKG-INFO +1 -1
  2. {esptool-4.9.dev1 → esptool-4.9.dev2}/esp_rfc2217_server/__init__.py +23 -8
  3. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32s3.yaml +1 -1
  4. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/__init__.py +1 -1
  5. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/bin_image.py +12 -18
  6. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/cmds.py +2 -2
  7. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32c5.py +2 -2
  8. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32c6.py +6 -0
  9. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32h2.py +1 -0
  10. {esptool-4.9.dev1 → esptool-4.9.dev2/esptool.egg-info}/PKG-INFO +1 -1
  11. {esptool-4.9.dev1 → esptool-4.9.dev2}/LICENSE +0 -0
  12. {esptool-4.9.dev1 → esptool-4.9.dev2}/MANIFEST.in +0 -0
  13. {esptool-4.9.dev1 → esptool-4.9.dev2}/README.md +0 -0
  14. {esptool-4.9.dev1 → esptool-4.9.dev2}/esp_rfc2217_server/__main__.py +0 -0
  15. {esptool-4.9.dev1 → esptool-4.9.dev2}/esp_rfc2217_server/esp_port_manager.py +0 -0
  16. {esptool-4.9.dev1 → esptool-4.9.dev2}/esp_rfc2217_server/redirector.py +0 -0
  17. {esptool-4.9.dev1 → esptool-4.9.dev2}/esp_rfc2217_server.py +0 -0
  18. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/__init__.py +0 -0
  19. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/__main__.py +0 -0
  20. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/__init__.py +0 -0
  21. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/base_fields.py +0 -0
  22. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/base_operations.py +0 -0
  23. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/csv_table_parser.py +0 -0
  24. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/emulate_efuse_controller_base.py +0 -0
  25. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32/__init__.py +0 -0
  26. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32/emulate_efuse_controller.py +0 -0
  27. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32/fields.py +0 -0
  28. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32/mem_definition.py +0 -0
  29. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32/operations.py +0 -0
  30. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c2/__init__.py +0 -0
  31. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c2/emulate_efuse_controller.py +0 -0
  32. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c2/fields.py +0 -0
  33. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c2/mem_definition.py +0 -0
  34. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c2/operations.py +0 -0
  35. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c3/__init__.py +0 -0
  36. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c3/emulate_efuse_controller.py +0 -0
  37. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c3/fields.py +0 -0
  38. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c3/mem_definition.py +0 -0
  39. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c3/operations.py +0 -0
  40. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c5/__init__.py +0 -0
  41. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c5/emulate_efuse_controller.py +0 -0
  42. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c5/fields.py +0 -0
  43. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c5/mem_definition.py +0 -0
  44. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c5/operations.py +0 -0
  45. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c5beta3/__init__.py +0 -0
  46. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c5beta3/emulate_efuse_controller.py +0 -0
  47. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c5beta3/fields.py +0 -0
  48. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c5beta3/mem_definition.py +0 -0
  49. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c5beta3/operations.py +0 -0
  50. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c6/__init__.py +0 -0
  51. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c6/emulate_efuse_controller.py +0 -0
  52. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c6/fields.py +0 -0
  53. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c6/mem_definition.py +0 -0
  54. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c6/operations.py +0 -0
  55. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c61/__init__.py +0 -0
  56. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c61/emulate_efuse_controller.py +0 -0
  57. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c61/fields.py +0 -0
  58. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c61/mem_definition.py +0 -0
  59. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32c61/operations.py +0 -0
  60. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32h2/__init__.py +0 -0
  61. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32h2/emulate_efuse_controller.py +0 -0
  62. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32h2/fields.py +0 -0
  63. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32h2/mem_definition.py +0 -0
  64. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32h2/operations.py +0 -0
  65. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32h2beta1/__init__.py +0 -0
  66. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32h2beta1/emulate_efuse_controller.py +0 -0
  67. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32h2beta1/fields.py +0 -0
  68. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32h2beta1/mem_definition.py +0 -0
  69. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32h2beta1/operations.py +0 -0
  70. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32p4/__init__.py +0 -0
  71. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32p4/emulate_efuse_controller.py +0 -0
  72. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32p4/fields.py +0 -0
  73. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32p4/mem_definition.py +0 -0
  74. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32p4/operations.py +0 -0
  75. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s2/__init__.py +0 -0
  76. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s2/emulate_efuse_controller.py +0 -0
  77. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s2/fields.py +0 -0
  78. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s2/mem_definition.py +0 -0
  79. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s2/operations.py +0 -0
  80. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s3/__init__.py +0 -0
  81. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s3/emulate_efuse_controller.py +0 -0
  82. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s3/fields.py +0 -0
  83. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s3/mem_definition.py +0 -0
  84. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s3/operations.py +0 -0
  85. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s3beta2/__init__.py +0 -0
  86. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s3beta2/emulate_efuse_controller.py +0 -0
  87. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s3beta2/fields.py +0 -0
  88. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s3beta2/mem_definition.py +0 -0
  89. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/esp32s3beta2/operations.py +0 -0
  90. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/mem_definition_base.py +0 -0
  91. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse/util.py +0 -0
  92. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32.yaml +0 -0
  93. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32c2.yaml +0 -0
  94. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32c3.yaml +0 -0
  95. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32c5.yaml +0 -0
  96. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32c5beta3.yaml +0 -0
  97. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32c6.yaml +0 -0
  98. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32c61.yaml +0 -0
  99. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32h2.yaml +0 -0
  100. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32p4.yaml +0 -0
  101. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse/efuse_defs/esp32s2.yaml +0 -0
  102. {esptool-4.9.dev1 → esptool-4.9.dev2}/espefuse.py +0 -0
  103. {esptool-4.9.dev1 → esptool-4.9.dev2}/espsecure/__init__.py +0 -0
  104. {esptool-4.9.dev1 → esptool-4.9.dev2}/espsecure/__main__.py +0 -0
  105. {esptool-4.9.dev1 → esptool-4.9.dev2}/espsecure/esp_hsm_sign/__init__.py +0 -0
  106. {esptool-4.9.dev1 → esptool-4.9.dev2}/espsecure/esp_hsm_sign/exceptions.py +0 -0
  107. {esptool-4.9.dev1 → esptool-4.9.dev2}/espsecure.py +0 -0
  108. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/__main__.py +0 -0
  109. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/config.py +0 -0
  110. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/loader.py +0 -0
  111. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/reset.py +0 -0
  112. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/__init__.py +0 -0
  113. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32.py +0 -0
  114. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32c2.py +0 -0
  115. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32c3.py +0 -0
  116. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32c5beta3.py +0 -0
  117. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32c61.py +0 -0
  118. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32c6beta.py +0 -0
  119. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32h2beta1.py +0 -0
  120. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32h2beta2.py +0 -0
  121. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32p4.py +0 -0
  122. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32s2.py +0 -0
  123. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32s3.py +0 -0
  124. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp32s3beta2.py +0 -0
  125. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/esp8266.py +0 -0
  126. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/README.md +0 -0
  127. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32.json +0 -0
  128. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32c2.json +0 -0
  129. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32c3.json +0 -0
  130. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32c5.json +0 -0
  131. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32c5beta3.json +0 -0
  132. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32c6.json +0 -0
  133. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32c61.json +0 -0
  134. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32c6beta.json +0 -0
  135. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32h2.json +0 -0
  136. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32h2beta1.json +0 -0
  137. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32h2beta2.json +0 -0
  138. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32p4.json +0 -0
  139. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32s2.json +0 -0
  140. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32s3.json +0 -0
  141. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp32s3beta2.json +0 -0
  142. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/1/esp8266.json +0 -0
  143. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/2/LICENSE-APACHE +0 -0
  144. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/2/LICENSE-MIT +0 -0
  145. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/2/README.md +0 -0
  146. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/2/esp32.json +0 -0
  147. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/2/esp32c2.json +0 -0
  148. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/2/esp32c3.json +0 -0
  149. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/2/esp32c6.json +0 -0
  150. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/2/esp32h2.json +0 -0
  151. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/2/esp32s2.json +0 -0
  152. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/targets/stub_flasher/2/esp32s3.json +0 -0
  153. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/uf2_writer.py +0 -0
  154. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool/util.py +0 -0
  155. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool.egg-info/SOURCES.txt +0 -0
  156. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool.egg-info/dependency_links.txt +0 -0
  157. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool.egg-info/requires.txt +0 -0
  158. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool.egg-info/top_level.txt +0 -0
  159. {esptool-4.9.dev1 → esptool-4.9.dev2}/esptool.py +0 -0
  160. {esptool-4.9.dev1 → esptool-4.9.dev2}/pyproject.toml +0 -0
  161. {esptool-4.9.dev1 → esptool-4.9.dev2}/setup.cfg +0 -0
  162. {esptool-4.9.dev1 → esptool-4.9.dev2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: esptool
3
- Version: 4.9.dev1
3
+ Version: 4.9.dev2
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+
@@ -64,8 +64,7 @@ def main():
64
64
  level = (logging.WARNING, logging.INFO, logging.DEBUG, logging.NOTSET)[
65
65
  args.verbosity
66
66
  ]
67
- logging.basicConfig(level=logging.INFO)
68
- # logging.getLogger('root').setLevel(logging.INFO)
67
+ logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.INFO)
69
68
  logging.getLogger("rfc2217").setLevel(level)
70
69
 
71
70
  # connect to serial port
@@ -75,26 +74,42 @@ def main():
75
74
  ser.dtr = False
76
75
  ser.rts = False
77
76
 
78
- logging.info(" RFC 2217 TCP/IP to Serial redirector - type Ctrl-C / BREAK to quit")
77
+ logging.info("RFC 2217 TCP/IP to Serial redirector - type Ctrl-C / BREAK to quit")
79
78
 
80
79
  try:
81
80
  ser.open()
82
81
  except serial.SerialException as e:
83
- logging.error(" Could not open serial port {}: {}".format(ser.name, e))
82
+ logging.error(f"Could not open serial port {ser.name}: {e}")
84
83
  sys.exit(1)
85
84
 
86
- logging.info(" Serving serial port: {}".format(ser.name))
85
+ logging.info(f"Serving serial port: {ser.name}")
87
86
  settings = ser.get_settings()
88
87
 
89
88
  srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
90
89
  srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
91
90
  srv.bind(("", args.localport))
92
91
  srv.listen(1)
93
- logging.info(" TCP/IP port: {}".format(args.localport))
92
+ logging.info(f"TCP/IP port: {args.localport}")
93
+
94
+ host_ip = socket.gethostbyname(socket.gethostname())
95
+ wait_msg = f"Waiting for connection ... use the 'rfc2217://{host_ip}:{args.localport}?ign_set_control' as a PORT"
96
+ logging.info(wait_msg)
97
+
94
98
  while True:
99
+ srv.settimeout(5)
100
+ client_socket = None
101
+ try:
102
+ while client_socket is None:
103
+ try:
104
+ client_socket, addr = srv.accept()
105
+ except TimeoutError:
106
+ print(".", end="", flush=True)
107
+ except KeyboardInterrupt:
108
+ print("") # resetting inline print
109
+ logging.info("Exited with keyboard interrupt")
110
+ break
95
111
  try:
96
- client_socket, addr = srv.accept()
97
- logging.info("Connected by {}:{}".format(addr[0], addr[1]))
112
+ logging.info(f"Connected by {addr[0]}:{addr[1]}")
98
113
  client_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
99
114
  ser.rts = True
100
115
  ser.dtr = True
@@ -47,7 +47,7 @@ EFUSES:
47
47
  SECURE_BOOT_AGGRESSIVE_REVOKE : {show: y, blk : 0, word: 3, pos: 21, len : 1, start: 117, type : bool, wr_dis : 16, rd_dis: null, alt : '', dict : '', desc: Set this bit to enable revoking aggressive secure boot, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[21]', bloc: 'B14[5]'}
48
48
  DIS_USB_JTAG : {show: y, blk : 0, word: 3, pos: 22, len : 1, start: 118, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: Set this bit to disable function of usb switch to jtag in module of usb device, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[22]', bloc: 'B14[6]'}
49
49
  DIS_USB_SERIAL_JTAG : {show: y, blk : 0, word: 3, pos: 23, len : 1, start: 119, type : bool, wr_dis : 2, rd_dis: null, alt : DIS_USB_DEVICE, dict : '', desc: Set this bit to disable usb device, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[23]', bloc: 'B14[7]'}
50
- STRAP_JTAG_SEL : {show: y, blk : 0, word: 3, pos: 24, len : 1, start: 120, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: Set this bit to enable selection between usb_to_jtag and pad_to_jtag through strapping gpio10 when both reg_dis_usb_jtag and reg_dis_pad_jtag are equal to 0, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[24]', bloc: 'B15[0]'}
50
+ STRAP_JTAG_SEL : {show: y, blk : 0, word: 3, pos: 24, len : 1, start: 120, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict : '', desc: Set this bit to enable selection between usb_to_jtag and pad_to_jtag through strapping gpio3 when both reg_dis_usb_jtag and reg_dis_pad_jtag are equal to 0, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[24]', bloc: 'B15[0]'}
51
51
  USB_PHY_SEL : {show: y, blk : 0, word: 3, pos: 25, len : 1, start: 121, type : bool, wr_dis : 2, rd_dis: null, alt : '', dict: '{0: "internal PHY is assigned to USB Device while external PHY is assigned to USB OTG", 1: "internal PHY is assigned to USB OTG while external PHY is assigned to USB Device"}', desc: This bit is used to switch internal PHY and external PHY for USB OTG and USB Device, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[25]', bloc: 'B15[1]'}
52
52
  POWER_GLITCH_DSENSE : {show: n, blk : 0, word: 3, pos: 26, len : 2, start: 122, type : 'uint:2', wr_dis : 17, rd_dis: null, alt : '', dict : '', desc: Sample delay configuration of power glitch, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[27:26]', bloc: 'B15[3:2]'}
53
53
  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: Configures flash waiting time after power-up; in unit of ms. If the value is less than 15; the waiting time is the configurable value. Otherwise; the waiting time is twice the configurable value, rloc: 'EFUSE_RD_REPEAT_DATA2_REG[31:28]', bloc: 'B15[7:4]'}
@@ -29,7 +29,7 @@ __all__ = [
29
29
  "write_mem",
30
30
  ]
31
31
 
32
- __version__ = "4.9.dev1"
32
+ __version__ = "4.9.dev2"
33
33
 
34
34
  import argparse
35
35
  import inspect
@@ -115,11 +115,10 @@ class ImageSegment(object):
115
115
  """Wrapper class for a segment in an ESP image
116
116
  (very similar to a section in an ELFImage also)"""
117
117
 
118
- def __init__(self, addr, data, file_offs=None, flags=0):
118
+ def __init__(self, addr, data, file_offs=None):
119
119
  self.addr = addr
120
120
  self.data = data
121
121
  self.file_offs = file_offs
122
- self.flags = flags
123
122
  self.include_in_checksum = True
124
123
  if self.addr != 0:
125
124
  self.pad_to_alignment(
@@ -168,8 +167,8 @@ class ELFSection(ImageSegment):
168
167
  """Wrapper class for a section in an ELF image, has a section
169
168
  name as well as the common properties of an ImageSegment."""
170
169
 
171
- def __init__(self, name, addr, data, flags):
172
- super(ELFSection, self).__init__(addr, data, flags=flags)
170
+ def __init__(self, name, addr, data):
171
+ super(ELFSection, self).__init__(addr, data)
173
172
  self.name = name.decode("utf-8")
174
173
 
175
174
  def __repr__(self):
@@ -179,9 +178,6 @@ class ELFSection(ImageSegment):
179
178
  class BaseFirmwareImage(object):
180
179
  SEG_HEADER_LEN = 8
181
180
  SHA256_DIGEST_LEN = 32
182
- ELF_FLAG_WRITE = 0x1
183
- ELF_FLAG_READ = 0x2
184
- ELF_FLAG_EXEC = 0x4
185
181
 
186
182
  """ Base class with common firmware image functions """
187
183
 
@@ -377,8 +373,6 @@ class BaseFirmwareImage(object):
377
373
  elem.get_memory_type(self) == next_elem.get_memory_type(self),
378
374
  elem.include_in_checksum == next_elem.include_in_checksum,
379
375
  next_elem.addr == elem.addr + len(elem.data),
380
- next_elem.flags & self.ELF_FLAG_EXEC
381
- == elem.flags & self.ELF_FLAG_EXEC,
382
376
  )
383
377
  ):
384
378
  # Merge any segment that ends where the next one starts,
@@ -1285,7 +1279,7 @@ class ELFFile(object):
1285
1279
  name_offs, sec_type, _flags, lma, sec_offs, size = struct.unpack_from(
1286
1280
  "<LLLLLL", section_header[offs:]
1287
1281
  )
1288
- return (name_offs, sec_type, lma, size, sec_offs, _flags)
1282
+ return (name_offs, sec_type, lma, size, sec_offs)
1289
1283
 
1290
1284
  all_sections = [read_section_header(offs) for offs in section_header_offsets]
1291
1285
  prog_sections = [s for s in all_sections if s[1] in ELFFile.PROG_SEC_TYPES]
@@ -1294,7 +1288,7 @@ class ELFFile(object):
1294
1288
  # search for the string table section
1295
1289
  if (shstrndx * self.LEN_SEC_HEADER) not in section_header_offsets:
1296
1290
  raise FatalError("ELF file has no STRTAB section at shstrndx %d" % shstrndx)
1297
- _, sec_type, _, sec_size, sec_offs, _ = read_section_header(
1291
+ _, sec_type, _, sec_size, sec_offs = read_section_header(
1298
1292
  shstrndx * self.LEN_SEC_HEADER
1299
1293
  )
1300
1294
  if sec_type != ELFFile.SEC_TYPE_STRTAB:
@@ -1316,14 +1310,14 @@ class ELFFile(object):
1316
1310
  return f.read(size)
1317
1311
 
1318
1312
  prog_sections = [
1319
- ELFSection(lookup_string(n_offs), lma, read_data(offs, size), flags=_flags)
1320
- for (n_offs, _type, lma, size, offs, _flags) in prog_sections
1313
+ ELFSection(lookup_string(n_offs), lma, read_data(offs, size))
1314
+ for (n_offs, _type, lma, size, offs) in prog_sections
1321
1315
  if lma != 0 and size > 0
1322
1316
  ]
1323
1317
  self.sections = prog_sections
1324
1318
  self.nobits_sections = [
1325
- ELFSection(lookup_string(n_offs), lma, b"", flags=_flags)
1326
- for (n_offs, _type, lma, size, offs, _flags) in nobits_secitons
1319
+ ELFSection(lookup_string(n_offs), lma, b"")
1320
+ for (n_offs, _type, lma, size, offs) in nobits_secitons
1327
1321
  if lma != 0 and size > 0
1328
1322
  ]
1329
1323
 
@@ -1356,7 +1350,7 @@ class ELFFile(object):
1356
1350
  _flags,
1357
1351
  _align,
1358
1352
  ) = struct.unpack_from("<LLLLLLLL", segment_header[offs:])
1359
- return (seg_type, lma, size, seg_offs, _flags)
1353
+ return (seg_type, lma, size, seg_offs)
1360
1354
 
1361
1355
  all_segments = [read_segment_header(offs) for offs in segment_header_offsets]
1362
1356
  prog_segments = [s for s in all_segments if s[0] == ELFFile.SEG_TYPE_LOAD]
@@ -1366,8 +1360,8 @@ class ELFFile(object):
1366
1360
  return f.read(size)
1367
1361
 
1368
1362
  prog_segments = [
1369
- ELFSection(b"PHDR", lma, read_data(offs, size), flags=_flags)
1370
- for (_type, lma, size, offs, _flags) in prog_segments
1363
+ ELFSection(b"PHDR", lma, read_data(offs, size))
1364
+ for (_type, lma, size, offs) in prog_segments
1371
1365
  if lma != 0 and size > 0
1372
1366
  ]
1373
1367
  self.segments = prog_segments
@@ -724,7 +724,7 @@ def write_flash(esp, args):
724
724
  print("Flash md5: %s" % res)
725
725
  print(
726
726
  "MD5 of 0xFF is %s"
727
- % (hashlib.md5(b"\xff" * uncsize).hexdigest())
727
+ % (hashlib.md5(b"\xFF" * uncsize).hexdigest())
728
728
  )
729
729
  raise FatalError("MD5 of file does not match data in flash!")
730
730
  else:
@@ -1457,7 +1457,7 @@ def merge_bin(args):
1457
1457
 
1458
1458
  def pad_to(flash_offs):
1459
1459
  # account for output file offset if there is any
1460
- of.write(b"\xff" * (flash_offs - args.target_offset - of.tell()))
1460
+ of.write(b"\xFF" * (flash_offs - args.target_offset - of.tell()))
1461
1461
 
1462
1462
  for addr, argfile in input_files:
1463
1463
  pad_to(addr)
@@ -54,8 +54,8 @@ class ESP32C5ROM(ESP32C6ROM):
54
54
 
55
55
  UARTDEV_BUF_NO = 0x4085F51C # Variable in ROM .bss which indicates the port in use
56
56
 
57
- # Magic value for ESP32C5
58
- CHIP_DETECT_MAGIC_VALUE = [0x1101406F]
57
+ # Magic values for ESP32C5 ECO0 and ECO1, respectively
58
+ CHIP_DETECT_MAGIC_VALUE = [0x1101406F, 0x63E1406F]
59
59
 
60
60
  FLASH_FREQUENCY = {
61
61
  "80m": 0xF,
@@ -6,6 +6,7 @@
6
6
  import struct
7
7
 
8
8
  from .esp32c3 import ESP32C3ROM
9
+ from ..loader import ESPLoader
9
10
  from ..util import FatalError, NotImplementedInROMError
10
11
 
11
12
 
@@ -194,6 +195,11 @@ class ESP32C6ROM(ESP32C3ROM):
194
195
  "consider using other pins for SPI flash connection."
195
196
  )
196
197
 
198
+ def hard_reset(self):
199
+ # Bug in the USB-Serial/JTAG controller can cause the port to disappear
200
+ # if the chip is reset with RTC WDT, do a classic reset
201
+ ESPLoader.hard_reset(self)
202
+
197
203
 
198
204
  class ESP32C6StubLoader(ESP32C6ROM):
199
205
  """Access class for ESP32C6 stub loader, runs on top of ROM.
@@ -80,6 +80,7 @@ class ESP32H2ROM(ESP32C6ROM):
80
80
  return 32
81
81
 
82
82
  def hard_reset(self):
83
+ # RTC WDT reset not available, do a classic reset
83
84
  ESPLoader.hard_reset(self)
84
85
 
85
86
  def check_spi_connection(self, spi_connection):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: esptool
3
- Version: 4.9.dev1
3
+ Version: 4.9.dev2
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+
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes