From 5c029aa0c4f7573d9fa49beefe6e887dee2b25f9 Mon Sep 17 00:00:00 2001 From: travisutk Date: Thu, 27 May 2010 20:36:39 +0000 Subject: [PATCH 1/1] Beginnings of info flash support. It isn't very good. git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@576 12e2690d-a6be-4b82-a7b7-67c4a43b65c8 --- firmware/apps/jtag/jtag430.c | 14 +++++++++++--- firmware/include/jtag.h | 22 ++++++---------------- firmware/include/jtag430.h | 4 ++++ 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/firmware/apps/jtag/jtag430.c b/firmware/apps/jtag/jtag430.c index 20055f2..d704e86 100644 --- a/firmware/apps/jtag/jtag430.c +++ b/firmware/apps/jtag/jtag430.c @@ -173,7 +173,8 @@ void jtag430_por(){ #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 @@ -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. - jtag430_writemem(0x012C, 0xA500); + if(info) + jtag430_writemem(0x012C, 0xA540); + else + jtag430_writemem(0x012C, 0xA500); //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: - 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: diff --git a/firmware/include/jtag.h b/firmware/include/jtag.h index 8cb0fdb..432c23d 100644 --- a/firmware/include/jtag.h +++ b/firmware/include/jtag.h @@ -3,6 +3,9 @@ \brief JTAG handler functions. */ +#ifndef JTAG_H +#define JTAG_H + #include #include #include @@ -154,19 +157,6 @@ void jtag430_por(); //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 diff --git a/firmware/include/jtag430.h b/firmware/include/jtag430.h index 9196e3c..cc32fc9 100644 --- a/firmware/include/jtag430.h +++ b/firmware/include/jtag430.h @@ -87,6 +87,9 @@ void jtag430_por(); #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 @@ -95,5 +98,6 @@ void jtag430_por(); #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 -- 2.20.1