bug #42908: no external reset at JTAGICE3
* jtag3.c (jtag3_initialize): Retry with external reset applied if the first sign-on attempt fails. git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1349 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
parent
3aa2c9529b
commit
62a3bf0dcd
|
@ -1,3 +1,9 @@
|
||||||
|
2014-11-24 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
||||||
|
|
||||||
|
bug #42908: no external reset at JTAGICE3
|
||||||
|
* jtag3.c (jtag3_initialize): Retry with external reset applied if
|
||||||
|
the first sign-on attempt fails.
|
||||||
|
|
||||||
2014-11-23 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
2014-11-23 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
||||||
|
|
||||||
* main.c: Allow the -B option argument to be suffixed with Hz,
|
* main.c: Allow the -B option argument to be suffixed with Hz,
|
||||||
|
|
1
NEWS
1
NEWS
|
@ -51,6 +51,7 @@ Current:
|
||||||
- bug #43078: AVRDUDE crashes after sucessfully reading/writing eeprom
|
- bug #43078: AVRDUDE crashes after sucessfully reading/writing eeprom
|
||||||
- bug #43137: Writing and reading incorrect pages when using jtagicemkI
|
- bug #43137: Writing and reading incorrect pages when using jtagicemkI
|
||||||
- bug #40870: config nitpick: ATtiny25/45/85 have 1 calibration byte not 2
|
- bug #40870: config nitpick: ATtiny25/45/85 have 1 calibration byte not 2
|
||||||
|
- bug #42908: no external reset at JTAGICE3
|
||||||
|
|
||||||
* Internals:
|
* Internals:
|
||||||
- Removing exit calls from config parser
|
- Removing exit calls from config parser
|
||||||
|
|
29
jtag3.c
29
jtag3.c
|
@ -836,31 +836,24 @@ static int jtag3_program_enable_dummy(PROGRAMMER * pgm, AVRPART * p)
|
||||||
static int jtag3_program_enable(PROGRAMMER * pgm)
|
static int jtag3_program_enable(PROGRAMMER * pgm)
|
||||||
{
|
{
|
||||||
unsigned char buf[3], *resp;
|
unsigned char buf[3], *resp;
|
||||||
int use_ext_reset;
|
|
||||||
|
|
||||||
if (PDATA(pgm)->prog_enabled)
|
if (PDATA(pgm)->prog_enabled)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (use_ext_reset = 0; use_ext_reset <= 1; use_ext_reset++) {
|
|
||||||
buf[0] = SCOPE_AVR;
|
buf[0] = SCOPE_AVR;
|
||||||
buf[1] = CMD3_ENTER_PROGMODE;
|
buf[1] = CMD3_ENTER_PROGMODE;
|
||||||
buf[2] = 0;
|
buf[2] = 0;
|
||||||
|
|
||||||
if (jtag3_command(pgm, buf, 3, &resp, "enter progmode") >= 0) {
|
if (jtag3_command(pgm, buf, 3, &resp, "enter progmode") >= 0) {
|
||||||
free(resp);
|
free(resp);
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* XXX activate external reset here */
|
|
||||||
avrdude_message(MSG_NOTICE, "%s: retrying with external reset applied\n",
|
|
||||||
progname);
|
|
||||||
}
|
|
||||||
|
|
||||||
PDATA(pgm)->prog_enabled = 1;
|
PDATA(pgm)->prog_enabled = 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static int jtag3_program_disable(PROGRAMMER * pgm)
|
static int jtag3_program_disable(PROGRAMMER * pgm)
|
||||||
{
|
{
|
||||||
unsigned char buf[3], *resp;
|
unsigned char buf[3], *resp;
|
||||||
|
@ -1109,13 +1102,25 @@ static int jtag3_initialize(PROGRAMMER * pgm, AVRPART * p)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int use_ext_reset;
|
||||||
|
|
||||||
|
for (use_ext_reset = 0; use_ext_reset <= 1; use_ext_reset++) {
|
||||||
cmd[0] = SCOPE_AVR;
|
cmd[0] = SCOPE_AVR;
|
||||||
cmd[1] = CMD3_SIGN_ON;
|
cmd[1] = CMD3_SIGN_ON;
|
||||||
cmd[2] = 0;
|
cmd[2] = 0;
|
||||||
cmd[3] = 0; /* external reset */
|
cmd[3] = use_ext_reset; /* external reset */
|
||||||
|
|
||||||
if ((status = jtag3_command(pgm, cmd, 4, &resp, "AVR sign-on")) < 0)
|
if ((status = jtag3_command(pgm, cmd, 4, &resp, "AVR sign-on")) >= 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
avrdude_message(MSG_INFO, "%s: retrying with external reset applied\n",
|
||||||
|
progname);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (use_ext_reset > 1) {
|
||||||
|
avrdude_message(MSG_INFO, "%s: JTAGEN fuse disabled?\n", progname);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Depending on the target connection, there are two different
|
* Depending on the target connection, there are two different
|
||||||
|
|
Loading…
Reference in New Issue