From 1af6d5b0ef41cf8e674ba7733ba01f4e0e4d0375 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sun, 14 Jun 2026 00:15:27 +0100 Subject: [PATCH 1/2] Future proof d, r, w, q terminal abbreviations --- src/term.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/term.c b/src/term.c index d7af1e1d..a7083693 100644 --- a/src/term.c +++ b/src/term.c @@ -95,9 +95,12 @@ static int cmd_quell(const PROGRAMMER *pgm, const AVRPART *p, int argc, const ch // List of commands; don't add a command starting with e: main.c relies on e expanding to erase static const struct command cmd[] = { {"dump", cmd_dump, _fo(read_byte_cached), "display a memory section as hex dump"}, + {"d", cmd_dump, _fo(read_byte_cached), NULL}, {"read", cmd_dump, _fo(read_byte_cached), "alias for dump"}, + {"r", cmd_dump, _fo(read_byte_cached), NULL}, {"disasm", cmd_disasm, _fo(read_byte_cached), "disassemble a memory section"}, {"write", cmd_write, _fo(write_byte_cached), "write data to memory; flash and EEPROM are cached"}, + {"w", cmd_write, _fo(write_byte_cached), NULL}, {"save", cmd_save, _fo(write_byte_cached), "save memory segments to file"}, {"backup", cmd_backup, _fo(write_byte_cached), "backup memories to file"}, {"restore", cmd_restore, _fo(write_byte_cached), "restore memories from file"}, @@ -123,9 +126,9 @@ static const struct command cmd[] = { {"verbose", cmd_verbose, _fo(open), "display or set -v verbosity level"}, {"quell", cmd_quell, _fo(open), "display or set -q quell level for progress bars"}, {"help", cmd_help, _fo(open), "show help message"}, - {"?", cmd_help, _fo(open), "same as help"}, + {"?", cmd_help, _fo(open), NULL}, {"quit", cmd_quit, _fo(open), "synchronise flash/EEPROM cache with device and quit"}, - {"q", cmd_quit, _fo(open), "abbreviation for quit"}, + {"q", cmd_quit, _fo(open), NULL}, }; #define NCMDS ((int)(sizeof(cmd)/sizeof(struct command))) @@ -2591,16 +2594,16 @@ static int cmd_help(const PROGRAMMER *pgm, const AVRPART *p, int argc, const cha term_out("Valid commands:\n"); for(int i = 0; i < NCMDS; i++) { - if(!is_available(pgm, p, i)) + if(!is_available(pgm, p, i) || !cmd[i].desc) continue; - term_out(" %-7s : ", cmd[i].name); - term_out(cmd[i].desc, cmd[i].name); - term_out("\n"); + term_out(" %-7s : %s\n", cmd[i].name, cmd[i].desc); } - term_out("\nFor more details about a terminal command cmd type cmd -?\n\n" - "Other:\n" + term_out( "\n" " ! : run the shell in a subshell, eg, !ls *.hex\n" " # ... : ignore rest of line (eg, used as comments in scripts)\n\n" + "d, r, w, q and ? abbreviate dump, read, write, quit and help.\n" + "Other than that any unique abbreviation of a command works, too.\n" + "cmd -? gives more details about a command cmd.\n\n" "Note that not all programmer derivatives support all commands. Flash and\n" "EEPROM type memories are normally read and written using a cache via paged\n" "read and write access; the cache is synchronised on quit or flush commands.\n" From 6b24c2d9fa698cd04a949286d0e8bf6b0f13a636 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sun, 14 Jun 2026 00:16:03 +0100 Subject: [PATCH 2/2] Update terminal documentation --- src/avrdude.1 | 15 +++++---- src/doc/avrdude.texi | 72 ++++++++++++++++++++++---------------------- 2 files changed, 43 insertions(+), 44 deletions(-) diff --git a/src/avrdude.1 b/src/avrdude.1 index 0287a21b..ffc3d51d 100644 --- a/src/avrdude.1 +++ b/src/avrdude.1 @@ -987,10 +987,8 @@ Show a short help message and exit .Ss Terminal mode In this mode, .Nm -only initializes communication with the MCU, and then awaits user -commands on standard input. Commands and parameters may be -abbreviated to the shortest unambiguous form. Terminal mode provides -a command history using +only initializes communication with the MCU, and then awaits user commands +on standard input. Terminal mode provides a command history using .Xr readline 3 , so previously entered command lines can be recalled and edited. .Pp @@ -1441,14 +1439,11 @@ is provided), or display the quell level. 1 is used to suppress progress reports The initial quell level is controlled by the number of .Fl q options given on the commandline. -.It Ar \&? .It Ar help Give a short on-line summary of the available commands. .It Ar quit Leave terminal mode and thus .Nm avrdude . -.It Ar q -Can be used as an alias for quit. .It Ar ! Run the shell in a subshell, e.g., !ls *.hex. Subshell commands take the rest of the line as their command. For security reasons, they must @@ -1463,7 +1458,11 @@ file. Place comments onto the terminal line (useful for scripts). .El .Pp -The terminal commands below may only be implemented on some specific programmers, and may therefore not be available in the help menu. +d, r, w, q and ? abbreviate dump, read, write, quit and help. Other than +that any unique abbreviation of a command works, too. cmd -? gives more +details about a command cmd. +.Pp +The terminal commands below may only be implemented on some specific programmers: .Bl -tag -offset indent -width indent .It Ar pgerase memory addr Erase one page of the memory specified. diff --git a/src/doc/avrdude.texi b/src/doc/avrdude.texi index 847a2928..83076b5d 100644 --- a/src/doc/avrdude.texi +++ b/src/doc/avrdude.texi @@ -2303,16 +2303,15 @@ Valid commands: verbose : display or set -v verbosity level quell : display or set -q quell level for progress bars help : show help message - ? : same as help quit : synchronise flash/EEPROM cache with device and quit - q : abbreviation for quit -For more details about a terminal command cmd type cmd -? - -Other: - !@var{line} : run the shell @var{line} in a subshell, eg, !ls *.hex + ! : run the shell in a subshell, eg, !ls *.hex # ... : ignore rest of line (eg, used as comments in scripts) +d, r, w, q and ? abbreviate dump, read, write, quit and help. +Other than that any unique abbreviation of a command works, too. +cmd -? gives more details about a command cmd. + Note that not all programmer derivatives support all commands. Flash and EEPROM type memories are normally read and written using a cache via paged read and write access; the cache is synchronised on quit or flush commands. @@ -2582,14 +2581,14 @@ Avrdude done. Thank you. @chapter Terminal Mode Operation @cindex Terminal mode operation -AVRDUDE has an interactive mode called @var{terminal mode} that is -enabled by the @option{-t} option. This mode allows one to enter -interactive commands to display and modify the various device memories, -perform a chip erase, display the device signature bytes and part -parameters, and to send raw programming commands. Commands and -parameters may be abbreviated to their shortest unambiguous form. -Terminal mode also supports a command history so that previously entered -commands can be recalled and edited. +AVRDUDE has an interactive mode called @var{terminal mode} that is enabled +by the @option{-t} option. In this mode, AVRDUDE only initializes +communication with the MCU, and then awaits user commands on standard +input. These commands allow, for example, to display and modify the +various device memories, perform a chip erase, display the device +signature bytes and part parameters, and to send raw programming commands. +Terminal mode provides a command history using readline(3), so previously +entered command lines can be recalled and edited. @menu * Terminal Mode Commands:: @@ -2600,16 +2599,12 @@ commands can be recalled and edited. @section Terminal Mode Commands @cindex Terminal mode commands -In this mode, AVRDUDE only initializes communication with the MCU, and then -awaits user commands on standard input. Commands and parameters may be -abbreviated to the shortest unambiguous form. Terminal mode provides a -command history using readline(3), so previously entered command lines can be -recalled and edited. - -The @var{addr} and @var{len} parameters of the dump, read, disasm, write, -save and erase commands can be negative with the same syntax as substring -computations in perl or python. The table below defines the effective -memory interval [@var{start}, @var{end}], given the memory size @var{sz}: +The @var{addr} and @var{len} parameters of the @code{dump}, @code{read}, +@code{disasm}, @code{write}, @code{save} and @code{erase} commands +discribe a memory interval. They can be negative with the same syntax as +substring computations in perl or python. The table below defines the +effective memory interval [@var{start}, @var{end}], given the memory size +@var{sz}: @multitable {0/positive}{negative}{[@var{sz}+@var{addr}, @var{sz}+@var{addr}+@var{len}-1]}{End is |@var{len}| bytes below mem size @var{sz}} @headitem @code{@var{addr}} @@ -3185,27 +3180,22 @@ and @code{-v} to only print the variants table. @cindex @code{verbose} @var{[level]} Change (when @var{level} is provided), or display the verbosity level. -The initial verbosity level is controlled by the number of @code{-v} options -given on the command line. +The initial verbosity level is the number of @code{-v} options on the command line. @item quell @var{[level]} @cindex @code{quell} @var{[level]} -Change (when @var{level} is provided), or display the quell -level. 1 is used to suppress progress reports. 2 or higher yields -progressively quieter operations. The initial quell level is controlled -by the number of @code{-q} options given on the command line. +Change (when @var{level} is provided), or display the quell level. 1 is +used to suppress progress reports. 2 or higher yields progressively +quieter operations. The initial quell level is the number of @code{-q} +options on the command line. -@item ? -@itemx help +@item help Give a short on-line summary of the available commands. @item quit @cindex @code{quit} Leave terminal mode and thus AVRDUDE. -@item q -Can be used as an alias for @code{quit}. - @item !@var{line} @cindex @code{!} (subshell) Run the shell @var{line} in a subshell, e.g., @code{!ls *.hex}. Subshell @@ -3219,6 +3209,16 @@ Place comments onto the terminal line (useful for scripts). @end table +@noindent +@cindex @code{d} (dump) +@cindex @code{r} (read) +@cindex @code{w} (write) +@cindex @code{q} (quit) +@cindex @code{?} (help) +@code{d}, @code{r}, @code{w}, @code{q} and @code{?} abbreviate @code{dump}, @code{read}, +@code{write}, @code{quit} and @code{help}. Other than that any unique abbreviation of a command +works, too. @code{@var{cmd} -?} gives more details about a command @code{@var{cmd}}. + @noindent In addition, the following commands are supported on some programmers: @@ -3264,7 +3264,7 @@ selected by the optional parameter @var{channel} (either @cindex @code{fosc} @var{freq}[@code{M}|@code{k}] Set the programming oscillator to @var{freq} Hz. An optional trailing letter @code{M} -multiplies by 1E6, a trailing letter @code{k} by 1E3. +multiplies by 1,000,000, a trailing letter @code{k} by 1000. @item fosc off @cindex @code{fosc off}