avr910.c: Hopefully fixed that weird "first byte not programmed"-error in a good way (previous fix was not working with all firmwares)
git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk@412 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
parent
f1ed5e5813
commit
266b92449f
|
@ -1,3 +1,9 @@
|
||||||
|
2004-04-17 Jan-Hinnerk Reichert <hinni@despammed.com>
|
||||||
|
|
||||||
|
* avr910.c: Hopefully fixed that weird "first byte not
|
||||||
|
programmed"-error in a good way (previous fix was not
|
||||||
|
working with all firmwares)
|
||||||
|
|
||||||
2004-02-10 Jan-Hinnerk Reichert <hinni@despammed.com>
|
2004-02-10 Jan-Hinnerk Reichert <hinni@despammed.com>
|
||||||
|
|
||||||
* avrdude.1, doc/avrdude.texi, doc/TODO:
|
* avrdude.1, doc/avrdude.texi, doc/TODO:
|
||||||
|
|
|
@ -81,6 +81,11 @@ static int avr910_chip_erase(PROGRAMMER * pgm, AVRPART * p)
|
||||||
avr910_send(pgm, "e", 1);
|
avr910_send(pgm, "e", 1);
|
||||||
avr910_vfy_cmd_sent(pgm, "chip erase");
|
avr910_vfy_cmd_sent(pgm, "chip erase");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* avr910 firmware may not delay long enough
|
||||||
|
*/
|
||||||
|
usleep (p->chip_erase_delay);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,20 +289,6 @@ static void avr910_set_addr(PROGRAMMER * pgm, unsigned long addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For some reason, if we don't do this when writing to flash, the first byte
|
|
||||||
* of flash is not programmed. I susect that the board got out of sync after
|
|
||||||
* the erase and sending another command gets us back in sync. -TRoth
|
|
||||||
*/
|
|
||||||
static void avr910_write_setup(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m)
|
|
||||||
{
|
|
||||||
if (strcmp(m->desc, "flash") == 0) {
|
|
||||||
avr910_send(pgm, "y", 1);
|
|
||||||
avr910_vfy_cmd_sent(pgm, "clear LED");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int avr910_write_byte(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
|
static int avr910_write_byte(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
|
||||||
unsigned long addr, unsigned char value)
|
unsigned long addr, unsigned char value)
|
||||||
{
|
{
|
||||||
|
@ -404,8 +395,6 @@ static int avr910_paged_write_flash(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
|
||||||
int page_bytes = page_size;
|
int page_bytes = page_size;
|
||||||
int page_wr_cmd_pending = 0;
|
int page_wr_cmd_pending = 0;
|
||||||
|
|
||||||
avr910_write_setup(pgm, p, m);
|
|
||||||
|
|
||||||
page_addr = addr;
|
page_addr = addr;
|
||||||
avr910_set_addr(pgm, addr>>1);
|
avr910_set_addr(pgm, addr>>1);
|
||||||
|
|
||||||
|
@ -480,7 +469,7 @@ static int avr910_paged_write_eeprom(PROGRAMMER * pgm, AVRPART * p,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int avr910_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
|
static int avr910_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
|
||||||
int page_size, int n_bytes)
|
int page_size, int n_bytes)
|
||||||
{
|
{
|
||||||
if (strcmp(m->desc, "flash") == 0) {
|
if (strcmp(m->desc, "flash") == 0) {
|
||||||
|
@ -582,7 +571,6 @@ void avr910_initpgm(PROGRAMMER * pgm)
|
||||||
* optional functions
|
* optional functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pgm->write_setup = avr910_write_setup;
|
|
||||||
pgm->write_byte = avr910_write_byte;
|
pgm->write_byte = avr910_write_byte;
|
||||||
pgm->read_byte = avr910_read_byte;
|
pgm->read_byte = avr910_read_byte;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue