--- /dev/null
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import os
+import sys
+import time
+import struct
+import shutil
+
+"""
+介绍:
+ 本脚本主要实现 oobsize 64 的 file.bin 的 oob数据调整,
+ 生成的文件,专门提供给河洛半导体的专用下载工具。
+"""
+
+#tools/scripts/unyaffs2tool.py
+cur_dir = os.path.dirname(os.path.abspath(__file__))
+#tools/unyaffs_0.9.7/unyaffs
+image_tool_path = os.path.realpath(os.path.join(cur_dir, '..','unyaffs_0.9.7'))
+
+# 配置nandflash信息
+cfg_page_size = 2048
+cfg_obb_size = 64
+
+partition_list = [
+ ["user","0x0", "null"]
+]
+
+# 将生成image文件转换大小端,保存成另外文件
+def convert(src_file, dest_file):
+ fp_src = open(src_file, 'rb')
+ fp_dest = open(dest_file, 'wb')
+ oobfound=0
+ oobdata_index=0
+ oobdata_tmp0=struct.pack('BBBB', 0, 0, 0,0)
+ oobdata_tmp1=struct.pack('BBBB', 0, 0, 0,0)
+ oobdata_tmp2=struct.pack('BBBB', 0, 0, 0,0)
+ oobdata_tmp3=struct.pack('BBBB', 0, 0, 0,0)
+ oobdata_tmp4=struct.pack('BBBB', 0, 0, 0,0)
+ oobdata_tmp5=struct.pack('BBBB', 0, 0, 0,0)
+ oobdata_tmp6=struct.pack('BBBB', 0, 0, 0,0)
+ src_size = os.path.getsize(src_file)
+ for i in range(int(src_size / 4)):
+ data = fp_src.read(4)
+ # print(" r= {} {} {} {}".format( hex(data[0]), hex(data[1]), hex(data[2]), hex(data[3])))
+ if oobfound == 1 :
+ if oobdata_index < 15:
+ # print(" r r {} {} {} {}".format( hex(data[0]), hex(data[1]), hex(data[2]), hex(data[3])))
+ # header 0 1=0 2=0
+ # 3=1 4=2 5=0 6=0
+ # 7=3 8=4 9=0 10=0
+ # 11=5 12=6 13=0 14=0
+
+ if oobdata_index == 0:
+ oobdata_tmp0 = struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ fp_dest.write(oobdata_tmp0)
+ # print(" = = {} {} {} {}".format( hex(oobdata_tmp0[0]), hex(oobdata_tmp0[1]), hex(oobdata_tmp0[2]), hex(oobdata_tmp0[3])))
+ elif oobdata_index == 1:
+ oobdata_tmp1 = struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ rw = struct.pack('BBBB', 0, 0, 0, 0)
+ fp_dest.write(rw)
+ # print(" = = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+ elif oobdata_index == 2:
+ oobdata_tmp2 = struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ rw = struct.pack('BBBB', 0, 0, 0, 0)
+ fp_dest.write(rw)
+ # print(" = = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+ elif oobdata_index == 3:
+ oobdata_tmp3 = struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ fp_dest.write(oobdata_tmp1)
+ # print(" = = {} {} {} {}".format( hex(oobdata_tmp1[0]), hex(oobdata_tmp1[1]), hex(oobdata_tmp1[2]), hex(oobdata_tmp1[3])))
+ elif oobdata_index == 4:
+ oobdata_tmp4 = struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ fp_dest.write(oobdata_tmp2)
+ # print(" = = {} {} {} {}".format( hex(oobdata_tmp2[0]), hex(oobdata_tmp2[1]), hex(oobdata_tmp2[2]), hex(oobdata_tmp2[3])))
+ elif oobdata_index == 5:
+ oobdata_tmp5 = struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ rw = struct.pack('BBBB', 0, 0, 0, 0)
+ fp_dest.write(rw)
+ # print(" = = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+ elif oobdata_index == 6:
+ oobdata_tmp6 = struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ rw = struct.pack('BBBB', 0, 0, 0, 0)
+ fp_dest.write(rw)
+ # print(" = = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+ elif oobdata_index == 7:
+ fp_dest.write(oobdata_tmp3)
+ # print(" = = {} {} {} {}".format( hex(oobdata_tmp3[0]), hex(oobdata_tmp3[1]), hex(oobdata_tmp3[2]), hex(oobdata_tmp3[3])))
+ elif oobdata_index == 8:
+ fp_dest.write(oobdata_tmp4)
+ # print(" = = {} {} {} {}".format( hex(oobdata_tmp4[0]), hex(oobdata_tmp4[1]), hex(oobdata_tmp4[2]), hex(oobdata_tmp4[3])))
+ elif oobdata_index == 9:
+ rw = struct.pack('BBBB', 0, 0, 0, 0)
+ fp_dest.write(rw)
+ # print(" = = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+ elif oobdata_index == 10:
+ rw = struct.pack('BBBB', 0, 0, 0, 0)
+ fp_dest.write(rw)
+ # print(" = = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+ elif oobdata_index == 11:
+ fp_dest.write(oobdata_tmp5)
+ # print(" = = {} {} {} {}".format( hex(oobdata_tmp5[0]), hex(oobdata_tmp5[1]), hex(oobdata_tmp5[2]), hex(oobdata_tmp5[3])))
+ elif oobdata_index == 12:
+ fp_dest.write(oobdata_tmp6)
+ # print(" = = {} {} {} {}".format( hex(oobdata_tmp6[0]), hex(oobdata_tmp6[1]), hex(oobdata_tmp6[2]), hex(oobdata_tmp6[3])))
+ elif oobdata_index == 13:
+ rw = struct.pack('BBBB', 0, 0, 0, 0)
+ fp_dest.write(rw)
+ # print(" = = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+ elif oobdata_index == 14:
+ rw = struct.pack('BBBB', 0, 0, 0, 0)
+ fp_dest.write(rw)
+ # print(" = = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+ oobdata_index += 1
+
+ else:
+ oobfound = 0
+ oobdata_index = 0
+ rw=struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ fp_dest.write(rw)
+ # print(" w = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+ elif data[0]==16 and data[1]==0 and data[2]==255 and data[3]==255:
+ # print("-===================")
+ # print(" r r {} {} {} {}".format( hex(data[0]), hex(data[1]), hex(data[2]), hex(data[3])))
+ # print(" = = {} {} {} {}".format( hex(data[0]), hex(data[1]), hex(data[2]), hex(data[3])))
+ oobfound=1
+ rw=struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ fp_dest.write(rw)
+ # print(" w = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+ else:
+ rw=struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ fp_dest.write(rw)
+ # print(" w = {} {} {} {}".format( hex(rw[0]), hex(rw[1]), hex(rw[2]), hex(rw[3])))
+
+ fp_src.close()
+ fp_dest.close()
+
+def convert2(src_file, dest_file):
+ fp_src = open(src_file, 'rb')
+ fp_dest = open(dest_file, 'wb')
+ src_size = os.path.getsize(src_file)
+ for i in range(int(src_size / 4)):
+ data = fp_src.read(4)
+ print(" r= {} {} {} {}".format( hex(data[0]), hex(data[1]), hex(data[2]), hex(data[3])))
+ rw=struct.pack('BBBB', data[0], data[1], data[2],data[3])
+ fp_dest.write(rw)
+
+ fp_src.close()
+ fp_dest.close()
+
+if __name__ == "__main__":
+ image_file=sys.argv[1]
+ tmpdir=sys.argv[2]
+ # image_file = os.path.join(cur_dir, "file.bin")
+
+ if sys.platform == 'linux2' or sys.platform == 'linux':
+
+ imgfilesize = os.path.getsize(image_file)
+ # targetfile = os.path.join(sys.argv[2],"filetmp.bin")
+ convert(image_file,tmpdir)
+ # convert2(image_file,targetfile)
+
+ print("make yaffs image file over!")