mirror of
https://github.com/avrdudes/avrdude.git
synced 2026-06-02 09:46:34 +03:00
Consider classic part usersig memory offset for jtag3
This commit is contained in:
34
src/jtag3.c
34
src/jtag3.c
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user