diff --git a/ChangeLog b/ChangeLog index 6484cfb6..82243610 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2013-09-03 Joerg Wunsch + + * avrdude.h: Remove the erase cycle counter (options -y / -Y). + * avr.c: (Dito.) + * main.c: (Dito.) + * avrdude.1: Undocument -y / -Y. + * doc/avrdude.texi: (Dito.) + 2013-09-03 Joerg Wunsch bug #39691 Buffer overrun when reading EEPROM byte with JTAGICE3 diff --git a/NEWS b/NEWS index fef5093b..c48ef402 100644 --- a/NEWS +++ b/NEWS @@ -101,8 +101,8 @@ Current: everything mentioned in the file (even in case the file has large 0xFF blocks). - * The EEPROM contents for the cyclecounter is only read when - explicitly requested by a -y or -Y option. + * The eraes cycle counter (formerly options -y / -Y) has been + removed. * The -U option now accepts ELF files as input files, and extracts the appropriate section contents that matches the requested memory diff --git a/avr.c b/avr.c index 37f961b4..edce7a53 100644 --- a/avr.c +++ b/avr.c @@ -1172,31 +1172,10 @@ int avr_put_cycle_count(PROGRAMMER * pgm, AVRPART * p, int cycles) int avr_chip_erase(PROGRAMMER * pgm, AVRPART * p) { - int cycles; int rc; - if (do_cycles) { - rc = avr_get_cycle_count(pgm, p, &cycles); - /* - * Don't update the cycle counter, if read failed - */ - if(rc != 0) { - do_cycles = 0; - } - } - rc = pgm->chip_erase(pgm, p); - /* - * Don't update the cycle counter, if erase failed - */ - if (do_cycles && (rc == 0)) { - cycles++; - fprintf(stderr, "%s: erase-rewrite cycle count is now %d\n", - progname, cycles); - avr_put_cycle_count(pgm, p, cycles); - } - return rc; } diff --git a/avrdude.1 b/avrdude.1 index ba9d4b26..9a531fbc 100644 --- a/avrdude.1 +++ b/avrdude.1 @@ -18,7 +18,7 @@ .\" .\" $Id$ .\" -.Dd DATE May 16, 2013 +.Dd DATE September 3, 2013 .Os .Dt AVRDUDE 1 .Sh NAME @@ -50,8 +50,6 @@ .Op Fl v .Op Fl x Ar extended_param .Op Fl V -.Op Fl y -.Op Fl Y .Sh DESCRIPTION .Nm Avrdude is a program for downloading code and data to Atmel AVR @@ -673,30 +671,6 @@ to the chosen programmer implementation as an extended parameter. The interpretation of the extended parameter depends on the programmer itself. See below for a list of programmers accepting extended parameters. -.It Fl y -Tells -.Nm -to use the last four bytes of the connected parts' EEPROM memory to -track the number of times the device has been erased. When this -option is used and the -.Fl e -flag is specified to generate a chip erase, the previous counter will -be saved before the chip erase, it is then incremented, and written -back after the erase cycle completes. Presumably, the device would -only be erased just before being programmed, and thus, this can be -utilized to give an indication of how many erase-rewrite cycles the -part has undergone. Since the FLASH memory can only endure a finite -number of erase-rewrite cycles, one can use this option to track when -a part is nearing the limit. The typical limit for Atmel AVR FLASH is -1000 cycles. Of course, if the application needs the last four bytes -of EEPROM memory, this option should not be used. -.It Fl Y Ar cycles -Instructs -.Nm -to initialize the erase-rewrite cycle counter residing at the last four -bytes of EEPROM memory to the specified value. If the application -needs the last four bytes of EEPROM memory, this option should not be -used. .El .Ss Terminal mode In this mode, diff --git a/avrdude.h b/avrdude.h index ad341680..ede4aea5 100644 --- a/avrdude.h +++ b/avrdude.h @@ -24,7 +24,6 @@ extern char * progname; /* name of program, for messages */ extern char progbuf[]; /* spaces same length as progname */ -extern int do_cycles; /* track erase-rewrite cycles (-y) */ extern int ovsigck; /* override signature check (-F) */ extern int verbose; /* verbosity level (-v, -vv, ...) */ extern int quell_progress; /* quiteness level (-q, -qq) */ diff --git a/doc/avrdude.texi b/doc/avrdude.texi index 985d5dc1..a8c16d71 100644 --- a/doc/avrdude.texi +++ b/doc/avrdude.texi @@ -709,27 +709,6 @@ an extended parameter. The interpretation of the extended parameter depends on the programmer itself. See below for a list of programmers accepting extended parameters. -@item -y -Tells AVRDUDE to use the last four bytes of the connected parts' EEPROM -memory to track the number of times the device has been erased. When -this option is used and the @option{-e} flag is specified to generate a -chip erase, the previous counter will be saved before the chip erase, it -is then incremented, and written back after the erase cycle completes. -Presumably, the device would only be erased just before being -programmed, and thus, this can be utilized to give an indication of how -many erase-rewrite cycles the part has undergone. Since the FLASH -memory can only endure a finite number of erase-rewrite cycles, one can -use this option to track when a part is nearing the limit. The typical -limit for Atmel AVR FLASH is 1000 cycles. Of course, if the -application needs the last four bytes of EEPROM memory, this option -should not be used. - -@item -Y @var{cycles} -Instructs AVRDUDE to initialize the erase-rewrite cycle counter residing -at the last four bytes of EEPROM memory to the specified value. If the -application needs the last four bytes of EEPROM memory, this option -should not be used. - @end table @page diff --git a/main.c b/main.c index f480b44e..41875c81 100644 --- a/main.c +++ b/main.c @@ -82,7 +82,6 @@ static PROGRAMMER * pgm; /* * global options */ -int do_cycles; /* track erase-rewrite cycles */ int verbose; /* verbose output */ int quell_progress; /* un-verebose output */ int ovsigck; /* 1=override sig check, 0=don't */ @@ -323,8 +322,6 @@ int main(int argc, char * argv []) char * partdesc; /* part id */ char sys_config[PATH_MAX]; /* system wide config file */ char usr_config[PATH_MAX]; /* per-user config file */ - int cycles; /* erase-rewrite cycles */ - int set_cycles; /* value to set the erase-rewrite cycles to */ char * e; /* for strtol() error checking */ int baudrate; /* override default programmer baud rate */ double bitclock; /* Specify programmer bit clock (JTAG ICE) */ @@ -405,8 +402,6 @@ int main(int argc, char * argv []) pgm = NULL; programmer = default_programmer; verbose = 0; - do_cycles = 0; - set_cycles = -1; baudrate = 0; bitclock = 0.0; ispdelay = 0; @@ -588,17 +583,13 @@ int main(int argc, char * argv []) break; case 'y': - do_cycles = 1; + fprintf(stderr, "%s: erase cycle counter no longer supported\n", + progname); break; case 'Y': - set_cycles = strtol(optarg, &e, 0); - if ((e == optarg) || (*e != 0)) { - fprintf(stderr, "%s: invalid cycle count '%s'\n", - progname, optarg); - exit(1); - } - do_cycles = 1; + fprintf(stderr, "%s: erase cycle counter no longer supported\n", + progname); break; case '?': /* help */ @@ -1176,48 +1167,6 @@ int main(int argc, char * argv []) } } - /* - * Display cycle count, if and only if it is not set later on. - * - * The cycle count will be displayed anytime it will be changed later. - */ - if (init_ok && !(p->flags & AVRPART_AVR32) && do_cycles) { - /* - * see if the cycle count in the last four bytes of eeprom seems - * reasonable - */ - rc = avr_get_cycle_count(pgm, p, &cycles); - if (quell_progress < 2) { - if ((rc >= 0) && (cycles != 0)) { - fprintf(stderr, - "%s: current erase-rewrite cycle count is %d\n", - progname, cycles); - } - } - } - - if (init_ok && set_cycles != -1 && !(p->flags & AVRPART_AVR32)) { - rc = avr_get_cycle_count(pgm, p, &cycles); - if (rc == 0) { - /* - * only attempt to update the cycle counter if we can actually - * read the old value - */ - cycles = set_cycles; - if (quell_progress < 2) { - fprintf(stderr, "%s: setting erase-rewrite cycle count to %d\n", - progname, cycles); - } - rc = avr_put_cycle_count(pgm, p, cycles); - if (rc < 0) { - fprintf(stderr, - "%s: WARNING: failed to update the erase-rewrite cycle " - "counter\n", - progname); - } - } - } - if (init_ok && erase) { /* * erase the chip's flash and eeprom memories, this is required