mirror of
https://github.com/hathach/tinyusb.git
synced 2025-10-14 10:33:35 +08:00
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
import argparse
|
|
import random
|
|
import os
|
|
import sys
|
|
import time
|
|
import subprocess
|
|
from pathlib import Path
|
|
from multiprocessing import Pool
|
|
from weakref import finalize
|
|
|
|
|
|
def print_carray(f, payload):
|
|
while len(payload) > 0:
|
|
f.write('\n ')
|
|
f.write(', '.join('0x{:02x}'.format(x) for x in payload[0:16]))
|
|
f.write(',')
|
|
payload = payload[16:]
|
|
f.write('\n')
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='Convert binary files to C array format')
|
|
parser.add_argument('files', nargs='+', help='Binary files to convert')
|
|
args = parser.parse_args()
|
|
|
|
files = args.files
|
|
for fin_name in files:
|
|
if not os.path.isfile(fin_name):
|
|
print(f"File {fin_name} does not exist")
|
|
continue
|
|
|
|
with open(fin_name, 'rb') as fin:
|
|
contents = fin.read()
|
|
fout_name = fin_name + '.h'
|
|
with open(fout_name, 'w') as fout:
|
|
print(f"Converting {fin_name} to {fout_name}")
|
|
fout.write(f'enum {{ BINDATA_LEN = {len(contents)} }};\n')
|
|
fout.write(f'const size_t bindata_len = BINDATA_LEN;\n')
|
|
fout.write(f'const uint8_t bindata[] __attribute__((aligned(16))) = {{')
|
|
print_carray(fout, contents)
|
|
fout.write('};\n')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|