More than two years after the previous release (5.11.1), AVRDUDE 6.0
finally made it to go public.
I'd like to thank everyone who has been involved into that release,
both active developers with SVN access as well as numerous users who
contributed bugfixes, improvements and suggestions.
The primary reason for the major version number bump was a changed
syntax of the configuration file (programmer types are now strings
rather than keywords), but that version number change has certainly
also "raised the bar" about many other things that should have been
done before releasing it. Among those are:
- direct reading of ELF files (provided libelf with its header files is around when ./configure runs)
- keep track of input file contents; when programming just a bootloader only, nothing else but the bootloader area is touched
- config file can refer to a "parent" device; this dramatically
simplifies the config file as only those things that have been
changed compared to the parent must be specified anew
As an experiment, I'm trying to provide an "official" Win32 binary
release for the first time. It has been compiled using a MinGW32
cross-compilation environment on my FreeBSD host system. If this
turns out to be a complete failure, please tell me, so I can stop this
experiment, and leave Windows binaries to those who know more about
the matter than me. If it works, you might want to tell me
nevertheless, so I might continue that service in future.
Here are the complete release notes for 6.0 (from the NEWS file):
* Major changes compared to the previous version: - Programmer types in configuration file are no longer keywords but specified as string. So you need to change 'type = XYZ;' to 'type = "XYZ";' in own config files. (internal: The parser does not need to know all programmer types now, new programmers will update only the table in pgm_type.c.) - The erase cycle counter (formerly options -y / -Y) has been removed. - Specifying a -U option without a memory type (short form of option argument list) now defaults to "application" memory for Xmega devices, and "flash" for everything else. This ensures the Xmega bootloader is not accidentally touched. - For programmers that support it, the default erase method is a page erase now, rather than a chip erase (Xmega only). - Keep track of input file contents Memory segments are being tracked to remember whether they've been actually read from a file. Only segments that came from a file are being programmed into the device, or considered for verification. This drastically improves handling speed for sparse files (e.g. files that have a second bootloader segment), and it ensures the device contents is actually compared for everything mentioned in the file (even in case the file has large 0xFF blocks). - The -U option now accepts ELF files as input files, and extracts the appropriate section contents that matches the requested memory region. To enable this feature, the host system used for the compilation must have a libelf around, including the respective header files (i.e., package "libelf-devel" on many Linux systems). - Programmers and parts lists They are now sorted at output with '-c ?'/'-p ?'. (patch #7671: Sorting programmers and parts lists for console output) Programmers and parts lists in documentation generated from lists mentioned above. (patch #7687: Autogenerating programmers and parts lists for docs) Output list of programmer types with '-c ?type', add list to documentation - Configuration files now accepts parent parts/programmers, parts starting with '.' (eg. .xmega) are not included in output parts list and can be used as abstract parents (bug #34302: Feature request : device configuration with parent classes) (patch #7688: Implement parent programmers feature) - Additional config files which are read after default can be specified on command line using '-C +filename' (patch #7699 Read additional config files) - "Safemode" can now be turned off by default from within a configuration file (like ~/.avrduderc). - The new option -l logfile allows to redirect diagnostic messages to a logfile rather than stderr. Useful to record debugging traces, in particular in environments which do not offer shell-style redirection functionality for standard streams. - When leaving debugWIRE mode, immediately retry with ISP rather than bailing out completely. - The USBasp programmer implementation now supports detailed traces with -vvv, and device communication traces with -vvvv. - The "verbose" terminal mode command allows to query or modify the verbosity level. * New devices supported: - ATmega48P (patch #7629 add support for atmega48p) - AT90PWM316 (bug #21797: AT90PWM316: New part description) - ATxmega16D4, ATxmega32D4, ATxmega64D4, ATxmega128D4 - ATmega256RFR2, ATmega128RFR2, ATmega64RFR2, ATmega2564RFR2, ATmega1284RFR2, ATmega644RFR2 - ATtiny1634 - ATxmega128A1U, ATxmega128A3U, ATxmega128A4U, ATxmega128B1, ATxmega128B3, ATxmega128C3, ATxmega128D3, ATxmega16A4U, ATxmega16C4, ATxmega192A3U, ATxmega192C3, ATxmega192D3, ATxmega256A3BU, ATxmega256A3U, ATxmega256C3, ATxmega256D3, ATxmega32A4U, ATxmega32C4, ATxmega384C3, ATxmega384D3, ATxmega64A1U, ATxmega64A3U, ATxmega64A4U, ATxmega64B1, ATxmega64B3, ATxmega64C3, ATxmega64D3 - ATtiny43U - ATmega406 - ATxmega8E5, ATxmega16E5, ATxmega32E5 - ATtiny20, ATtiny40 * New programmers supported: - linuxgpio + any (embedded) Linux system with 4 GPIOs available can be used as a programmer with little or no additional hardware. - avrftdi + o-link (patch #7672 adding support for O-Link (FTDI based JTAG) as programmer) + 4232h (patch #7715 FT4232H support) - TPI support + openmoko (bug #37977 Support for Openmoko Debug Board) - usbasp + nibobee (previously specified as '-c usbasp -P nibobee) + usbasp-clone (same as usbasp but ignores vendor and product string, checks only vid/pid) - ftdi_syncbb (new type for synchronous bitbanging with ft232r/ft245r) + ft245r (FT245R Synchronous BitBang, miso = D1, sck = D0, mosi = D2, reset = D4) + ft232r (FT232R Synchronous BitBang, miso = RxD, sck = RTS, mosi = TxD, reset = DTR) + bwmega (BitWizard ftdi_atmega builtin programmer, miso = DSR, sck = DCD, mosi = CTS, reset = RI) + arduino-ft232r (Arduino: FT232R connected to ISP, miso = CTS X3(1), sck = DSR X3(2), mosi = DCD X3(3), reset = RI X3(4)) + diecimila (alias for arduino-ft232r) - pickit2 - Atmel JTAGICE3 - buspirate_bb (TPI programming using the BusPirate in bitbang mode) * Bugfixes - bug #34027: avrdude AT90S1200 Problem - bug #34518: loading intel hex files > 64k using record-type 4 - patch #7667: Minor memory handling fixes - patch #7680: Fixing timeout problem in ser_recv in ser_win32.c - patch #7693: Fix config file atmel URLs (+ URLs in avrdude.texi and avrpart.h) - bug #21663: AT90PWM efuse incorrect, bug #30438: efuse bits written as 0 on at90pwmxx parts - bug #35261: avrftdi uses wrong interface in avrftdi_paged_(write|load) - patch #7437 modifications to Bus Pirate module - patch #7686 Updating buspirate ascii mode to current firmware, use AUX as clock generator, and setting of serial receive timeout - bug #34768 Proposition: Change the name of the AVR32 devices - patch #7718: Merge global data of avrftdi in a private data structure - bug #35208: avrdude 5.11 on freebsd 8.2-STABLE does not reset Arduino Uno properly - bug #34518: loading intel hex files > 64k using record-type 4 (Extended Linear Address Record) - bug #34027: avrdude AT90S1200 Problem - bug #30451: Accessing some Xmega memory sections gives not supported error - bug #28744: Can't load bootloader to xmega128a1 - bug #29019: pagel/bs2 warning when uploading using stk500 to xmega - bug #30756: When setting SUT to 64ms on XMEGA, avrdude doesn't read device signature - bug #37265: wrong page sizes for XMega64xx in avrdude.conf - bug #37942: Latest SVN can't program in dragon_jtag mode - patch #7876 JTAGICE mkII fails to connect to attiny if debugwire is enabled AND target has a very slow clock - bug #39893: Verification failure with AVRISPmkII and Xmega - bug #38713: Compilation of the documentation breaks with texinfo-5 - bug #38023: avrdude doesn't return an error code when attempting to upload an invalid Intel HEX file - bug #39794: warnings when building avrdude 6.0rc1 under CentOS 6.4 - bug #35800: Compilation error on certain systems if parport is disabled - bug #38307: Can't write usersig of an xmega256a3 - bug #38580: Current svn head, xmega and fuses, all fuses tied to fuse0 - bug #39691: Buffer overrun when reading EEPROM byte with JTAGICE3 - bug #38951: AVR109 use byte offset instead of word offset - patch #7769: Write flash fails for AVR910 programmers - bug #38732: Support for ATtiny1634 - bug #36901: flashing Atmega32U4 EEPROM produces garbage on chip - bug #28344: chip_erase_delay too short for ATmega324P, 644, 644P, and 1284P - bug #34277: avrdude reads wrong byte order if using avr911 (aka butterfly) - bug #35456: The progress bar for STK500V2 programmer is "wrong". - patch #5708: avrdude should make 10 synchronization attempts instead of just one - patch #7606: ATtiny43u support - patch #7657: Add ATmega406 support for avrdude using DRAGON + JTAG - bug #35474: Feature request: print fuse values in safemode output. - patch #7710: usb_libusb: Check VID/PID before opening device - [no-id]: Fix SCK period adjustment for STK500v2 - bug #40040: Support for ATtiny20 and ATtiny40 * Internals: - Restructuring and compacting programmer definition part of grammar for config file. - Cleanup of parser code, removing unused definitions/ functions. Using yylex_destroy if available. - Fixed some more memory leaks, added cleanup code at program exit (to minimize the number of non-freed memory blocks reported by valgrind) - Fixed some findings reported by cppcheck.