MCPcopy Create free account
hub / github.com/ExpressLRS/ExpressLRS / read_flash

Method read_flash

src/python/external/esptool/esptool/loader.py:1036–1073  ·  view source on GitHub ↗
(self, offset, length, progress_fn=None)

Source from the content-addressed store, hash-verified

1034 raise NotImplementedInROMError(self, self.read_flash_slow)
1035
1036 def read_flash(self, offset, length, progress_fn=None):
1037 if not self.IS_STUB:
1038 return self.read_flash_slow(offset, length, progress_fn) # ROM-only routine
1039
1040 # issue a standard bootloader command to trigger the read
1041 self.check_command(
1042 "read flash",
1043 self.ESP_READ_FLASH,
1044 struct.pack("<IIII", offset, length, self.FLASH_SECTOR_SIZE, 64),
1045 )
1046 # now we expect (length // block_size) SLIP frames with the data
1047 data = b""
1048 while len(data) < length:
1049 p = self.read()
1050 data += p
1051 if len(data) < length and len(p) < self.FLASH_SECTOR_SIZE:
1052 raise FatalError(
1053 "Corrupt data, expected 0x%x bytes but received 0x%x bytes"
1054 % (self.FLASH_SECTOR_SIZE, len(p))
1055 )
1056 self.write(struct.pack("<I", len(data)))
1057 if progress_fn and (len(data) % 1024 == 0 or len(data) == length):
1058 progress_fn(len(data), length)
1059 if progress_fn:
1060 progress_fn(len(data), length)
1061 if len(data) > length:
1062 raise FatalError("Read more than expected")
1063
1064 digest_frame = self.read()
1065 if len(digest_frame) != 16:
1066 raise FatalError("Expected digest, got: %s" % hexify(digest_frame))
1067 expected_digest = hexify(digest_frame).upper()
1068 digest = hashlib.md5(data).hexdigest().upper()
1069 if digest != expected_digest:
1070 raise FatalError(
1071 "Digest mismatch: expected %s, got %s" % (expected_digest, digest)
1072 )
1073 return data
1074
1075 def flash_spi_attach(self, hspi_arg):
1076 """Send SPI attach command to enable the SPI flash pins

Callers 2

read_flashFunction · 0.80
verify_flashFunction · 0.80

Calls 6

read_flash_slowMethod · 0.95
check_commandMethod · 0.95
readMethod · 0.95
writeMethod · 0.95
FatalErrorClass · 0.85
hexifyFunction · 0.85

Tested by

no test coverage detected