@@ -1079,22 +1079,46 @@ def all_debug ():
1079
1079
################################################################
1080
1080
# flash size
1081
1081
1082
- def flash_size (size_bytes , display , optname , ld , desc , max_upload_size , spiffs_start = 0 , spiffs_size = 0 , spiffs_blocksize = 0 ):
1083
- menu = '.menu.FlashSize.' + optname
1082
+ def flash_map (flashsize_kb , spiffs_kb = 0 ):
1083
+
1084
+ # mapping:
1085
+ # | flash | reserved | empty | spiffs | eeprom | rf
1086
+
1087
+ eeprom_size_kb = 4
1088
+ rf_size_kb = 16
1089
+ reserved = 4112
1090
+ spiffs_end = (flashsize_kb - rf_size_kb - eeprom_size_kb ) * 1024
1091
+ rfcal_addr = (flashsize_kb - rf_size_kb ) * 1024
1092
+ if flashsize_kb <= 1024 :
1093
+ max_upload_size = (flashsize_kb - (spiffs_kb + rf_size_kb + eeprom_size_kb )) * 1024 - reserved
1094
+ spiffs_start = spiffs_end - spiffs_kb * 1024
1095
+ spiffs_blocksize = 4096
1096
+ else :
1097
+ max_upload_size = 1024 * 1024 - reserved
1098
+ spiffs_start = (flashsize_kb - spiffs_kb ) * 1024
1099
+ spiffs_blocksize = 8192
1100
+
1101
+ strsize = str (flashsize_kb / 1024 ) + 'M' if (flashsize_kb >= 1024 ) else str (flashsize_kb ) + 'K'
1102
+ strspiffs = str (spiffs_kb / 1024 ) + 'M' if (spiffs_kb >= 1024 ) else str (spiffs_kb ) + 'K'
1103
+ strspiffs_strip = str (spiffs_kb / 1024 ) + 'M' if (spiffs_kb >= 1024 ) else str (spiffs_kb ) if (spiffs_kb > 0 ) else ''
1104
+
1105
+ ld = 'eagle.flash.' + strsize .lower () + strspiffs_strip .lower () + '.ld'
1106
+ menu = '.menu.FlashSize.' + strsize + strspiffs_strip
1084
1107
menub = menu + '.build.'
1108
+ desc = 'no' if (spiffs_kb == 0 ) else strspiffs
1085
1109
d = collections .OrderedDict ([
1086
- ( menu , display + ' (' + desc + ')' ),
1087
- ( menub + 'flash_size' , display ),
1088
- ( menub + 'flash_size_bytes' , "0x%X" % size_bytes ),
1110
+ ( menu , strsize + ' (' + desc + ' SPIFFS )' ),
1111
+ ( menub + 'flash_size' , strsize ),
1112
+ ( menub + 'flash_size_bytes' , "0x%X" % ( flashsize_kb * 1024 ) ),
1089
1113
( menub + 'flash_ld' , ld ),
1090
1114
( menub + 'spiffs_pagesize' , '256' ),
1091
1115
( menu + '.upload.maximum_size' , "%i" % max_upload_size ),
1092
- ( menub + 'rfcal_addr' , "0x%X" % ( size_bytes - 0x4000 ) )
1116
+ ( menub + 'rfcal_addr' , "0x%X" % rfcal_addr )
1093
1117
])
1094
- if spiffs_size > 0 :
1118
+ if spiffs_kb > 0 :
1095
1119
d .update (collections .OrderedDict ([
1096
1120
( menub + 'spiffs_start' , "0x%05X" % spiffs_start ),
1097
- ( menub + 'spiffs_end' , "0x%05X" % ( spiffs_start + spiffs_size ) ),
1121
+ ( menub + 'spiffs_end' , "0x%05X" % spiffs_end ),
1098
1122
( menub + 'spiffs_blocksize' , "%i" % spiffs_blocksize ),
1099
1123
]))
1100
1124
@@ -1103,7 +1127,6 @@ def flash_size (size_bytes, display, optname, ld, desc, max_upload_size, spiffs_
1103
1127
1104
1128
checkdir ()
1105
1129
1106
- lddir = "tools/sdk/ld/"
1107
1130
ldbackupdir = lddir + "backup/"
1108
1131
if not os .path .isdir (ldbackupdir ):
1109
1132
os .mkdir (ldbackupdir )
@@ -1112,24 +1135,24 @@ def flash_size (size_bytes, display, optname, ld, desc, max_upload_size, spiffs_
1112
1135
realstdout = sys .stdout
1113
1136
sys .stdout = open (lddir + ld , 'w' )
1114
1137
1115
- if spiffs_size == 0 :
1138
+ if spiffs_kb == 0 :
1116
1139
page = 0
1117
1140
block = 0
1118
- elif spiffs_size < 0x80000 :
1141
+ elif spiffs_kb < 0x80000 / 1024 :
1119
1142
page = 0x100
1120
1143
block = 0x1000
1121
1144
else :
1122
1145
page = 0x100
1123
1146
block = 0x2000
1124
1147
1125
- print ("/* Flash Split for %s chips */" % display )
1148
+ print ("/* Flash Split for %s chips */" % strsize )
1126
1149
print ("/* sketch %dKB */" % (max_upload_size / 1024 ))
1127
- if spiffs_size > 0 :
1150
+ if spiffs_kb > 0 :
1128
1151
empty_size = spiffs_start - max_upload_size - 4096
1129
1152
if empty_size > 1024 :
1130
1153
print ("/* empty %dKB */" % (empty_size / 1024 ))
1131
- print ("/* spiffs %dKB */" % ( spiffs_size / 1024 ) )
1132
- print ("/* eeprom 20KB */" )
1154
+ print ("/* spiffs %dKB */" % spiffs_kb )
1155
+ print ("/* eeprom %dKB rfcal %dKB */" % ( eeprom_size_kb , rf_size_kb ) )
1133
1156
print ("" )
1134
1157
print ("MEMORY" )
1135
1158
print ("{" )
@@ -1139,10 +1162,11 @@ def flash_size (size_bytes, display, optname, ld, desc, max_upload_size, spiffs_
1139
1162
print (" irom0_0_seg : org = 0x40201010, len = 0x%x" % max_upload_size )
1140
1163
print ("}" )
1141
1164
print ("" )
1142
- print ("PROVIDE ( _SPIFFS_start = 0x%08X );" % (0x40200000 + spiffs_start ))
1143
- print ("PROVIDE ( _SPIFFS_end = 0x%08X );" % (0x40200000 + spiffs_start + spiffs_size ))
1144
- print ("PROVIDE ( _SPIFFS_page = 0x%X );" % page )
1145
- print ("PROVIDE ( _SPIFFS_block = 0x%X );" % block )
1165
+ if spiffs_kb > 0 :
1166
+ print ("PROVIDE ( _SPIFFS_start = 0x%08X );" % (0x40200000 + spiffs_start ))
1167
+ print ("PROVIDE ( _SPIFFS_end = 0x%08X );" % (0x40200000 + spiffs_end ))
1168
+ print ("PROVIDE ( _SPIFFS_page = 0x%X );" % page )
1169
+ print ("PROVIDE ( _SPIFFS_block = 0x%X );" % block )
1146
1170
print ("" )
1147
1171
print ('INCLUDE "eagle.app.v6.common.ld"' )
1148
1172
@@ -1152,25 +1176,49 @@ def flash_size (size_bytes, display, optname, ld, desc, max_upload_size, spiffs_
1152
1176
1153
1177
return d
1154
1178
1155
- def all_flash_size ():
1156
- f512 = flash_size (0x80000 , '512K' , '512K0' , 'eagle.flash.512k0.ld' , 'no SPIFFS' , 499696 , 0x7B000 )
1157
- f512 .update (flash_size (0x80000 , '512K' , '512K32' , 'eagle.flash.512k32.ld' , '32K SPIFFS' , 466928 , 0x73000 , 0x8000 , 4096 ))
1158
- f512 .update (flash_size (0x80000 , '512K' , '512K64' , 'eagle.flash.512k64.ld' , '64K SPIFFS' , 434160 , 0x6B000 , 0x10000 , 4096 ))
1159
- f512 .update (flash_size (0x80000 , '512K' , '512K128' , 'eagle.flash.512k128.ld' , '128K SPIFFS' , 368624 , 0x5B000 , 0x20000 , 4096 ))
1160
- f1m = flash_size (0x100000 , '1M' , '1M0' , 'eagle.flash.1m0.ld' , 'no SPIFFS' , 1023984 , 0xFB000 )
1161
- f1m .update ( flash_size (0x100000 , '1M' , '1M64' , 'eagle.flash.1m64.ld' , '64K SPIFFS' , 958448 , 0xEB000 , 0x10000 , 4096 ))
1162
- f1m .update ( flash_size (0x100000 , '1M' , '1M128' , 'eagle.flash.1m128.ld' , '128K SPIFFS' , 892912 , 0xDB000 , 0x20000 , 4096 ))
1163
- f1m .update ( flash_size (0x100000 , '1M' , '1M144' , 'eagle.flash.1m144.ld' , '144K SPIFFS' , 876528 , 0xD7000 , 0x24000 , 4096 ))
1164
- f1m .update ( flash_size (0x100000 , '1M' , '1M160' , 'eagle.flash.1m160.ld' , '160K SPIFFS' , 860144 , 0xD3000 , 0x28000 , 4096 ))
1165
- f1m .update ( flash_size (0x100000 , '1M' , '1M192' , 'eagle.flash.1m192.ld' , '192K SPIFFS' , 827376 , 0xCB000 , 0x30000 , 4096 ))
1166
- f1m .update ( flash_size (0x100000 , '1M' , '1M256' , 'eagle.flash.1m256.ld' , '256K SPIFFS' , 761840 , 0xBB000 , 0x40000 , 4096 ))
1167
- f1m .update ( flash_size (0x100000 , '1M' , '1M512' , 'eagle.flash.1m512.ld' , '512K SPIFFS' , 499696 , 0x7B000 , 0x80000 , 8192 ))
1168
- f2m = flash_size (0x200000 , '2M' , '2M' , 'eagle.flash.2m.ld' , '1M SPIFFS' , 1044464 , 0x100000 , 0xFB000 , 8192 )
1169
- f4m = flash_size (0x400000 , '4M' , '4M1M' , 'eagle.flash.4m1m.ld' , '1M SPIFFS' , 1044464 , 0x300000 , 0xFB000 , 8192 )
1170
- f4m .update ( flash_size (0x400000 , '4M' , '4M2M' , 'eagle.flash.4m2m.ld' , '2M SPIFFS' , 1044464 , 0x200000 , 0x1FB000 , 8192 ))
1171
- f4m .update ( flash_size (0x400000 , '4M' , '4M3M' , 'eagle.flash.4m.ld' , '3M SPIFFS' , 1044464 , 0x100000 , 0x2FB000 , 8192 ))
1172
- f8m = flash_size (0x800000 , '8M' , '8M7M' , 'eagle.flash.8m.ld' , '7M SPIFFS' , 1044464 , 0x100000 , 0x6FB000 , 8192 )
1173
- f16m = flash_size (0x1000000 , '16M' , '16M15M' , 'eagle.flash.16m.ld' , '15M SPIFFS' , 1044464 , 0x100000 , 0xEFB000 , 8192 )
1179
+ def all_flash_map ():
1180
+
1181
+ f512 = collections .OrderedDict ([])
1182
+ f1m = collections .OrderedDict ([])
1183
+ f2m = collections .OrderedDict ([])
1184
+ f4m = collections .OrderedDict ([])
1185
+ f8m = collections .OrderedDict ([])
1186
+ f16m = collections .OrderedDict ([])
1187
+
1188
+ # flash(KB) spiffs(KB)
1189
+
1190
+ f512 .update (flash_map ( 512 ))
1191
+ f512 .update (flash_map ( 512 , 32 ))
1192
+ f512 .update (flash_map ( 512 , 64 ))
1193
+ f512 .update (flash_map ( 512 , 128 ))
1194
+
1195
+ f1m .update ( flash_map ( 1024 ))
1196
+ f1m .update ( flash_map ( 1024 , 64 ))
1197
+ f1m .update ( flash_map ( 1024 , 128 ))
1198
+ f1m .update ( flash_map ( 1024 , 144 ))
1199
+ f1m .update ( flash_map ( 1024 , 160 ))
1200
+ f1m .update ( flash_map ( 1024 , 192 ))
1201
+ f1m .update ( flash_map ( 1024 , 256 ))
1202
+ f1m .update ( flash_map ( 1024 , 512 ))
1203
+
1204
+ f2m .update ( flash_map ( 2 * 1024 ))
1205
+ f2m .update ( flash_map ( 2 * 1024 , 512 ))
1206
+ f2m .update ( flash_map ( 2 * 1024 , 1024 ))
1207
+
1208
+ f4m .update ( flash_map ( 4 * 1024 ))
1209
+ f4m .update ( flash_map ( 4 * 1024 , 1024 ))
1210
+ f4m .update ( flash_map ( 4 * 1024 , 2 * 1024 ))
1211
+ f4m .update ( flash_map ( 4 * 1024 , 3 * 1024 ))
1212
+
1213
+ f8m .update ( flash_map ( 8 * 1024 , 6 * 1024 ))
1214
+ f8m .update ( flash_map ( 8 * 1024 , 7 * 1024 ))
1215
+
1216
+ f16m .update (flash_map ( 16 * 1024 , 14 * 1024 ))
1217
+ f16m .update (flash_map ( 16 * 1024 , 15 * 1024 ))
1218
+
1219
+ if ldgen :
1220
+ print ("generated: ldscripts (in %s)" % lddir )
1221
+
1174
1222
return {
1175
1223
'512K' : f512 ,
1176
1224
'1M' : f1m ,
@@ -1212,7 +1260,7 @@ def all_boards ():
1212
1260
realstdout = sys .stdout
1213
1261
sys .stdout = open ("boards.txt" , 'w' )
1214
1262
1215
- macros .update (all_flash_size ())
1263
+ macros .update (all_flash_map ())
1216
1264
macros .update (all_debug ())
1217
1265
macros .update (led (led_default , led_max ))
1218
1266
@@ -1280,6 +1328,7 @@ def all_boards ():
1280
1328
if boardsgen :
1281
1329
sys .stdout .close ()
1282
1330
sys .stdout = realstdout
1331
+ print ("generated: boards.txt" )
1283
1332
1284
1333
################################################################
1285
1334
@@ -1311,6 +1360,7 @@ def package ():
1311
1360
if packagegen :
1312
1361
with open (pkgfname , 'w' ) as package_file :
1313
1362
package_file .write (newfilestr )
1363
+ print ("updated: %s" % pkgfname )
1314
1364
else :
1315
1365
sys .stdout .write (newfilestr )
1316
1366
@@ -1352,6 +1402,7 @@ def doc ():
1352
1402
if docgen :
1353
1403
sys .stdout .close ()
1354
1404
sys .stdout = realstdout
1405
+ print ("generated: doc/boards.rst" )
1355
1406
1356
1407
################################################################
1357
1408
# help / usage
@@ -1421,6 +1472,7 @@ def usage (name,ret):
1421
1472
docshow = False
1422
1473
docgen = False
1423
1474
customspeeds = []
1475
+ lddir = "tools/sdk/ld/"
1424
1476
1425
1477
#### vvvv cmdline parsing starts
1426
1478
@@ -1520,7 +1572,7 @@ def usage (name,ret):
1520
1572
did = False
1521
1573
1522
1574
if ldshow :
1523
- all_flash_size ()
1575
+ all_flash_map ()
1524
1576
did = True
1525
1577
1526
1578
if boardsshow :
0 commit comments