Commit Graph

392 Commits

Author SHA1 Message Date
Stefan Rueger d9cb9772d7 Fix verbosity level parsing in term.c 2022-07-12 12:30:29 +01:00
Stefan Rueger 63fb79accb Consolidate more error messages in term.c 2022-07-12 12:24:30 +01:00
Stefan Rueger f871a4dc1e Adapt capitalisation of comments in term.c to existing style 2022-07-12 12:02:43 +01:00
Stefan Rueger 7c766ef9bd Refine type detection in terminal write
The code no longer accepts valid mantissa-only doubles that are integer
rejects, eg, 078 or ULL overflows. These are most likely input errors by
the user: 8 is not an octal digit, they might have typed 17 hex digits,
not 16. It's just too hard to explain that 0xffffFFFFffffFFFFf writes
0x4430000000000000, which is the correct double representation of the
valid 17-digit hex mantissa that strtod() is perfectly happy to accept.
2022-07-12 12:01:14 +01:00
Stefan Rueger 704d253636 Remove comparisons between signed and unsigned integers in term.c 2022-07-12 11:59:42 +01:00
Stefan Rueger 8140c9c90b Consolidate error messages in term.c 2022-07-12 11:58:51 +01:00
Stefan Rueger 56113f6d8a Remove echo of tokenised terminal command 2022-07-12 11:51:04 +01:00
Stefan Rueger c5f522342d Improve terminal help message 2022-07-12 11:50:23 +01:00
Stefan Rueger 92425af0cc Improve terminal dump usage message 2022-07-12 11:47:33 +01:00
Stefan Rueger 602e9bb80c Change size for memory type variable in terminal read 2022-07-12 11:44:20 +01:00
Stefan Rueger 7205bbae80 Enhance terminal read with new mode: read <memory> <addr> 2022-07-12 11:43:45 +01:00
Stefan Rueger aa09bcf900 Ensure terminal writes little endian numbers 2022-07-12 11:42:59 +01:00
Stefan Rueger ddffabe86a Improve terminal write usage message 2022-07-12 11:40:40 +01:00
Stefan Rueger 0b2f38c67d Allow optional comma separators for data items in terminal write 2022-07-12 11:39:52 +01:00
Stefan Rueger 5c4cfa642a Parse terminal writes of string and character constants in C-style 2022-07-12 11:39:02 +01:00
Stefan Rueger 9fe6820236 Add double type for terminal write in anticipation of future avr-libc extension 2022-07-12 11:36:57 +01:00
Stefan Rueger feda75b60a Remove unnecessary bool is_float in terminal write 2022-07-12 11:35:27 +01:00
Stefan Rueger 51355d04fb Remodel logic of the size that integer items occupy in terminal write
Integers can be hexadecimal, decimal or octal. An optional case-insensitive
suffix specifies their size: HH: 8 bit, H/S: 16 bit, L: 32 bit, LL: 64 bit

An optional U suffix makes a number unsigned. Ordinary 0x hex numbers are
always treated as unsigned. +0x or -0x hex numbers are treated as signed
unless they have a U suffix. Unsigned integers cannot be larger than 2^64-1.

If n is an unsigned integer then -n is also a valid unsigned integer as in C.

Signed integers must fall into the [-2^63, 2^63-1] range or a correspondingly
smaller range when a suffix specifies a smaller type. Out of range signed
numbers trigger a warning.

Ordinary 0x hex numbers with n hex digits (counting leading zeros) use
the smallest size of 1, 2, 4 and 8 bytes that can accommodate any n-digit hex
number. If a suffix specifies a size explicitly the corresponding number of
least significant bytes are written. Otherwise, signed and unsigned integers
alike occupy the smallest of 1, 2, 4, or 8 bytes needed to accommodate them
in their respective representation.
2022-07-12 11:32:38 +01:00
Stefan Rueger 62d3eebd56 Fix 64-bit integer terminal write where high bit set
Using strtoll() can only return numbers in the range [-2^63, 2^63-1]. This
means that 0xffffFFFFffffFFFF (2^64-1) will be out of range and is written as
max LL. Actually, every 64-bit number with high-bit set will wrongly be
written as max LL.

