LCD_ExternApp/tool/fill_bin.py

46 lines
1.4 KiB
Python
Raw Permalink Normal View History

2025-05-26 10:35:10 +08:00
# -*- coding: utf-8 -*-
import sys
import zlib
from pathlib import Path
def main():
if len(sys.argv) < 3:
print("Usage: pad_bin.py <input.bin> <output_padded.bin> [align] [output_info.txt]")
sys.exit(1)
input_path = Path(sys.argv[1])
output_path = Path(sys.argv[2])
align = int(sys.argv[3], 16) if len(sys.argv) > 3 else 0x100
info_txt_path = Path(sys.argv[4]) if len(sys.argv) > 4 else output_path.with_suffix(".txt")
with input_path.open("rb") as f:
data = f.read()
pad_len = (align - (len(data) % align)) % align
data_padded = data + b'\xFF' * pad_len
crc32_val = zlib.crc32(data_padded) & 0xFFFFFFFF
with output_path.open("wb") as f:
f.write(data_padded)
size_hex = f"{len(data_padded):08X}"
size_formatted = ' '.join([size_hex[i:i+2] for i in range(0, len(size_hex), 2)])
crc_hex = f"{crc32_val:08X}"
crc_formatted = ' '.join([crc_hex[i:i+2] for i in range(0, len(crc_hex), 2)])
with info_txt_path.open("w") as f:
f.write(f"Size: 0x{len(data_padded):08X}\n")
f.write(f"CRC32: 0x{crc32_val:08X}\n")
f.write(size_formatted +' '+ crc_formatted + '\n')
print(f"Padded BIN written to: {output_path}")
print(f"Size: {len(data_padded)} bytes")
print(f"CRC32: 0x{crc32_val:08X}")
print(size_formatted +' '+ crc_formatted)
print(f"Info saved to: {info_txt_path}")
if __name__ == "__main__":
main()