mirror of
https://github.com/espressif/esptool.git
synced 2025-10-19 20:13:00 +08:00
feat(espefuse): Added check for correctness of written data
This commit is contained in:

committed by
Radim Karniš

parent
3d55c74efd
commit
d2bfaadfe4
@@ -228,13 +228,14 @@ class EfuseBlockBase(EfuseProtectBase):
|
|||||||
|
|
||||||
return [self.parent.read_reg(offs) for offs in get_offsets(self)]
|
return [self.parent.read_reg(offs) for offs in get_offsets(self)]
|
||||||
|
|
||||||
def read(self):
|
def read(self, print_info=True):
|
||||||
words = self.get_words()
|
words = self.get_words()
|
||||||
data = BitArray()
|
data = BitArray()
|
||||||
for word in reversed(words):
|
for word in reversed(words):
|
||||||
data.append("uint:32=%d" % word)
|
data.append("uint:32=%d" % word)
|
||||||
self.bitarray.overwrite(data, pos=0)
|
self.bitarray.overwrite(data, pos=0)
|
||||||
self.print_block(self.bitarray, "read_regs")
|
if print_info:
|
||||||
|
self.print_block(self.bitarray, "read_regs")
|
||||||
|
|
||||||
def print_block(self, bit_string, comment, debug=False):
|
def print_block(self, bit_string, comment, debug=False):
|
||||||
if self.parent.debug or debug:
|
if self.parent.debug or debug:
|
||||||
@@ -386,6 +387,18 @@ class EfuseBlockBase(EfuseProtectBase):
|
|||||||
)
|
)
|
||||||
break
|
break
|
||||||
if not self.fail and self.num_errors == 0:
|
if not self.fail and self.num_errors == 0:
|
||||||
|
self.read(print_info=False)
|
||||||
|
if self.wr_bitarray & self.bitarray != self.wr_bitarray:
|
||||||
|
# if the required bits are not set then we need to re-burn it again.
|
||||||
|
if burns < 2:
|
||||||
|
print(
|
||||||
|
f"\nRepeat burning BLOCK{self.id} (#{burns + 2}) because not all bits were set"
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
print(
|
||||||
|
f"\nAfter {burns + 1} attempts, the required data was not set to BLOCK{self.id}"
|
||||||
|
)
|
||||||
break
|
break
|
||||||
|
|
||||||
def burn(self):
|
def burn(self):
|
||||||
|
Reference in New Issue
Block a user