#print hex(drp)
if drp and drp != 1:
drp = 2
- return (validAddrBits, maxAddrSpace, validCS, codeLabel, drp)
+ return (validAddrBits, maxAddrSpace, validCS, codeLabel, drp)
def mcr_decode_str(mcr):
( validAddrBits, maxAddrSpace, validCS, codeLabel, drp) = mcr_decode(mcr)
addr = EBI_BASE + (chipnum*4)
self.ARMwriteChunk(addr,[value])
- def getEBIMemoryMap(self):
+ def getEBIMemoryMapstr(self):
keys = ebi_memory_map_items.keys()
keys.sort()
- output = [ "EBI Memory Map"]
+ output = [ "===EBI Memory Map==="]
for x in xrange(8):
desc,name,rw,default = ebi_memory_map_items[x*4]
output.append("\nMAP: %s (%s) - default: %x\n%s"%(name,desc,default,self.getChipSelectRegstr(x)))
return mcr
def getMemoryControlRegisterstr(self):
return mcr_decode_str(self.getMemoryControlRegister())
- def getEBIMCR(self):
- print "EBI Memory Control Register\n"
- print self.getMemoryControlRegisterstr()
+ def getEBIMCRstr(self):
+ return "EBI Memory Control Register\n" + self.getMemoryControlRegisterstr()
def getInterruptSourceModeReg(self, regnum):
regval = self.ARMreadMem(AIC_SMR[regnum][0])
# Yes, this requires that you set the start and stop addresses
special_reg_num=int(argv[5])
special_addr=int(argv[6],16)
+ err_list = []
print "Dumping from %04x to %04x as %s." % (start,stop,f)
- #h = IntelHex16bit(None)
# FIXME: get mcu state and return it to that state
client.halt()
h = IntelHex(None)
i=start
+ err_cnt = 0
+ reset_cnt = 0
while i<=stop:
- err_cnt = 0
- #data=client.ARMreadMem(i, 48)
try:
data=client.ARMreadChunk(i, 48, verbose=0)
print "Dumped %06x."%i
else:
try:
print "Unknown error during read. Resync and retry."
+ err_list.append("0x%06x"%i)
# If we error out several times then reset the chip and restart
# This uses a special register value from a Chip Select Register
# to test that the chip is in the operation state we expect
if not ((err_cnt+1) % 2):
- reset_cnt = 0
while True:
print " Reset:",reset_cnt
check_addr = client.getChipSelectReg(special_reg_num)
client.resume()
client.halt()
- #Disable Watch Dog
- if client.checkWatchDog():
- client.disableWatchDog()
err_cnt = 0
except:
err_cnt += 1
client.resume()
h.write_hex_file(f)
+ print "Addresses that required resync:"
+ if err_list:
+ for e in err_list:
+ print " ",e
+ else:
+ print " None"
if(argv[1]=="memorymap"):
client.halt()
- print client.getEBIMCR()
+ print "=============================================="
+ print client.getEBIMCRstr()
print ""
- print client.getEBIMemoryMap()
+ print client.getEBIMemoryMapstr()
client.resume()
if(argv[1]=="memorycontrolreg"):
client.halt()
- print client.getEBIMCR()
+ print client.getEBIMCRstr()
client.resume()