From d1befe83ef19b7b954eb0a8403be9f2a4d2d68bc Mon Sep 17 00:00:00 2001 From: KonstantinKondrashov Date: Thu, 25 Mar 2021 02:18:30 +0800 Subject: [PATCH] otatool: Fix incorrect using otadata.seq&crc in switch_ota_partition cmd Closes: https://github.com/espressif/esp-idf/issues/6773 --- components/app_update/otatool.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/components/app_update/otatool.py b/components/app_update/otatool.py index 96a4ff9951..4977cba193 100755 --- a/components/app_update/otatool.py +++ b/components/app_update/otatool.py @@ -85,9 +85,8 @@ class OtatoolTarget(): seq = bytearray(self.otadata[start:start + 4]) crc = bytearray(self.otadata[start + 28:start + 32]) - seq = struct.unpack('>I', seq) - crc = struct.unpack('>I', crc) - + seq = struct.unpack('I', seq) + crc = struct.unpack('I', crc) info.append(otadata_info(seq[0], crc[0])) return info @@ -105,7 +104,7 @@ class OtatoolTarget(): def is_otadata_info_valid(status): seq = status.seq % (1 << 32) - crc = hex(binascii.crc32(struct.pack('I', seq), 0xFFFFFFFF) % (1 << 32)) + crc = binascii.crc32(struct.pack('I', seq), 0xFFFFFFFF) % (1 << 32) return seq < (int('0xFFFFFFFF', 16) % (1 << 32)) and status.crc == crc partition_table = self.target.partition_table @@ -217,7 +216,7 @@ def _read_otadata(target): otadata_info = target._get_otadata_info() print(' {:8s} \t {:8s} | \t {:8s} \t {:8s}'.format('OTA_SEQ', 'CRC', 'OTA_SEQ', 'CRC')) - print('Firmware: 0x{:8x} \t0x{:8x} | \t0x{:8x} \t 0x{:8x}'.format(otadata_info[0].seq, otadata_info[0].crc, + print('Firmware: 0x{:08x} \t0x{:08x} | \t0x{:08x} \t 0x{:08x}'.format(otadata_info[0].seq, otadata_info[0].crc, otadata_info[1].seq, otadata_info[1].crc))