mirror of
https://github.com/avrdudes/avrdude.git
synced 2026-09-29 04:18:54 +03:00
Merge branch 'avrdudes:main' into main
This commit is contained in:
8
NEWS
8
NEWS
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
830
src/avrintel.c
830
src/avrintel.c
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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;
|
||||
|
||||
24
src/main.c
24
src/main.c
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user