@@ -47,14 +47,20 @@ def __init__(self):
47
47
self .first_offset = 0x9000
48
48
self .nvs = 0x6000
49
49
self .phy_init = 0x1000
50
- self .factory = 1 * 1024 * 1024
50
+ self .factory = 0x279000
51
51
52
52
if ota :
53
53
self .otadata = 0x2000
54
54
else :
55
55
self .otadata = 0x0
56
56
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 ):
58
64
offset = self .first_offset
59
65
data = [f'nvs,data, nvs,0x{ offset :X} ,0x{ self .nvs :X} ' ]
60
66
offset += self .nvs
@@ -66,46 +72,33 @@ def build_file(self):
66
72
data .append (f'phy_init,data,phy,0x{ offset :X} ,0x{ self .phy_init :X} ' )
67
73
offset += self .phy_init
68
74
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
85
76
86
77
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
88
85
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
91
87
88
+ vfs = int ((total_size - offset ) / 0x1000 ) * 0x1000
92
89
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
+ )
93
96
94
97
with open (self .save_file_path , 'w' ) as f :
95
98
f .write (PARTITION_HEADER )
96
99
f .write ('\n ' .join (data ))
97
100
f .write ('\n ' )
98
101
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
-
109
102
110
103
def get_espidf ():
111
104
0 commit comments