Beginnings of info flash support. It isn't very good.
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Thu, 27 May 2010 20:36:39 +0000 (20:36 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Thu, 27 May 2010 20:36:39 +0000 (20:36 +0000)
git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@576 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

firmware/apps/jtag/jtag430.c
firmware/include/jtag.h
firmware/include/jtag430.h

index 20055f2..d704e86 100644 (file)
@@ -173,7 +173,8 @@ void jtag430_por(){
 #define ERASE_SGMT 0xA502
 
 //! Configure flash, then write a word.
 #define ERASE_SGMT 0xA502
 
 //! Configure flash, then write a word.
-void jtag430_eraseflash(unsigned int mode, unsigned int adr, unsigned int count){
+void jtag430_eraseflash(unsigned int mode, unsigned int adr, unsigned int count,
+                       unsigned int info){
   jtag430_haltcpu();
   
   //FCTL1= erase mode
   jtag430_haltcpu();
   
   //FCTL1= erase mode
@@ -181,7 +182,10 @@ void jtag430_eraseflash(unsigned int mode, unsigned int adr, unsigned int count)
   //FCTL2=0xA540, selecting MCLK as source, DIV=1
   jtag430_writemem(0x012A, 0xA540);
   //FCTL3=0xA500, should be 0xA540 for Info Seg A on 2xx chips.
   //FCTL2=0xA540, selecting MCLK as source, DIV=1
   jtag430_writemem(0x012A, 0xA540);
   //FCTL3=0xA500, should be 0xA540 for Info Seg A on 2xx chips.
-  jtag430_writemem(0x012C, 0xA500);
+  if(info)
+    jtag430_writemem(0x012C, 0xA540);
+  else
+    jtag430_writemem(0x012C, 0xA500);
   
   //Write the erase word.
   jtag430_writemem(adr, 0x55AA);
   
   //Write the erase word.
   jtag430_writemem(adr, 0x55AA);
@@ -414,7 +418,11 @@ void jtag430handle(unsigned char app,
     txdata(app,verb,2);
     break;
   case JTAG430_ERASEFLASH:
     txdata(app,verb,2);
     break;
   case JTAG430_ERASEFLASH:
-    jtag430_eraseflash(ERASE_MASS,0xFFFE,0x3000);
+    jtag430_eraseflash(ERASE_MASS,0xFFFE,0x3000,0);
+    txdata(app,verb,0);
+    break;
+  case JTAG430_ERASEINFO:
+    jtag430_eraseflash(ERASE_MASS,0xFFFE,0x3000,1);
     txdata(app,verb,0);
     break;
   case JTAG430_SETPC:
     txdata(app,verb,0);
     break;
   case JTAG430_SETPC:
index 8cb0fdb..432c23d 100644 (file)
@@ -3,6 +3,9 @@
   \brief JTAG handler functions.
 */
 
   \brief JTAG handler functions.
 */
 
+#ifndef JTAG_H
+#define JTAG_H
+
 #include <signal.h>
 #include <io.h>
 #include <iomacros.h>
 #include <signal.h>
 #include <io.h>
 #include <iomacros.h>
@@ -154,19 +157,6 @@ void jtag430_por();
 
 
 //JTAG430 commands
 
 
 //JTAG430 commands
-#define JTAG430_HALTCPU 0xA0
-#define JTAG430_RELEASECPU 0xA1
-#define JTAG430_SETINSTRFETCH 0xC1
-#define JTAG430_SETPC 0xC2
-#define JTAG430_SETREG 0xD2
-#define JTAG430_GETREG 0xD3
-#define JTAG430_WRITEMEM 0xE0
-#define JTAG430_WRITEFLASH 0xE1
-#define JTAG430_READMEM 0xE2
-#define JTAG430_ERASEFLASH 0xE3
-#define JTAG430_ERASECHECK 0xE4
-#define JTAG430_VERIFYMEM 0xE5
-#define JTAG430_BLOWFUSE 0xE6
-#define JTAG430_ISFUSEBLOWN 0xE7
-#define JTAG430_COREIP_ID 0xF0
-#define JTAG430_DEVICE_ID 0xF1
+#include "jtag430.h"
+
+#endif
index 9196e3c..cc32fc9 100644 (file)
@@ -87,6 +87,9 @@ void jtag430_por();
 #define JTAG430_RELEASECPU 0xA1
 #define JTAG430_SETINSTRFETCH 0xC1
 #define JTAG430_SETPC 0xC2
 #define JTAG430_RELEASECPU 0xA1
 #define JTAG430_SETINSTRFETCH 0xC1
 #define JTAG430_SETPC 0xC2
+#define JTAG430_SETREG 0xD2
+#define JTAG430_GETREG 0xD3
+
 #define JTAG430_WRITEMEM 0xE0
 #define JTAG430_WRITEFLASH 0xE1
 #define JTAG430_READMEM 0xE2
 #define JTAG430_WRITEMEM 0xE0
 #define JTAG430_WRITEFLASH 0xE1
 #define JTAG430_READMEM 0xE2
@@ -95,5 +98,6 @@ void jtag430_por();
 #define JTAG430_VERIFYMEM 0xE5
 #define JTAG430_BLOWFUSE 0xE6
 #define JTAG430_ISFUSEBLOWN 0xE7
 #define JTAG430_VERIFYMEM 0xE5
 #define JTAG430_BLOWFUSE 0xE6
 #define JTAG430_ISFUSEBLOWN 0xE7
+#define JTAG430_ERASEINFO 0xE8
 #define JTAG430_COREIP_ID 0xF0
 #define JTAG430_DEVICE_ID 0xF1
 #define JTAG430_COREIP_ID 0xF0
 #define JTAG430_DEVICE_ID 0xF1