nt9856x/rtos/build/nvt-tools/reduce_fat_bin.py
2023-03-28 15:07:53 +08:00

71 lines
1.5 KiB
Python
Executable File

#!/usr/bin/python2.7
import sys, os
import math
import base64
from array import array
SEGMENT=64
'''
This tool can be used to get reduced fat image
'''
def usage():
print "\033[01;33mUsage: %s fat_input_image fat_output_image\033[0m" % sys.argv[0]
print "e.g."
print "\t %s fat_image.bin fat_reduce_image.bin" % sys.argv[0]
def data_array_is_zero(data_list):
val=base64.b16encode(data_list)
if (int(val,16) == 0):
return 1
else:
return 0
def process_image(input_name, output_name):
print "\033[01;32mInput image name is %s" % input_name
print "Output image name is %s\033[0m" % output_name
''' Generate reduced fat image '''
file_line_num=0
with open(input_name, "rb") as file_in, open(output_name, "wb") as file_out:
file_in.seek(0,2)
size=file_in.tell()
total_lines=size/SEGMENT
file_line_num=total_lines-1
while file_line_num >= 0:
file_in.seek(SEGMENT*file_line_num,0)
input_data = file_in.read(SEGMENT)
ret=data_array_is_zero(input_data)
if (ret == 0):
break;
else:
file_line_num-=1
file_in.seek(0,0)
input_data = file_in.read((file_line_num+2)*SEGMENT + 64*1024)
for data in input_data:
file_out.write(data)
file_in.close()
file_out.close()
print "\033[01;32mGenerate reduced fat image finished.\033[0m"
def main():
input_name = sys.argv[1]
output_name = sys.argv[len(sys.argv)-1]
if os.path.isfile(output_name):
os.remove(output_name)
process_image(input_name, output_name)
if __name__ == "__main__":
if (len(sys.argv) != 3) :
usage()
sys.exit(0)
main()