from GoodFETARM7 import *
+import ATMEL_USART as usart
"""
This is the ARM7 series of microcontrollers from Atmel, including:
* AT91M40800
wse = (reg>>5)&1
nws = (reg>>2)&7
dbw = (reg&3)
- output = ["Base Address: %s"%hex(addr),
+ output = ["(register: %x)"%reg,
+ "Base Address: %s"%hex(addr<<20),
"Chip Select: %s"%("False","True")[csen],
"Byte Access Type: %s"%("Byte-Write","Byte-Access")[bat],
"Data Float Output Time: %d cycles added"%tdf,
"Page Size: %d MB"%(1,4,16,64)[pages],
"Wait State: %s"%("disabled","enabled")[wse],
"Wait States: %d"%nws,
- "Data Bus Size: %d bits"%dbw,
+ "Data Bus Size: %d bits"%(0,16,8,0)[dbw],
]
return "\n".join(output)
}
def mcr_decode(mcr):
- validAddrBits,maxAddrSpace,validCS,codeLabel = mcr_decode[mcr&7]
+ validAddrBits,maxAddrSpace,validCS,codeLabel = mcr_ale[mcr&7]
drp = mcr>>4
output = ["Valid Address Bits: %s"%validAddrBits,
"Maximum Address Space: %xMB"%maxAddrSpace,
class GoodFETAT91X40(GoodFETARM):
+ def __init__(self):
+ GoodFETARM.__init__(self)
+ self.usart0 = usart.USART(usart.USART0_BASE)
+ self.usart1 = usart.USART(usart.USART1_BASE)
def getChipSelectReg(self, chipnum):
addr = EBI_BASE + (chipnum*4)
- reg, = self.ARMreadMem(addr,1)
+ reg, = self.ARMreadChunk(addr,1)
return reg
def getChipSelectRegstr(self, chipnum):
return ebi_csr_decode(self.getChipSelectReg(chipnum))
+ def setChipSelectReg(self, chipnum, value):
+ addr = EBI_BASE + (chipnum*4)
+ self.ARMwriteChunk(addr,[value])
def getEBIMemoryMap(self):
keys = ebi_memory_map_items.keys()
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 "\n".join(output)
+ def setRemap(self):
+ self.ARMwriteChunk(EBI_BASE + EBI_OFF_RCR,[REMAP_CMD])
def getMemoryControlRegister(self):
- mcr = self.ARMreadMem(EBI_MCR)
+ mcr, = self.ARMreadMem(EBI_MCR)
return mcr
def getMemoryControlRegisterstr(self):
return mcr_decode(self.getMemoryControlRegister())
self.ARMsetPC(PROGGYBASE)
self.release()
# FIXME: use DCC to upload the new firmware
+
+ def clearFlash(self):
+ pass
+
+ def readPages(self, addr, pagecount, pagesz=(1024*1024)):
+ global pages;
+ pages = []
+ for page in xrange(pagecount):
+ pages.append(self.ARMreadChunk(addr+(pagesz*page), pagesz))
+ return pages
+