waf: pad bootloader to multiple of 32 bytes
this ensures that we can write a whole flash line when updating bootloader from ROMFS
This commit is contained in:
parent
1d6c877c3c
commit
e5efbffe5b
@ -12,13 +12,24 @@ import os, sys, tempfile, gzip
|
||||
def write_encode(out, s):
|
||||
out.write(s.encode())
|
||||
|
||||
def embed_file(out, f, idx):
|
||||
def embed_file(out, f, idx, embedded_name):
|
||||
'''embed one file'''
|
||||
try:
|
||||
contents = open(f,'rb').read()
|
||||
except Exception:
|
||||
print("Failed to embed %s" % f)
|
||||
return False
|
||||
|
||||
pad = 0
|
||||
if embedded_name.endswith("bootloader.bin"):
|
||||
# round size to a multiple of 32 bytes for bootloader, this ensures
|
||||
# it can be flashed on a STM32H7 chip
|
||||
blen = len(contents)
|
||||
pad = (32 - (blen % 32)) % 32
|
||||
if pad != 0:
|
||||
contents += bytes([0xff]*pad)
|
||||
print("Padded %u bytes for %s" % (pad, embedded_name))
|
||||
|
||||
write_encode(out, 'static const uint8_t ap_romfs_%u[] = {' % idx)
|
||||
|
||||
# compress it
|
||||
@ -45,7 +56,7 @@ def create_embedded_h(filename, files):
|
||||
|
||||
for i in range(len(files)):
|
||||
(name, filename) = files[i]
|
||||
if not embed_file(out, filename, i):
|
||||
if not embed_file(out, filename, i, name):
|
||||
return False
|
||||
|
||||
write_encode(out, '''const AP_ROMFS::embedded_file AP_ROMFS::files[] = {\n''')
|
||||
|
Loading…
Reference in New Issue
Block a user