This commit uses strtoull() instead to fix this, and checks for unsiged out-
of-range error. strtoull() also has the neat benefit that input with a minus
sign is treated like C unsigned numbers, ie, -u is also a valid unsigned
number if only u is one. In case the input is meant to be treated as signed,
it is therefore still OK to use strtoull() in the first instance only that in
this case a second check against the range of the signed domain is necessary.
2022-07-12 11:19:47 +01:00
Stefan Rueger 9afa56381e Remove unused component is_signed in terminal write 2022-07-12 11:19:05 +01:00
Stefan Rueger ff43e0544d Correct a parse message in terminal write 2022-07-12 11:18:15 +01:00
Stefan Rueger 177834ae7c Ensure enough memory is allocated for buf in terminal write 2022-07-12 11:16:16 +01:00
Stefan Rueger d3ad078577 Ensure terminal write fill mode ... always fills with last data item 2022-07-12 11:15:30 +01:00
Stefan Rueger 39a00bc71e Ensure +0x...f does not strip suffix f in terminal write 2022-07-12 11:14:41 +01:00
Stefan Rueger 360d7c502b Make suffix fully case insensitive (allow Hh, Ll, ...) in terminal write 2022-07-12 11:13:46 +01:00
Stefan Rueger d9450058c8 Cache strlen(argv[i]) in term.c cmd_write() and prevent negative array index 2022-07-12 11:12:20 +01:00
Jan Egil Ruud 69ee5da613 Improve error handling for devices that does not support HVUPDI. 2022-07-12 12:01:17 +02:00
Jan Egil Ruud 2478c18745 Do not let the hvupdi extended option take any configuration values. The hvupdi type is implied by the part configuration. 2022-07-11 15:26:41 +02:00
Jan Egil Ruud 173b4f9d0a Clean up and simplify hvupdi handling, and set default hvupdi_variant to -1. 2022-07-11 14:07:45 +02:00
Stefan Rueger ff8f519a34 Fix PICKit2 ATmega2560 flash paged flash read
The paged read in pickit2.c has two errors:
  - It drops load extended address commands unless a paged read happens at a
    64k byte boundary; this is invalid when reading files with holes
  - It wrongly assumed that flash memory is byte addressed

The fix is to carry out a load extended address command, if needed, at the
beginning of each paged flash read with the correct word address. Although the
pickit2_paged_load() has independent parameters page_size, addr and n_bytes,
AVRDUDE only ever calls paged read/write functions with page_size and n_bytes
both set to mem->page_size and addr aligned with a page boundary. Therefore, it
is sufficient to set the load extended address at the beginning of each page
read.
2022-07-10 23:41:44 +01:00
Stefan Rueger 215ea1af5c Merge branch 'partdesc' of github.com:stefanrueger/avrdude into partdesc 2022-07-07 18:34:26 +01:00
Stefan Rueger 9e2cea3ada Implement developer options -p */[*cdosSrwt] for part descriptions 2022-07-07 18:32:19 +01:00
Jan Egil Ruud 91310e6f50 Move hvupdi_support list to a new prog_parm_updi group, and initialize the list. 2022-07-07 12:23:05 +02:00
Ruud, Jan Egil 9e5ea25b9e Add HVUPDI_SUPPORT list for programmers. 2022-07-05 14:14:37 +02:00
Stefan Rueger 64ee4858fd Update 2nd debug message in avr.c with correct function name 2022-07-05 01:00:45 +01:00
Stefan Rueger d3b22fa3c6 Update debug message in avr.c with correct function name 2022-07-05 00:57:40 +01:00
Stefan Rueger 00ea21597e
Merge pull request #1001 from MCUdude/add-missing-bits-and-pieces
Add missing delays in avrdude.conf
2022-07-05 00:05:32 +01:00
Stefan Rueger 2b6ee8f4d1 Adapt whitespace to existing style in avrftdi.c 2022-07-04 23:54:02 +01:00
Stefan Rueger 7aad03cbcd Fix paged read for ATmega2560 et al for ft245r.c 2022-07-04 23:11:32 +01:00
Stefan Rueger a721e485cb Refactor paged read/write routines in ft245r.c 2022-07-04 23:04:36 +01:00
Stefan Rueger 237cb63211 Steamline avrftdi support for ATmega2560 et al 2022-07-04 12:30:37 +01:00
MCUdude d2bb964fc7 Attempt to fix EEPROM write issue #1009 2022-07-04 12:30:37 +01:00
Joerg Wunsch f22b81c00e Fix a number of logic errors in the previous commits
RSP3_FAIL_CRC_FAILURE is 0x43 rather than 0x47.

jtag3_errcode() must only be applied to a reason code, not
to any general status code.
2022-07-04 12:30:37 +01:00
Joerg Wunsch 8953967fc3 Replace internal knowledge in jtag3.c by a public API
In certain situations (CRC failure, device locked), that JTAG3
read functions need to return an indication to the caller that
it is OK to proceed, and allow erasing the device anyway.

Historically, the JTAG3 code passed the respective protocol
errors directly (and unexplained) up to the caller, leaving
the decision to the caller how to handle the situation.

