bug #30451: Accessing some Xmega memory sections gives not
supported error * stk500v2.c: Handle all Xmega memory sections (except "prodsig" which is not documented in AVR079) * fileio.c: Treat the "boot", "application", and "apptable" regions (which are actually subregions of "flash") all as being flash, i.e. suppress trailing 0xFF bytes when reading them * avr.c: (Dito.) git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1075 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
parent
3fdeef1f16
commit
0025747234
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
2012-03-29 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
||||
|
||||
bug #30451: Accessing some Xmega memory sections gives not
|
||||
supported error
|
||||
* stk500v2.c: Handle all Xmega memory sections (except
|
||||
"prodsig" which is not documented in AVR079)
|
||||
* fileio.c: Treat the "boot", "application", and "apptable"
|
||||
regions (which are actually subregions of "flash") all as
|
||||
being flash, i.e. suppress trailing 0xFF bytes when reading
|
||||
them
|
||||
* avr.c: (Dito.)
|
||||
|
||||
2012-03-20 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
||||
|
||||
* jtagmkII.c (jtagmkII_close): The GO command before signing off
|
||||
|
|
2
NEWS
2
NEWS
|
@ -55,6 +55,8 @@ Current:
|
|||
- bug #34518: loading intel hex files > 64k using record-type 4
|
||||
(Extended Linear Address Record)
|
||||
- bug #34027: avrdude AT90S1200 Problem
|
||||
- bug #30451: Accessing some Xmega memory sections gives not
|
||||
supported error
|
||||
|
||||
* Keep track of input file contents
|
||||
|
||||
|
|
10
avr.c
10
avr.c
|
@ -302,7 +302,10 @@ int avr_read(PROGRAMMER * pgm, AVRPART * p, char * memtype,
|
|||
report_progress(pageaddr, mem->size, NULL);
|
||||
}
|
||||
if (!failure) {
|
||||
if (strcasecmp(mem->desc, "flash") == 0)
|
||||
if (strcasecmp(mem->desc, "flash") == 0 ||
|
||||
strcasecmp(mem->desc, "application") == 0 ||
|
||||
strcasecmp(mem->desc, "apptable") == 0 ||
|
||||
strcasecmp(mem->desc, "boot") == 0)
|
||||
return avr_mem_hiaddr(mem);
|
||||
else
|
||||
return mem->size;
|
||||
|
@ -333,7 +336,10 @@ int avr_read(PROGRAMMER * pgm, AVRPART * p, char * memtype,
|
|||
report_progress(i, mem->size, NULL);
|
||||
}
|
||||
|
||||
if (strcasecmp(mem->desc, "flash") == 0)
|
||||
if (strcasecmp(mem->desc, "flash") == 0 ||
|
||||
strcasecmp(mem->desc, "application") == 0 ||
|
||||
strcasecmp(mem->desc, "apptable") == 0 ||
|
||||
strcasecmp(mem->desc, "boot") == 0)
|
||||
return avr_mem_hiaddr(mem);
|
||||
else
|
||||
return i;
|
||||
|
|
5
fileio.c
5
fileio.c
|
@ -1539,7 +1539,10 @@ int fileio(int op, char * filename, FILEFMT format,
|
|||
}
|
||||
|
||||
if (rc > 0) {
|
||||
if ((op == FIO_READ) && (strcasecmp(mem->desc, "flash") == 0)) {
|
||||
if ((op == FIO_READ) && (strcasecmp(mem->desc, "flash") == 0 ||
|
||||
strcasecmp(mem->desc, "application") == 0 ||
|
||||
strcasecmp(mem->desc, "apptable") == 0 ||
|
||||
strcasecmp(mem->desc, "boot") == 0)) {
|
||||
/*
|
||||
* if we are reading flash, just mark the size as being the
|
||||
* highest non-0xff byte
|
||||
|
|
24
stk500v2.c
24
stk500v2.c
|
@ -3166,13 +3166,15 @@ static int stk600_xprog_write_byte(PROGRAMMER * pgm, AVRPART * p, AVRMEM * mem,
|
|||
|
||||
memset(b, 0, sizeof(b));
|
||||
|
||||
if (strcmp(mem->desc, "flash") == 0) {
|
||||
if (strcmp(mem->desc, "flash") == 0 ||
|
||||
strcmp(mem->desc, "application") == 0 ||
|
||||
strcmp(mem->desc, "apptable") == 0) {
|
||||
memcode = XPRG_MEM_TYPE_APPL;
|
||||
} else if (strcmp(mem->desc, "boot") == 0) {
|
||||
memcode = XPRG_MEM_TYPE_BOOT;
|
||||
} else if (strcmp(mem->desc, "eeprom") == 0) {
|
||||
memcode = XPRG_MEM_TYPE_EEPROM;
|
||||
} else if (strcmp(mem->desc, "lockbits") == 0) {
|
||||
} else if (strncmp(mem->desc, "lock", strlen("lock")) == 0) {
|
||||
memcode = XPRG_MEM_TYPE_LOCKBITS;
|
||||
} else if (strncmp(mem->desc, "fuse", strlen("fuse")) == 0) {
|
||||
memcode = XPRG_MEM_TYPE_FUSE;
|
||||
|
@ -3242,7 +3244,9 @@ static int stk600_xprog_read_byte(PROGRAMMER * pgm, AVRPART * p, AVRMEM * mem,
|
|||
{
|
||||
unsigned char b[8];
|
||||
|
||||
if (strcmp(mem->desc, "flash") == 0) {
|
||||
if (strcmp(mem->desc, "flash") == 0 ||
|
||||
strcmp(mem->desc, "application") == 0 ||
|
||||
strcmp(mem->desc, "apptable") == 0) {
|
||||
b[1] = XPRG_MEM_TYPE_APPL;
|
||||
} else if (strcmp(mem->desc, "boot") == 0) {
|
||||
b[1] = XPRG_MEM_TYPE_BOOT;
|
||||
|
@ -3252,7 +3256,7 @@ static int stk600_xprog_read_byte(PROGRAMMER * pgm, AVRPART * p, AVRMEM * mem,
|
|||
b[1] = XPRG_MEM_TYPE_APPL;
|
||||
} else if (strncmp(mem->desc, "fuse", strlen("fuse")) == 0) {
|
||||
b[1] = XPRG_MEM_TYPE_FUSE;
|
||||
} else if (strcmp(mem->desc, "lockbits") == 0) {
|
||||
} else if (strncmp(mem->desc, "lock", strlen("lock")) == 0) {
|
||||
b[1] = XPRG_MEM_TYPE_LOCKBITS;
|
||||
} else if (strcmp(mem->desc, "calibration") == 0) {
|
||||
b[1] = XPRG_MEM_TYPE_FACTORY_CALIBRATION;
|
||||
|
@ -3306,7 +3310,9 @@ static int stk600_xprog_paged_load(PROGRAMMER * pgm, AVRPART * p, AVRMEM * mem,
|
|||
* This is probably what AVR079 means when writing about the
|
||||
* "TIF address space".
|
||||
*/
|
||||
if (strcmp(mem->desc, "flash") == 0) {
|
||||
if (strcmp(mem->desc, "flash") == 0 ||
|
||||
strcmp(mem->desc, "application") == 0 ||
|
||||
strcmp(mem->desc, "apptable") == 0) {
|
||||
memtype = XPRG_MEM_TYPE_APPL;
|
||||
if (mem->size > 64 * 1024)
|
||||
use_ext_addr = (1UL << 31);
|
||||
|
@ -3322,7 +3328,7 @@ static int stk600_xprog_paged_load(PROGRAMMER * pgm, AVRPART * p, AVRMEM * mem,
|
|||
memtype = XPRG_MEM_TYPE_APPL;
|
||||
} else if (strncmp(mem->desc, "fuse", strlen("fuse")) == 0) {
|
||||
memtype = XPRG_MEM_TYPE_FUSE;
|
||||
} else if (strcmp(mem->desc, "lockbits") == 0) {
|
||||
} else if (strncmp(mem->desc, "lock", strlen("lock")) == 0) {
|
||||
memtype = XPRG_MEM_TYPE_LOCKBITS;
|
||||
} else if (strcmp(mem->desc, "calibration") == 0) {
|
||||
memtype = XPRG_MEM_TYPE_FACTORY_CALIBRATION;
|
||||
|
@ -3406,7 +3412,9 @@ static int stk600_xprog_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * mem,
|
|||
* This is probably what AVR079 means when writing about the
|
||||
* "TIF address space".
|
||||
*/
|
||||
if (strcmp(mem->desc, "flash") == 0) {
|
||||
if (strcmp(mem->desc, "flash") == 0 ||
|
||||
strcmp(mem->desc, "application") == 0 ||
|
||||
strcmp(mem->desc, "apptable") == 0) {
|
||||
memtype = XPRG_MEM_TYPE_APPL;
|
||||
writemode = (1 << XPRG_MEM_WRITE_WRITE);
|
||||
if (mem->size > 64 * 1024)
|
||||
|
@ -3427,7 +3435,7 @@ static int stk600_xprog_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * mem,
|
|||
} else if (strncmp(mem->desc, "fuse", strlen("fuse")) == 0) {
|
||||
memtype = XPRG_MEM_TYPE_FUSE;
|
||||
writemode = (1 << XPRG_MEM_WRITE_WRITE);
|
||||
} else if (strcmp(mem->desc, "lockbits") == 0) {
|
||||
} else if (strncmp(mem->desc, "lock", strlen("lock")) == 0) {
|
||||
memtype = XPRG_MEM_TYPE_LOCKBITS;
|
||||
writemode = (1 << XPRG_MEM_WRITE_WRITE);
|
||||
} else if (strcmp(mem->desc, "calibration") == 0) {
|
||||
|
|
Loading…
Reference in New Issue