From: travisutk Date: Tue, 9 Feb 2010 02:31:42 +0000 (+0000) Subject: Might fix pagesize issue for some Chipcon devices. X-Git-Url: http://git.rot13.org/?p=goodfet;a=commitdiff_plain;h=d3dd9b72ba6d3335cbae4ef560a25e9f707a4435 Might fix pagesize issue for some Chipcon devices. git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@305 12e2690d-a6be-4b82-a7b7-67c4a43b65c8 --- diff --git a/client/GoodFETCC.py b/client/GoodFETCC.py index 69ef8b9..b700131 100644 --- a/client/GoodFETCC.py +++ b/client/GoodFETCC.py @@ -83,13 +83,13 @@ class GoodFETCC(GoodFET): 0xB500:"CC2531", 0xFF00:"CCmissing"}; CCpagesizes={0x01: 1024, #"CC1110", - 0x85: 2048, #"CC2430", - 0x89: 2048, #"CC2431", - 0x81: 1024, #"CC2510", - 0x91: 1024, #"CC2511", - 0xA5: 2048, #"CC2530", #page 52 of SWRU191 - 0xB5: 2048, #"CC2531", - 0xFF: 0 } #"CCmissing"}; + 0x85: 2048, #"CC2430", + 0x89: 2048, #"CC2431", + 0x81: 1024, #"CC2510", + 0x91: 1024, #"CC2511", + 0xA5: 2048, #"CC2530", #page 52 of SWRU191 + 0xB5: 2048, #"CC2531", + 0xFF: 0 } #"CCmissing"}; def CCidentstr(self): ident=self.CCident(); @@ -105,8 +105,13 @@ class GoodFETCC(GoodFET): """Get a chipcon's ID.""" self.writecmd(0x30,0x8B,0,None); chip=ord(self.data[0]); - - return self.CCpagesizes.get(chip); + size=self.CCpagesizes.get(chip); + if(size<10): + print "ERROR: Pagesize undefined."; + print "chip=%02x" %chip; + sys.exit(1); + #return 2048; + return size; def CCgetPC(self): """Get a chipcon's PC.""" self.writecmd(0x30,0x83,0,None); diff --git a/client/goodfet.cc b/client/goodfet.cc index 19a0b13..3c00dc7 100755 --- a/client/goodfet.cc +++ b/client/goodfet.cc @@ -148,6 +148,8 @@ if(sys.argv[1]=="flash"): page = 0x0000; pagelen = client.CCpagesize(); #2048; #2kB pages in 32-bit words + print "page=%04x, pagelen=%04x" % (page,pagelen); + bcount = 0; #Wipe the RAM buffer for the next flash page. diff --git a/firmware/apps/chipcon/chipcon.c b/firmware/apps/chipcon/chipcon.c index 00e3226..33b1283 100644 --- a/firmware/apps/chipcon/chipcon.c +++ b/firmware/apps/chipcon/chipcon.c @@ -331,15 +331,14 @@ unsigned short cc_get_chip_id(){ case 0x81://CC2510 case 0x91://CC2511 flash_word_size=0x02; - //debugstr("2 bytes/flash word"); + debugstr("2 bytes/flash word"); break; default: - flash_word_size=0x04; - break; - //debugstr("Warning: Guessing flash word size."); + debugstr("Warning: Guessing flash word size."); case 0x85://CC2430 case 0x89://CC2431 debugstr("4 bytes/flash word"); + flash_word_size=0x04; break; } @@ -440,6 +439,11 @@ void cc_write_flash_page(u32 adr){ return; } + if(flash_word_size==0){ + debugstr("Flash word size is wrong."); + while(1); + } + //Routine comes next //WRITE_XDATA_MEMORY(IN: 0xF000 + FLASH_PAGE_SIZE, sizeof(routine), routine); cc_write_xdata(0xF000+MAXFLASHPAGE_SIZE,