Merge pull request #1191 from stefanrueger/jtagice_mkii

Fix parameters for JTAGICE mkII and devices with bootloaders
This commit is contained in:
Stefan Rueger 2022-11-25 17:40:54 +00:00 committed by GitHub
commit 2cecf66a61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 195 additions and 25 deletions

View File

@ -72,6 +72,8 @@
# mcuid = <num>; # unique id in 0..2039 for 8-bit AVRs # mcuid = <num>; # unique id in 0..2039 for 8-bit AVRs
# n_interrupts = <num>; # number of interrupts, used for vector bootloaders # n_interrupts = <num>; # number of interrupts, used for vector bootloaders
# n_page_erase = <num>; # if set, number of pages erased during SPM erase # n_page_erase = <num>; # if set, number of pages erased during SPM erase
# n_boot_sections = <num>; # Number of boot sections
# boot_section_size = <num>; # Size of (smallest) boot section, if any
# hvupdi_variant = <num> ; # numeric -1 (n/a) or 0..2 # hvupdi_variant = <num> ; # numeric -1 (n/a) or 0..2
# devicecode = <num> ; # deprecated, use stk500_devcode # devicecode = <num> ; # deprecated, use stk500_devcode
# stk500_devcode = <num> ; # numeric # stk500_devcode = <num> ; # numeric
@ -2729,6 +2731,8 @@ part
programfusepolltimeout = 25; programfusepolltimeout = 25;
programlockpolltimeout = 25; programlockpolltimeout = 25;
synchcycles = 6; synchcycles = 6;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 0; ocdrev = 0;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -3740,6 +3744,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI;
mcuid = 72; mcuid = 72;
n_interrupts = 35; n_interrupts = 35;
n_boot_sections = 4;
boot_section_size = 1024;
stk500_devcode = 0xa0; stk500_devcode = 0xa0;
avr910_devcode = 0x45; avr910_devcode = 0x45;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -3869,6 +3875,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI;
mcuid = 85; mcuid = 85;
n_interrupts = 35; n_interrupts = 35;
n_boot_sections = 4;
boot_section_size = 1024;
stk500_devcode = 0xb2; stk500_devcode = 0xb2;
avr910_devcode = 0x43; avr910_devcode = 0x43;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -3999,6 +4007,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI;
mcuid = 176; mcuid = 176;
n_interrupts = 37; n_interrupts = 37;
n_boot_sections = 4;
boot_section_size = 1024;
stk500_devcode = 0xb3; stk500_devcode = 0xb3;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
@ -4122,6 +4132,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 172; mcuid = 172;
n_interrupts = 37; n_interrupts = 37;
n_boot_sections = 4;
boot_section_size = 1024;
stk500_devcode = 0xb3; stk500_devcode = 0xb3;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
@ -4245,6 +4257,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 171; mcuid = 171;
n_interrupts = 37; n_interrupts = 37;
n_boot_sections = 4;
boot_section_size = 1024;
stk500_devcode = 0xb3; stk500_devcode = 0xb3;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
@ -4368,6 +4382,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI;
mcuid = 49; mcuid = 49;
n_interrupts = 21; n_interrupts = 21;
n_boot_sections = 4;
boot_section_size = 256;
stk500_devcode = 0x82; stk500_devcode = 0x82;
avr910_devcode = 0x74; avr910_devcode = 0x74;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -4493,6 +4509,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 111; mcuid = 111;
n_interrupts = 31; n_interrupts = 31;
n_boot_sections = 4;
boot_section_size = 512;
stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one
avr910_devcode = 0x74; avr910_devcode = 0x74;
chip_erase_delay = 55000; chip_erase_delay = 55000;
@ -4614,6 +4632,7 @@ part parent "m324p"
desc = "ATmega164P"; desc = "ATmega164P";
id = "m164p"; id = "m164p";
mcuid = 93; mcuid = 93;
boot_section_size = 256;
signature = 0x1e 0x94 0x0a; signature = 0x1e 0x94 0x0a;
memory "eeprom" memory "eeprom"
@ -4690,6 +4709,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 127; mcuid = 127;
n_interrupts = 28; n_interrupts = 28;
n_boot_sections = 4;
boot_section_size = 1024;
stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one
avr910_devcode = 0x74; avr910_devcode = 0x74;
chip_erase_delay = 55000; chip_erase_delay = 55000;
@ -4845,6 +4866,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 140; mcuid = 140;
n_interrupts = 35; n_interrupts = 35;
n_boot_sections = 4;
boot_section_size = 1024;
stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one
avr910_devcode = 0x74; avr910_devcode = 0x74;
chip_erase_delay = 55000; chip_erase_delay = 55000;
@ -4980,6 +5003,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI;
mcuid = 90; mcuid = 90;
n_interrupts = 28; n_interrupts = 28;
n_boot_sections = 4;
boot_section_size = 256;
stk500_devcode = 0x83; stk500_devcode = 0x83;
avr910_devcode = 0x63; avr910_devcode = 0x63;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -5101,6 +5126,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP; prog_modes = PM_SPM | PM_ISP | PM_HVPP;
mcuid = 91; mcuid = 91;
n_interrupts = 18; n_interrupts = 18;
n_boot_sections = 4;
boot_section_size = 256;
stk500_devcode = 0x81; stk500_devcode = 0x81;
avr910_devcode = 0x64; avr910_devcode = 0x64;
chip_erase_delay = 32000; chip_erase_delay = 32000;
@ -5205,6 +5232,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI;
mcuid = 104; mcuid = 104;
n_interrupts = 23; n_interrupts = 23;
n_boot_sections = 4;
boot_section_size = 256;
stk500_devcode = 0x85; stk500_devcode = 0x85;
avr910_devcode = 0x78; avr910_devcode = 0x78;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -5362,6 +5391,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 121; mcuid = 121;
n_interrupts = 23; n_interrupts = 23;
n_boot_sections = 4;
boot_section_size = 512;
# stk500_devcode = 0x85; # no STK500 support, only STK500v2 # stk500_devcode = 0x85; # no STK500 support, only STK500v2
# avr910_devcode = 0x?; # try the ATmega169 one: # avr910_devcode = 0x?; # try the ATmega169 one:
avr910_devcode = 0x75; avr910_devcode = 0x75;
@ -5565,6 +5596,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 135; mcuid = 135;
n_interrupts = 23; n_interrupts = 23;
n_boot_sections = 4;
boot_section_size = 1024;
# stk500_devcode = 0x85; # no STK500 support, only STK500v2 # stk500_devcode = 0x85; # no STK500 support, only STK500v2
# avr910_devcode = 0x?; # try the ATmega169 one: # avr910_devcode = 0x?; # try the ATmega169 one:
avr910_devcode = 0x75; avr910_devcode = 0x75;
@ -5745,6 +5778,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI;
mcuid = 58; mcuid = 58;
n_interrupts = 21; n_interrupts = 21;
n_boot_sections = 4;
boot_section_size = 512;
stk500_devcode = 0x91; stk500_devcode = 0x91;
avr910_devcode = 0x72; avr910_devcode = 0x72;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -5858,6 +5893,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP; prog_modes = PM_SPM | PM_ISP | PM_HVPP;
mcuid = 89; mcuid = 89;
n_interrupts = 21; n_interrupts = 21;
n_boot_sections = 1;
boot_section_size = 1024;
stk500_devcode = 0x80; stk500_devcode = 0x80;
avr910_devcode = 0x60; avr910_devcode = 0x60;
chip_erase_delay = 28000; chip_erase_delay = 28000;
@ -5959,6 +5996,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP; prog_modes = PM_SPM | PM_ISP | PM_HVPP;
mcuid = 45; mcuid = 45;
n_interrupts = 19; n_interrupts = 19;
n_boot_sections = 4;
boot_section_size = 256;
stk500_devcode = 0x70; stk500_devcode = 0x70;
avr910_devcode = 0x76; avr910_devcode = 0x76;
chip_erase_delay = 10000; chip_erase_delay = 10000;
@ -6080,6 +6119,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP; prog_modes = PM_SPM | PM_ISP | PM_HVPP;
mcuid = 160; mcuid = 160;
n_interrupts = 17; n_interrupts = 17;
n_boot_sections = 4;
boot_section_size = 256;
stk500_devcode = 0x63; stk500_devcode = 0x63;
avr910_devcode = 0x3a; avr910_devcode = 0x3a;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -6183,6 +6224,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP; prog_modes = PM_SPM | PM_ISP | PM_HVPP;
mcuid = 161; mcuid = 161;
n_interrupts = 21; n_interrupts = 21;
n_boot_sections = 4;
boot_section_size = 256;
stk500_devcode = 0x64; stk500_devcode = 0x64;
avr910_devcode = 0x69; avr910_devcode = 0x69;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -6429,6 +6472,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -6565,6 +6610,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -6701,6 +6748,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -6892,6 +6941,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -7028,6 +7079,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
mcuid = 79; mcuid = 79;
n_interrupts = 26; n_interrupts = 26;
n_boot_sections = 4;
boot_section_size = 256;
stk500_devcode = 0x73; stk500_devcode = 0x73;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
@ -7064,6 +7117,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -7201,6 +7256,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
mcuid = 99; mcuid = 99;
n_interrupts = 26; n_interrupts = 26;
n_boot_sections = 4;
boot_section_size = 256;
stk500_devcode = 0x86; stk500_devcode = 0x86;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
@ -7237,6 +7294,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -7374,6 +7433,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
mcuid = 35; mcuid = 35;
n_interrupts = 26; n_interrupts = 26;
n_boot_sections = 4;
boot_section_size = 256;
stk500_devcode = 0x86; stk500_devcode = 0x86;
chip_erase_delay = 15000; chip_erase_delay = 15000;
pagel = 0xd7; pagel = 0xd7;
@ -7410,6 +7471,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -7546,6 +7609,7 @@ part
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57; spmcr = 0x57;
eecr = 0x3f;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -7673,6 +7737,7 @@ part
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57; spmcr = 0x57;
eecr = 0x3f;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -7800,6 +7865,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -7928,6 +7995,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -8020,6 +8089,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
mcuid = 118; mcuid = 118;
n_interrupts = 26; n_interrupts = 26;
n_boot_sections = 4;
boot_section_size = 512;
stk500_devcode = 0x86; stk500_devcode = 0x86;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
@ -8056,6 +8127,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -8194,6 +8267,7 @@ part parent "m328"
id = "m64m1"; id = "m64m1";
mcuid = 76; mcuid = 76;
n_interrupts = 31; n_interrupts = 31;
boot_section_size = 1024;
bs2 = 0xe2; bs2 = 0xe2;
# stk500_devcode = 0x??; # stk500_devcode = 0x??;
# avr910_devcode = 0x??; # avr910_devcode = 0x??;
@ -8269,6 +8343,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 0; ocdrev = 0;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -8413,6 +8489,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 0; ocdrev = 0;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -8505,6 +8583,7 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
mcuid = 167; mcuid = 167;
n_interrupts = 32; n_interrupts = 32;
n_boot_sections = 4;
stk500_devcode = 0x65; stk500_devcode = 0x65;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd8; pagel = 0xd8;
@ -8540,6 +8619,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -8631,6 +8712,7 @@ part parent "pwm2"
desc = "AT90PWM3"; desc = "AT90PWM3";
id = "pwm3"; id = "pwm3";
mcuid = 169; mcuid = 169;
boot_section_size = 256;
; ;
#------------------------------------------------------------ #------------------------------------------------------------
@ -8642,6 +8724,7 @@ part parent "pwm2"
desc = "AT90PWM2B"; desc = "AT90PWM2B";
id = "pwm2b"; id = "pwm2b";
mcuid = 168; mcuid = 168;
boot_section_size = 256;
signature = 0x1e 0x93 0x83; signature = 0x1e 0x93 0x83;
ocdrev = 1; ocdrev = 1;
; ;
@ -8668,6 +8751,7 @@ part parent "pwm3b"
desc = "AT90PWM316"; desc = "AT90PWM316";
id = "pwm316"; id = "pwm316";
mcuid = 180; mcuid = 180;
boot_section_size = 512;
signature = 0x1e 0x94 0x83; signature = 0x1e 0x94 0x83;
memory "flash" memory "flash"
@ -8742,6 +8826,8 @@ part
programfusepolltimeout = 25; programfusepolltimeout = 25;
programlockpolltimeout = 25; programlockpolltimeout = 25;
synchcycles = 6; synchcycles = 6;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -8871,6 +8957,8 @@ part
programfusepolltimeout = 25; programfusepolltimeout = 25;
programlockpolltimeout = 25; programlockpolltimeout = 25;
synchcycles = 6; synchcycles = 6;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -9001,6 +9089,8 @@ part
programfusepolltimeout = 25; programfusepolltimeout = 25;
programlockpolltimeout = 25; programlockpolltimeout = 25;
synchcycles = 6; synchcycles = 6;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -9094,6 +9184,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 126; mcuid = 126;
n_interrupts = 57; n_interrupts = 57;
n_boot_sections = 4;
boot_section_size = 1024;
# stk500_devcode = 0xB2; # stk500_devcode = 0xB2;
# avr910_devcode = 0x43; # avr910_devcode = 0x43;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -9217,6 +9309,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 138; mcuid = 138;
n_interrupts = 57; n_interrupts = 57;
n_boot_sections = 4;
boot_section_size = 1024;
# stk500_devcode = 0xB2; # stk500_devcode = 0xB2;
# avr910_devcode = 0x43; # avr910_devcode = 0x43;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -9353,6 +9447,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 143; mcuid = 143;
n_interrupts = 57; n_interrupts = 57;
n_boot_sections = 4;
boot_section_size = 1024;
stk500_devcode = 0xb2; stk500_devcode = 0xb2;
# avr910_devcode = 0x43; # avr910_devcode = 0x43;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -9649,6 +9745,8 @@ part
programfusepolltimeout = 25; programfusepolltimeout = 25;
programlockpolltimeout = 25; programlockpolltimeout = 25;
synchcycles = 6; synchcycles = 6;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -9789,6 +9887,8 @@ part
programfusepolltimeout = 25; programfusepolltimeout = 25;
programlockpolltimeout = 25; programlockpolltimeout = 25;
synchcycles = 6; synchcycles = 6;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -9929,6 +10029,8 @@ part
programfusepolltimeout = 25; programfusepolltimeout = 25;
programlockpolltimeout = 25; programlockpolltimeout = 25;
synchcycles = 6; synchcycles = 6;
spmcr = 0x57;
eecr = 0x3c;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -10119,6 +10221,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3c;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -10212,6 +10316,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 57; mcuid = 57;
n_interrupts = 43; n_interrupts = 43;
n_boot_sections = 4;
boot_section_size = 512;
# stk500_devcode = 0xB2; # stk500_devcode = 0xB2;
# avr910_devcode = 0x43; # avr910_devcode = 0x43;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -10336,6 +10442,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 65; mcuid = 65;
n_interrupts = 43; n_interrupts = 43;
n_boot_sections = 4;
boot_section_size = 512;
# stk500_devcode = 0xB2; # stk500_devcode = 0xB2;
# avr910_devcode = 0x43; # avr910_devcode = 0x43;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -10460,6 +10568,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 181; mcuid = 181;
n_interrupts = 38; n_interrupts = 38;
n_boot_sections = 4;
boot_section_size = 1024;
# stk500_devcode = 0xB2; # stk500_devcode = 0xB2;
# avr910_devcode = 0x43; # avr910_devcode = 0x43;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -10595,6 +10705,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 184; mcuid = 184;
n_interrupts = 38; n_interrupts = 38;
n_boot_sections = 4;
boot_section_size = 1024;
# stk500_devcode = 0xB2; # stk500_devcode = 0xB2;
# avr910_devcode = 0x43; # avr910_devcode = 0x43;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -10730,6 +10842,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
mcuid = 178; mcuid = 178;
n_interrupts = 29; n_interrupts = 29;
n_boot_sections = 4;
boot_section_size = 512;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
bs2 = 0xc6; bs2 = 0xc6;
@ -10759,6 +10873,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -10850,6 +10966,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
mcuid = 174; mcuid = 174;
n_interrupts = 58; n_interrupts = 58;
n_boot_sections = 4;
boot_section_size = 512;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
bs2 = 0xc6; bs2 = 0xc6;
@ -10879,6 +10997,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -10970,6 +11090,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
mcuid = 64; mcuid = 64;
n_interrupts = 29; n_interrupts = 29;
n_boot_sections = 4;
boot_section_size = 512;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
bs2 = 0xc6; bs2 = 0xc6;
@ -10999,6 +11121,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -11090,6 +11214,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
mcuid = 56; mcuid = 56;
n_interrupts = 29; n_interrupts = 29;
n_boot_sections = 4;
boot_section_size = 512;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
bs2 = 0xc6; bs2 = 0xc6;
@ -11119,6 +11245,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -11210,6 +11338,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
mcuid = 48; mcuid = 48;
n_interrupts = 58; n_interrupts = 58;
n_boot_sections = 4;
boot_section_size = 512;
chip_erase_delay = 9000; chip_erase_delay = 9000;
pagel = 0xd7; pagel = 0xd7;
bs2 = 0xc6; bs2 = 0xc6;
@ -11239,6 +11369,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3f;
ocdrev = 1; ocdrev = 1;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -11330,6 +11462,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 95; mcuid = 95;
n_interrupts = 22; n_interrupts = 22;
n_boot_sections = 4;
boot_section_size = 256;
# stk500_devcode = 0x??; # stk500_devcode = 0x??;
# avr910_devcode = 0x??; # avr910_devcode = 0x??;
chip_erase_delay = 9000; chip_erase_delay = 9000;
@ -11484,6 +11618,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 114; mcuid = 114;
n_interrupts = 23; n_interrupts = 23;
n_boot_sections = 4;
boot_section_size = 512;
# stk500_devcode = 0x??; # No STK500v1 support? # stk500_devcode = 0x??; # No STK500v1 support?
# avr910_devcode = 0x??; # Try the ATmega16 one # avr910_devcode = 0x??; # Try the ATmega16 one
avr910_devcode = 0x74; avr910_devcode = 0x74;
@ -11642,6 +11778,8 @@ part
prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
mcuid = 132; mcuid = 132;
n_interrupts = 23; n_interrupts = 23;
n_boot_sections = 4;
boot_section_size = 1024;
# stk500_devcode = 0x??; # No STK500v1 support? # stk500_devcode = 0x??; # No STK500v1 support?
# avr910_devcode = 0x??; # Try the ATmega16 one # avr910_devcode = 0x??; # Try the ATmega16 one
avr910_devcode = 0x74; avr910_devcode = 0x74;
@ -11870,6 +12008,7 @@ part
desc = "AVR XMEGA family common values"; desc = "AVR XMEGA family common values";
id = ".xmega"; id = ".xmega";
prog_modes = PM_SPM | PM_PDI; prog_modes = PM_SPM | PM_PDI;
n_boot_sections = 1;
mcu_base = 0x0090; mcu_base = 0x0090;
nvm_base = 0x01c0; nvm_base = 0x01c0;
@ -11925,6 +12064,7 @@ part parent ".xmega"
id = "x16a4u"; id = "x16a4u";
mcuid = 232; mcuid = 232;
n_interrupts = 127; n_interrupts = 127;
boot_section_size = 4096;
signature = 0x1e 0x94 0x41; signature = 0x1e 0x94 0x41;
usbpid = 0x2fe3; usbpid = 0x2fe3;
@ -12019,6 +12159,7 @@ part parent ".xmega"
id = "x32a4u"; id = "x32a4u";
mcuid = 239; mcuid = 239;
n_interrupts = 127; n_interrupts = 127;
boot_section_size = 4096;
signature = 0x1e 0x95 0x41; signature = 0x1e 0x95 0x41;
usbpid = 0x2fe4; usbpid = 0x2fe4;
@ -12113,6 +12254,7 @@ part parent ".xmega"
id = "x64a4u"; id = "x64a4u";
mcuid = 252; mcuid = 252;
n_interrupts = 127; n_interrupts = 127;
boot_section_size = 4096;
signature = 0x1e 0x96 0x46; signature = 0x1e 0x96 0x46;
usbpid = 0x2fe5; usbpid = 0x2fe5;
@ -12295,6 +12437,7 @@ part parent ".xmega"
id = "x128c3"; id = "x128c3";
mcuid = 261; mcuid = 261;
n_interrupts = 127; n_interrupts = 127;
boot_section_size = 8192;
signature = 0x1e 0x97 0x52; signature = 0x1e 0x97 0x52;
usbpid = 0x2fd7; usbpid = 0x2fd7;
@ -12503,6 +12646,7 @@ part parent ".xmega"
id = "x128a4u"; id = "x128a4u";
mcuid = 264; mcuid = 264;
n_interrupts = 127; n_interrupts = 127;
boot_section_size = 8192;
signature = 0x1e 0x97 0x46; signature = 0x1e 0x97 0x46;
usbpid = 0x2fde; usbpid = 0x2fde;
@ -12559,6 +12703,7 @@ part parent ".xmega"
prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG;
mcuid = 257; mcuid = 257;
n_interrupts = 81; n_interrupts = 81;
boot_section_size = 8192;
signature = 0x1e 0x97 0x4d; signature = 0x1e 0x97 0x4d;
usbpid = 0x2fea; usbpid = 0x2fea;
@ -12632,6 +12777,7 @@ part parent ".xmega"
id = "x192c3"; id = "x192c3";
mcuid = 269; mcuid = 269;
n_interrupts = 127; n_interrupts = 127;
boot_section_size = 8192;
signature = 0x1e 0x97 0x51; signature = 0x1e 0x97 0x51;
# usbpid = 0x2f??; # usbpid = 0x2f??;
@ -12740,6 +12886,7 @@ part parent ".xmega"
id = "x256c3"; id = "x256c3";
mcuid = 276; mcuid = 276;
n_interrupts = 127; n_interrupts = 127;
boot_section_size = 8192;
signature = 0x1e 0x98 0x46; signature = 0x1e 0x98 0x46;
usbpid = 0x2fda; usbpid = 0x2fda;
@ -12871,6 +13018,7 @@ part parent ".xmega"
id = "x384c3"; id = "x384c3";
mcuid = 278; mcuid = 278;
n_interrupts = 127; n_interrupts = 127;
boot_section_size = 8192;
signature = 0x1e 0x98 0x45; signature = 0x1e 0x98 0x45;
usbpid = 0x2fdb; usbpid = 0x2fdb;
@ -12938,6 +13086,7 @@ part parent ".xmega"
id = "x8e5"; id = "x8e5";
mcuid = 230; mcuid = 230;
n_interrupts = 43; n_interrupts = 43;
boot_section_size = 2048;
signature = 0x1e 0x93 0x41; signature = 0x1e 0x93 0x41;
memory "eeprom" memory "eeprom"
@ -12992,6 +13141,7 @@ part parent ".xmega"
id = "x16e5"; id = "x16e5";
mcuid = 235; mcuid = 235;
n_interrupts = 43; n_interrupts = 43;
boot_section_size = 4096;
signature = 0x1e 0x94 0x45; signature = 0x1e 0x94 0x45;
memory "eeprom" memory "eeprom"
@ -13046,6 +13196,7 @@ part parent ".xmega"
id = "x32e5"; id = "x32e5";
mcuid = 242; mcuid = 242;
n_interrupts = 43; n_interrupts = 43;
boot_section_size = 4096;
signature = 0x1e 0x95 0x4c; signature = 0x1e 0x95 0x4c;
memory "eeprom" memory "eeprom"
@ -13166,6 +13317,8 @@ part
chiperasepolltimeout = 10; chiperasepolltimeout = 10;
programfusepolltimeout = 5; programfusepolltimeout = 5;
programlockpolltimeout = 5; programlockpolltimeout = 5;
spmcr = 0x57;
eecr = 0x3c;
chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx";
pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx";
@ -13446,6 +13599,8 @@ part
prog_modes = PM_SPM | PM_HVPP | PM_JTAG; prog_modes = PM_SPM | PM_HVPP | PM_JTAG;
mcuid = 125; mcuid = 125;
n_interrupts = 23; n_interrupts = 23;
n_boot_sections = 4;
boot_section_size = 512;
# STK500 parameters (parallel programming IO lines) # STK500 parameters (parallel programming IO lines)
pagel = 0xa7; pagel = 0xa7;
bs2 = 0xa0; bs2 = 0xa0;
@ -13508,6 +13663,7 @@ part
desc = "AVR8X family common values"; desc = "AVR8X family common values";
id = ".avr8x"; id = ".avr8x";
prog_modes = PM_SPM | PM_UPDI; prog_modes = PM_SPM | PM_UPDI;
n_boot_sections = 1;
nvm_base = 0x1000; nvm_base = 0x1000;
ocd_base = 0x0f80; ocd_base = 0x0f80;
@ -14880,6 +15036,7 @@ part
id = ".avrdx"; id = ".avrdx";
family_id = "AVR "; family_id = "AVR ";
prog_modes = PM_SPM | PM_UPDI; prog_modes = PM_SPM | PM_UPDI;
n_boot_sections = 1;
# Dedicated UPDI pin, no HV # Dedicated UPDI pin, no HV
hvupdi_variant = 1; hvupdi_variant = 1;
nvm_base = 0x1000; nvm_base = 0x1000;

