Merge branch 'avrdudes:main' into main

This commit is contained in:
MX682X
2025-03-24 21:50:21 +01:00
committed by GitHub
9 changed files with 489 additions and 465 deletions

8
NEWS
View File

@@ -18,6 +18,8 @@ Changes since version 8.0:
* New programmers supported:
- pickit5 = pickit5_jtag, pickit5_dw, pickit5_isp, pickit5_pdi, pickit5_tpi
- pickit_basic = pickit_basic_jtag, pickit_basic_updi, pickit_basic_isp,
pickit_basic_dw, pickit_basic_tpi, pickit_basic_pdi
* New serial adapters supported:
@@ -52,6 +54,12 @@ Changes since version 8.0:
- Shorten ID of LGT parts #1951
- Suggest compatible command for SNAP/PICKit4 in PIC mode #1947
- Add AVR64DAnnS, AVR32DAnnS and AVR32SDnn #1955
- Fix variant errors introduced in recent .atdf versions #1958
- Add PICkit Basic programmer #1959
- Add --version option #1962
- Add WDT type info to avrintel.c #1963
- Remove spurious s from AVR32SDnn part id #1964
- Remove #include "usbdevs.h" from libavrdude.h #1965
* Internals:

View File

@@ -51,6 +51,7 @@
.Op Fl v, \-verbose
.Op Fl x Ar extended_param
.Op Fl V, \-noverify-memory
.Op Fl \-version
.Sh DESCRIPTION
.Nm Avrdude
is a program for downloading and uploading on-chip memories of Atmel AVR
@@ -932,6 +933,8 @@ More
options increase verbosity level.
.It Fl V \-noverify-memory
Disable automatic verify check when writing data to the AVR with -U.
.It Fl \-version
Print version and exit
.It Fl x Ar extended_param
Pass
.Ar extended_param

View File

@@ -7717,13 +7717,9 @@ part parent "pwm3" # pwm3b
desc = "AT90PWM3B";
id = "pwm3b";
variants =
"AT90PWM3-16ME: QFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]",
"AT90PWM3-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]",
"AT90PWM3-16SE: SOIC32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]",
"AT90PWM3-16SU: SOIC32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]",
"AT90PWM3B: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]",
"AT90PWM3B-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]",
"AT90PWM3B-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]";
"AT90PWM3B: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]",
"AT90PWM3B-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]",
"AT90PWM3B-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]";
mcuid = 170;
signature = 0x1e 0x93 0x83;
;
@@ -8117,7 +8113,6 @@ part parent ".classic" # usb82
desc = "AT90USB82";
id = "usb82";
variants =
"90USB82-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]",
"AT90USB82: QFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]",
"AT90USB82-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]",
"AT90USB82-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]";
@@ -8248,8 +8243,6 @@ part parent "usb82" # usb162
desc = "AT90USB162";
id = "usb162";
variants =
"90USB162-16AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]",
"90USB162-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]",
"AT90USB162: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]",
"AT90USB162-16AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]",
"AT90USB162-16AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]",
@@ -12046,22 +12039,14 @@ part parent "m325" # m325a
desc = "ATmega325A";
id = "m325a";
variants =
"ATmega3250A-AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250A-ANR: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250A-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250A-AUR: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250A-MN: QFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250A-MNR: QFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250A-MU: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250A-MUR: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-ANR: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-AUR: TQFP64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-MN: VQFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-MNR: VQFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-MU: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-MUR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]";
"ATmega325A-AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-ANR: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-AUR: TQFP64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-MN: VQFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-MNR: VQFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-MU: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325A-MUR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]";
mcuid = 115;
;
@@ -12073,19 +12058,11 @@ part parent "m325" # m325pa
desc = "ATmega325PA";
id = "m325pa";
variants =
"ATmega3250PA-AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250PA-ANR: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250PA-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250PA-AUR: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250PA-MN: QFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250PA-MNR: QFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250PA-MU: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega3250PA-MUR: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]",
"ATmega325PA-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325PA-AUR: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325PA-MU: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]",
"ATmega325PA-MUR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]";
"ATmega325PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]",
"ATmega325PA-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325PA-AUR: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]",
"ATmega325PA-MU: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]",
"ATmega325PA-MUR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]";
mcuid = 117;
signature = 0x1e 0x95 0x0d;
;
@@ -24469,9 +24446,9 @@ part # .avr-sx
# AVR32SD20
#------------------------------------------------------------
part parent ".avr-sx" # 32sd20s
part parent ".avr-sx" # 32sd20
desc = "AVR32SD20";
id = "32sd20s";
id = "32sd20";
variants =
"AVR32SD20-SSOP: DIP20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]";
mcuid = 402;
@@ -24483,9 +24460,9 @@ part parent ".avr-sx" # 32sd20s
# AVR32SD28
#------------------------------------------------------------
part parent ".avr-sx" # 32sd28s
part parent ".avr-sx" # 32sd28
desc = "AVR32SD28";
id = "32sd28s";
id = "32sd28";
variants =
"AVR32SD28-SSOP/SPDIP: DIP28, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]",
"AVR32SD28-VQFN: QFP28, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]";
@@ -24498,9 +24475,9 @@ part parent ".avr-sx" # 32sd28s
# AVR32SD32
#------------------------------------------------------------
part parent ".avr-sx" # 32sd32s
part parent ".avr-sx" # 32sd32
desc = "AVR32SD32";
id = "32sd32s";
id = "32sd32";
variants =
"AVR32SD32-VQFN/TQFP: QFP32, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]";
mcuid = 404;

