Consider classic part usersig memory offset for jtag3

This commit is contained in:
Stefan Rueger
2023-07-13 01:02:58 +01:00
parent f722b572f8
commit 7967c2f808

View File

@@ -2689,29 +2689,21 @@ static unsigned char jtag3_memtype(const PROGRAMMER *pgm, const AVRPART *p, unsi
static unsigned int jtag3_memaddr(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *m, unsigned long addr) {
if (p->prog_modes & PM_PDI) {
if (addr >= PDATA(pgm)->boot_start)
/*
* all memories but "flash" are smaller than boot_start anyway, so
* no need for an extra check we are operating on "flash"
*/
return addr - PDATA(pgm)->boot_start;
else
/* normal flash, or anything else */
return addr;
/*
* All memories but "flash" are smaller than boot_start anyway, so
* no need for an extra check we are operating on "flash"
*/
if(addr >= PDATA(pgm)->boot_start)
addr -= PDATA(pgm)->boot_start;
} else if(p->prog_modes & PM_UPDI) { // Modern AVR8X part
if(!str_eq(m->desc, "flash"))
if(m->size >= 1)
addr += m->offset;
} else { // Classic part
if(str_eq(m->desc, "usersig"))
addr += m->offset;
}
// Non-Xmega device
if (p->prog_modes & PM_UPDI) {
if (strcmp(m->desc, "flash") == 0) {
return addr;
}
else if (m->size == 1) {
addr = m->offset;
}
else if (m->size > 1) {
addr += m->offset;
}
}
return addr;
}