View File

@ -70,6 +70,8 @@ Component_t avr_comp[] = {
part_comp_desc(mcuid, COMP_INT), part_comp_desc(mcuid, COMP_INT),
part_comp_desc(n_interrupts, COMP_INT), part_comp_desc(n_interrupts, COMP_INT),
part_comp_desc(n_page_erase, COMP_INT), part_comp_desc(n_page_erase, COMP_INT),
part_comp_desc(n_boot_sections, COMP_INT),
part_comp_desc(boot_section_size, COMP_INT),
// AVRMEM // AVRMEM
mem_comp_desc(n_word_writes, COMP_INT), mem_comp_desc(n_word_writes, COMP_INT),

View File

@ -615,7 +615,7 @@ static void dev_part_strct(const AVRPART *p, bool tsv, const AVRPART *base, bool
dev_print_comment(cp->comms); dev_print_comment(cp->comms);
if(p->parent_id && *p->parent_id) if(p->parent_id && *p->parent_id)
dev_info("part parent %s\n", p->parent_id); dev_info("part parent \"%s\"\n", p->parent_id);
else else
dev_info("part\n"); dev_info("part\n");
} }
@ -627,6 +627,8 @@ static void dev_part_strct(const AVRPART *p, bool tsv, const AVRPART *base, bool
_if_partout(intcmp, "%d", mcuid); _if_partout(intcmp, "%d", mcuid);
_if_partout(intcmp, "%d", n_interrupts); _if_partout(intcmp, "%d", n_interrupts);
_if_partout(intcmp, "%d", n_page_erase); _if_partout(intcmp, "%d", n_page_erase);
_if_partout(intcmp, "%d", n_boot_sections);
_if_partout(intcmp, "%d", boot_section_size);
_if_partout(intcmp, "%d", hvupdi_variant); _if_partout(intcmp, "%d", hvupdi_variant);
_if_partout(intcmp, "0x%02x", stk500_devcode); _if_partout(intcmp, "0x%02x", stk500_devcode);
_if_partout(intcmp, "0x%02x", avr910_devcode); _if_partout(intcmp, "0x%02x", avr910_devcode);

View File

@ -1867,6 +1867,8 @@ part
mcuid = <num>; # unique id in 0..2039 for 8-bit AVRs mcuid = <num>; # unique id in 0..2039 for 8-bit AVRs
n_interrupts = <num>; # number of interrupts, used for vector bootloaders n_interrupts = <num>; # number of interrupts, used for vector bootloaders
n_page_erase = <num>; # if set, number of pages erased during SPM erase n_page_erase = <num>; # if set, number of pages erased during SPM erase
n_boot_sections = <num>; # Number of boot sections
boot_section_size = <num>; # Size of (smallest) boot section, if any
hvupdi_variant = <num> ; # numeric -1 (n/a) or 0..2 hvupdi_variant = <num> ; # numeric -1 (n/a) or 0..2
devicecode = <num> ; # deprecated, use stk500_devcode devicecode = <num> ; # deprecated, use stk500_devcode
stk500_devcode = <num> ; # numeric stk500_devcode = <num> ; # numeric

View File

@ -247,10 +247,9 @@ u16_to_b2(unsigned char *b, unsigned short l)
static const char * static const char *
jtagmkII_get_rc(unsigned int rc) jtagmkII_get_rc(unsigned int rc)
{ {
int i;
static char msg[64]; static char msg[64];
for (i = 0; i < sizeof jtagresults / sizeof jtagresults[0]; i++) for (size_t i = 0; i < sizeof jtagresults/sizeof*jtagresults; i++)
if (jtagresults[i].code == rc) if (jtagresults[i].code == rc)
return jtagresults[i].descr; return jtagresults[i].descr;
@ -261,7 +260,7 @@ jtagmkII_get_rc(unsigned int rc)
static void jtagmkII_print_memory(unsigned char *b, size_t s) static void jtagmkII_print_memory(unsigned char *b, size_t s)
{ {
int i; size_t i;
if (s < 2) if (s < 2)
return; return;
@ -277,8 +276,8 @@ static void jtagmkII_print_memory(unsigned char *b, size_t s)
msg_info("\n"); msg_info("\n");
} }
static void jtagmkII_prmsg(const PROGRAMMER *pgm, unsigned char *data, size_t len) { static void jtagmkII_prmsg(const PROGRAMMER *pgm_unused, unsigned char *data, size_t len) {
int i; size_t i;
if (verbose >= 4) { if (verbose >= 4) {
msg_trace("Raw message:\n"); msg_trace("Raw message:\n");
@ -885,7 +884,7 @@ static int jtagmkII_chip_erase(const PROGRAMMER *pgm, const AVRPART *p) {
/* /*
* There is no chip erase functionality in debugWire mode. * There is no chip erase functionality in debugWire mode.
*/ */
static int jtagmkII_chip_erase_dw(const PROGRAMMER *pgm, const AVRPART *p) { static int jtagmkII_chip_erase_dw(const PROGRAMMER *pgm_unused, const AVRPART *p_unused) {
pmsg_info("chip erase not supported in debugWire mode\n"); pmsg_info("chip erase not supported in debugWire mode\n");
@ -896,7 +895,7 @@ static void jtagmkII_set_devdescr(const PROGRAMMER *pgm, const AVRPART *p) {
int status; int status;
unsigned char *resp, c; unsigned char *resp, c;
LNODEID ln; LNODEID ln;
AVRMEM * m; AVRMEM *flm;
struct { struct {
unsigned char cmd; unsigned char cmd;
struct device_descriptor dd; struct device_descriptor dd;
@ -907,13 +906,18 @@ static void jtagmkII_set_devdescr(const PROGRAMMER *pgm, const AVRPART *p) {
sendbuf.dd.ucSPMCRAddress = p->spmcr; sendbuf.dd.ucSPMCRAddress = p->spmcr;
sendbuf.dd.ucRAMPZAddress = p->rampz; sendbuf.dd.ucRAMPZAddress = p->rampz;
sendbuf.dd.ucIDRAddress = p->idr; sendbuf.dd.ucIDRAddress = p->idr;
if((flm = avr_locate_mem(p, "flash")) && p->boot_section_size > 0) {
unsigned int sbls = (flm->size - p->boot_section_size)/2; // Words
sendbuf.dd.uiStartSmallestBootLoaderSection[0] = sbls;
sendbuf.dd.uiStartSmallestBootLoaderSection[1] = sbls>>8;
}
u16_to_b2(sendbuf.dd.EECRAddress, p->eecr? p->eecr: 0x3f); // Unset eecr means 0x3f u16_to_b2(sendbuf.dd.EECRAddress, p->eecr? p->eecr: 0x3f); // Unset eecr means 0x3f
sendbuf.dd.ucAllowFullPageBitstream = sendbuf.dd.ucAllowFullPageBitstream =
(p->flags & AVRPART_ALLOWFULLPAGEBITSTREAM) != 0; (p->flags & AVRPART_ALLOWFULLPAGEBITSTREAM) != 0;
sendbuf.dd.EnablePageProgramming = sendbuf.dd.EnablePageProgramming =
(p->flags & AVRPART_ENABLEPAGEPROGRAMMING) != 0; (p->flags & AVRPART_ENABLEPAGEPROGRAMMING) != 0;
for (ln = lfirst(p->mem); ln; ln = lnext(ln)) { for (ln = lfirst(p->mem); ln; ln = lnext(ln)) {
m = ldata(ln); AVRMEM *m = ldata(ln);
if (strcmp(m->desc, "flash") == 0) { if (strcmp(m->desc, "flash") == 0) {
if (m->page_size > 256) if (m->page_size > 256)
PDATA(pgm)->flash_pagesize = 256; PDATA(pgm)->flash_pagesize = 256;
@ -1071,7 +1075,7 @@ static int jtagmkII_reset(const PROGRAMMER *pgm, unsigned char flags) {
return 0; return 0;
} }
static int jtagmkII_program_enable_INFO(const PROGRAMMER *pgm, const AVRPART *p) { static int jtagmkII_program_enable_INFO(const PROGRAMMER *pgm_unused, const AVRPART *p_unused) {
return 0; return 0;
} }
@ -1197,9 +1201,8 @@ static unsigned char jtagmkII_get_baud(long baud)
{ 2000000L, PAR_BAUD_2000000 }, { 2000000L, PAR_BAUD_2000000 },
{ 3000000L, PAR_BAUD_3000000 }, { 3000000L, PAR_BAUD_3000000 },
}; };
int i;
for (i = 0; i < sizeof baudtab / sizeof baudtab[0]; i++) for (size_t i = 0; i < sizeof baudtab/sizeof*baudtab; i++)
if (baud == baudtab[i].baud) if (baud == baudtab[i].baud)
return baudtab[i].val; return baudtab[i].val;
@ -1364,7 +1367,7 @@ static void jtagmkII_disable(const PROGRAMMER *pgm) {
(void)jtagmkII_program_disable(pgm); (void)jtagmkII_program_disable(pgm);
} }
static void jtagmkII_enable(PROGRAMMER * pgm, const AVRPART *p) { static void jtagmkII_enable(PROGRAMMER *pgm_unused, const AVRPART *p_unused) {
return; return;
} }
@ -2983,7 +2986,7 @@ static int jtagmkII_initialize32(const PROGRAMMER *pgm, const AVRPART *p) {
return 0; return 0;
} }
static int jtagmkII_chip_erase32(const PROGRAMMER *pgm, const AVRPART *p) { static int jtagmkII_chip_erase32(const PROGRAMMER *pgm, const AVRPART *p_unused) {
int status=0, loops; int status=0, loops;
unsigned char *resp, buf[3], x, ret[4], *retP; unsigned char *resp, buf[3], x, ret[4], *retP;
unsigned long val=0; unsigned long val=0;
@ -3248,10 +3251,9 @@ static void jtagmkII_close32(PROGRAMMER * pgm)
goto ret; goto ret;
} }
static int jtagmkII_paged_load32(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *m, static int jtagmkII_paged_load32(const PROGRAMMER *pgm, const AVRPART *p_unused, const AVRMEM *m,
unsigned int page_size, unsigned int page_size, unsigned int addr, unsigned int n_bytes) {
unsigned int addr, unsigned int n_bytes)
{
unsigned int block_size; unsigned int block_size;
unsigned int maxaddr = addr + n_bytes; unsigned int maxaddr = addr + n_bytes;
unsigned char cmd[7]; unsigned char cmd[7];
@ -3284,7 +3286,8 @@ static int jtagmkII_paged_load32(const PROGRAMMER *pgm, const AVRPART *p, const
cmd[2] = 0x05; cmd[2] = 0x05;
for (; addr < maxaddr; addr += block_size) { for (; addr < maxaddr; addr += block_size) {
block_size = ((maxaddr-addr) < pgm->page_size) ? (maxaddr - addr) : pgm->page_size; block_size = maxaddr - addr < (unsigned int) pgm->page_size?
maxaddr - addr: (unsigned int) pgm->page_size;
pmsg_debug("jtagmkII_paged_load32(): " pmsg_debug("jtagmkII_paged_load32(): "
"block_size at addr %d is %d\n", addr, block_size); "block_size at addr %d is %d\n", addr, block_size);
@ -3323,10 +3326,9 @@ static int jtagmkII_paged_load32(const PROGRAMMER *pgm, const AVRPART *p, const
return -1; return -1;
} }
static int jtagmkII_paged_write32(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *m, static int jtagmkII_paged_write32(const PROGRAMMER *pgm, const AVRPART *p_unused , const AVRMEM *m,
unsigned int page_size, unsigned int page_size, unsigned int addr, unsigned int n_bytes) {
unsigned int addr, unsigned int n_bytes)
{
unsigned int block_size; unsigned int block_size;
unsigned char *cmd=NULL; unsigned char *cmd=NULL;
unsigned char *resp; unsigned char *resp;
@ -3383,7 +3385,8 @@ static int jtagmkII_paged_write32(const PROGRAMMER *pgm, const AVRPART *p, const
if(status != 0) {lineno = __LINE__; goto eRR;} if(status != 0) {lineno = __LINE__; goto eRR;}
for(blocks=0; blocks<2; ++blocks) { for(blocks=0; blocks<2; ++blocks) {
block_size = ((maxaddr-addr) < pgm->page_size) ? (maxaddr - addr) : pgm->page_size; block_size = maxaddr - addr < (unsigned int) pgm->page_size?
maxaddr - addr: (unsigned int) pgm->page_size;
pmsg_debug("jtagmkII_paged_write32(): " pmsg_debug("jtagmkII_paged_write32(): "
"block_size at addr %d is %d\n", addr, block_size); "block_size at addr %d is %d\n", addr, block_size);

View File

@ -121,7 +121,9 @@ SIGN [+-]
} }
prog_modes|mcuid|n_interrupts|n_page_erase|n_word_writes { /* Components for assignment */ (?x: prog_modes | mcuid | n_interrupts | n_page_erase | n_word_writes | n_boot_sections |
boot_section_size ) { /* Components for assignment */
Component_t *cp = cfg_comp_search(yytext, current_strct); Component_t *cp = cfg_comp_search(yytext, current_strct);
if(!cp) { if(!cp) {
yyerror("Unknown component %s in %s", yytext, cfg_strct_name(current_strct)); yyerror("Unknown component %s in %s", yytext, cfg_strct_name(current_strct));

View File

@ -237,6 +237,8 @@ typedef struct avrpart {
int mcuid; /* Unique id in 0..2039 for urclock programmer */ int mcuid; /* Unique id in 0..2039 for urclock programmer */
int n_interrupts; /* Number of interrupts, used for vector bootloaders */ int n_interrupts; /* Number of interrupts, used for vector bootloaders */
int n_page_erase; /* If set, number of pages erased during NVM erase */ int n_page_erase; /* If set, number of pages erased during NVM erase */
int n_boot_sections; /* Number of boot sections */
int boot_section_size; /* Size of (smallest) boot section, if any */
int hvupdi_variant; /* HV pulse on UPDI pin, no pin or RESET pin */ int hvupdi_variant; /* HV pulse on UPDI pin, no pin or RESET pin */
int stk500_devcode; /* stk500 device code */ int stk500_devcode; /* stk500 device code */
int avr910_devcode; /* avr910 device code */ int avr910_devcode; /* avr910 device code */