bug #35474 Feature request: print fuse values in safemode output
* config_gram.y: New configuration token "default_safemode". * lexer.l: (Dito.) * avrdude.conf.in: (Dito.) * config.h: Add variable default_safemode. * config.c: (Dito.) * main.c: Handle default_safemode, including -u option. * avrdude.1: Document all this. * doc/avrdude.texi: (Dito.) git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1226 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
parent
a3f00b0b75
commit
7e10c77ff3
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2013-09-13 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
||||||
|
|
||||||
|
bug #35474 Feature request: print fuse values in safemode output
|
||||||
|
* config_gram.y: New configuration token "default_safemode".
|
||||||
|
* lexer.l: (Dito.)
|
||||||
|
* avrdude.conf.in: (Dito.)
|
||||||
|
* config.h: Add variable default_safemode.
|
||||||
|
* config.c: (Dito.)
|
||||||
|
* main.c: Handle default_safemode, including -u option.
|
||||||
|
* avrdude.1: Document all this.
|
||||||
|
* doc/avrdude.texi: (Dito.)
|
||||||
|
|
||||||
2013-09-13 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
2013-09-13 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
||||||
|
|
||||||
Submitted by HubertB:
|
Submitted by HubertB:
|
||||||
|
|
6
NEWS
6
NEWS
|
@ -110,6 +110,7 @@ Current:
|
||||||
- patch #5708 avrdude should make 10 synchronization attempts instead of just one
|
- patch #5708 avrdude should make 10 synchronization attempts instead of just one
|
||||||
- patch #7606 ATtiny43u support
|
- patch #7606 ATtiny43u support
|
||||||
- patch #7657 Add ATmega406 support for avrdude using DRAGON + JTAG
|
- patch #7657 Add ATmega406 support for avrdude using DRAGON + JTAG
|
||||||
|
- bug #35474 Feature request: print fuse values in safemode output.
|
||||||
|
|
||||||
* Keep track of input file contents
|
* Keep track of input file contents
|
||||||
|
|
||||||
|
@ -122,7 +123,7 @@ Current:
|
||||||
everything mentioned in the file (even in case the file has
|
everything mentioned in the file (even in case the file has
|
||||||
large 0xFF blocks).
|
large 0xFF blocks).
|
||||||
|
|
||||||
* The eraes cycle counter (formerly options -y / -Y) has been
|
* The erase cycle counter (formerly options -y / -Y) has been
|
||||||
removed.
|
removed.
|
||||||
|
|
||||||
* The -U option now accepts ELF files as input files, and extracts
|
* The -U option now accepts ELF files as input files, and extracts
|
||||||
|
@ -183,6 +184,9 @@ Current:
|
||||||
* The "verbose" terminal mode command allows to query or modify the
|
* The "verbose" terminal mode command allows to query or modify the
|
||||||
verbosity level.
|
verbosity level.
|
||||||
|
|
||||||
|
* "Safemode" can now be turned off by default in a configuration
|
||||||
|
file.
|
||||||
|
|
||||||
* Internals:
|
* Internals:
|
||||||
|
|
||||||
- Restructuring and compacting programmer definition part of
|
- Restructuring and compacting programmer definition part of
|
||||||
|
|
13
avrdude.1
13
avrdude.1
|
@ -18,7 +18,7 @@
|
||||||
.\"
|
.\"
|
||||||
.\" $Id$
|
.\" $Id$
|
||||||
.\"
|
.\"
|
||||||
.Dd DATE September 8, 2013
|
.Dd DATE September 13, 2013
|
||||||
.Os
|
.Os
|
||||||
.Dt AVRDUDE 1
|
.Dt AVRDUDE 1
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
|
@ -531,6 +531,17 @@ prompt for instructions, unless the terminal is non-interactive, in
|
||||||
which case safemode is disabled. See the
|
which case safemode is disabled. See the
|
||||||
.Fl s
|
.Fl s
|
||||||
option to disable safemode prompting.
|
option to disable safemode prompting.
|
||||||
|
.Pp
|
||||||
|
If one of the configuration files has a line
|
||||||
|
.Dl "default_safemode = no;"
|
||||||
|
safemode is disabled by default.
|
||||||
|
The
|
||||||
|
.Fl u
|
||||||
|
option's effect is negated in that case, i. e. it
|
||||||
|
.Em enables
|
||||||
|
safemode.
|
||||||
|
.Pp
|
||||||
|
Safemode is always disabled for AVR32, Xmega and TPI devices.
|
||||||
.It Xo Fl U Ar memtype Ns
|
.It Xo Fl U Ar memtype Ns
|
||||||
.Ar \&: Ns Ar op Ns
|
.Ar \&: Ns Ar op Ns
|
||||||
.Ar \&: Ns Ar filename Ns
|
.Ar \&: Ns Ar filename Ns
|
||||||
|
|
|
@ -325,12 +325,15 @@
|
||||||
# ATmega169 0x78
|
# ATmega169 0x78
|
||||||
|
|
||||||
#
|
#
|
||||||
# Overall avrdude defaults
|
# Overall avrdude defaults; suitable for ~/.avrduderc
|
||||||
#
|
#
|
||||||
default_parallel = "@DEFAULT_PAR_PORT@";
|
default_parallel = "@DEFAULT_PAR_PORT@";
|
||||||
default_serial = "@DEFAULT_SER_PORT@";
|
default_serial = "@DEFAULT_SER_PORT@";
|
||||||
# default_bitclock = 2.5;
|
# default_bitclock = 2.5;
|
||||||
|
|
||||||
|
# Turn off safemode by default
|
||||||
|
#default_safemode = no;
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# PROGRAMMER DEFINITIONS
|
# PROGRAMMER DEFINITIONS
|
||||||
|
|
1
config.c
1
config.c
|
@ -35,6 +35,7 @@ char default_programmer[MAX_STR_CONST];
|
||||||
char default_parallel[PATH_MAX];
|
char default_parallel[PATH_MAX];
|
||||||
char default_serial[PATH_MAX];
|
char default_serial[PATH_MAX];
|
||||||
double default_bitclock;
|
double default_bitclock;
|
||||||
|
int default_safemode;
|
||||||
|
|
||||||
char string_buf[MAX_STR_CONST];
|
char string_buf[MAX_STR_CONST];
|
||||||
char *string_buf_ptr;
|
char *string_buf_ptr;
|
||||||
|
|
1
config.h
1
config.h
|
@ -60,6 +60,7 @@ extern char default_programmer[];
|
||||||
extern char default_parallel[];
|
extern char default_parallel[];
|
||||||
extern char default_serial[];
|
extern char default_serial[];
|
||||||
extern double default_bitclock;
|
extern double default_bitclock;
|
||||||
|
extern int default_safemode;
|
||||||
|
|
||||||
/* This name is fixed, it's only here for symmetry with
|
/* This name is fixed, it's only here for symmetry with
|
||||||
* default_parallel and default_serial. */
|
* default_parallel and default_serial. */
|
||||||
|
|
|
@ -78,10 +78,11 @@ static int pin_name;
|
||||||
%token K_CHIP_ERASE_DELAY
|
%token K_CHIP_ERASE_DELAY
|
||||||
%token K_CONNTYPE
|
%token K_CONNTYPE
|
||||||
%token K_DEDICATED
|
%token K_DEDICATED
|
||||||
|
%token K_DEFAULT_BITCLOCK
|
||||||
%token K_DEFAULT_PARALLEL
|
%token K_DEFAULT_PARALLEL
|
||||||
%token K_DEFAULT_PROGRAMMER
|
%token K_DEFAULT_PROGRAMMER
|
||||||
|
%token K_DEFAULT_SAFEMODE
|
||||||
%token K_DEFAULT_SERIAL
|
%token K_DEFAULT_SERIAL
|
||||||
%token K_DEFAULT_BITCLOCK
|
|
||||||
%token K_DESC
|
%token K_DESC
|
||||||
%token K_DEVICECODE
|
%token K_DEVICECODE
|
||||||
%token K_STK500_DEVCODE
|
%token K_STK500_DEVCODE
|
||||||
|
@ -257,6 +258,14 @@ def :
|
||||||
K_DEFAULT_BITCLOCK TKN_EQUAL number_real TKN_SEMI {
|
K_DEFAULT_BITCLOCK TKN_EQUAL number_real TKN_SEMI {
|
||||||
default_bitclock = $3->value.number_real;
|
default_bitclock = $3->value.number_real;
|
||||||
free_token($3);
|
free_token($3);
|
||||||
|
} |
|
||||||
|
|
||||||
|
K_DEFAULT_SAFEMODE TKN_EQUAL yesno TKN_SEMI {
|
||||||
|
if ($3->primary == K_YES)
|
||||||
|
default_safemode = 1;
|
||||||
|
else if ($3->primary == K_NO)
|
||||||
|
default_safemode = 0;
|
||||||
|
free_token($3);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -567,6 +567,24 @@ as avrdude will see the fuses have changed (even though you wanted to) and
|
||||||
will change them back for your "safety". This option was designed to
|
will change them back for your "safety". This option was designed to
|
||||||
prevent cases of fuse bits magically changing (usually called @emph{safemode}).
|
prevent cases of fuse bits magically changing (usually called @emph{safemode}).
|
||||||
|
|
||||||
|
If one of the configuration files contains a line
|
||||||
|
|
||||||
|
@code{default_safemode = no;}
|
||||||
|
|
||||||
|
safemode is disabled by default.
|
||||||
|
The @option{-u} option's effect is negated in that case, i. e. it
|
||||||
|
@emph{enables} safemode.
|
||||||
|
|
||||||
|
Safemode is always disabled for AVR32, Xmega and TPI devices.
|
||||||
|
|
||||||
|
@item -s
|
||||||
|
Disable safemode prompting. When safemode discovers that one or more
|
||||||
|
fuse bits have unintentionally changed, it will prompt for
|
||||||
|
confirmation regarding whether or not it should attempt to recover the
|
||||||
|
fuse bit(s). Specifying this flag disables the prompt and assumes
|
||||||
|
that the fuse bit(s) should be recovered without asking for
|
||||||
|
confirmation first.
|
||||||
|
|
||||||
@item -t
|
@item -t
|
||||||
Tells AVRDUDE to enter the interactive ``terminal'' mode instead of up-
|
Tells AVRDUDE to enter the interactive ``terminal'' mode instead of up-
|
||||||
or downloading files. See below for a detailed description of the
|
or downloading files. See below for a detailed description of the
|
||||||
|
|
1
lexer.l
1
lexer.l
|
@ -140,6 +140,7 @@ dedicated { yylval=new_token(K_DEDICATED); return K_DEDICATED; }
|
||||||
default_bitclock { yylval=NULL; return K_DEFAULT_BITCLOCK; }
|
default_bitclock { yylval=NULL; return K_DEFAULT_BITCLOCK; }
|
||||||
default_parallel { yylval=NULL; return K_DEFAULT_PARALLEL; }
|
default_parallel { yylval=NULL; return K_DEFAULT_PARALLEL; }
|
||||||
default_programmer { yylval=NULL; return K_DEFAULT_PROGRAMMER; }
|
default_programmer { yylval=NULL; return K_DEFAULT_PROGRAMMER; }
|
||||||
|
default_safemode { yylval=NULL; return K_DEFAULT_SAFEMODE; }
|
||||||
default_serial { yylval=NULL; return K_DEFAULT_SERIAL; }
|
default_serial { yylval=NULL; return K_DEFAULT_SERIAL; }
|
||||||
delay { yylval=NULL; return K_DELAY; }
|
delay { yylval=NULL; return K_DELAY; }
|
||||||
desc { yylval=NULL; return K_DESC; }
|
desc { yylval=NULL; return K_DESC; }
|
||||||
|
|
23
main.c
23
main.c
|
@ -366,6 +366,7 @@ int main(int argc, char * argv [])
|
||||||
default_parallel[0] = 0;
|
default_parallel[0] = 0;
|
||||||
default_serial[0] = 0;
|
default_serial[0] = 0;
|
||||||
default_bitclock = 0.0;
|
default_bitclock = 0.0;
|
||||||
|
default_safemode = -1;
|
||||||
|
|
||||||
init_config();
|
init_config();
|
||||||
|
|
||||||
|
@ -410,11 +411,6 @@ int main(int argc, char * argv [])
|
||||||
is_open = 0;
|
is_open = 0;
|
||||||
logfile = NULL;
|
logfile = NULL;
|
||||||
|
|
||||||
if (isatty(STDIN_FILENO) == 0)
|
|
||||||
safemode = 0; /* Turn off safemode if this isn't a terminal */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(WIN32NATIVE)
|
#if defined(WIN32NATIVE)
|
||||||
|
|
||||||
win_sys_config_set(sys_config);
|
win_sys_config_set(sys_config);
|
||||||
|
@ -845,6 +841,20 @@ int main(int argc, char * argv [])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (default_safemode == 0) {
|
||||||
|
/* configuration disables safemode: revert meaning of -u */
|
||||||
|
if (safemode == 0)
|
||||||
|
/* -u was given: enable safemode */
|
||||||
|
safemode = 1;
|
||||||
|
else
|
||||||
|
/* -u not given: turn off */
|
||||||
|
safemode = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isatty(STDIN_FILENO) == 0 && silentsafe == 0)
|
||||||
|
safemode = 0; /* Turn off safemode if this isn't a terminal */
|
||||||
|
|
||||||
|
|
||||||
if(p->flags & AVRPART_AVR32) {
|
if(p->flags & AVRPART_AVR32) {
|
||||||
safemode = 0;
|
safemode = 0;
|
||||||
}
|
}
|
||||||
|
@ -1353,7 +1363,8 @@ int main(int argc, char * argv [])
|
||||||
if (quell_progress < 2) {
|
if (quell_progress < 2) {
|
||||||
fprintf(stderr, "%s: safemode: ", progname);
|
fprintf(stderr, "%s: safemode: ", progname);
|
||||||
if (failures == 0) {
|
if (failures == 0) {
|
||||||
fprintf(stderr, "Fuses OK\n");
|
fprintf(stderr, "Fuses OK (H:%02X, E:%02X, L:%02X)\n",
|
||||||
|
safemode_efuse, safemode_hfuse, safemode_lfuse);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fprintf(stderr, "Fuses not recovered, sorry\n");
|
fprintf(stderr, "Fuses not recovered, sorry\n");
|
||||||
|
|
Loading…
Reference in New Issue