From d2478c7eeb0a3b55d4ab7746a65faf3212857cf3 Mon Sep 17 00:00:00 2001 From: dodge-this Date: Wed, 14 Apr 2010 04:15:10 +0000 Subject: [PATCH] Good stuff for ARM7TDMI. get_/set_register() seem to work ok. Something odd happens when setting r0 and r15. git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@458 12e2690d-a6be-4b82-a7b7-67c4a43b65c8 --- client/GoodFETARM.py | 47 +++++---- firmware/apps/jtag/jtagarm7tdmi.c | 169 ++++++++++++++++-------------- firmware/include/jtagarm7tdmi.h | 39 ++++--- 3 files changed, 138 insertions(+), 117 deletions(-) diff --git a/client/GoodFETARM.py b/client/GoodFETARM.py index d254ed9..52f2560 100644 --- a/client/GoodFETARM.py +++ b/client/GoodFETARM.py @@ -74,7 +74,7 @@ class GoodFETARM(GoodFET): def ARMtest(self): self.ARMreleasecpu() self.ARMhaltcpu() - #print "Status: %s" % self.ARMstatusstr() + print "Status: %s" % self.ARMstatusstr() #Grab ident three times, should be equal. ident1=self.ARMident() @@ -84,9 +84,27 @@ class GoodFETARM(GoodFET): print "Error, repeated ident attempts unequal." print "%04x, %04x, %04x" % (ident1, ident2, ident3) + #Set and Check Registers + regs = [1024+x for x in range(1,15)] + regr = [] + for x in range(len(regs)): + self.ARMset_register(x, regs[x]) + + for x in range(len(regs)): + regr.append(self.ARMget_register(x)) + + for x in range(len(regs)): + if regs[x] != regr[x]: + print "Error, R%d fail: %x != %x"%(x,regs[x],regr[x]) + + return + + + + #Single step, printing PC. print "Tracing execution at startup." - for i in range(1,15): + for i in range(15): pc=self.ARMgetPC() byte=self.ARMpeekcodebyte(i) #print "PC=%04x, %02x" % (pc, byte) @@ -116,8 +134,6 @@ class GoodFETARM(GoodFET): self.writecmd(0x33,SETUP,0,self.data) def ARMget_dbgstate(self): """Read the config register of an ARM.""" - self.writecmd(0x33,GET_DEBUG_STATE,0,self.data) - print "DEBUGGING get_dbgstate: %s"%repr(self.data) retval = struct.unpack(">24, (val>>16)&0xff, (val>>8)&0xff, val&0xff,9,8,7,6,5,4,3,2,1,0,2,3]) - print "DEBUG:SET_REGISTER: %s"%asp.hexText(self.data) + self.writecmd(0x33,SET_REGISTER,8,[reg,0,0,0,val&0xff, (val>>8)&0xff, (val>>16)&0xff, val>>24]) + #self.writecmd(0x33,SET_REGISTER,8,[reg,0,0,0, (val>>16)&0xff, val>>24, val&0xff, (val>>8)&0xff]) retval = struct.unpack(">24, (reg>>16)&0xff, (reg>>8)&0xff, reg&0xff]) - self.writecmd(0x33,GET_REGISTER,16*4,regarry) - print "DEBUG:SET_REGISTER: %s"%asp.hexText(self.data) - #retval = struct.unpack(">8)&0xff, (reg>>16)&0xff, reg>>24]) + self.writecmd(0x33,SET_REGISTERS,16*4,regarry) + retval = struct.unpack("