Replace that by a more common return value API. New code should
prefer this API instead of any hardcoded return values.
2022-07-04 12:30:37 +01:00
Stefan Rueger ef785a617a Treat x bits in .conf SPI commands as 0 2022-07-04 12:30:37 +01:00
prchal 134509cc6f adding support for all Linux baud rates v.2
If optiboot can work at higher bauds, why not avrdude.
Versoin 2 of #985.
Linux uses the old-style bitmapped version of the Bxxxx macros.
2022-07-04 12:30:37 +01:00
MCUdude 963a1e54af Fix JTAG transaction close issue
Fixes issue #366
2022-07-04 12:30:37 +01:00
MCUdude b167e88422 Reduce programmer description string length
to less than 80 characters. #941 related
2022-07-04 12:30:37 +01:00
Stefan Rueger 3893a21164 Fix avrftdi support for ATmega2560 et al (load extended address) 2022-07-04 12:30:25 +01:00
MCUdude 6473a6d71a Add avrdude_message to verbose mode 2022-07-01 07:36:07 +02:00
MCUdude 30c1b31b8d Send 12V pulse to HV_UPDI_VARIANT_2 targets as well 2022-06-29 17:12:57 +02:00
Ruud, Jan Egil 65763b5700 Correct hvupdi_variant for AVR DD devices. 2022-06-29 17:12:57 +02:00
Ruud, Jan Egil 39008ac2c1 Add UPDI HV type to device description. 2022-06-29 17:12:57 +02:00
MCUdude 577856cf15 Use HV UPDI constants rather than arbitrary numbers 2022-06-29 17:12:57 +02:00
MCUdude 50220289bb Add high-voltage UPDI info to docs 2022-06-29 17:12:57 +02:00
MCUdude e068341716 Make sure "-x hvupdi" is only valid for Pickit4 and Powerdebugger 2022-06-29 17:12:57 +02:00
MCUdude f67c35744e add support for "-x hvupdi" that triggers HV UPDI 2022-06-29 17:12:57 +02:00
MCUdude ba98e48880 add "hvupdi_variant" property to avrdude.conf 2022-06-29 17:12:52 +02:00
Stefan Rueger 0240b361f5
Merge branch 'avrdudes:main' into partdesc 2022-06-28 22:53:22 +01:00
Stefan Rueger a21f3d20af
Merge branch 'avrdudes:main' into issue942 2022-06-28 22:38:47 +01:00
Jörg Wunsch 8cd6f357b1
Merge pull request #1013 from MCUdude/jtag3-eeprom-fix
JTAG3 UPDI EEPROM fix
2022-06-28 22:36:19 +02:00
Jörg Wunsch 7ec51a5185
Merge pull request #996 from dl8dtl/jtag3_retcode
Replace internal knowledge in jtag3.c by a public API

Supersedes #982
2022-06-28 22:21:50 +02:00
Stefan Rueger 09c168a186
Merge branch 'avrdudes:main' into issue942 2022-06-28 20:56:49 +01:00
Stefan Rueger d8a30aa8c4
Merge branch 'avrdudes:main' into partdesc 2022-06-28 20:44:34 +01:00
Stefan Rueger 3bd75e74c6 Move developer options into own source file and expand part description -p \*
-p \*/c  check address bits in SPI commands
  -p \*/d  description of core part features
  -p \*/o  opcodes for SPI programming parts and memories
  -p \*/s  show avrdude.conf entries of parts
  -p \*/ss show full avrdude.conf entry as tab separated table
  -p \*/w  wd_... constants for ISP parts
  -p \*/\* all of the above except -p \*/s
  -p \*    same as -p\*/\*
2022-06-28 20:34:31 +01:00
Jörg Wunsch 6d1c83e182
Merge pull request #993 from prchal/patch-1
adding support for all Linux baud rates
2022-06-26 22:59:49 +02:00
Jörg Wunsch 55dddc57cc
Merge pull request #979 from MCUdude/dragon-jtag-fix
Dragon JTAG fix: restart firmware after programming
2022-06-26 22:53:32 +02:00
Stefan Rueger 0a7f2645c9 Merge branch 'partdesc' of github.com:stefanrueger/avrdude into partdesc 2022-06-26 15:15:37 +01:00
Stefan Rueger 317cc6d492 Add part type to -p \* .desc output 2022-06-26 15:10:19 +01:00
Stefan Rueger 40425ffac4
Merge branch 'avrdudes:main' into partdesc 2022-06-26 14:49:07 +01:00
Hans 8159c46013
Merge branch 'avrdudes:main' into hv-updi 2022-06-25 22:47:27 +02:00
MCUdude 89b0aa72e0 Attempt to fix EEPROM write issue #1009 2022-06-25 11:39:16 +02:00
Joerg Wunsch ae0e3e2f8e Fix a number of logic errors in the previous commits
RSP3_FAIL_CRC_FAILURE is 0x43 rather than 0x47.

