mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-08 04:02:27 +00:00
fix(partition_table): Check partition size for type APP
The size of partition of type APP should be multiple of 4 KB. Partition generation tool now make this as a mandatory requirement. This is minimum flash erase size. If the size of the APP type partition is not aligned to 4 KB then the last erase operation could go beyond the allocated partition and hence may fail. This issue would only be observed when the firmware size grows very close to the allocated partition size, and hence causing the OTA update to fail. For already deployed devices on-field with the size of APP partition not aligned to flash sector boundary, it is best to ensure that firmware size always remains within the lower 4 KB boundary of the total allocated space. While migrating to ESP-IDF 5.3 release, partition table for an existing project can be adjusted accordingly for the build to succeed. Found during discussion in https://github.com/espressif/esp-idf/pull/12460
This commit is contained in:
@@ -410,14 +410,13 @@ ota_1, app, ota_1, , 0x100800
|
||||
def rge(args):
|
||||
return self._run_genesp32(sample_csv, args)
|
||||
|
||||
# Valid test that would pass with the above partition table
|
||||
partfile = tempfile.mktemp()
|
||||
self.assertEqual(rge([partfile]), b'Parsing CSV input...\nVerifying table...')
|
||||
os.remove(partfile)
|
||||
# Failure case 1, incorrect ota_0 partition size
|
||||
# Failure case 1, incorrect ota_1 partition size
|
||||
self.assertEqual(rge(['-q']),
|
||||
b'Partition ota_1 invalid: Size 0x100800 is not aligned to 0x1000')
|
||||
# Failure case 2, incorrect ota_0 partition size
|
||||
self.assertEqual(rge(['-q', '--secure', 'v1']),
|
||||
b'Partition ota_0 invalid: Size 0x101000 is not aligned to 0x10000')
|
||||
# Failure case 2, incorrect ota_1 partition size
|
||||
# Failure case 3, incorrect ota_1 partition size with Secure Boot V2
|
||||
self.assertEqual(rge(['-q', '--secure', 'v2']),
|
||||
b'Partition ota_1 invalid: Size 0x100800 is not aligned to 0x1000')
|
||||
|
||||
|
Reference in New Issue
Block a user