import binascii import os import sys import time import shutil LEN = 2**16 huffman = False TARGET=os.getcwd() SOURCE=sys.argv[1] HUFFMAN_ENCODER="/Users/david/Devel/arch/avr/code/quickdev16/tools/huffman/huffman-encode" data = open(SOURCE,"r").read() print "Load %s, %i bytes" % (SOURCE,len(data)) data = data[:LEN] print "Use %i bytes" % (len(data)) data = binascii.rlecode_hqx(data) print "RLE crunch (%i) bytes" % (len(data)) rle_size = len(data) huffman_size = 0 if huffman == True: binfile = open("/tmp/loader.rle","w") binfile.write(data) binfile.close() cmd = "%s /tmp/loader.rle" % HUFFMAN_ENCODER os.system(cmd) data = open("/tmp/loader.rle.hfm","r").read() print "HUFFMAN crunch (%i) bytes" % (len(data)) huffman_size = len(data) os.unlink("/tmp/loader.rle") os.unlink("/tmp/loader.rle.hfm") cfile = open("/tmp/loader.c","w") hfile = open("/tmp/loader.h","w") hfile.write(''' #ifndef __FIFO_H__ #define __FIFO_H__ #define ROM_BUFFER_SIZE %i #define ROM_HUFFMAN_SIZE %i #define ROM_RLE_SIZE %i #endif ''' % (len(data), huffman_size, rle_size)) cfile.write('''/* File: %s Time: %s */ #include #include const char _rom[ROM_BUFFER_SIZE] PROGMEM = { ''' % (sys.argv[1],time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()))) for idx,c in enumerate(data): c = ord(c) if idx