Steward
分享是一種喜悅、更是一種幸福
微處理器 - Lattice iCE40UP5K-SG48I (ICE40_FPGA_PICO) - bin2rbt.py
參考資訊:
https://github.com/375432636/bin2rbt
bin2rbt.py
# 原始作者: moo
# 参与修改者:John Huang
import datetime
import click
head_line = "Lattice Semiconductor Corporation ASCII Bitstream\r\n"
gen_time = "Date:"+f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"+"\r\n"*6
def int2bin_list(int_number_list):
# convert the binary code to binary text one by one
return "".join(["{0:08b}".format(i) for i in int_number_list])
@click.command()
@click.option('--binfile', default='binfile.bin', help='binfile.bin')
@click.option('--rbtfile', default='rbtfile.txt', help='rbtfile.txt.')
def bin2rbt(binfile, rbtfile):
# read file
with open(binfile, "rb") as bf:
bin_data = bf.read()
# process text
# convert the binary code to binary text every 10 byte.
binlines = ""
for i in range(len(bin_data)-6):
if i%10 == 0:
binlines = binlines + "\r\n"
binlines += int2bin_list([bin_data[i]])
binlines+= "\r\n"
# the laste 6 byte need specific format
endline1 = int2bin_list(bin_data[-6:-4]) + "\r\n"
endline2 = int2bin_list(bin_data[-4:])+"\r\n"
# save the text to file
with open(rbtfile, "wb") as rf:
context_lines = head_line + \
gen_time + binlines + \
endline1 + endline2
context_lines = "".join(context_lines).encode()
rf.write(context_lines)
if __name__ == '__main__':
bin2rbt()