File diff suppressed because it is too large Load Diff

View File

@@ -50,6 +50,7 @@
#include "developer_opts.h"
#include "developer_opts_private.h"
#include "usbdevs.h"
// Inject part parameters into a semi-automated rewrite of avrdude.conf
// - Add entries to the tables below; they get written on -p*/si or -c*/si

View File

@@ -1143,6 +1143,10 @@ More @code{-v} options increase verbosity level.
@cindex @code{--noverify-memory}
Disable automatic verify check when writing data to the AVR with @code{-U}.
@item --version
@cindex Option @code{--version}
Print avrdude version and exit
@item -x @var{extended_param}
@cindex Option @code{-x} @var{extended_param}
@cindex @code{-x} @var{extended_param}

View File

@@ -11,8 +11,8 @@
* Published under GNU General Public License, version 3 (GPL-3.0)
* Meta-author Stefan Rueger <stefan.rueger@urclocks.com>
*
* v 1.43
* 11.03.2025
* v 1.44
* 22.03.2025
*
*/
@@ -84,12 +84,13 @@ typedef struct { // Value of -1 typically means unknown
uint16_t nregisters; // Number of I/O registers
const Register_file *regf; // Register file
uint8_t numuarts; // Number of UART interfaces
uint8_t uarttype; // UARTTYPE_UNKNOWN, _NONE, _CLASSIC, _LIN, XMEGA, _AVR8X
uint8_t uarttype; // UARTTYPE_UNKNOWN, _NONE, _CLASSIC, _LIN, _XMEGA, _AVR8X
uint8_t has_u2x; // 1 = 2x speed possible (8 samples), 0 = 1x speed only
uint8_t brr_nbits; // Number of baud rate divisor bits (integer part)
uint8_t brr_nfraction; // Number of bits for fractional part of baud rate divisor
uint8_t nports; // Number of port registers (one per letter A-H, J-N, P-R)
const Port_bits *ports; // Port list
uint8_t wdttype; // WDT_UNKOWN, _NONE, _CLASSIC3, _CLASSIC4, _XMEGA, _AVR8X, _AVR8X_DUAL
} Avrintel;
#define F_AVR8L 1 // TPI programming, ATtiny(4|5|9|10|20|40|102|104)
@@ -104,6 +105,14 @@ typedef struct { // Value of -1 typically means unknown
#define UARTTYPE_XMEGA 3
#define UARTTYPE_AVR8X 4
#define WDT_UNKNOWN (-1)
#define WDT_NONE 0
#define WDT_CLASSIC3 1 // 3-bit prescaler: 8 timeouts from 16 ms ... 2 s (mask 0x07)
#define WDT_CLASSIC4 2 // 4-bit prescaler: 10 timeouts from 16 ms ... 8 s (mask 0x27)
#define WDT_XMEGA 3 // 11 timeouts from 8 ms to 8 s
#define WDT_AVR8X 4 // 11 timeouts from 8 ms to 8 s
#define WDT_AVR8X_DUAL 5 // 11 timeouts from 244 us to 250 ms + synchronous wdt
#define UB_N_MCU 2040 // mcuid is in 0..2039
extern const Avrintel uP_table[412];

View File

@@ -1845,7 +1845,7 @@ typedef struct {
Dis_symbol *dis_symbols;
// Static variables from usb_libusb.c
#include "usbdevs.h"
#define USBDEV_MAX_XFER_3 912 // Trust compiler complains if usbdevs.h redefines this
char usb_buf[USBDEV_MAX_XFER_3];
int usb_buflen, usb_bufptr; // @@@ Check whether usb_buflen needs initialising with -1
int usb_interface;

View File

@@ -275,6 +275,7 @@ static void usage(void) {
" -v, --verbose Verbose output; -v -v for more\n"
" -q, --quell Quell progress output; -q -q for less\n"
" -l, --logfile logfile Use logfile rather than stderr for diagnostics\n"
" --version Print version and exit\n"
" -?, --help Display this usage\n"
"\navrdude version %s, https://github.com/avrdudes/avrdude\n",
progname, strlen(cfg) < 24? "config file ": "", cfg, AVRDUDE_FULL_VERSION);
@@ -713,6 +714,7 @@ int main(int argc, char *argv[]) {
int is_open; // Device open succeeded
int ce_delayed; // Chip erase delayed
char *logfile; // Use logfile rather than stderr for diagnostics
int showversion; // Show version and exit
enum updateflags uflags = UF_AUTO_ERASE | UF_VERIFY; // Flags for do_op()
init_cx(NULL);
@@ -801,6 +803,7 @@ int main(int argc, char *argv[]) {
is_open = 0;
ce_delayed = 0;
logfile = NULL;
showversion = 0;
if(argc == 1) { // No arguments?
usage();
@@ -840,11 +843,15 @@ int main(int argc, char *argv[]) {
{"memory", required_argument, NULL, 'U'},
{"verbose", no_argument, NULL, 'v'},
{"noverify-memory",no_argument, NULL, 'V'},
{"version", no_argument, &showversion, 0},
{NULL, 0, NULL, 0}
};
int option_idx = 0;
while((ch = getopt_long(argc, argv,
"?Ab:B:c:C:DeE:Fi:l:nNp:OP:qrtT:U:vVx:",
longopts, NULL)) != -1) {
longopts, &option_idx)) != -1) {
switch(ch) {
case 'b': // Override default programmer baud rate
baudrate = str_int(optarg, STR_INT32, &errstr);
@@ -985,6 +992,11 @@ int main(int argc, char *argv[]) {
ladd(extended_params, optarg);
break;
case 0:
if(longopts[option_idx].flag)
*longopts[option_idx].flag = 1;
break;
case '?': // Help
usage();
exit(0);
@@ -998,6 +1010,16 @@ int main(int argc, char *argv[]) {
}
}
if(showversion) {
printf(
"%c%s version %s\n"
"Copyright see https://github.com/avrdudes/avrdude/blob/main/AUTHORS\n"
"Use https://github.com/avrdudes/avrdude/issues to report bugs and ask questions\n",
toupper(*progname), *progname? progname+1: "", AVRDUDE_FULL_VERSION
);
exit(0);
}
if(logfile != NULL) {
FILE *newstderr = freopen(logfile, "w", stderr);