X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETARM.py;h=889f2e42bf115cff0ac452eb30f35bbd8a2eadab;hp=33058203ed6e81d31132147bc14585e3cbae78bd;hb=d93b8f94f1b579f667ec449ad1738a62f80db4a0;hpb=69d45b39c9ab9f3e814dea7462773e42f461ce22;ds=sidebyside diff --git a/client/GoodFETARM.py b/client/GoodFETARM.py index 3305820..889f2e4 100644 --- a/client/GoodFETARM.py +++ b/client/GoodFETARM.py @@ -55,6 +55,14 @@ SET_SPSR = 0x9b SET_MODE_THUMB = 0x9c SET_MODE_ARM = 0x9d + +platforms = { + "at91sam7": {0:(0x100000, "Flash before remap, SRAM after remap"), + 0x100000: (0x100000, "Internal Flash"), + 0x200000: (0x100000, "Internal SRAM"), + }, + } + from GoodFET import GoodFET from intelhex import IntelHex @@ -71,6 +79,8 @@ class GoodFETARM(GoodFET): self.writecmd(0x13,RESUMECPU,0,self.data) def ARMsetModeArm(self): self.writecmd(0x13,SET_MODE_ARM,0,self.data) + def ARMsetModeThumb(self): + self.writecmd(0x13,SET_MODE_THUMB,0,self.data) def ARMtest(self): #self.ARMreleasecpu() #self.ARMhaltcpu() @@ -145,9 +155,9 @@ class GoodFETARM(GoodFET): def ARMset_dbgctrl(self,config): """Write the config register of an ARM.""" self.writecmd(0x13,SET_DEBUG_CTRL,1,[config&7]) - def ARMlockchip(self): - """Set the flash lock bit in info mem.""" - self.writecmd(0x13, LOCKCHIP, 0, []) + #def ARMlockchip(self): + # """Set the flash lock bit in info mem.""" + # self.writecmd(0x13, LOCKCHIP, 0, []) def ARMidentstr(self): @@ -192,6 +202,14 @@ class GoodFETARM(GoodFET): self.writecmd(0x13,SET_REGISTERS,16*4,regarry) retval = struct.unpack(">8)&0xff, (val>>16)&0xff, val>>24]) def ARMcmd(self,phrase): self.writecmd(0x13,READ,len(phrase),phrase) val=ord(self.data[0]) @@ -202,29 +220,30 @@ class GoodFETARM(GoodFET): instr = struct.pack(">8)&0xff, (adr>>16)&0xff, (adr>>24)&0xff, words&0xff, (words>>8)&0xff, (words>>16)&0xff, (words>>24)&0xff ] - self.writecmd(0x13,PEEK,2,self.data) + self.writecmd(0x13,READ_CODE_MEMORY,8,self.data) retval = [] retval.append(self.serialport.read(words*4)) #retval = struct.unpack(">8, (adr&0xff0000)>>16, (adr&0xff000000)>>24] - self.writecmd(0x13, PEEK, 2, self.data) + self.data=[ adr&0xff, (adr>>8)&0xff, (adr>>16)&0xff, (adr>>24)&0xff ] + self.writecmd(0x13, PEEK, 4, self.data) + #retval.append(self.serialport.read(words*4)) retval = struct.unpack(">8, val] - self.writecmd(0x13, POKE, 3, self.data) + self.data=[adr&0xff, (adr>>8)&0xff, (adr>>16)&0xff, (adr>>24)&0xff, val&0xff, (val>>8)&0xff, (val>>16)&0xff, (val>>24)&0xff ] + self.writecmd(0x13, POKE, 8, self.data) retval = struct.unpack(">8)&0xFF, - (adr>>16)&0xFF, - (adr>>24)&0xFF] - print "Flashing buffer to 0x%06x" % adr - self.writecmd(0x13,MASS_FLASH_PAGE,4,data) + #def ARMstep_instr(self): + # """Step one instruction.""" + # self.writecmd(0x13,STEP_INSTR,0,self.data) + #def ARMflashpage(self,adr): + # """Flash 2kB a page of flash from 0xF000 in XDATA""" + # data=[adr&0xFF, + # (adr>>8)&0xFF, + # (adr>>16)&0xFF, + # (adr>>24)&0xFF] + # print "Flashing buffer to 0x%06x" % adr + # self.writecmd(0x13,MASS_FLASH_PAGE,4,data) def writecmd(self, app, verb, count=0, data=[]): """Write a command and some data to the GoodFET."""