jtagarm: a few cleanup things...
[goodfet] / client / GoodFETAT91X40.py
index 12803b5..fa4b30a 100644 (file)
@@ -265,7 +265,7 @@ def mcr_decode(mcr):
     #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)
@@ -330,10 +330,10 @@ class GoodFETAT91X40(GoodFETARM7):
         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)))
@@ -345,9 +345,8 @@ class GoodFETAT91X40(GoodFETARM7):
         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])
@@ -580,17 +579,17 @@ def at91x40_cli_handler(client, argv):
             # 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
@@ -613,12 +612,12 @@ def at91x40_cli_handler(client, argv):
                     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)
@@ -638,9 +637,6 @@ def at91x40_cli_handler(client, argv):
                                 client.resume()
                                 client.halt()
 
-                            #Disable Watch Dog
-                            if client.checkWatchDog():
-                                client.disableWatchDog()
                             err_cnt = 0
                         except:
                             err_cnt += 1
@@ -650,19 +646,26 @@ def at91x40_cli_handler(client, argv):
 
         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()