jtag3_errcode() must only be applied to a reason code, not
to any general status code.
2022-06-22 23:33:53 +02:00
MCUdude 692c13ed98 Add missing chip erase delay for ATmega48/88/168/328PB 2022-06-19 19:40:31 +02:00
MCUdude aa211f7580 Add missing efuse write delay for ATmega169/A/P/PA and ATmega328P 2022-06-19 19:23:34 +02:00
MCUdude 3b0a2abc20 Reduce programmer description string length
to less than 80 characters. #941 related
2022-06-19 10:53:07 +02:00
Joerg Wunsch 3082630430 Replace internal knowledge in jtag3.c by a public API
In certain situations (CRC failure, device locked), that JTAG3
read functions need to return an indication to the caller that
it is OK to proceed, and allow erasing the device anyway.

Historically, the JTAG3 code passed the respective protocol
errors directly (and unexplained) up to the caller, leaving
the decision to the caller how to handle the situation.

Replace that by a more common return value API. New code should
prefer this API instead of any hardcoded return values.
2022-06-15 23:32:22 +02:00
Marius Greuel 3148b31e01
Merge pull request #972 from earies/cmake-libdir-fix
Fix src/CMakeLists.txt to honor CMAKE_INSTALL_LIBDIR
2022-06-08 21:53:22 +02:00
Marius Greuel fc9d640f0b
Merge pull request #945 from mariusgreuel/pr-micronucleus-macos-usb-issue
Fix micronucleus bootloader to check for unresponsive USB devices
2022-06-08 21:46:40 +02:00
prchal bd8c17b35f
adding support for all Linux baud rates v.2
If optiboot can work at higher bauds, why not avrdude.
Versoin 2 of #985.
Linux uses the old-style bitmapped version of the Bxxxx macros.
2022-06-07 11:50:03 +02:00
MCUdude bdb4128de3 Fix JTAG transaction close issue
Fixes issue #366
2022-05-30 19:22:20 +02:00
Stefan Rueger 952ad72fb9 Add -p \* to summarise properties of parts in conf 2022-05-24 16:56:11 +01:00
Ebben Aries 3b0d7e5d5d
Fix src/CMakeLists.txt to honor CMAKE_INSTALL_LIBDIR 2022-05-21 14:25:27 -06:00
Marius Greuel 053c2dcdd3 CMake: Include GCC specific options also for MSYS2 2022-05-11 20:57:14 +02:00
Marius Greuel 8b61c9dd8f CMake: Move MSVC compatibility shim into library 2022-05-11 20:56:05 +02:00
Subhaditya Nath b9a012cebb Fix .Dd macro in manpage
The correct format for .Dd according to mdoc(7) is -

	.Dd month day, year
2022-05-08 20:35:32 +05:30
Joerg Wunsch 9bc28d410e Post-7.0 changes
Update version date in configure.ac.
Update template in NEWS
2022-05-07 22:57:49 +02:00
Joerg Wunsch a2e456ca8a v7.0 release preparation 2022-05-07 22:20:31 +02:00
Joerg Wunsch 43ddea9102 Calibration memory of ATtiny43U is only 1 byte
Closes issue #921.
2022-05-05 22:58:45 +02:00
Marius Greuel 01a9e42d7d Fix typo in micronucleus message 2022-05-05 22:08:46 +02:00
Marius Greuel c64f2030a1 Improve micronucleus bootloader user experience for unresponsive USB devices 2022-05-05 21:42:27 +02:00
Marius Greuel 3bdf138721 Fix micronucleus bootloader to check for unresponsive USB devices 2022-05-05 20:45:47 +02:00
Joerg Wunsch a4c9fcdcd7 More fixes for PR #915 2022-05-02 22:51:22 +02:00
Jörg Wunsch ca16fc2ce6
Merge pull request #930 from cederom/cederom-programmer-avrftdi-ktlink
Added KT-LINK FT2232H interface with IO switching and voltage buffers.
2022-05-01 22:29:46 +02:00
Jörg Wunsch d7c59ca2f9
Merge pull request #931 from MCUdude/linuxspi-baud-fix
Fix linuxspi baud to clock period calculation
2022-05-01 22:26:23 +02:00
Joerg Wunsch 4bcd0eaa1d Fix a number of mistakes in avrdude.conf.in
Stefan Rueger found a lot of mistakes in this file.

Closes #915
2022-05-01 21:55:50 +02:00
Stefan Rueger 033b2ed796 Treat x bits in .conf SPI commands as 0 2022-04-29 00:37:28 +01:00
Stefan Rueger 580c37fbfe Describe -A in the man and .texi documentation 2022-04-29 00:14:45 +01:00
Stefan Rueger f47ec634f8 On verify always verify full input file 2022-04-28 17:53:10 +01:00
Stefan Rueger 52734bafc6 Add option -A to separately disable trailing-0xff removal 2022-04-28 17:29:06 +01:00