def main(args: argparse.Namespace): brtype = args.branch_type hexfile = args.hexfile # Pad a numeric string with zeros brtype = brtype.zfill(BRANCH_TYPE_BYTES * 2) # Split string data into bytes (e.g. "AABBCCDD" -> b'\xaa\xbb\xcc\xdd' bytes_brtype = bytes.fromhex(brtype) ''' # for debug print("bytes_brtype=", end='') print(bytes_brtype) ''' ih = IntelHex() # Write out user defined data global csvFilePath csvFilePath = args.user_data if csvFilePath is not None: # if csvFilePath is given if os.path.exists(csvFilePath): with open(csvFilePath, 'r') as fp: csvList = list(csv.reader(fp)) if len(csvList) > 0: print("csvList has some contents") flatList = [item for subList in csvList for item in subList] print(flatList) bytes_data = strlist_to_bytes(flatList) if len(bytes_data) > 0: ih.puts(USER_DATA_ADDR, bytes_data) else: print(csvFilePath + " is empty") ErrorMsg() else: print(csvFilePath + " not found. Skip user defined EEPROM data flash.") print() else: print("Skip user defined EEPROM data flash.") print() # Write out branchType ih.puts(SYSTEM_RESERVED_ADDR, bytes_brtype) hex_file_name = os.path.join(os.path.dirname(os.path.abspath(__file__)), hexfile) ih.dump() ih.write_hex_file(hex_file_name)
class IHexFile: def __init__(self): self.ihex = IntelHex() self.fileName = "None Loaded" self.fileLoaded = False self.faultList = {} def loadFromFile(self, infilename): self.ihex.fromfile(infilename, format='hex') self.fileName = infilename self.fileLoaded = True self.minAddress = self.ihex.minaddr() self.maxAddress = self.ihex.maxaddr() return "OK" def writeToFile(self, outfilename): if not self.fileLoaded: return "No File Loaded" else: self.ihex.write_hex_file(outfilename) return "OK" def writeHexDump(self, fname): if not self.fileLoaded: return "No File Loaded" else: f = open(fname, 'w') self.ihex.dump(f) f.close() return "Wrote " + fname def faultInjection(self, address, value): if not self.fileLoaded: return "No Hex File Loaded" elif address > self.maxAddress or address < self.minAddress: return "Address out of Range" else: self.ihex[address] = value self.ihex[address + 1] = value self.faultList[address] = value #How to handle Low and High Byte!!! return "OK" def viewFaults(self): if not self.fileLoaded: return "No Hex File Loaded" else: return self.faultList
def _bytes_to_pretty_hex(data, offset=0x0000): """Convert a list of bytes to a nicely formatted ASCII decoded hex string. :param data: List of integers, each representing a single byte. :param offset: Start address offset. :return: A string with the formatted hex data. """ i_hex = IntelHex() i_hex.frombytes(data, offset) fake_file = StringIO() try: i_hex.dump(tofile=fake_file, width=16, withpadding=False) except IOError as e: sys.stderr.write("ERROR: File write: {}\n{}".format(fake_file, str(e))) return pretty_hex_str = fake_file.getvalue() fake_file.close() return pretty_hex_str
class RomMemory: """docstring for RomMemory""" pagesize = 256 numpages = 128 size = pagesize * numpages def __init__(self): self.rom = IntelHex() self.size = 0 def OpenHex(self, filename): self.rom = IntelHex() try: self.rom.fromfile(filename, format='hex') except: return None self.size = len(self.rom.tobinarray()) return True def OpenBin(self, filename): self.rom = IntelHex() try: self.rom = fromfile(filename, format='bin') except: return None self.size = len(self.rom.tobinarray()) return True def Print(self): self.rom.dump() def ReadPage(self, numpage): return self.rom.tobinarray(start=numpage * self.pagesize, size=self.pagesize) def ReadBytes(self, address, count): return self.rom.tobinarray(start=address, size=count)
#a = input('Programming done. Do you wish to verify? y/n: ') #if a == 'Y' or a == 'y': print('Reading...') #err = False conta = 0 for i in range(0x0, 0x7FF): #addr = ih.addresses()[i] if conta == 256: conta = 0 print(hex(i)) conta += 1 ser.write(b'\x54') ser.write(bytes([i // 256])) # high address byte ser.write(bytes([i % 256])) # low address byte k = int(ser.readline().decode('utf-8'), 16) ih[i] = k #print(k); # if k != ih[addr]: # print('Error at address' + hex(addr)) # print('Got %d, was %d' % (k, ih[addr])) # err = True # if not err: # print('Verification complete.') # ser.write(b'\x40') # End programming print(ser.readline().decode('utf-8')) ih.dump() ih.write_hex_file(f) print('Done.')
def decode(record): h = IntelHex() f = StringIO(record) h.loadhex(f) h.dump()
if cfgDic['secchar'] != 0 and cfgDic['seccharnum'] != 0: for i in range(cfgDic['secchar'], cfgDic['secchar'] + cfgDic['seccharnum']): if SetWidth(ih, i) == -1: print('Error, char not in range=>' + hex(i)) finish_flag = 0 break else: print('Second char range not present.') if finish_flag == 0: break if 'CopyCharTbl' in cfgDic: print('---Copy char From Table---') for i in range(len(cfgDic['CopyCharTbl'])): print(hex(cfgDic['CopyCharTbl'][i][0]) + '=>' + hex(cfgDic['CopyCharTbl'][i][1])) if charCopy(ih, cfgDic['CopyCharTbl'][i][0], cfgDic['CopyCharTbl'][i][1]) == -1: break else: print('Error size font datain file: ' + cfgDic['asmfile']) break if cfgLine == 0: break if finish_flag == 1: if cfgDic['hexoutfile'] != '': ih.write_hex_file(cfgDic['hexoutfile'], False) print('Hex File wrote.') if cfgDic['txtoutfile'] != '': outFile = open(cfgDic['txtoutfile'], 'w') ih.dump(outFile) outFile.close() print('Txt File wrote.') else: print("Error can't open file font2hex.cfg!")
name = self._name_of_address_thunk(address) return name, address def _adjust(self, op, args, addr): return (ibv(args[0] - addr - 1),) if __name__ == '__main__': aa = AVRAssembly() aa.assemble_file('asm.py') ## print ; print ; print ## pprint.pprint(dict(aa.context)) ## print ; print ; print ## pprint.pprint(dict(aa.data)) ## print ; print ; print ## pprint.pprint(aa.pass2()) data = aa.pass2() print ; print ; print pprint.pprint(data) from intelhex import IntelHex ih = IntelHex() for addr, val in data.iteritems(): addr = int(addr, 16) if isinstance(val, str): ih.puts(addr, val) else: print 'non-str', addr, repr(val) ## ih.dump(tofile=open('pavr.hex', 'w')) ih.dump()
#!/usr/bin/python import sys from intelhex import IntelHex print('Number of arguments:', len(sys.argv), 'arguments.') print('Argument List:', str(sys.argv)) if (len(sys.argv) > 2): print( 'Too many arguments, use this instead: python dump_hex.py <hex_file>.hex' ) exit(-1) hex_file = IntelHex() hex_file.loadfile(sys.argv[1], format='hex') file = open((str(sys.argv[1]) + ".txt"), 'w') print('Dumping hex file contents into: ' + (str(sys.argv[1]) + ".txt")) hex_file.dump(file) file.close()
#!/usr/bin/env python #coding: utf-8 from intelhex import IntelHex import sys filename = sys.argv[1] data = IntelHex() data.loadhex(filename) data.dump()
def hexFilePayloadtoHumanReadableforDebugging(filename, format='hex'): ih = IntelHex() ih.fromfile(filename, format) ih.dump()
#!/usr/bin/python import sys from intelhex import IntelHex hexFile = IntelHex(sys.argv[1]) hexFile.dump()