Skip to content

Commit 74162a8

Browse files
committed
normalizes partition sizes to be a multiple of 4096
1 parent a4c3252 commit 74162a8

File tree

1 file changed

+24
-31
lines changed

1 file changed

+24
-31
lines changed

builder/esp32.py

Lines changed: 24 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,20 @@ def __init__(self):
4747
self.first_offset = 0x9000
4848
self.nvs = 0x6000
4949
self.phy_init = 0x1000
50-
self.factory = 1 * 1024 * 1024
50+
self.factory = 0x279000
5151

5252
if ota:
5353
self.otadata = 0x2000
5454
else:
5555
self.otadata = 0x0
5656

57-
def build_file(self):
57+
def get_app_size(self) -> int:
58+
return self.factory
59+
60+
def set_app_size(self, size):
61+
self.factory += size
62+
63+
def save(self):
5864
offset = self.first_offset
5965
data = [f'nvs,data, nvs,0x{offset:X},0x{self.nvs:X}']
6066
offset += self.nvs
@@ -66,46 +72,33 @@ def build_file(self):
6672
data.append(f'phy_init,data,phy,0x{offset:X},0x{self.phy_init:X}')
6773
offset += self.phy_init
6874

69-
if ota:
70-
data.append(f'ota_0,app,ota_0,0x{offset:X},0x{self.factory:X}')
71-
offset += self.factory
72-
data.append(f'ota_1,app,ota_1,0x{offset:X},0x{self.factory:X}')
73-
offset += self.factory
74-
else:
75-
data.append(f'factory,app,factory,0x{offset:X},0x{self.factory:X}')
76-
offset += self.factory
77-
78-
vfs = (flash_size * 1024 * 1024) - sum([
79-
self.first_offset,
80-
self.nvs,
81-
self.otadata,
82-
self.phy_init,
83-
self.factory
84-
])
75+
factory = (int(self.factory / 0x1000) + 1) * 0x1000
8576

8677
if ota:
87-
vfs -= self.factory
78+
data.append(f'ota_0,app,ota_0,0x{offset:X},0x{factory:X}')
79+
offset += factory
80+
data.append(f'ota_1,app,ota_1,0x{offset:X},0x{factory:X}')
81+
offset += factory
82+
else:
83+
data.append(f'factory,app,factory,0x{offset:X},0x{factory:X}')
84+
offset += factory
8885

89-
if vfs < 0:
90-
raise RuntimeError('There is not enough flash to store the firmware')
86+
total_size = int((flash_size * (2 ** 20)) / 0x1000) * 0x1000
9187

88+
vfs = int((total_size - offset) / 0x1000) * 0x1000
9289
data.append(f'vfs,data,fat,0x{offset:X},0x{vfs:X}')
90+
offset += vfs
91+
92+
if offset > total_size:
93+
raise RuntimeError(
94+
'There is not enough flash to store the firmware'
95+
)
9396

9497
with open(self.save_file_path, 'w') as f:
9598
f.write(PARTITION_HEADER)
9699
f.write('\n'.join(data))
97100
f.write('\n')
98101

99-
def get_app_size(self) -> int:
100-
return self.factory
101-
102-
def set_app_size(self, size):
103-
factor = ((self.factory + size) / 4096.0) + 1
104-
self.factory = int(factor * 4096)
105-
106-
def save(self):
107-
self.build_file()
108-
109102

110103
def get_espidf():
111104

0 commit comments

Comments
 (0)