patch #5708 avrdude should make 10 synchronization attempts instead of just one
* stk500.c (stk500_getsync): Loop 10 times trying to get in sync with the programmer. git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1223 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
parent
8cb5916192
commit
e8333c598b
|
@ -1,3 +1,9 @@
|
|||
2013-09-13 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
||||
|
||||
patch #5708 avrdude should make 10 synchronization attempts instead of just one
|
||||
* stk500.c (stk500_getsync): Loop 10 times trying to get in
|
||||
sync with the programmer.
|
||||
|
||||
2013-09-13 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
||||
|
||||
Contributed by Ricardo Martins:
|
||||
|
|
1
NEWS
1
NEWS
|
@ -105,6 +105,7 @@ Current:
|
|||
- bug #28344: chip_erase_delay too short for ATmega324P, 644, 644P, and 1284P
|
||||
- bug #34277: avrdude reads wrong byte order if using avr911 (aka butterfly)
|
||||
- bug #35456: The progress bar for STK500V2 programmer is "wrong".
|
||||
- patch #5708 avrdude should make 10 synchronization attempts instead of just one
|
||||
|
||||
* Keep track of input file contents
|
||||
|
||||
|
|
20
stk500.c
20
stk500.c
|
@ -44,6 +44,7 @@
|
|||
#include "serial.h"
|
||||
|
||||
#define STK500_XTAL 7372800U
|
||||
#define MAX_SYNC_ATTEMPTS 10
|
||||
|
||||
static int stk500_getparm(PROGRAMMER * pgm, unsigned parm, unsigned * value);
|
||||
static int stk500_setparm(PROGRAMMER * pgm, unsigned parm, unsigned value);
|
||||
|
@ -80,6 +81,7 @@ int stk500_drain(PROGRAMMER * pgm, int display)
|
|||
int stk500_getsync(PROGRAMMER * pgm)
|
||||
{
|
||||
unsigned char buf[32], resp[32];
|
||||
int attempt;
|
||||
|
||||
/*
|
||||
* get in sync */
|
||||
|
@ -95,13 +97,17 @@ int stk500_getsync(PROGRAMMER * pgm)
|
|||
stk500_send(pgm, buf, 2);
|
||||
stk500_drain(pgm, 0);
|
||||
|
||||
stk500_send(pgm, buf, 2);
|
||||
if (stk500_recv(pgm, resp, 1) < 0)
|
||||
return -1;
|
||||
if (resp[0] != Resp_STK_INSYNC) {
|
||||
fprintf(stderr,
|
||||
"%s: stk500_getsync(): not in sync: resp=0x%02x\n",
|
||||
progname, resp[0]);
|
||||
for (attempt = 0; attempt < MAX_SYNC_ATTEMPTS; attempt++) {
|
||||
stk500_send(pgm, buf, 2);
|
||||
stk500_recv(pgm, resp, 1);
|
||||
if (resp[0] == Resp_STK_INSYNC){
|
||||
break;
|
||||
}
|
||||
fprintf(stderr,
|
||||
"%s: stk500_getsync() attempt %d of %d: not in sync: resp=0x%02x\n",
|
||||
progname, attempt + 1, MAX_SYNC_ATTEMPTS, resp[0]);
|
||||
}
|
||||
if (attempt == MAX_SYNC_ATTEMPTS) {
|
||||
stk500_drain(pgm, 0);
|
||||
return -1;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue