Steamline avrftdi support for ATmega2560 et al
This commit is contained in:
parent
c4add116d6
commit
d95c1a91f7
|
@ -917,6 +917,10 @@ static int avrftdi_chip_erase(PROGRAMMER * pgm, AVRPART * p)
|
||||||
static int
|
static int
|
||||||
avrftdi_lext(PROGRAMMER *pgm, AVRPART *p, AVRMEM *m, unsigned int address)
|
avrftdi_lext(PROGRAMMER *pgm, AVRPART *p, AVRMEM *m, unsigned int address)
|
||||||
{
|
{
|
||||||
|
/* nothing to do if load extended address command unavailable */
|
||||||
|
if(m->op[AVR_OP_LOAD_EXT_ADDR] == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
avrftdi_t *pdata = to_pdata(pgm);
|
avrftdi_t *pdata = to_pdata(pgm);
|
||||||
unsigned char buf[] = { 0x00, 0x00, 0x00, 0x00 };
|
unsigned char buf[] = { 0x00, 0x00, 0x00, 0x00 };
|
||||||
|
|
||||||
|
@ -1019,7 +1023,7 @@ static int avrftdi_flash_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
|
||||||
page_size = m->page_size;
|
page_size = m->page_size;
|
||||||
|
|
||||||
/* on large-flash devices > 128k issue extended address command when needed */
|
/* on large-flash devices > 128k issue extended address command when needed */
|
||||||
if(m->op[AVR_OP_LOAD_EXT_ADDR] && avrftdi_lext(pgm, p, m, addr/2) < 0)
|
if(avrftdi_lext(pgm, p, m, addr/2) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* prepare the command stream for the whole page */
|
/* prepare the command stream for the whole page */
|
||||||
|
@ -1102,7 +1106,6 @@ static int avrftdi_flash_read(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
|
||||||
{
|
{
|
||||||
OPCODE * readop;
|
OPCODE * readop;
|
||||||
int byte, word;
|
int byte, word;
|
||||||
unsigned int address = addr/2;
|
|
||||||
|
|
||||||
unsigned int buf_size = 4 * len + 4;
|
unsigned int buf_size = 4 * len + 4;
|
||||||
unsigned char* o_buf = alloca(buf_size);
|
unsigned char* o_buf = alloca(buf_size);
|
||||||
|
@ -1122,7 +1125,7 @@ static int avrftdi_flash_read(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m->op[AVR_OP_LOAD_EXT_ADDR] && avrftdi_lext(pgm, p, m, address) < 0)
|
if(avrftdi_lext(pgm, p, m, addr/2) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* word addressing! */
|
/* word addressing! */
|
||||||
|
|
Loading…
Reference in New Issue