From 1c4eab2fef903cc4fae3f5ae16e025054e36ccf8 Mon Sep 17 00:00:00 2001 From: Marius Greuel Date: Sat, 18 Dec 2021 23:59:38 +0100 Subject: [PATCH] Move source files to src folder --- .cvsignore | 33 - BUILD-FROM-SVN | 13 - ChangeLog | 148 - ChangeLog-2001 | 598 - ChangeLog-2002 | 237 - ChangeLog-2003 | 1095 -- ChangeLog-2004-2006 | 1644 -- ChangeLog-2007 | 364 - ChangeLog-2008 | 185 - ChangeLog-2009 | 411 - ChangeLog-2010 | 354 - ChangeLog-2011 | 489 - ChangeLog-2012 | 729 - ChangeLog-2013 | 618 - ChangeLog-2014 | 697 - ChangeLog-2015 | 54 - ChangeLog-2016 | 95 - ChangeLog-2017 | 56 - README | 46 - clean.bat | 66 - msvc/generated/avrdude.conf | 16244 ---------------- src/COPYING | 674 + Makefile.am => src/Makefile.am | 0 arduino.c => src/arduino.c | 0 arduino.h => src/arduino.h | 0 avr.c => src/avr.c | 0 avr910.c => src/avr910.c | 0 avr910.h => src/avr910.h | 0 avrdude.1 => src/avrdude.1 | 0 avrdude.conf.in => src/avrdude.conf.in | 0 avrdude.h => src/avrdude.h | 0 avrdude.sln => src/avrdude.sln | 14 +- avrdude.spec.in => src/avrdude.spec.in | 0 avrdude.vcxproj => src/avrdude.vcxproj | 36 +- .../avrdude.vcxproj.filters | 0 avrftdi.c => src/avrftdi.c | 0 avrftdi.h => src/avrftdi.h | 0 avrftdi_private.h => src/avrftdi_private.h | 0 avrftdi_tpi.c => src/avrftdi_tpi.c | 0 avrftdi_tpi.h => src/avrftdi_tpi.h | 0 avrpart.c => src/avrpart.c | 0 bitbang.c => src/bitbang.c | 0 bitbang.h => src/bitbang.h | 0 bootstrap => src/bootstrap | 0 buspirate.c => src/buspirate.c | 0 buspirate.h => src/buspirate.h | 0 butterfly.c => src/butterfly.c | 0 butterfly.h => src/butterfly.h | 0 config.c => src/config.c | 0 config.h => src/config.h | 0 config_gram.y => src/config_gram.y | 0 configure.ac => src/configure.ac | 2 +- confwin.c => src/confwin.c | 0 crc16.c => src/crc16.c | 0 crc16.h => src/crc16.h | 0 dfu.c => src/dfu.c | 0 dfu.h => src/dfu.h | 0 doc/.cvsignore => src/doc/.gitignore | 3 +- {doc => src/doc}/Makefile.am | 0 {doc => src/doc}/TODO | 0 {doc => src/doc}/avrdude.texi | 0 {doc => src/doc}/parts_comments.txt | 0 fileio.c => src/fileio.c | 0 flip1.c => src/flip1.c | 0 flip1.h => src/flip1.h | 0 flip2.c => src/flip2.c | 0 flip2.h => src/flip2.h | 0 freebsd_ppi.h => src/freebsd_ppi.h | 0 ft245r.c => src/ft245r.c | 0 ft245r.h => src/ft245r.h | 0 jtag3.c => src/jtag3.c | 0 jtag3.h => src/jtag3.h | 0 jtag3_private.h => src/jtag3_private.h | 0 jtagmkI.c => src/jtagmkI.c | 0 jtagmkI.h => src/jtagmkI.h | 0 jtagmkII.c => src/jtagmkII.c | 0 jtagmkII.h => src/jtagmkII.h | 0 jtagmkII_private.h => src/jtagmkII_private.h | 0 jtagmkI_private.h => src/jtagmkI_private.h | 0 lexer.l => src/lexer.l | 0 libavrdude.h => src/libavrdude.h | 0 linux_ppdev.h => src/linux_ppdev.h | 0 linuxgpio.c => src/linuxgpio.c | 0 linuxgpio.h => src/linuxgpio.h | 0 lists.c => src/lists.c | 0 main.c => src/main.c | 0 micronucleus.c => src/micronucleus.c | 0 micronucleus.h => src/micronucleus.h | 0 {msvc => src/msvc}/IntegerHandleMap.h | 0 {msvc => src/msvc}/ReaderWriterLock.h | 0 {msvc => src/msvc}/avrdude.rc | Bin {msvc => src/msvc}/generated/ac_cfg.h | 0 {msvc => src/msvc}/generated/config_gram.c | 0 {msvc => src/msvc}/generated/config_gram.h | 0 {msvc => src/msvc}/generated/lexer.c | 0 {msvc => src/msvc}/getopt.c | 0 {msvc => src/msvc}/getopt.h | 0 {msvc => src/msvc}/gettimeofday.c | 0 {msvc => src/msvc}/msvc_compat.h | 0 {msvc => src/msvc}/pthread.cpp | 0 {msvc => src/msvc}/pthread.h | 0 {msvc => src/msvc}/res/resource.rc2 | 0 {msvc => src/msvc}/res/version.rc2 | 0 {msvc => src/msvc}/resource.h | Bin {msvc => src/msvc}/semaphore.cpp | 0 {msvc => src/msvc}/semaphore.h | 0 {msvc => src/msvc}/sys/time.h | 0 {msvc => src/msvc}/unistd.cpp | 0 {msvc => src/msvc}/unistd.h | 0 {msvc => src/msvc}/usb_com_helper.cpp | 0 {msvc => src/msvc}/usb_com_helper.h | 0 {msvc => src/msvc}/usb_com_locator.h | 0 {msvc => src/msvc}/version.h | 0 my_ddk_hidsdi.h => src/my_ddk_hidsdi.h | 0 par.c => src/par.c | 0 par.h => src/par.h | 0 pgm.c => src/pgm.c | 0 pgm_type.c => src/pgm_type.c | 0 pickit2.c => src/pickit2.c | 0 pickit2.h => src/pickit2.h | 0 pindefs.c => src/pindefs.c | 0 ppi.c => src/ppi.c | 0 ppi.h => src/ppi.h | 0 ppiwin.c => src/ppiwin.c | 0 safemode.c => src/safemode.c | 0 ser_avrdoper.c => src/ser_avrdoper.c | 0 ser_posix.c => src/ser_posix.c | 0 ser_win32.c => src/ser_win32.c | 0 serbb.h => src/serbb.h | 0 serbb_posix.c => src/serbb_posix.c | 0 serbb_win32.c => src/serbb_win32.c | 0 solaris_ecpp.h => src/solaris_ecpp.h | 0 stk500.c => src/stk500.c | 0 stk500.h => src/stk500.h | 0 stk500_private.h => src/stk500_private.h | 0 stk500generic.c => src/stk500generic.c | 0 stk500generic.h => src/stk500generic.h | 0 stk500v2.c => src/stk500v2.c | 0 stk500v2.h => src/stk500v2.h | 0 stk500v2_private.h => src/stk500v2_private.h | 0 teensy.c => src/teensy.c | 0 teensy.h => src/teensy.h | 0 term.c => src/term.c | 0 term.h => src/term.h | 0 tpi.h => src/tpi.h | 0 update.c => src/update.c | 0 usb_hidapi.c => src/usb_hidapi.c | 0 usb_libusb.c => src/usb_libusb.c | 0 usbasp.c => src/usbasp.c | 0 usbasp.h => src/usbasp.h | 0 usbdevs.h => src/usbdevs.h | 0 usbtiny.c => src/usbtiny.c | 0 usbtiny.h => src/usbtiny.h | 0 windows/.cvsignore => src/windows/.gitignore | 1 - {windows => src/windows}/Makefile.am | 0 {windows => src/windows}/giveio.c | 0 {windows => src/windows}/giveio.sys | Bin {windows => src/windows}/install_giveio.bat | 0 {windows => src/windows}/loaddrv.c | 1 + {windows => src/windows}/loaddrv.h | 0 {windows => src/windows}/remove_giveio.bat | 0 {windows => src/windows}/status_giveio.bat | 0 wiring.c => src/wiring.c | 0 wiring.h => src/wiring.h | 0 164 files changed, 700 insertions(+), 24207 deletions(-) delete mode 100644 .cvsignore delete mode 100644 BUILD-FROM-SVN delete mode 100644 ChangeLog delete mode 100644 ChangeLog-2001 delete mode 100644 ChangeLog-2002 delete mode 100644 ChangeLog-2003 delete mode 100644 ChangeLog-2004-2006 delete mode 100644 ChangeLog-2007 delete mode 100644 ChangeLog-2008 delete mode 100644 ChangeLog-2009 delete mode 100644 ChangeLog-2010 delete mode 100644 ChangeLog-2011 delete mode 100644 ChangeLog-2012 delete mode 100644 ChangeLog-2013 delete mode 100644 ChangeLog-2014 delete mode 100644 ChangeLog-2015 delete mode 100644 ChangeLog-2016 delete mode 100644 ChangeLog-2017 delete mode 100644 README delete mode 100644 clean.bat delete mode 100644 msvc/generated/avrdude.conf create mode 100644 src/COPYING rename Makefile.am => src/Makefile.am (100%) rename arduino.c => src/arduino.c (100%) rename arduino.h => src/arduino.h (100%) rename avr.c => src/avr.c (100%) rename avr910.c => src/avr910.c (100%) rename avr910.h => src/avr910.h (100%) rename avrdude.1 => src/avrdude.1 (100%) rename avrdude.conf.in => src/avrdude.conf.in (100%) rename avrdude.h => src/avrdude.h (100%) rename avrdude.sln => src/avrdude.sln (85%) rename avrdude.spec.in => src/avrdude.spec.in (100%) rename avrdude.vcxproj => src/avrdude.vcxproj (92%) rename avrdude.vcxproj.filters => src/avrdude.vcxproj.filters (100%) rename avrftdi.c => src/avrftdi.c (100%) rename avrftdi.h => src/avrftdi.h (100%) rename avrftdi_private.h => src/avrftdi_private.h (100%) rename avrftdi_tpi.c => src/avrftdi_tpi.c (100%) rename avrftdi_tpi.h => src/avrftdi_tpi.h (100%) rename avrpart.c => src/avrpart.c (100%) rename bitbang.c => src/bitbang.c (100%) rename bitbang.h => src/bitbang.h (100%) rename bootstrap => src/bootstrap (100%) mode change 100755 => 100644 rename buspirate.c => src/buspirate.c (100%) rename buspirate.h => src/buspirate.h (100%) rename butterfly.c => src/butterfly.c (100%) rename butterfly.h => src/butterfly.h (100%) rename config.c => src/config.c (100%) rename config.h => src/config.h (100%) rename config_gram.y => src/config_gram.y (100%) rename configure.ac => src/configure.ac (99%) rename confwin.c => src/confwin.c (100%) rename crc16.c => src/crc16.c (100%) rename crc16.h => src/crc16.h (100%) rename dfu.c => src/dfu.c (100%) rename dfu.h => src/dfu.h (100%) rename doc/.cvsignore => src/doc/.gitignore (91%) rename {doc => src/doc}/Makefile.am (100%) rename {doc => src/doc}/TODO (100%) rename {doc => src/doc}/avrdude.texi (100%) rename {doc => src/doc}/parts_comments.txt (100%) rename fileio.c => src/fileio.c (100%) rename flip1.c => src/flip1.c (100%) rename flip1.h => src/flip1.h (100%) rename flip2.c => src/flip2.c (100%) rename flip2.h => src/flip2.h (100%) rename freebsd_ppi.h => src/freebsd_ppi.h (100%) rename ft245r.c => src/ft245r.c (100%) rename ft245r.h => src/ft245r.h (100%) rename jtag3.c => src/jtag3.c (100%) rename jtag3.h => src/jtag3.h (100%) rename jtag3_private.h => src/jtag3_private.h (100%) rename jtagmkI.c => src/jtagmkI.c (100%) rename jtagmkI.h => src/jtagmkI.h (100%) rename jtagmkII.c => src/jtagmkII.c (100%) rename jtagmkII.h => src/jtagmkII.h (100%) rename jtagmkII_private.h => src/jtagmkII_private.h (100%) rename jtagmkI_private.h => src/jtagmkI_private.h (100%) rename lexer.l => src/lexer.l (100%) rename libavrdude.h => src/libavrdude.h (100%) rename linux_ppdev.h => src/linux_ppdev.h (100%) rename linuxgpio.c => src/linuxgpio.c (100%) rename linuxgpio.h => src/linuxgpio.h (100%) rename lists.c => src/lists.c (100%) rename main.c => src/main.c (100%) rename micronucleus.c => src/micronucleus.c (100%) rename micronucleus.h => src/micronucleus.h (100%) rename {msvc => src/msvc}/IntegerHandleMap.h (100%) rename {msvc => src/msvc}/ReaderWriterLock.h (100%) rename {msvc => src/msvc}/avrdude.rc (100%) rename {msvc => src/msvc}/generated/ac_cfg.h (100%) rename {msvc => src/msvc}/generated/config_gram.c (100%) rename {msvc => src/msvc}/generated/config_gram.h (100%) rename {msvc => src/msvc}/generated/lexer.c (100%) rename {msvc => src/msvc}/getopt.c (100%) rename {msvc => src/msvc}/getopt.h (100%) rename {msvc => src/msvc}/gettimeofday.c (100%) rename {msvc => src/msvc}/msvc_compat.h (100%) rename {msvc => src/msvc}/pthread.cpp (100%) rename {msvc => src/msvc}/pthread.h (100%) rename {msvc => src/msvc}/res/resource.rc2 (100%) rename {msvc => src/msvc}/res/version.rc2 (100%) rename {msvc => src/msvc}/resource.h (100%) rename {msvc => src/msvc}/semaphore.cpp (100%) rename {msvc => src/msvc}/semaphore.h (100%) rename {msvc => src/msvc}/sys/time.h (100%) rename {msvc => src/msvc}/unistd.cpp (100%) rename {msvc => src/msvc}/unistd.h (100%) rename {msvc => src/msvc}/usb_com_helper.cpp (100%) rename {msvc => src/msvc}/usb_com_helper.h (100%) rename {msvc => src/msvc}/usb_com_locator.h (100%) rename {msvc => src/msvc}/version.h (100%) rename my_ddk_hidsdi.h => src/my_ddk_hidsdi.h (100%) rename par.c => src/par.c (100%) rename par.h => src/par.h (100%) rename pgm.c => src/pgm.c (100%) rename pgm_type.c => src/pgm_type.c (100%) rename pickit2.c => src/pickit2.c (100%) rename pickit2.h => src/pickit2.h (100%) rename pindefs.c => src/pindefs.c (100%) rename ppi.c => src/ppi.c (100%) rename ppi.h => src/ppi.h (100%) rename ppiwin.c => src/ppiwin.c (100%) rename safemode.c => src/safemode.c (100%) rename ser_avrdoper.c => src/ser_avrdoper.c (100%) rename ser_posix.c => src/ser_posix.c (100%) rename ser_win32.c => src/ser_win32.c (100%) rename serbb.h => src/serbb.h (100%) rename serbb_posix.c => src/serbb_posix.c (100%) rename serbb_win32.c => src/serbb_win32.c (100%) rename solaris_ecpp.h => src/solaris_ecpp.h (100%) rename stk500.c => src/stk500.c (100%) rename stk500.h => src/stk500.h (100%) rename stk500_private.h => src/stk500_private.h (100%) rename stk500generic.c => src/stk500generic.c (100%) rename stk500generic.h => src/stk500generic.h (100%) rename stk500v2.c => src/stk500v2.c (100%) rename stk500v2.h => src/stk500v2.h (100%) rename stk500v2_private.h => src/stk500v2_private.h (100%) rename teensy.c => src/teensy.c (100%) rename teensy.h => src/teensy.h (100%) rename term.c => src/term.c (100%) rename term.h => src/term.h (100%) rename tpi.h => src/tpi.h (100%) rename update.c => src/update.c (100%) rename usb_hidapi.c => src/usb_hidapi.c (100%) rename usb_libusb.c => src/usb_libusb.c (100%) rename usbasp.c => src/usbasp.c (100%) rename usbasp.h => src/usbasp.h (100%) rename usbdevs.h => src/usbdevs.h (100%) rename usbtiny.c => src/usbtiny.c (100%) rename usbtiny.h => src/usbtiny.h (100%) rename windows/.cvsignore => src/windows/.gitignore (71%) rename {windows => src/windows}/Makefile.am (100%) rename {windows => src/windows}/giveio.c (100%) rename {windows => src/windows}/giveio.sys (100%) rename {windows => src/windows}/install_giveio.bat (100%) mode change 100755 => 100644 rename {windows => src/windows}/loaddrv.c (99%) rename {windows => src/windows}/loaddrv.h (100%) rename {windows => src/windows}/remove_giveio.bat (100%) mode change 100755 => 100644 rename {windows => src/windows}/status_giveio.bat (100%) mode change 100755 => 100644 rename wiring.c => src/wiring.c (100%) rename wiring.h => src/wiring.h (100%) diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 059edf8b..00000000 --- a/.cvsignore +++ /dev/null @@ -1,33 +0,0 @@ -*.diff -*.patch -y.output -y.tab.h -lexer.c -config_gram.c -config_gram.h -.cvsignore -.depend -.deps -INSTALL -Makefile.in -Makefile -ac_cfg.h.in -aclocal.m4 -autom4te.cache -configure -depcomp -install-sh -compile -missing -mkinstalldirs -stamp-h.in -stamp-h1 -ac_cfg.h -avrdude.conf -avrdude.conf.tmp -avrdude.spec -config.guess -config.log -config.status -config.sub -avrdude diff --git a/BUILD-FROM-SVN b/BUILD-FROM-SVN deleted file mode 100644 index 3a218f2d..00000000 --- a/BUILD-FROM-SVN +++ /dev/null @@ -1,13 +0,0 @@ -$Id$ - -How to build avrdude from SVN: - -1. svn co svn://svn.savannah.nongnu.org/avrdude/trunk - -2. cd trunk/avrdude - -3. ./bootstrap - -4. ./configure - -5. make diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 6357cce1..00000000 --- a/ChangeLog +++ /dev/null @@ -1,148 +0,0 @@ -2018-01-21 Joerg Wunsch - - patch #8444: Proposal for modifications in -B and -U command options managment - * update.c (parse_op): Default -U filename to RBIN for output - files - -2018-01-18 Joerg Wunsch - - Submitted by Simone: - patch #8128: Added new option to configure.ac script - * configure.ac (disable-libusb_1_0): New option - -2018-01-18 Joerg Wunsch - - Submitted by Jan Egil Ruud: - patch #9542: Correct "usersig" on avr8x devices - * avrdude.conf.in (.avr8x_tiny, .avr8x_mega): rename "userrow" to - "usersig", and fix its page size for .avr8x_mega - * jtag3.c: Remove all "userrow" handling - -2018-01-17 Joerg Wunsch - - Submitted by Reinhard Max - patch #8311: Add IPv6 support to the -Pnet:host:port option - * ser_posix.c (net_open): Rewrite to use getaddrinfo() - rather than gethostbyname() - * avrdude.1: Document IPv6 feature - * doc/avrdude.texi: (Dito) - -2018-01-16 Joerg Wunsch - - Submitted by Maciej: - patch #9185: Add extended_param to usbasp.c - erasing - configuration section in ATtiny 4...40 (TPI) - * usbasp.c: Implement extended parameter parsing, and modify - usbasp_tpi_chip_erase() appropriately - * avrdude.1: Document USBasp extended parameters - * doc/avrdude.texi: (Dito) - -2018-01-16 Joerg Wunsch - - Submitted by Tom Carney: - patch #8219: Fix boot_start for xmega devices on jtagmkII - * jtagmkII.c (jtagmkII_initialize): Determine boarder between - application and boot area correctly. - -2018-01-16 Joerg Wunsch - - Submitted by Jan Egil Ruud - patch #9507: Fix UPDI chip erase - * libavrdude.h (PROGRAMMER): add unlock method - * avr.c (avr_unlock): Generic unlock function - * jtag3.c: Implement unlock feature; avoid calling - jtag3_edbg_prepare() and jtag3_edbg_signoff() on XplainedMini - boards to work around a bug in early firmware versions; - implement "userrow" memory region - * main.c: Call avr_unlock() rather than avr_chip_erase() when - encountering a locked UPDI chip - -2018-01-16 Joerg Wunsch - - Submitted by Nicolas BRULEZ - patch #8910: ATxmega32c4 and ATxmega16c4 have wrong signatures - bug #41388: ATxmega32c4 and ATxmega16c4 have wrong signatures - * avrdude.conf.in (ATxmega16C4, ATxmega32C4): Fix signatures - -2018-01-15 Joerg Wunsch - - Submitted by Dennis Reimers: - patch #8580: FT245r support to select device by serial number - * ft245r.c (ft245r_open): Add serial number parsing. - -2018-01-15 Joerg Wunsch - - Submitted by Axel Simon: - patch #9033: avrdoper backend uses libhidapi instead of libusb - * ser_avrdoper: Add libhidapi implementation - * stk500v2.c: Adapt #ifdefs for LIBHIDAPI - * avrdude.1: Document change - * doc/avrdude.texi: (Dito) - -2018-01-13 Joerg Wunsch - - Submitted by David Mosberger-Tang - patch #8924: Enable TPI for usbtiny - * usbtiny.c: Extend to handle TPI targets - * configure.ac: Probe for - -2018-01-12 Joerg Wunsch - - Submitted by Yegor Yefremov: - patch #9222: Enable silent build - * configure.ac: Add AM_SILENT_RULES - * Makefile.am: Document how to run "make" to get verbose - build messages - -2018-01-12 Joerg Wunsch - - Submitted by: Kjetil Kjeka: - patch #9317: Support atmega64m1 as part - * avrdue.conf.in (ATmega64M1): New entry. - -2018-01-12 Joerg Wunsch - - Submitted by Submitted David Griffith: - patch #9530: Update URL to Ladyada's USBtinyISP page. - * avrdude.conf.in (usbtiny): Update URL - -2018-01-12 Joerg Wunsch - - Submitted by Milan Kupcevic: - patch #9423: Support ATtiny841 and ATtiny441 - bug #47376: ATtiny841 description missing in configuration file - bug #49455: support for tiny441 - * avrdude.conf.in (ATtiny841, ATtiny441): New entries - -2018-01-10 Joerg Wunsch - - Submitted by Morten Engelhardt Olsen - patch #9506: Script to create device configuration stub from Atmel ATDF files - * tools/atdf-to-avrdude.xslt: New script - -2018-01-10 Joerg Wunsch - - Submitted by Jan Egil Ruud - patch #9507: Fix UPDI chip erase - * lexer.l (family_id): New keyword. - * config_gram.y: (Ditto) - * doc/avrdude.texi: Document new keyword - * avrdude.conf.in: Add family_id for avr8x devices - * avr.c: Pass error code up. - * jtag3.c: Pass error code from memory read up; implement - jtag3_read_sib() - * libavrdude.h: Add new items. - * main.c: Implement different chip erase handling required - for UPDI devices. - -2018-01-10 Joerg Wunsch - - Submitted by Jan Egil Ruud - patch #9506: Script to create device configuration stub from Atmel ATDF files - * avrdude.conf.in (ATtiny202, ATtiny204, ATtiny402, ATtiny404) - (ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604) - (ATtiny1606, ATtiny1607, ATtiny212, ATtiny214, ATtiny412) - (ATTiny414, ATtiny416, ATtiny417, ATtiny814, ATtiny816) - (ATtiny1614, ATtiny1616, ATtiny3214, ATtiny3216, ATtiny3217) - (ATmega3208, ATmega3209, ATmega4808, ATmega4809): New devices - diff --git a/ChangeLog-2001 b/ChangeLog-2001 deleted file mode 100644 index 048dcf1c..00000000 --- a/ChangeLog-2001 +++ /dev/null @@ -1,598 +0,0 @@ -2001-12-30 Brian S. Dean - - * main.c: Update version. - - * avrdude.conf.sample: Clarify a comment. - - * avrdude.conf.sample: fix address bits - - * avrdude.1: Bring up to date. - -2001-12-29 Brian S. Dean - - * avrdude.conf.sample: Add the AVR3 progammer. - - * avr.c, avrdude.conf.sample, config_gram.y, main.c, pindefs.h: - Fix VCC assertion. - - Make the BUFF pin a mask like VCC to allow multiple pins to be - asserted at the same time (STK200 has two buffer enable lines). - - Add the STK200 programmer. - - Fix EEPROM address line selection for several parts. - -2001-12-15 Brian S. Dean - - * avrdude.conf.sample: fix spelling error - -2001-11-24 Brian S. Dean - - * Makefile: - Change "WARNING" to "NOTE" when overwriting the avrprog.conf file. - - * avrdude.1: Add my e-mail address. - - * avrdude.conf.sample: - Add comments about instruction formats. Correct an instruction - specification (cut&paste error). - -2001-11-21 Brian S. Dean - - * avr.c, config_gram.y, lexer.l, term.c: - In interactive mode, reset the address and length if we start dumping - a memory type different than the previous one. - - * avr.c, avrdude.conf.sample, config_gram.y: - Allow instruction data to be specified more flexibly, which can be - used to make the instruction input more readable in the config file. - - * main.c: Bump version number. - - * Makefile, avr.c, avr.h, avrdude.conf.sample, config.c, config.h: - * config_gram.y, fileio.c, fileio.h, lexer.l, main.c, term.c: - This is a major re-write of the programming algorithms. The Atmel - serial programming instructions are not very orthoganal, i.e., the - "read fuse bits" instruction on an ATMega103 is an entirely different - opcode and data format from the _same_ instruction for an ATMega163! - Thus, it becomes impossible to have a single instruction encoding - (varying the data) across the chip lines. - - This set of changes allows and requires instruction encodings to be - defined on a per-part basis within the configuration file. Hopefully - I've defined the encoding scheme in a general enough way so it is - useful in describing the instruction formats for yet-to-be invented - Atmel chips. I've tried hard to make it match very closely with the - specification in Atmel's data sheets for their parts. It's a little - more verbose than what I initially hoped for, but I've tried to keep - it as concise as I could, while still remaining reasonably flexible. - -2001-11-19 Brian S. Dean - - * avr.c, avr.h, avrdude.conf.sample, main.c, ppi.c, term.c: - Add support for ATMega163. - - Add support for reading/writing ATMega163 lock and fuse bits. - Unfortunately, in looking at the specs for other ATMega parts, they - use entirely different instruction formats for these commands. Thus, - these routines won't work for the ATMega103, for example. - - Add support for sending raw command bytes via the interactive terminal - interface. This allows one to execute any programming instruction on - the target device, whether or not avrprog supports it explicitly or - not. Thus, one can use this feature to program fuse / lock bits, or - access any other feature of a current or future device that avrprog - does not know how to do. - - Add in comments, an experimental instruction format in the - configuration file. If this works out, it would allow supporting new - parts and non-orthoganal instructions across existing parts without - making avrprog code changes. - -2001-11-17 Brian S. Dean - - * avrdude.conf.sample: Add ATMEGA163 part. - -2001-11-11 Brian S. Dean - - * main.c: output formatting - -2001-11-05 Brian S. Dean - - * ppi.c: Get ppi.h from /usr/include, not /sys. - -2001-10-31 Brian S. Dean - - * avr.c, avrdude.conf.sample, main.c: Correct version string. - Update read/write status more frequently. - Prefix ATMega parts with an 'm'. - -2001-10-16 Brian S. Dean - - * avr.c: Change ording for memory display. - - * config_gram.y: comment - - * avr.c, avr.h, avrdude.conf.sample, config_gram.y, lexer.l, term.c: - Fix (again, hopefully) page addressing for the ATMega parts. - - Rename the poorly chosen name "bank" to "page" for page addressing. - Atmel calls it "page" in their documentation. - - * config_gram.y, main.c: Fix an (non)exit. - Silence a couple of compiler warnings. - - * avr.c, avr.h, avrdude.conf.sample, config_gram.y, main.c: - Fix ATMega flash addressing. Add an ATMEGA16 part. Perform sanity - checking on the memory parameters for parts that do bank addressing. - -2001-10-15 Brian S. Dean - - * config.c, config.h, lists.h: Add copyright. - - * config_gram.y, lexer.l, lists.c: Add copyrights. - - * Makefile: Attempt to install avrprog.conf. - - * avrdude.conf.sample: Correct dt006 pinout. - - * Makefile, lexer.l: - Try and detect an old-style config file and print an appropriate error - message and a suggestion for correcting it. - - * Makefile, avr.c, avrdude.1, avrdude.conf.sample: Update the man page. - - Miscellaneous minor cleanups. - -2001-10-14 Brian S. Dean - - * Makefile, Makefile.inc, avr.c, avr.h, avrdude.conf.sample: - * config.c, config.h, config_gram.y, lexer.l, lists.c, lists.h: - * main.c, pindefs.h, term.c: - Use lex/yacc for parsing the config file. Re-work the config file - format using a more human-readable format. - - Read part descriptions from the config file now instead of hard-coding - them. - - Update usage(). - - Cleanup unused code. - - * Makefile, avr.c, avr.h, fileio.c, term.c: - First cut at supporting the ATmega 103 which uses bank addressing and - has a 128K flash. - - Due to the bank addressing required, interactive update of the flash - is not supported, though the eeprom can be updated interactively. - Both memories can be programmed via non-interactive mode. - - Intel Hex Record type '04' is now generated as required for outputing - memory contents that go beyond 64K. - -2001-10-13 Brian S. Dean - - * avr.c, avr.h, fileio.c, fileio.h, main.c, ppi.c, ppi.h, term.c: - * term.h: - Style fixes. - - * avr.c, avr.h, fileio.c, fileio.h, main.c, term.c: - Commit changes in preparation for support the ATMega line. - -2001-10-01 Brian S. Dean - - * Makefile: Don't override CFLAGS. - - * avrdude.1: Correct default pin assignment. - - * avr.c, fileio.c, main.c, ppi.c, term.c: - Remove debugging code - it served its purpose. - - Update copyrights. - -2001-09-21 Brian S. Dean - - * main.c: - Be sure to read the exit specs after the pin configuration has been - assigned, otherwise, we may apply the exit specs to the wrong pins. - - * main.c: debugging - -2001-09-20 Brian S. Dean - - * avrdude.1, avrdude.conf.sample, main.c: - Prefix pin config entries in the config file with a "c:". Later, I - might make part descriptions read in this way and we can use a - different letter for those (p). This will make the parsing easier to - distinguish between the entry types. - - * main.c: Initialize pin configuration description. - -2001-09-19 Brian S. Dean - - * AVRprog.pdf, Makefile, avr.c, avrdude.1, avrdude.conf.sample: - * avrdude.pdf, fileio.c, fileio.h, main.c, pindefs.h, term.c: - Make the pin definitions configurable based on entries in a config - file. This makes supporting other programmers much easier. - - Rename AVRprog.pdf to avrprog.pdf. - -2001-04-29 Brian S. Dean - - * avrprog-programmer.jpg: Remove this image file from the repository. - -2001-04-26 Brian S. Dean - - * avrprog-schematic.jpg: - Remove this image, use AVRprog.pdf as the preferred schematic for the - programmer. - -2001-04-25 Brian S. Dean - - * AVRprog.pdf, Makefile, avrdude.1: - Add a schematic provided by Joerg Wunch and also update the manual - page (also updated by Joerg) to reference the schematic. - -2001-02-25 Brian S. Dean - - * Makefile, Makefile.inc: Automate dependency generation. - -2001-02-08 Brian S. Dean - - * main.c: Turn off ready led when finished programming. - - * main.c: update version - - * avr.c, main.c: Correct a few comments. - - * Makefile, avr.c, term.c: Makefile : update dependencies - - avr.c : correct status led updates - - term.c : update status leds on write, make the address and length - arguments for dump optional. - -2001-01-26 Brian S. Dean - - * main.c: Version 1.1 - - * main.c: - Hmmm ... cvs co -D does not work. Change the revision - timestamp to a full date/time value. - - * avr.c, fileio.c, main.c, ppi.c, term.c: - Add a -V option to display the version information about each - component module. This is intended for support purposes, so that I - can tell unambiguously what version a binary out in the field is. - - Additionally, display a revision timestamp along with the version - number. This also is intended for aiding in support and is the Unix - time of the latest component module. Having this, should allow me to - do a "cvs co -D timestamp avrprog" and get exactly the source of the - version that is being reported. - - * fileio.c: - Return the maximum address (+1) written as opposed to the actual - number of bytes written. The presence of an Intel Hex address - record can cause these two number to be different; but the callers - of this routine need the former. - - * main.c: - Fix a place where we were exiting without applying the exit-specs. - - Wrap a long line. - - * avr.c, fileio.c: avr.c: Update a comment. - - fileio.c: Properly handle all the Intel Hex record types that I can - find information about. - -2001-01-25 Brian S. Dean - - * Usage, avr.h: Get rid of the Usage file. - -2001-01-24 Brian S. Dean - - * Makefile, avr.c, avr.h, main.c, pindefs.h, ppi.c: - Move pin definitions to their own file. - - First pass at providing feedback via the optionally connected leds. I - don't actually have any of these attached to my programmer, so I can - only guess as whether this is toggling them on and off correctly. - - Also, enable and disable the optional 74367 buffer. - - * avr.h, main.c, ppi.c, ppi.h, avr.c: - Rearrange the pinout for the programmer to be a little more logical. - Provide hooks to support a buffered programmer, pin 6 is now used to - enable a buffer that can be used to isolate the target system from the - parallel port pins. This is important when programming the target - in-system. - - Totally change the way the pin definitions are defined. Actually - set/clear pins based on the way more intuitive pin number, instead of - PPI data register, bit number combination. A table of pin data is - used so that any hardware inversion done by the parallel port is - accounted for, what you set is actually what appears at the pin. - Retain the old method for handling Vcc, however, because the hold - method is much easier to use when setting / retrieving multiple pins - simultaneously. - -2001-01-22 Brian S. Dean - - * Makefile: Don't gzip the man page. - - * avrdude.1: .Nm macro fix. Submitted by Joerg. - - * main.c: Cosmetic, don't output a preceding linefeed for usage(). - - * Makefile, avr.c, avr.h, fileio.c, term.c: - Makefile : use gzip -f for man page installation so that we don't get - prompted. - - avr.c avr.h fileio.c term.c : - - Change the avrpart data structure so that the typedef AVRMEM is - used as an index into an array for the sizes of the memory types - and also for pointers to buffers that represent the chip data for - that memory type. This removes a lot of conditional code of the - form: - - switch (memtype) { - case AVR_FLASH : - ... - } - - Also, re-code avr_read_byte() and avr_write_byte() to properly - handle the flash memory type without having to tell them whether - they should program the high byte or the low byte - figure that - out from the address itself. For flash memory type, these - routines now take the actual byte address instead of the word - address. This _greatly_ simplifies many otherwise simple - operations, such a reading or writing a range of memory, by not - having to worry about whether the address starts on an odd byte - or an even byte. - -2001-01-20 Brian S. Dean - - * avr.c, avr.h, fileio.c, fileio.h, main.c: - Return error codes instead of exiting, thus making sure that we exit - only via main() so that the exitspecs are properly applied. - - When reading input data from a file, remember how many bytes were read - and write and verify only that many bytes. - - Don't complain when an input file size is smaller than the memory size - we are programming. This is normal. - - * fileio.c: - Correct checksum calculation; failure to account for the value of the - record type was causing non-zero record types to be calculated - incorrectly. - - * Makefile, main.c: Makefile : install the man page - - main.c : drop the giant usage text now that we have a man page. - - * avrdude.1: - Add initial man page graciously contributed by Joerg Wunsch. Thanks - Joerg! - -2001-01-19 Brian S. Dean - - * term.c: - Accept abbreviations for eeprom and flash for the dump and write - commands. - - Fix small bug keeping 1 character command lines from being added to - the history. - - * term.c: - Implement enough state in cmd_dump so that if it is called with no - arguments, it successively dumps the next chunk of data of the same - previously specified length. - - * term.c, term.h, fileio.c, fileio.h, main.c, ppi.c, ppi.h: - * Makefile, avr.c, avr.h, avrprog.c: - The program was getting too large for a single file. Split it up into - more modular pieces. - - Also, accept command abbreviations as long as they are not ambiguous. - - * avrprog.c: - Add ability to specify the state of the power and reset pins on - program exit. Default to leaving the pins in the state they were when - we found them. - - Contributed by: Joerg Wunsch - -2001-01-18 Brian S. Dean - - * Makefile, avrprog.c: - Switch to using readline() for getting terminal input. I can't seem - to get the history capabilities working yet, but even so, it does - better handling of the prompt and strips newlines for us, so it's - still a win. - - Add a few new commands for terminal mode: help, sig, part, erase. - Display rudimentory help using the help command. - - Add some function prototypes. - - * Usage, avrprog.c: - Change -c (interactive command mode) to the more intuitive -t - (terminal mode). - - Make binary format the default for output. - - Update the parts table with corrections for old values and add some - new values. - -2001-01-15 Brian S. Dean - - * avrprog.c: - Automatically verify on-chip data with what we just programmed. - - * avrprog.c, Makefile: - Prepare the Makefile for integration into the FreeBSD ports tree. - - Fix a few "may be used uninitialized" bugs found by -Wall. - -2001-01-14 Brian S. Dean - - * avrprog.c: Free a buffer. - - * avrprog.c: - Use a smarter programming algorithm - read the existing data byte - first and only write the new one if it is different. - - Add -n option which is a test mode in which the chip is not actually - updated. This option does not affect writes in interactive mode. - - * avrprog.c: Add the "dump" and "write" interactive commands. - - * avrprog.c: - Correctly produce and handle "end of record" for intel hex files. - -2001-01-13 Brian S. Dean - - * avrprog.c: - Re-enable writing to the chip. I should probably should make this a - command-line selectable option so that I don't keep forgetting and - committing it with it disabled. - - * avrprog.c: - Add a newline before exiting due to command line errors. Perform a - bit more option compatibility testing between -c, -i, and -o. - - * avrprog.c: Add input file format auto-detection support. - - * Usage, avrprog.c: Say what the defaults are. - - * avrprog-programmer.jpg, Usage, avrprog-schematic.jpg: New files. - - * avrprog.c: Correct usage text. - - * avrprog.c: - Parameterize a few additional items per chip. Print out all per-chip - parameters on startup. Use the per-chip parameters in the code - instead of hard-coded values for the 2313. - - * avrprog.c: Fix filename assignment error. - - Clean up debugging code a little, utilize fileio() instead of making - direct calls to b2ihex(). - - * avrprog.c: A lot of general code cleanup. - - Re-work command line options to be more intuitive. - - Support Intel Hex input and output file formats. Provide hooks to - support Motorola S-Record as well. - - Add a few more part-specific parameters to the avrpart structure. - - Only write the flash or eeprom if the data to be written is not 0xff. - -2000-12-31 Brian S. Dean - - * avrprog.c: Update a comment. - - * avrprog.c: - Provide the ability to tie additionally tie pins 6-9 of the parallel - port to Vcc in order to supply more current. - - Fix a typo on the size of the S1200's Flash. - - Bring RESET low when programming is completed. - - * avrprog.c: - Correct pin connection comments. Elaborate a bit on Vcc connection. - - * avrprog.c: - Update after receiving some good feedback from Joerg Wunsch. We - should now be able to program AT90S1200's. - -2000-12-30 Brian S. Dean - - * avrprog.c: Don't limit eeprom addresses. - -2000-12-20 Brian S. Dean - - * Makefile, avrprog.c: - Add support for the 8515. Make the addition for other devices easier. - -2000-08-27 Brian S. Dean - - * avrprog.c: - Clear all bits except AVR_RESET when finished reading or programming - the Atmel device. - -2000-08-07 Brian S. Dean - - * avrprog.c: update announcement message - - * avrprog.c: Update announcement message. - - * avrprog.c: Return the correct return code from 'main()'. - - * avrprog.c: - Add ppi_pulse() function and fix ppi_toggle() to actully toggle - instead of pulse. - - Make all abnormal returns after the parallel port has been opened go - through a single exit point at the bottom of 'main()'. - -2000-08-06 Brian S. Dean - - * Makefile, avrprog.c: Makefile: add --pedantic compiler option - - avrprog.c: - - Add lots of comments, move getop() variable declarations to - the top of the program. - - Add a typedef name to the AVR memory type and use it for - function declarations. - - Add a usleep() delay in the sense loop to avoid becoming a cpu - hog. - - Print out a version string so that folks know what version of - the software they are running. - - Be sure and close the parallel device and the i/o file when - terminating abnormally. - - * avrprog.c: Print out version information when invoked. - - * Makefile, avrprog.c: Makefile: Add an install target. - - avrprog.c: - - Add license. - - Document the header a bit better. - - Add capability to read out and display the device signature bytes. - - Add capability to power the device from the parallel port. - - Eliminate debug print facility. - - Provide 'avr_cmd()' function. - - When memory locations don't program, generate a newline so that the - information is not overwritten and lost. - - Don't print out the message about needing to specify a file if the - user is not requesting an operation that requires the file. - -2000-08-05 Brian S. Dean - - * avrprog.c: Pring usage when no arguments are supplied. - - * Makefile, avrprog.c: Initial check-in - - * Makefile, avrprog.c: New file. - diff --git a/ChangeLog-2002 b/ChangeLog-2002 deleted file mode 100644 index 9bfa030a..00000000 --- a/ChangeLog-2002 +++ /dev/null @@ -1,237 +0,0 @@ -2002-12-12 Brian S. Dean - - * main.c: minor cleanup - -2002-12-07 Brian S. Dean - - * avrdude.1, main.c: - If the stk500 is being used, default to using the first serial port. - -2002-12-03 Brian S. Dean - - * avrdude.1: Mention STK500 support. - -2002-12-01 Brian S. Dean - - * stk500.c: Remove unused code. - - * CHANGELOG, stk500.c: - Document changes since the previous version in the CHANGELOG. - - Cleanup stk500.c a bit. - - * stk500.c: Fix cut and paste braino. - - * avr.c, avrdude.conf.sample, main.c, pgm.h, stk500.c: - The STK500 can perform paged read/write operations even on standard - "non-paged" parts. Take advantage of that and use the faster internal - routines of the STK500 for those parts as well. - - * avr.c, avr.h, avrpart.h, main.c, pgm.c, pgm.h, stk500.c: - Optimize reading and writing for the STK500 programmer if the part - supports paged reads and writes. This greatly decreases the - program/verify time from about 4.5 minutes down to about 10 seconds in - a 12K program size test case. - - Print out the hardware and firmware version for the STK500 if verbose - is enabled. - - * avrdude.conf.sample, avrpart.h, config_gram.y, lexer.l, pgm.h: - * ppi.c, ppi.h, stk500.c, stk500.h, stk500_private.h: - Add basic support for STK500. - -2002-11-30 Brian S. Dean - - * avrdude.conf.sample, config.c, config.h, config_gram.y, lexer.l: - * main.c, pgm.c, pgm.h, ppi.c, ppi.h, term.c, term.h, Makefile: - * avr.c, avr.h: - Seperate programmer operations out into a driver-like interface so - that programmers other than the direct parallel port connection can be - supported. - -2002-11-23 Brian S. Dean - - * CHANGELOG, main.c, term.c: - term.c - when in interactive terminal mode and dumping memory using - the 'dump ' command without any address information, - and the end of memory is reached, wrap back around to zero on - the next invocation. - - CHANGELOG - describe changes - - main.c - update version number - - * main.c: - When getting ready to initiate communications with the AVR device, - first pull /RESET low for a short period of time before enabling the - buffer chip. This sequence allows the AVR to be reset before the - buffer is enabled to avoid a short period of time where the AVR may be - driving the programming lines at the same time the programmer tries - to. Of course, if a buffer is being used, then the /RESET line from - the programmer needs to be directly connected to the AVR /RESET line - and not via the buffer chip. - -2002-11-06 Brian S. Dean - - * CHANGELOG: Update changelog. - - * avr.c, avr.h, main.c: Fix -Y option. Reported by Joerg Wunsch. - -2002-11-01 Brian S. Dean - - * CHANGELOG, main.c: Version update and CHANGELOG entry. - - * avr.c: - Be backward compatible with the 2-byte rewrite cycle counter which - appeared in version 2.1.0, but was changed to a 4 byte counter in - version 2.1.1. Reminded by Joerg Wunsch. - -2002-10-29 Brian S. Dean - - * CHANGELOG, avrdude.1, main.c: - Add '-V' (no verify) flag requested by Joerg Wunsch. Update the man - page. - -2002-10-13 Brian S. Dean - - * CHANGELOG, avrdude.1: Update man page and changelog. - - * main.c: Update version number. - -2002-10-12 Brian S. Dean - - * Makefile: Remove --pedantic and -g from the compiler options. - -2002-10-11 Brian S. Dean - - * avr.c, term.c: - Use a four byte value instead of a two byte value for the programming - cycle count stored at the end of EEPROM. It seems as though Atmel was - greatly conservative in claiming a 1000 count reliability for the - FLASH. I current have a part that has been reprogrammed 173330 times, - and counting. - - Fix a compiler warning. - - * avrdude.conf.sample: - Fix ATMega128 instruction encoding for reading the low and high fuse - bits. Thanks to Joerg Wunsch for tripping over this. - -2002-08-01 Brian S. Dean - - * avr.c, avrdude.1, main.c: - Move erase-rewrite cycle increment to within the chip erase routine so - that it is tracked no matter where the erase was initiated: command - line mode or interactive mode, without code duplicaiton. - - * CHANGELOG: Recent updates. - - * avr.c: Eliminate unused variables. - - * avr.c, avr.h, avrdude.1, fileio.c, main.c: - Implement a way of tracking how many erase-rewrite cycles a part has - undergone. This utilizes the last two bytes of EEPROM to maintain a - counter that is incremented each time the part is erased. - -2002-07-27 Brian S. Dean - - * avr.c, main.c: - Fix a typo in a comment. Display the size of memory being written. - Display the correct memory name in an error message (previously - hardcoded). - -2002-06-22 Brian S. Dean - - * CHANGELOG, avrdude.conf.sample: - Add support for ATtiny15 - contributed by Asher Hoskins - - -2002-04-23 Brian S. Dean - - * CHANGELOG: Say what changed. - -2002-04-07 Brian S. Dean - - * Makefile, avrdude.conf.sample: - Backup the config file to a timestamped name to keep from possibly - overwriting user-modified configs. - - Add read/write instructions for all memory types for ATMEGA103, - ATMEGA128, ATMEGA16, and ATMEGA8. - -2002-04-05 Brian S. Dean - - * avrdude.conf.sample: - Add support for ATMEGA128; untested; requested by Jeff Gardner - . - -2002-02-15 Brian S. Dean - - * avrdude.conf.sample: Minor ordering. - - * CHANGELOG, main.c: Update version numbers. - -2002-02-14 Brian S. Dean - - * CHANGELOG: Summarize latest updates. - - * avrdude.conf.sample, config_gram.y: - Make pwroff_after_write a yes/no field instead of a numeric. - - * avrdude.conf.sample: Document the pwroff_after_write flag. - - * avr.c: Enable the extra part verbosity when verbosity >= 3. - - * avr.c, avr.h, avrdude.conf.sample, config_gram.y, lexer.l: - * main.c, term.c: - Fix error reporting by avr_write_byte(). - - Fix setting of status LEDs under various write-fail conditions. - - Add a flag to indicate that a memory type requires the device to - possibly be powered off and back on after a write to it. This is due - to a hardware problem on some Atmel devices, see: - - http://www.atmel.com/atmel/acrobat/doc1280.pdf - - Add greater verbosity to the part-display code when verbose>1 to - display avrprog's encoding of the defined programming instructions. - This is primarily for debugging purposes. - - - Part updates: - - * add the AT90S4414 part - - * add fuse and lock bit access instructions for the AT90S1200, - AT90S4434, and AT90S8515. - - * add the pwroff_after_write flag to the fuse bits for the AT90S2333 - and AT90S4433 parts - -2002-02-09 Brian S. Dean - - * avrdude.conf.sample: - Updates to the 2333 and 4433 parts, contributed by Joerg Wunsh. - -2002-01-18 Brian S. Dean - - * CHANGELOG: Add changelog. - -2002-01-12 Brian S. Dean - - * main.c: Add (c) to copyright. - - * fileio.c, fileio.h, lexer.l, lists.c, lists.h, main.c: - * pindefs.h, ppi.c, ppi.h, term.c, term.h, avr.c, avr.h: - * config.c, config.h, config_gram.y: - Update version number. Update copyright. - - * avrdude.1: Update copyright and add description of "default". - - Submitted by: Joerg Wunsch - - * avr.c, term.c: - Fix programming of write-only memories (such as lock bits on the - 2313). - diff --git a/ChangeLog-2003 b/ChangeLog-2003 deleted file mode 100644 index 1115bdfb..00000000 --- a/ChangeLog-2003 +++ /dev/null @@ -1,1095 +0,0 @@ -2003-12-01 Eric B. Weddington - - * doc/avrdude.texi: Update devices and programmers supported. - -2003-12-01 Eric B. Weddington - - * doc/avrdude.texi: Add missing -D option to user manual. - [This fixes bug #6804] - -2003-11-30 Jan-Hinnerk Reichert - - * avrpart.c,main.c: Moved list_parts() and locate_part() - from main.c to avrpart.c. - * avrpart.h: Added prototypes for list_parts() and - locate_part(). - -2003-11-30 Jan-Hinnerk Reichert - - * avrpart.c, avr.c: Moved elementary functions on types - OPCODE, AVRMEM and AVRPART from avr.c to new file avrpart.c. - * avr.h: Removed prototypes for moved functions. - * avrpart.h: Added prototypes for functions in avrpart.c. - * Makefile.am: Added new file avrpart.c. - -2003-11-28 Michael Mayer - - * lexer.l: New programmer type "butterfly". - * config_gram.y: New token K_BUTTERFLY. - * avrdude.conf.in: Added programmer definition. - * butterfly.c, butterfly.h: Cloned from avr910.?, changed to work - with the Atmel Butterfly device. - * Makefile.am: Added butterfly.[ch] to avrdude_SOURCES. - -2003-11-26 Joerg Wunsch - - * main.c: Make the -U parser tolerate colons in filenames. - * avrdude.1, doc/avrdude.texi: Document the -U changes. - -2003-11-21 Jan-Hinnerk Reichert - - * ppi.c: Major speed tuning. Since ioctl() is expensive read from - shadowregisters where possible. - -2003-11-19 Eric B. Weddington - - * NEWS: Update news from items in ChangeLog. - -2003-11-19 Theodore A. Roth -[Contributed by Jan-Hinnerk Reichert ] - - * avr.c (avr_write_byte_default): Improve polling algorithm to speed up - programming of byte oriented parallel programmers. - -2003-11-14 Brian S. Dean -[Contributed by Erik Christiansen ] - - * avrdude.conf.in: - Add ATmega64 part. - -2003-11-08 Joerg Wunsch - - * avrdude.conf.in: - Add "fuse" and "lock" definitions for the AT90S8535. Actually, - this is stolen from the AT90S8515 since the datasheet says it's - the same there. - -2003-10-13 Bill Somerville - - * stk500.c (stk500_paged_write): Limit blocks written to no bigger - than memory device size. - (stk500_paged_write): Send whole block at once. - (stk500_paged_load): Limit blocks read to no bigger than memory - device size. - [This fixes bug #5713.] - -2003-10-13 Eric B. Weddington - - * avrdude.conf.in: Fix for unterminated character error. - -2003-10-13 Eric B. Weddington - - * avrdude.conf.in: Add ATmega8515 definition. - Contributed by: Matthias Weißer - * NEWS: Add note about ATmega8515 definition. - -2003-09-24 Eric B. Weddington - - * doc/TODO: Updated TODO list. - -2003-09-22 Eric B. Weddington - - * windows/Makefile.am: Correct makefile so loaddrv does not link - to Cygwin DLL. - -2003-09-18 Eric B. Weddington - - * doc/avrdude.texi: Minor corrections. Change description of -P - to reference platform dependencies. - -2003-09-16 Eric B. Weddington - - * stk500.c: If writing flash, skip empty pages in paged write. - -2003-09-06 Theodore A. Roth - - * NEWS: Add 'Current:' header. - * configure.ac (AC_INIT): Add cvs back to version since we're - back in dev cycle (post release). - -2003-09-06 Theodore A. Roth - - * AVRDUDE 4.2.0 has been released (cvs release tag is "release_4_2_0"). - -2003-09-06 Theodore A. Roth - - * NEWS: Update for 4.2.0 release. Add note about read/write of fuses - support for avr910. - * configure.ac (AC_INIT): Set version to 4.2.0. - -2003-09-05 Theodore A. Roth -[Contributed by Jan-Hinnerk Reichert ] - - * avr.c (avr_read_byte): If pgm->read_byte method fails, retry with - avr_read_byte_default. - * avr.c (avr_write_byte): If pgm->write_byte method fails, retry with - avr_write_byte_default. - * avr910.c (avr910_cmd): Implement using universal command. - -2003-09-04 Theodore A. Roth - - * Makefile.am: Change AM_CPPFLAGS to avrdude_CPPFLAGS. - Define avrdude_CFLAGS. - * configure.ac: Set ENABLE_WARNINGS to "-Wall" if using gcc. - -2003-09-02 Eric B. Weddington - - * doc/avrdude.texi: Add note about privileges needed to load - the giveio driver for Windows. - -2003-08-29 Brian S. Dean - - * avrdude.1: - * main.c: - Perform an auto erase before programming if the flash memory is - anywhere specified to be written by any of the -U requests. - - To remain backward compatible with previous versions, disable this - feature if any of the old-style memory specification operations are - specified (-i, -o). - - Implement the -D option to explicitly disable the auto erase default. - - Deprecate the old-style memory specification options (-f, -i, -I, -m, - and -o) in favor of the new -U option which allows one to operate on - multiple memories on a single command line. - -2003-08-28 Eric B. Weddington - - * avr910.c: - * fileio.c: - * main.c: - * stk500.c: - More code cleanup to remove warnings. - -2003-08-27 Theodore A. Roth - - * main.c (update_progress_no_tty): Properly terminate progress. Also - fixes stk500 problem where number of bytes written is less than a page. - -2003-08-27 Theodore A. Roth - - * avrdude.spec.in: Fix broken rpmbuild on RedHat-9. - -2003-08-25 Eric B. Weddington - - * fileio.c: - * main.c: - * ppiwin.c: - * ser_posix.c: - * stk500.c: - Minor code cleanup to remove warnings. - -2003-08-21 Brian S. Dean - - * avrdude.1: - * main.c: - - Introduce a new option, -U, for performing memory operions. - Its argument is a 4 field string (fields seperated by colons) - which indicate what memory type to operate on, what operation - to perform is (read, write, or verify), the filename to read - from, write to, or verify against, and an optional file format - field. Multple -U options can be specified to operate on more - than one memory at a time with a single invocation. For - example, to update both the flash and the eeprom at the same - time one can now specify the following: - - avrdude -p -e -U flash:w:main.hex:i -U eeprom:w:eeprom.hex:i - -2003-08-20 Brian S. Dean - - * ppiwin.c: - Timing related fixes for the Windows platform. Several folks have - reported that this patch fixes verify errors on the Windows platform - that are apparently timing related. Submitted by: Alex Shepherd - , who indicates that this patch was based on - code from the UISP project. - -2003-08-01 Theodore A. Roth - - * avrdude.1: Document the -q option. - * doc/avrdude.texi: Document the -q option. - Fix some typos left over from pasting in man output. - -2003-07-30 Brian S. Dean - - * main.c: Add elapsed time information to the new progress bar. - -2003-07-29 Theodore A. Roth - - * avr.c: - * avr.h: - * avr910.c: - * main.c: - * stk500.c: - New progress reporting implementation. - -2003-07-24 Joerg Wunsch - - * avrdude.1: - * doc/avrdude.texi: - * pgm.c: - * pgm.h: - * stk500.c: - * stk500_private.h: - * term.c: Add support for displaying and setting the various - operational parameters of the STK500 (Vtarget, Varef, clock). - -2003/07/22 Brian S. Dean - - * avrdude.conf.in: - Add 'picoweb' programming cable programmer. - Contributed by Rune Christensen . - -2003-06-18 Brian S. Dean - - * avrdude.conf.in: - Add the 'sp12' (Steve Bolt's) programmer. - Submitted by Larry Barello . - -2003-06-17 Brian S. Dean - - * avrdude.conf.in: - Properly identify the "ALF" programmer. - - Extend ATmega8 calibration memory to support all 4 calibration bytes. - Savannah bug #3835. Submitted by Francisco T. A. Silva - . - - Add a few AVR910 programmer device codes. Savannah bug #3569 - sorry - I can't tell who submitted this to give proper credit. - - Add support for the ATtiny12. Submitted by Pontifex - -2003-05-22 Brian S. Dean - - * avr.c: - * avr.h: - * fileio.c: - Optimize flash memory handling a little bit by ignoring 0xff data that - resides above the last non-0xff data value in the address space. Only - do this for flash memory since writing a 0xff to flash is a no-op. - This has the affect of creating smaller output files when dumping - memory contents from flash if the program in flash does not consume - the whole memory space. It also results in shorter programming times - when avrdude is asked to load a file into flash that has lots of 0xff - filled data past the last non-0xff data value. - -2003-05-13 Theodore A. Roth - - * avr910.c (avr910_paged_write_flash): Add code to send the 'm' - command ("issue page write" cmd) for each page. - -2003-05-13 Theodore A. Roth - - * avrdude.conf.in: Add pagel and bs2 entries for at90s1200 device. - -2003-05-13 Theodore A. Roth - - * doc/TODO: Add note about avr910 device codes. - -2003-05-04 Theodore A. Roth - - * configure.ac: Check for ncurses library (since it can be a - replacement for termcap). - -2003-05-02 Theodore A. Roth - - * avrdude.conf.in: Add avr decodes for devices known in avr910 - firmware version 2.3. - Add missing stk500 devocde for 2343. - -2003-04-23 Eric B. Weddington - - * fileio.c: Fix for bug #3293. Set correct open mode for raw format - for Windows. - -2003-04-19 Brian S. Dean - - * avrdude.1: - * fileio.c: - * fileio.h: - * main.c: - Implement and "immediate mode" for file input - this allows - one to specify byte values on the command line instead of via - a file. This can be good for specifying fuse bytes and - eliminates the need to create single-byte files or using - interactive terminal mode for these single-byte memories. - Requested by several folks on the mailing list. - -2003-04-18 Theodore A. Roth - - * configure.ac: Add cvs suffix back to version. - * doc/TODO: Add a few items. - -2003-04-18 Theodore A. Roth - - * AVRDUDE 4.1.0 has been released (cvs release tag is "release_4_1_0"). - -2003-04-17 Theodore A. Roth - - * configure.ac: Set version to 4.1.0. - * doc/avrdude.texi: Add note about avr910 programmer type. - -2003-04-17 Eric B. Weddington - - * NEWS: Replace TBD with new release version. - -2003-04-17 Eric B. Weddington - - * avrdude.conf.in: Change name of pony programmer to pony-stk200 - to better describe the hardware (PonyProg is software that works - with various hardware). - -2003-04-16 Eric B. Weddington - - * avrdude.conf.in: Add support for ATtiny26 - Submitted by Artur Lipowski - * NEWS: List new devices supported: ATtiny26 - -2003-04-16 Eric B. Weddington - - * avrdude.conf.in: Add support for ATmega8535 - Submitted by Alexander Peter - * NEWS: List new devices supported: ATmega8535 - -2003-04-09 Theodore A. Roth - - * avr910.c: Reading a 16 bit word in paged load needs to swap the - bytes since the 'R' command returns MSB first and the internal buffer - stores LSB first. - -2003-04-07 Theodore A. Roth - - * stk500.c: Don't print out read/write byte progress unless the verbose - option is given. - -2003-04-05 Theodore A. Roth - - * avr910.c: Re-add the avr910 byte read/write methods which were - removed in my previous patch. Terminal mode read/writes are broken - without those methods. D'oh! - -2003-04-05 Theodore A. Roth - - * avr910.c: Refactor to allow probing for auto addr increment. If auto - incr supported by programmer hw, don't send addr for every byte. - -2003-04-03 Eric B. Weddington - - * confwin.c: Fix bug that allows garbage for non-existent user - config filename on Windows. - -2003-03-29 Brian S. Dean - - * avrdude.conf.in: - Add the ATmega32 part. This part definition was contributed by: - Daniel Williamson and - Ruwan Jayanetti - The resulting part definition used was actually somewhat of a merge of - the two submitted definitions. - -2003-03-24 Theodore A. Roth - - * NEWS: Add note about avr910 support. - -2003-03-23 Theodore A. Roth - - * avr.c (avr_write): Add call to pgm->write_setup() before the write - loop. - * avr910.c: Change all show_func_info() calls to no_show_func_info(). - Add read/write to/from flash/eeprom memory functionality. - * pgm.c: Initialize pgm->write_setup. - * pgm.h: Add write_setup field to PROGRAMMER structure. - * ser_posix.c: Remove unneeded cast in verbosity code. - -2003-03-23 Theodore A. Roth - - * ser_posix.c: Limit verbose output to 2 chars. - -2003-03-23 Theodore A. Roth - - * ser_posix.c: Add verbose level > 3 output for send and recv functions. - -2003-03-23 Theodore A. Roth - - * avr.c: Add avr_read_byte_default(). - Have avr_read_byte() call pgm->read_byte() or avr_read_byte_default(). - Add avr_write_byte_default(). - Have avr_write_byte() call pgm->write_byte or avr_write_byte_default(). - * pgm.c: Initialize pgm->write_byte and pgm->read_byte. - * pgm.h: Add write_byte and read_byte fields to struct programmer_t. - -2003-03-17 Theodore A. Roth - - * avrdude.conf.in: Fix typo for devicecode deprecation comment. - -2003-03-17 Eric B. Weddington - - * avrdude.conf.in: Add Bascom SAMPLE programmer. - Submitted by Larry Barello - -2003-03-16 Theodore A. Roth - - * avr.c (avr_read): Use pgm->read_sig_bytes to read signature bytes if - available. - * avr910.c (avr910_vfy_cmd_sent): New function. - (avr910_chip_erase): Add support for chip erase. - (avr910_enter_prog_mode): New function. - (avr910_leave_prog_mode): New function. - (avr910_initialize): Add code to select device type and enter prog mode. - (avr910_close): Leave programming mode before closing serial port. - (avr910_read_sig_bytes): New function. - (avr910_initpgm): Add avr910_read_sig_bytes method to pgm initializer. - * avrdude.conf.in: Add note about deprecating devicecode. - Change all occurences of devicecode to stk500_devcode. - Add avr910_devcode to a few parts for testing. - * avrpart.h (struct avrpart): Change devicecode field to stk500_devcode. - (struct avrpart): Add avr910_devcode field. - * config_gram.y: Add K_STK500_DEVCODE and K_AVR910_DEVCODE tokens. - Generate an error if devicecode is found in the config file. - Handle parsing of avr910_devcode and stk500_devcode. - * lexer.l: Handle parsing of avr910_devcode and stk500_devcode. - * pgm.c: Initialize pgm->read_sig_bytes field. - * pgm.h: Add pgm->read_sig_bytes field. - * stk500.c: Use stk500_devcode instead of devicecode. - -2003-03-16 Theodore A. Roth - - * avrdude.conf.in: Add avr910 and pavr programmers. - * config_gram.y: Add parsing of avr910 programmer. - * lexer.l: Add avr910 token. - * avr910.c: [this is still work in progress] - Add some debug output. - Add probe for programmer presense. - * main.c: Set port to default_serial if programmer type is avr910. - -2003-03-13 Theodore A. Roth - - * ser_posix.c, ser_win32.c, serial.h: - Change baud from int to long to avoid a 16-bit int overflow. - -2003-03-12 Theodore A. Roth - - * Makefile.am (avrdude_SOURCES): Add avr910.[ch], serial.h and - ser_posix.c files. - * avr910.c: New file (stubs for avr910 serial programmer). - * avr910.h: New file. - * ser_posix.c: New file. - * ser_win32.c: New file (just stubs for now). - * serial.h: New file. - * stk500.c: Move all the code for accessing the posix serial ports - into ser_posix. This will make a native win32 port easier and allows - the avr910 programmer to share the serial code. - -2003-03-12 Theodore A. Roth - - * configure.ac (AC_INIT): Set version to 4.0.0cvs since we're done - with 4.0.0 release. - -2003-03-12 - - * AVRDUDE 4.0.0 has been released (cvs release tag is "release_4_0_0"). - -2003-03-11 Theodore A. Roth - - * Makefile.am: Add CLEANFILES to remove all files from a make. - * doc/Makefile.am: Ditto - -2003-03-11 Theodore A. Roth - - * windows/Makefile.am: Fix uninstall-local rule (forget the $$file - part of the rm command). - -2003-03-11 Theodore A. Roth - - * AUTHORS: Updated. - * CHANGELOG: Move contents to NEWS and remove file. - * ChangeLog: All of the changes for this year. - * ChangeLog-2001: All 2001 changes. - * ChangeLog-2002: All 2002 changes. - * Makefile.am (EXTRA_DIST): Remove CHANGELOG and and Change-200[12]. - * NEWS: Moved contents of CHANGELOG file here. - * README: Add note pointing to savannah site. - -2003-03-11 Eric Weddington - - * doc/avrdude.texi: - Add Install and Documentation sections for Windows. Fix typo. - -2003-03-10 Theodore A. Roth - - * Makefile.am: * Makefile.am (EXTRA_DIST): Add CHANGELOG. - -2003-03-10 Brian S. Dean - - * stk500.c: Disable debugging printf. - - * configure.ac: Update version number in preparation for release. - -2003-03-10 Theodore A. Roth - - * doc/avrdude.texi: - Add comment before each node to make them stand out better. - Use @option{} command for options instead of @code{}. - Merge FreeBSD and Linux platform dependent information. - -2003-03-10 Brian S. Dean - - * avrdude.1: Minor man page updates to better reflect reality. - -2003-03-10 Joerg Wunsch - - * bootstrap: - Export all the AUTO* variables. Hopefully, that way the generated - Makefile might get them correctly. - - * bootstrap: - Export ${AUTOCONF} so automake will find it by whatever name it will be - called today. - -2003-03-06 Eric Weddington - - * doc/avrdude.texi: - Add notes about ability to list parts and list programmers in the - config file in -p and -c descriptions. Change info about where to - find Windows search method in -C description. - - * main.c: - Change software version from hardcoded value to getting it from - the configuration. - -2003-03-06 Theodore A. Roth - - * avrdude.spec.in: * avrdude.spec.in: Add docs sub-package. - Add %post and %preun scriptlets for handling info files. - - * configure.ac, doc/Makefile.am: - * configure.ac: Add --enable-versioned-doc option and set DOC_INST_DIR. - * doc/Makefile.am: Add rules to install docs in DOC_INST_DIR. - - * doc/Makefile.am: - Delete the lines which where commented out in previous commit. - - * configure.ac, doc/Makefile.am: - * configure.ac: Remove hack to make work with automake-1.5. - * doc/Makefile.am: Remove extra rules that were needed to work with - automake-1.5. - - * bootstrap: - * bootstrap: Force use of autoconf-2.57 and automake-1.7.x. - -2003-03-05 Joerg Wunsch - - * avrdude.conf.in: Add a definition for the popular Ponyprog dongle. - - Submitted by: Daniel Williamson - -2003-03-05 Brian S. Dean - - * main.c: - Check the programmer type against 'STK500' instead of the programmer - name when checking to see if we should default to the default_serial - port instead of the default_parallel port. This has us do the right - thing for the new 'avrisp' programmer. - - * stk500.c: - Make the page size used for non-paged parts for the 'paged_write' - command be 128 bytes. This cuts 6 seconds off the programming time - for uploading a 6K file into an AT90S8515 vs the time loading the same - file using a 16 byte buffer, and the response feedback is still good. - - * avr.c, stk500.c: - Fix stk500 page write (Program Page command). This is supported after - all on non-paged-memory parts. The problem was that the page size was - defaulting to 256 (maximum for the stk500), but the timeout for a - response from the stk500 before declaring it dead was only 0.5 - seconds. But it takes much longer than 0.5 seconds to program 256 - bytes, so we just weren't waiting long enough. - - Fix this in two ways - increase the timeout to 5 seconds, and decrease - the page size to 16 bytes for non-paged parts. The programming time - for 16 bytes is short enough to provide the user with some feedback - that something is happening. - - * avr.c, stk500.c: - Don't call the programmer's 'paged_write' routine unless the memory - itself is paged as it doesn't appear to work otherwise. - - * avrdude.conf.in: Fix device codes for at90s8515 and at90s8535. - - * avrdude.conf.in: - Add PAGEL and BS2 parms for parts I have datasheets for. - - * config_gram.y: - Do that last commit slightly differently - this way results in no - shift-reduce conflicts. - - * config_gram.y: - It shouldn't be an error to have an empty configuration file. This - causes some shift-reduce conflicts, but I think they are OK. - - * main.c: - Print out a list of valid parts for '-p ?' and a list of valid - programmers for '-c ?'. - -2003-03-04 Eric Weddington - - * doc/avrdude.texi: Minor Windows doc corrections. - - * doc/TODO: Add TODO file. - - * avrdude.conf.in: Add AVR ISP programmer. - -2003-03-04 Brian S. Dean - - * stk500.c: - Don't try to set extended device programming parameters if they - haven't been specified in the config file for the part. - - * stk500.c: Set extended device parameters for all firmware versions. - - * stk500.c: - First attempt at supporting STK500 firmware past 1.10. Thanks to - Jason Kyle for the needed protocol information. - -2003-03-03 Theodore A. Roth - - * doc/Makefile.am: - * doc/Makefile.am: Add ps and pdf rules since they aren't supplied by - automake versions prior to 1.7. - - * doc/avrdude.texi: - * doc/avrdude.texi: Add node and menu information for the info system. - - * Makefile.am, configure.ac, doc/Makefile.am, doc/avrdude.texi: - * Makefile.am (SUBDIRS): Add doc dir. - * configure.ac (AC_CONFIG_FILES): Add doc/Makefile. - * doc/Makefile.am: New file. - * doc/avrdude.texi: Use automatically generated version.texi. - -2003-03-02 Brian S. Dean - - * doc/avrdude.texi: Initial manual. - -2003-02-27 Theodore A. Roth - - * term.c: * term.c: Use fgets() if readline() is not available. - -2003-02-27 Joerg Wunsch - - * bootstrap: - Oops, accidentally spammed the repository with my private version of - "bootstrap". Back out that change. - - * bootstrap, lexer.l: - Ignore \r as white space, to make the Windows people happy. - -2003-02-27 Theodore A. Roth - - * Makefile.am (EXTRA_DIST): Add avrdude.spec and make entries one - per line so future patches are obvious as to what changed. - * avrdude.spec.in: New file to support creation of binaries in rpm - format. - * configure.ac (AC_OUTPUT): Add avrdude.spec. Reorder so that - Makefile is the last entry. - -2003-02-26 Theodore A. Roth - - * Makefile.am (SUBDIRS): Add windows dir. - * configure.ac: If $target is a windows system, build whats in - windows sub dir. - * windows/Makefile.am: New file. - -2003-02-25 Theodore A. Roth - - * ChangeLog: Point reader to the CHANGELOG file. - * Makefile.am (EXTRA_DIST): Rename avrdude.conf.sample to - avrdude.conf.in. - Remove avrdude.conf and distclean-local rules. - Add install-exec-local and backup-avrdude-conf rules. - * avrdude.conf.in: - Set default_parallel to "@DEFAULT_PAR_PORT@" for autoconf expansion. - Set default_serial to "@DEFAULT_SER_PORT@" for autoconf expansion. - * configure.ac: Add call to AC_CANONICAL_{BUILD,HOST,TARGET} macros. - Set DEFAULT_PAR_PORT and DEFAULT_SER_PORT based on $host. - Add copyright header. - Define avrdude_version so AC_INIT and AM_INIT_AUTOMAKE are sure - to get the same version. - - * avrdude.conf.in, avrdude.conf.sample: - Renamed avrdude.conf.sample to avrdude.conf.in. - -2003-02-25 Eric Weddington - - * ppiwin.c: CRs again. - - * confwin.c, confwin.h: Get rid of CRs. - - * main.c, Makefile.am: Get rid of CRs again. - -2003-02-24 Joerg Wunsch - - * avrdude.1: Atmel has rearranged their web site, so now the AVR - docs have been moved to a more logically sounding URL. - -2003-02-24 Eric Weddington - - * Makefile.am, main.c: Integrate Windows search of config files. - - * confwin.c, confwin.h: config file search on Windows. - - * ppiwin.c: Change port value from lpt1alt to lpt3. Other - formatting changes. - - * windows/giveio.c: - Add giveio device driver source. Requires MS DDK to build. - - * windows/giveio.sys: Add giveio device driver binary. - - * giveio.sys, install_giveio.bat, remove_giveio.bat, status_giveio.bat: - Move Windows specific files. - - * windows/loaddrv.c, windows/loaddrv.h, windows/remove_giveio.bat: - * windows/status_giveio.bat, windows/install_giveio.bat: - Add Windows specific files. - - * main.c: Usage back to stderr. - -2003-02-22 Brian S. Dean - - * CHANGELOG: Add note about .avrduderc. - - * avr.c, avrdude.conf.sample, avrpart.h, config_gram.y, main.c, - * par.c, pgm.c, pgm.h: - Add the ability to read a per-user config file located at - $HOME/.avrduderc. Entries from .avrduderc take precedence over those - from the system wide config file in ${PREFIX}/etc/avrdude.conf. - - Track and display the config file name and line number when we print - out the available parts and programmers. This is useful in case - someone has overridden a definition in their .avrduderc file and is - wondering why the definition in the system wide config file is not - being used. - - Remove the default programmer 'stk500' from the distributed config - file. - - * CHANGELOG: Spelling. - -2003-02-21 Brian S. Dean - - * CHANGELOG: - Put some stuff in the CHANGELOG for this upcoming new version before I - forget. - - * main.c: - Update comment due to removal of the default parallel port pin config. - - * config.c, config.h, config_gram.y, lexer.l, main.c: - * avrdude.conf.sample: - Introduce 'default_programmer' to the config file instead of requiring - one of the programmers to be tagged "default" within its definition. - - Also, axe the notion of a compiled-in default programmer. It is - kind've pointless now that nearly all configuration comes from the - config file, thus, avrdude is not very useful without the config file, - and thus, having a programmer compiled-in offers little or no benefit. - -2003-02-21 Eric Weddington - - * main.c: Change usage text to be verbose. - - * giveio.sys: Add Windows parallel port device driver (binary). - - * install_giveio.bat, remove_giveio.bat, status_giveio.bat: - Windows batch files to work with giveio.sys. - -2003-02-21 Brian S. Dean - - * avrdude.conf.sample, config.c, config.h, config_gram.y, lexer.l: - * main.c: - Add port name defaults to the config file instead of hard-coding. - This adds 'default_parallel' and 'default_serial' keywords to the - grammar, which take quoted string arguments. - - * avrdude.conf.sample: - Document the recent additions to the config file. - - * stk500.c, avr.c, avrpart.h, config_gram.y, lexer.l, par.c: - Add the ability to specify which pin to pulse when retrying entry into - programming mode. Use 'retry_pulse' in the per-part specification - that can currently take values of 'reset' or 'sck', the default being - 'sck' which preserves the previous behaviour. Some newer parts - indicate that /RESET should be pulsed, while older parts say to pulse - SCK. - -2003-02-20 Eric Weddington - - * main.c, par.c: - Make verbose global. Make debug code in par_cmd() based on verbose=2. - -2003-02-20 Brian S. Dean - - * stk500.c: Fix pseudo/full parallel mode selection logic. - - * avrdude.conf.sample: - Woops, didn't really mean to commit those changes that slipped in with - the last commit. Those were just there for testing. - - * avr.c, avrdude.conf.sample, avrpart.h, config_gram.y, lexer.l: - * stk500.c: - Add 'serial' and 'parallel' keywords to the grammar so that one can - say whether parts support these programming modes or not. Possible - values for 'serial' are 'yes' or 'no'. Possible values for 'parallel' - are 'yes', 'no', or 'pseudo'. Add a bit mask of flags to the AVRPART - structure to capture these settings. Use these within - stk500_initialize() to set the device parameters correctly. - - Defaults for 'serial' and 'parallel' are 'yes' unless specified - otherwise. - -2003-02-20 Eric Weddington - - * Makefile.am, ppiwin.c: Get rid of CRs. - - * Makefile.am: Add ppiwin.c to avrdude_SOURCES. - - * ppiwin.c: Added ppiwin.c: Windows parallel port driver. - - * stk500.c: - Add error message for fail to enter programming mode. Fix typos. - -2003-02-20 Brian S. Dean - - * avr.c, avrdude.conf.sample, avrpart.h, config_gram.y, lexer.l: - Add a few parameters needed for parallel programming: assignment of - PAGEL and BS2 signals and the disposition of the reset pin - ('dedicated' or 'io'). - -2003-02-20 Theodore A. Roth - - * avrdude.1: Fix spacing for m169 entry. (tabs not spaces ;-) - -2003-02-20 Brian S. Dean - - * avrdude.1, fileio.c, main.c: Add Motorola S-record support. - - Submitted by: "Alexey V.Levdikov" - -2003-02-19 Theodore A. Roth - - * avrdude.1: Add m169 to list of supported targets. - -2003-02-19 Joerg Wunsch - - * avrdude.conf.sample, avrdude.1: - My colleague contributed a part definition for the AT90S2343. - - Submitted by: Mirko Kaffka - -2003-02-18 Theodore A. Roth - - * avrdude.conf.sample: - Add support for mega169. (tested with stk500 with 1.7 firmware) - - * avrdude.conf.sample: - Add commments to separate parts (makes it easier for the eye to parse). - -2003-02-15 Theodore A. Roth - - * Makefile.am: Add $srcdir to sample config filename so that - building in a separate dir works. - -2003-02-15 Joerg Wunsch - - * Makefile.am: - Only GNU make sets $< in non-inference rules, so rather explicitly - spell the source file(s) to remain compatible. - -2003-02-14 Theodore A. Roth - - * Makefile.am: Add distclean rule and EXTRA_DIST list to get 'make - distcheck' to succeed. - - These changes add basic support for a autoconf/automake based - build system. - - * .cvsignore: Ignore autoconf files. - * AUTHORS: New file. - * ChangeLog: New file. - * Makefile: Removed file. - * Makefile.am: New file. - * NEWS: New file. - * README: New file. - * bootstrap: New file. - * configure.ac: New file. - * avr.c: Include ac_cfg.h (generated by autoconf). - * config.c: Include ac_cfg.h. - Include config_gram.h instead of y.tab.h. - * config.h: If HAS_YYSTYPE is not defined, define YYSTYPE. - * config_gram.y: Include ac_cfg.h. - * fileio.c: Include ac_cfg.h. - * lexer.l: Include config_gram.h instead of y.tab.h. - * lists.c: Include ac_cfg.h. - * main.c: Include ac_cfg.h. - * par.c: Include ac_cfg.h. - * pgm.c: Include ac_cfg.h. - * ppi.c: Include ac_cfg.h. - * stk500.c: Include ac_cfg.h. - * term.c: Include ac_cfg.h. - -2003-02-14 Brian S. Dean - - * stk500.c: Fix typos. Fix error messages. - -2003-02-13 Brian S. Dean - - * Makefile, avrdude.conf.sample, config_gram.y, lexer.l, main.c: - * par.c, par.h, ppi.c, ppi.h, stk500.c: - Split higher level parallel port programmer code off from ppi.c into - its own file par.c, leaving low level parallel port accessor routines - in ppi.c to help with portability. Change the programmer type to - 'PAR' now instead of 'PPI' - 'PAR' represents the parallel port - programmer type. - - Be more liberal with 'static' function declarations within the - programmer implimentation files - these functions should never be - called directly - always use the programmer function references. - - There are still a few places in 'main.c' that directly reference the - parallel programmer explicitly (par_getpinmask). These should be - fixed somehow. - - Axe a few unused functions. - -2003-02-12 Theodore A. Roth - - * .cvsignore: New file. - - * stk500.c: Remove need for inttypes.h. - - * lexer.l: Define YY_NO_UNPUT to quell a compiler warning. - - * Makefile: Remove YACC assignment. - Add '-b y' options to YACC invocation. - Remove leading '-' from 'include .depend'. - -2003-02-12 Joerg Wunsch - - * config_gram.y: - Declare the internally used static functions on top, to get rid of the - compiler warnings. - - Reported by: bison-generated parsers - -2003-02-11 Theodore A. Roth - - * linux_ppdev.h: New file. - * ppi.c: Include system dependant parallel port interface file. - (ppi_open): Add call to ppi_claim(). - (ppi_close): Add call to ppi_release(). - * ppi.h: Define ppi_claim() and ppi_release() as NOPs if not previously - defined. - * stk500.c: Include inttypes header to quell compiler warning. - -2003-02-11 Joerg Wunsch - - * pgm.c, ppi.c, stk500.c: Fix some implicit declaration warnings. - - * config_gram.y: - Move the C declarations to the top of the file. While [b]yacc doesn't - care, bison does, and this is normally the way it's meant to be - anyway. - -2003-02-11 Theodore A. Roth - - * Makefile: Generate dependencies specific to the target system. - Explicitly use byacc. - - * Makefile: - Remove reference to avr-gcc in depend rule (cut & paste error). - -2003-02-09 Brian S. Dean - - * main.c, pgm.c, pgm.h, pindefs.h, ppi.c, ppi.h, stk500.c: - * stk500.h, stk500_private.h, term.c, term.h, CHANGELOG, COPYING: - * Makefile, avr.c, avr.h, avrdude.1, avrdude.conf.sample: - * avrdude.pdf, avrpart.h, config.c, config.h, config_gram.y: - * fileio.c, fileio.h, lexer.l, lists.c, lists.h: - Test commit in new public repository. Before this time this repo - existed on a private system. Commits made by 'bsd' on the old system - were made by Brian Dean (bdean on the current system). - -2003-02-08 Brian S. Dean - - * Makefile, avr.c, avr.h, avrdude.1, avrpart.h, config.c, - * config.h, config_gram.y, fileio.c, fileio.h, lexer.l, lists.c: - * lists.h, main.c, pgm.c, pgm.h, pindefs.h, ppi.c, ppi.h: - * stk500.c, stk500.h, term.c, term.h: - The last part of that last commit message should read: - - All others - modify program description. - - * Makefile, avr.c, avr.h, avrdude.1, avrpart.h, config.c: - * config.h, config_gram.y, fileio.c, fileio.h, lexer.l, lists.c: - * lists.h, main.c, pgm.c, pgm.h, pindefs.h, ppi.c, ppi.h: - * stk500.c, stk500.h, term.c, term.h: - Makefile: include a target to automatically generate the dependency - list. - - All others - -2003-02-06 Brian S. Dean - - * avrdude.1: Update license to GPL, permission by Joerg Wunsch. - - * lexer.l: Add GPL. - - * Makefile, config_gram.y: Add GPL to the Makefile and config_gram.y. - - * Makefile, stk500.h: - Add stk500.h as a dependency for stk500.c. Remove carraige returns - from stk500.h - don't know how those got in there (pointed out by Ted - Roth). - - * COPYING, avr.c, avr.h, avrpart.h, config.c, config.h, fileio.c: - * fileio.h, lists.c, lists.h, main.c, pgm.c, pgm.h, pindefs.h: - * ppi.c, ppi.h, stk500.c, stk500.h, term.c, term.h: - Re-license using the GNU GPL. Thanks to Ted Roth for the patch. - - * avr.c, avr.h, config.c, config.h, config_gram.y, fileio.c: - * fileio.h, lexer.l, lists.c, lists.h, main.c, pgm.c, pgm.h: - * pindefs.h, ppi.c, ppi.h, stk500.c, stk500.h, term.c, term.h: - Get rid of the verbose printing of individual file CVS version ids. - This was intended to be used for identifying code in the field for - incoming bug reports, but I've never really found it all that useful. - - * CHANGELOG, Makefile, Makefile.inc, avr.c, avrdude.1: - * avrdude.conf.sample, config_gram.y, lexer.l, main.c, stk500.c: - * term.c: - Change the name from AVRPROG to AVRDUDE. - - This change represents a name change only. There is currently an - effort to port AVRPROG to other platforms including Linux and Windows. - Since Atmel's programmer binary that's included within their AVR - Studio software is named AVRPROG.EXE on the Windows OS, there is the - chance for confusion if we keep calling this program AVRPROG as well. - Up until now the name hasn't really been a problem since there was no - chance to confuse 'avrprog' on Unix with Atmel's AVRPROG because - Atmel's tools only run on Windows. But with the Unix 'avrprog' - possibly being ported to Windows, I felt a name change was the best - way to avoid problems. - - So - from this point forward, my FreeBSD Unix program formerly - known as AVRPROG will subsequently be known as AVRDUDE (AVR - Downloader/UploaDEr). - - This change also represents a time when the AVRDUDE sources move from - my own private repository to a public repository. This will give - other developers a chance to port AVRDUDE to other platforms and - extend its functionality to support additional programming hardware, - etc. - - So goodbye AVRPROG, welcome AVRDUDE! diff --git a/ChangeLog-2004-2006 b/ChangeLog-2004-2006 deleted file mode 100644 index 879965bf..00000000 --- a/ChangeLog-2004-2006 +++ /dev/null @@ -1,1644 +0,0 @@ -2006-12-23 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version to 5.3cvs (again). - -2006-12-22 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version to 5.3.1. - * avrdude.conf.in (frank-stk200): Fix syntax error. - * ser_avrdoper.c: Make #ifdef for Win32/libhid - consistent with the initial check: use the HID driver - only iff found, otherwise use libusb. - -2006-12-21 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version to 5.3cvs. - -2006-12-21 Joerg Wunsch - - Released AVRDUDE 5.3. - -2006-12-21 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version to 5.3. - -2006-12-21 Joerg Wunsch - - Submitted by Vince VG: - * avrdude.conf.in (frank-stk200): New programmer added. - * doc/avrdude.texi: Mention frank-stk200. - Closes patch #5502: one other programmer - -2006-12-21 Joerg Wunsch - - Submitted by Christian Starkjohann: - * ser_avrdoper.c (usbOpenDevice): clear the error code when - returning successfully. - -2006-12-21 Joerg Wunsch - - Submitted by Christian Starkjohann: - patch #5507: Support for AVR-Doper USB programmer in HID mode - * configure.ac: Add hooks to detect the Win32 HID library, - as well as the existence of . - * Makefile.am: Add new files. - * my_ddk_hidsdi.h: (New file.) - * ser_avrdoper.c: (New file.) - * serial.h: Add declaration for avrdoper_serdev. - * stk500v2.c: Add hook to divert to the AVR Doper code. - * avrdude.1: Document the AVR Doper support. - * doc/avrdude.texi: (Ditto.) - -2006-12-15 Joerg Wunsch - - Submitted by ivanv at netman.ru - * jtagmkI.c: fix length for single-byte write operations. - Closes bug #18527 JTAG ICE: fuse bits have been writen incorrectly - -2006-12-11 Joerg Wunsch - - * jtagmkII.c (jtagmkII_paged_write): Remove a debugging - usleep(1000000) that accidentally crept in in rev 1.19. - -2006-12-11 Joerg Wunsch - - * ser_posix.c (ser_open): Do fill in fdp->ifd before already - using it in ser_setspeed(). - -2006-12-11 Joerg Wunsch - - * jtagmkI.c (jtagmkI_close): revert baud rate to the initial - value in case we had changed it. - Fixes bug #18262: JTAGMKI/JTAG1 Reset Bug - -2006-12-11 Colin O'Flynn - - * safemode.c: Stop ignoring return values! - Closes bug #18339 - -2006-12-11 Joerg Wunsch - - Submitted by Nick Lott: - * avrdude.conf.in: Fix signature for ATmega8515. - Closes bug #18348: ATMEGA8515 Signature is wrong in avrdude.conf - -2006-12-11 Joerg Wunsch - - * avr.c: Fix a bug introduced in rev. 1.69, when implementing the - fallback from each programmer's paged_load() or paged_write() - method, respectively. The return value needs to be checked for - being greater or equal than 0 rather equal to 0 in order to - assume the operation has been successful. - Fixes bug #18489: avrdude is too slow (20 byte/s) - -2006-12-11 Joerg Wunsch - - * avr910.c: Make the code compile warning-free: - - declare a dummy "struct timezone" for some Win32 systems (MinGW) - - fix a few printf() argument types - - get rid off the prevailing "all filedescriptors are of type int" - attitude - The last item required a large sweep across the code, in order to - replace all "int fd"s by "struct filedescriptor *fd"s, and pass - pointers (as we cannot pass a union directly). In return, the - code is now supposed to be fully 64-bit safe, rather than relying - on a 64-bit pointer being converted to a (32-bit) int and back - to a pointer as we did previously. - * butterfly.c: (Ditto.) - * jtagmkI.c: (Ditto.) - * jtagmkII.c: (Ditto.) - * lists.c: (Ditto.) - * par.c: (Ditto.) - * pgm.h: (Ditto.) - * ppi.c: (Ditto.) - * ppi.h: (Ditto.) - * ppiwin.c: (Ditto.) - * ser_posix.c: (Ditto.) - * ser_win32.c: (Ditto.) - * serbb_posix.c: (Ditto.) - * serbb_win32.c: (Ditto.) - * serial.h: (Ditto.) - * stk500.c: (Ditto.) - * stk500v2.c: (Ditto.) - * usb_libusb.c: (Ditto.) - -2006-11-23 Joerg Wunsch - - Implement EEPROM access through debugWire. - * jtagmkII.c: Extend the jtagmkII_read_byte() and - jtagmkII_write_byte() methods to handle EEPROM through - debugWire. - * avrpart.h: Implement the "flash instruction" parameter. - * config_gram.y: (Ditto.) - * lexer.l: (Ditto.) - * avrdude.conf.in: (Ditto.) - * avrdude.1: Document the EEPROM access through dW. - * doc/avrdude.texi: (Ditto.) - * tools/get-dw-params.xsl: Extend to extract the flash - instruction field. - -2006-11-23 Joerg Wunsch - - * avr.c (avr_read, avr_write): if the paged access returns a - failure, fall back to byte access. - -2006-11-21 Joerg Wunsch - - * jtagmkII.c: In jtagmkII_read_byte() and jtagmkII_write_byte(), - return an error upon failure now that the upper layers won't fall - back to the cmd() method anymore in that case. - -2006-11-21 Joerg Wunsch - - Implement debugWire programming support. - * avrpart.h: Implement debugWire support. - * config_gram.y: (Ditto.) - * jtagmkII.c: (Ditto.) - * jtagmkII.h: (Ditto.) - * lexer.l: (Ditto.) - * avrdude.conf.in: Add the new dW programmers. - * avrdude.1: Document the dW support. - * doc/avrdude.texi: (Ditto.) - * tools/get-dw-params.xsl: XSL stylesheet to extract the dW - parameters from the XML files. - -2006-11-20 Joerg Wunsch - - * jtagmkI.c (jtagmkI_close): remove two unused variables. - -2006-11-20 Joerg Wunsch - - * avr.c: Replace the fallback of avr_read_byte() and avr_write_byte() to - avr_read_byte_default() and avr_write_byte_default (resp.) by directly - calling the latter functions from within all programmers that don't - implement their own read_byte()/write_byte() methods. In turn, make the - read_byte() and write_byte() methods mandatory, and the cmd() method - (direct ISP command) optional instead (it's effectively mandatory for - any programmer using avr_read_byte_default()/avr_write_byte_default() - though). Remove all the pointless cmd() method stubs from those programmers - that don't need it. - Eliminate avr_read_byte() as it was now completely identical to - pgm->read_byte(). - * avr.h: (Ditto.) - * bitbang.c: (Ditto.) - * butterfly.c: (Ditto.) - * jtagmkI.c: (Ditto.) - * jtagmkII.c: (Ditto.) - * par.c: (Ditto.) - * pgm.c: (Ditto.) - * safemode.c: (Ditto.) - * serbb_posix.c: (Ditto.) - * serbb_win32.c: (Ditto.) - * stk500.c: (Ditto.) - * stk500v2.c: (Ditto.) - * term.c: (Ditto.) - * usbasp.c: (Ditto.) - -2006-11-13 Joerg Wunsch - - * jtagmkI.c: Avoid sending a CMD_RESET when leaving programming - mode, and CMD_GO when closing the connection. They cause the - activity LED on the ICE to continue to flicker, and are not - necessary anyway (the target starts to run by itself when leaving - programmng mode). - This is a partial fix for bug #18262: JTAGMKI/JTAG1 Reset Bug - -2006-11-12 Colin O'Flunn - - * avrdude.conf.in: Add read command for lockbits for Tiny2313. - Applies patch #5538 - -2006-11-10 Joerg Wunsch - - * avrdude.conf.in: Add signatures for ATmega325/3250/645/6450. - -2006-11-08 Joerg Wunsch - - * configure.ac: Preserve ${LDFLAGS} inherited from environment - for Win32 environments. - -2006-11-07 Joerg Wunsch - - * configure.ac: Don't pretend --enable-doc were the default. - -2006-11-02 Joerg Wunsch - - * avrdude.conf.in: Fix the width of the efuse memory area for a - number of AVRs. - Closes bug #18182: Wrong setting of eFuse configuration for - mega640/1280/1281/2560/2561 in avrdude 5.2 - -2006-11-01 Joerg Wunsch - - * avrdude.conf.in: Implement HVSP and PP modes for the AVR Dragon. - * config_gram.y: (Ditto.) - * jtagmkII.c: (Ditto.) - * jtagmkII_private.h: (Ditto.) - * lexer.l: (Ditto.) - * stk500v2.c: (Ditto.) - * stk500v2.h: (Ditto.) - * avrdude.1: Document the HVSP and PP support for the Dragon. - * doc/avrdude.texi: (Ditto.) - -2006-10-27 Joerg Wunsch - - * jtagmkI.c: Implement a flags field in struct serdev, and populate it - with a flag that indicates whether the underlying communication can - dynamically change its speed or not. This flag is set for true serial - communication but clear for USB communication. Don't try to adjust - the speed when talking over a communication channel that doesn't - support it. (The Dragon does not even support the respective parameter.) - * jtagmkII.c: (Ditto.) - * ser_posix.c: (Ditto.) - * ser_win32.c: (Ditto.) - * serial.h: (Ditto.) - * usb_libusb.c: (Ditto.) - -2006-10-26 Joerg Wunsch - - * avrdude.conf.in: Add support for the AVR Dragon (JTAG and ISP mode). - * config_gram.y: (Ditto.) - * jtagmkII.c: (Ditto.) - * jtagmkII.h: (Ditto.) - * lexer.l: (Ditto.) - * stk500v2.c: (Ditto.) - * stk500v2.h: (Ditto.) - * usbdevs.h: (Ditto.) - * avrdude.1: Document the AVR Dragon support. - * doc/avrdude.texi: (Ditto.) - -2006-10-09 Joerg Wunsch - - Released AVRDUDE 5.2. - -2006-10-09 Joerg Wunsch - - * configure.ac: Bump version to 5.2 - -2006-10-09 Joerg Wunsch - - Submitted by John Voltz: add AVR053 oscillator calibration. - * main.c: Add the -O option. - * pgm.c: Add the hook for the perform_osccal() method. - * pgm.h: (Ditto.) - * stk500v2.c: Implement perform_osccal(). - * avrdude.1: Document the -O option. - * doc/avrdude.texi: (Ditto.) - Partially closes bug #17487: AVR RC oscillator calibration - routine not supported (feature request) - -2006-10-09 Joerg Wunsch - - Submitted by freckle@sf.net: - * stk500.c (stk500_paged_write): Send the command and the data - payload within a single write(). - patch #5025: Improve stk500.c robustness - - Submitted by Matthias Ringwald: - * stk500.c (stk500_open): do not flush the serial line after - getting in sync with the programmer. - patch #5293: stk500.c: no drain after sync (-> allow BTnode - Bootloader to work on cygwin) - -2006-09-29 Joerg Wunsch - - * pgm.h: Fix prototype for gettimeofday(). - Closes bug #17884: another gettimeofday conflict under win32/cygwin - -2006-09-24 Joerg Wunsch - - Submitted by Thomas Fischl (initially): - * configure.ac: Add the CoreFoundation and IOKit framework - linker flags on MacOS X when configuring for USB support. - patch #4685: Libusb on MacOS X: detection and additional includes - -2006-09-20 Joerg Wunsch - - * avr910.c: As there is a lot of ambiguity about the AVR910 - device codes, allow the user to override the device code - verification with the -F option. - * main.c: Make ovsigck a global variable. - -2006-09-20 Joerg Wunsch - - Add the "stk500generic" programmer that auto-probes for STK500 - either firmware version 1 or 2. - * Makefile.am (avrdude_SOURCES): add the new files - stk500generic.c and stk500generic.h. - * avrdude.conf.in: Add the stk500generic programmer type, and - change the "stk500" entry to point to this programmer. - * config_gram.y: Add the stk500generic keyword. - * lexer.l: (Ditto.) - * stk500.c: Change the stk500v1 code to not call exit() - prematurely when failing to open the programmer, but instead - return an error status. - * stk500generic.c: (New file.) Stub programmer implementation. - Probe for either stk500v1 or stk500v2, and adjust the current pgm - appropriately. - * stk500generic.h: (New file.) Declare the public interface(s) - of stk500generic.c. - * doc/avrdude.texi: Document the changed behaviour of stk500. - -2006-09-18 Joerg Wunsch - - * avrdude.conf.in: Various fixes for ancient processors and their - capabilities. For the AT90S1200 and the AT90S8515, fuse bit - handling via ISP, and lock bit reading via ISP are not supported - at all. For the AT90S4414 (small brother of the AT90S8515), add - the ability to write the lock bits, and add a definition for the - fuse bits (usable for HV programming). For the AT90S2313, add the - "fuse" memory range, so it's available for HV programming. - - Resolves bug #17796: avrdude will not program or verify lockbits - with Atmel STK protocol programmers - -2006-09-17 Joerg Wunsch - - Submitted by Thomas Fischl: - * usbasp.c: Check for USBasp with new as well as old VID/PID - pair, warn the user about upgrading the firmware in case an - old one has been found. - * usbasp.h: Add new VID/PID. - -2006-09-15 Joerg Wunsch - - * avrdude.conf.in: Fix some mistakes for the ATtinyX61 family: - . high fuse has 8 bits - . there is an extended fuse (just one bit) - . the calibration area is only 1 byte - -2006-09-12 Joerg Wunsch - - * doc/avrdude.texi: Convert some of the tables to multitables - in order to beautify the result. - -2006-09-10 Joerg Wunsch - - Contributed by Thomas Fischl: add support for USBasp. - patch #4686: Add support for USBasp, a simple USB programmer - * usbasp.c: New file, implement the USBasp driver. - * usbasp.h: New file, interface declarations for USBasp. - * Makefile.am: Wire the new files into the build. - * avrdude.conf.in: Add the usbasp programmer entry. - * config_gram.y: Add the usbasp token. - * lexer.l: (Ditto.) - * avrdude.1: Document the USBasp programmer. - * doc/avrdude.texi: (Ditto.) - -2006-09-08 Joerg Wunsch - - * main.c: Implement -U filename as a shorthand for - -U flash:w:filename:a. - * avrdude.1: Document this. - * doc/avrdude.texi: (Ditto.) - -2006-09-08 Joerg Wunsch - - Implement numerical output formats for decimal, hexadecimal, - octal, and binary numbers. - Closes bug #16129: more output formats for fuse bits - (avrdude enhancement request) - * fileio.c: Implement fileio_num() and the itoa_simple() - helper function. - * fileio.h: Add new file formats to FILEFMT. - * main.c: Parse the new file formats. - * avrdude.1: Document all this. - * doc/avrdude.texi: (Ditto.) - -2006-09-08 Joerg Wunsch - - * fileio.c: CPP statements start in column #1. - * stk500v2.c: Hide two debug/trace statements behind "verbose". - -2006-09-07 Joerg Wunsch - - * avrdude.1: Describe how to disable the DWEN fuse. - * doc/avrdude.texi: (Ditto.) - -2006-09-07 Joerg Wunsch - - * jtagmkII.c: Translate numerical response codes to strings. - -2006-09-07 Joerg Wunsch - - * avrdude.1: The avr109 programmer type no longer chokes on - a wrong avr910 device ID, so remove that description. - * doc/avrdude.texi: (Ditto.) - -2006-09-07 Joerg Wunsch - - * jtagmkII.c: When failing to start in ISP mode, try - debugWire instead. This requires the user to eventually - restart AVRDUE from scratch then. - -2006-09-06 Joerg Wunsch - - Add support for the JTAG ICE mkII in ISP mode. - * avrdude.conf.in (jtag2isp): New programmer entry. - * config_gram.y: Add K_JTAG_MKII_ISP. - * jtagmkII.c: Restructure and export some more functions. - * jtagmkII.h: Declare exported functions. - * jtagmkII_private.h: Prepare file to be included in stk500v2.c. - * lexer.l: Add jtagmkii_isp token. - * stk500v2.c: Implement glue to jtagmkII.c. - * stk500v2.h: Declare stk500v2_jtagmkII_initpgm(). - * avrdude.1: Document the new programmer support. - * doc/avrdude.texi: (Ditto.) - -2006-09-01 Joerg Wunsch - - * main.c: Add date and time of compilation to the verbose - greeting message. - Idea taken from patch #3172: Adds date and time of compile - to usage message - -2006-09-01 Joerg Wunsch - - Contributed by as - patch #4372: Better synchronization for stk500 - * stk500.c: Sync three times, and drop any noise inbetween. - -2006-09-01 Joerg Wunsch - - * avrdude.conf.in (ATtiny261, ATtiny461, ATtiny861): new - entries. - -2006-09-01 Joerg Wunsch - - * butterfly.c: Remove the device support decision based on - the old AVR910 device codes; we've got signature verification - now so better rely on that. - * avr910.c: Revert the signature bytes returned, as it already - happened in butterfly.c. This closes bug #14998: Signature Bytes - read in wrong order (avr910 mode) - -2006-09-01 Joerg Wunsch - - Submitted by Wim Lewis. - * serbb_posix.c: Improve error handling. - patch #4923: Better error reporting for serial-bitbang programmers - -2006-08-31 Joerg Wunsch - - * avrdude.conf.in: Introduce a "stk500v1" entry, so we - can switch the default "stk500" to "stk500v2" some day. - -2006-08-31 Joerg Wunsch - - The major part of this change has been contributed by - . - Implements patch #4635: Add support for terminal/console - servers for serial programmers - * ser_posix.c: Add net_open(), and divert to it for net:host:port. - * ser_win32.c: Recognize net:host:port, and bail out. - * avrdude.1: Document the net:host:port connection option. - * doc/avrdude.texi: (Ditto.) - -2006-08-31 Joerg Wunsch - - Fix for bug #16627: Butterfly programmer does not reset after - programming - * butterfly.c: Wait for the device's response after sending - an "E" command. - -2006-08-31 Joerg Wunsch - - Tentative fix for bug #16156: Problem with Si-Prog - * serbb_posix.c: Disable reset before closing. - * serbb_win32.c: (Ditto.) - -2006-08-30 Joerg Wunsch - - Rewrite the serbb code so the pin numbering matches the - DB9 connector, and fix some related bugs in serbb_posix.c. - Closes bug #16265: dasa2 does not work under posix - * avrdude.conf.in: New serbb pin numbering; added "siprog" - as an alias for "ponyser". - * serbb_posix.c: New pin numbering, fix some confusion. - * serbb_win32.c: New pin numbering. - The generic and Posix-related parts of these changes have - been contributed by Hanns-Konrad Unger - -2006-08-30 Joerg Wunsch - - Contributed by the anonymous developer of patch #5096: - * avrdude.conf.in (blaster): Add an entry for the Altera - byteblaster. - -2006-08-30 Joerg Wunsch - - Rework the exit specs so they actually work again. It should be - possible to extend them for other programmers than PPI now (serbb, - stk500*). - * pgm.h: Keep the exit specs in an abstract form inside struct - programmer_t. (Should be moved out into some programmer-specific - structure.) Rename the getexitspecs() method into - parseexitspecs(). - * main.c: Move the exit specs stuff out to the programmer - implementation. - * par.c: Implement the new exit spec handling. Everything is now - done using the generic abstraction layer. - Closes bug #16443: No disable Resetsignal at the end of - Programming Session - Obviates need for patch #5057: quick and dirty Hack to unset Reset - after Programming - -2006-08-29 Joerg Wunsch - - This patch has been contributed by an anonymous developer - via the patch tracking system. - patch #5096: Allow VCC and BUFF to be any pin in parallel mode - * config_gram.y: Release the restriction to PPIDATA pins. - * par.c: Rework the code to introduce a function par_setmany() - that builds on top of par_setpin(), and use that function for the - PPI_AVR_VCC and PPI_AVR_BUFF pin collections. This also abstracts - the polarity of these signals appropriately. - -2006-08-28 Joerg Wunsch - - Contributed by Ned Konz: - * ser_posix.c: Open the serial port with O_NONBLOCK, and - save and restore the port state before exiting. - patch #5008: Patch for (5.1) ser_posix.c for O_NONBLOCK open - and restoring serial port state on close - Closes bug #12622: avrdude hangs on macosx/darwin with PL-2303 - usb-to-serial and Butterfly - -2006-08-22 Joerg Wunsch - - * bitbang.c: Move the bitbang prerequisite checks out from - main() into their own bitbang_check_prerequisites(). - * bitbang.h: (Ditto.) - * main.c: (Ditto.) - * par.c: (Ditto.) - * serbb_posix.c: (Ditto.) - * serbb_win32.c: (Ditto.) - -2006-08-22 Joerg Wunsch - - * avrdude.conf.in: Add page mode parameters for all "eeprom" - memory definitions that are organized in pages. - * avr.c (avr_write_byte_default): Consider using the loadpage - instructions only if the respective memory is marked "paged". - Closes bug #17199: EEPROM fails verification on ATmega645 with - pony-stk200 hardware - Closes bug #16849: EEPROM write fails for AT90USB1287 with - mode 0x41 - Closes bug #15146: stk500v2_paged_write: loadpage instruction - not defined for part - -2006-08-22 Joerg Wunsch - - * doc/avrdude.info (-c): Change "avrispmk2" into "avrisp2" as that - is the programmer actually supported by avrdude.conf.in. - Closes bug #15677: documentation mentions wrong programmer-id - "avrispmk2" - -2006-08-21 Joerg Wunsch - - * avrdude.conf.in: Fix various AVR910 device codes. Add the code - tables from both, AVR910 and AVR109. Change avr910_devcode of - the ATtiny2313 to 0x5e (ATtiny26). - Closes bug #16671: Tiny2313 avr910_devcode is bad - Closes bug #15826: avr910 device type for ATmega8 wrong - -2006-08-21 Joerg Wunsch - - * avrdude.conf.in: Add (rather conservative) write delay timing - values to the *fuse and lock memory spaces of all devices where - they have been missing. Add the lock memory space to the ATmega48 - section. - Closes bug #14920: tiny2313 fuses and AVRDUDE 5.0 - Closes bug #15751: atmega48: no lock bits defined - -2006-08-21 Joerg Wunsch - - * avrdude.conf.in: Fix the size of the calibration memory space - for ATtiny13, ATmega64, ATmega16, ATmega32, ATmega8535, ATtiny25, - ATtiny45, ATtiny85. - Closes bug #17383: Wrong calibration section in avrdude.conf... - -2006-08-21 Joerg Wunsch - - * avrdude.conf.in (ATmega324): Correct the pagesize from 256 to - 128. - This closes bug #16410: ATMega164/324/644 cannot be programmed - -2006-08-20 Joerg Wunsch - - * configure.ac: Check for gettimeofday(). - * ppiwin.c (gettimeofday): Define gettimeofday() replacement - only if !defined(HAVE_GETTIMEOFDAY); use correct protype. - -2006-08-18 Joerg Wunsch - - * stk500v2: Minor cosmetic changes: STK500 firmware version - numbers are M.NN, so always display the minor number as two - digits. Examine the response to the sign-on command to see which - programmer hardware we are talking to, and then restrict the - STK500 topcard display to devices detected as STK500. - -2006-08-18 Joerg Wunsch - - * Makefile.am: Add a dist-hook, and make it remove lexer.c, - config_gram.c, and config_gram.h from the source distribution - archive. These files are supposed to be generated on the target - system. - Closes bug #15536: avrdude-5.1 compilation fails on Gentoo/amd64 - -2006-08-17 Joerg Wunsch - - * stk500v2.c: unreverse the argument order for - CMD_CHIP_ERASE_HVSP; Atmel says AVR068 is right, and - stk500.exe is wrong. - * configure.ac (AC_CHECK_LIB[usb]): Fix the generation - of HAVE_LIBUSB in ac_cfg.h. - -2006-08-17 Joerg Wunsch - - Submitted by Neil Davey: - patch #4539: Ability to control the bit clock (usleep) delay - for ppi interface - * bitbang.c: Implement bitbang_delay() and its calibration. - * bitbang.h: Declare bitbang_delay(). - * main.c: Add the ispdelay option (-i). - * pgm.h (struct programmer_t): Add the ispdelay parameter. - * par.c: Add calls to bitbang_delay() when requested. - * serbb_posix.c: (Ditto.) - * serbb_win32.c: (Ditto.) - * avrdude.1: Document the new -i option. - * doc/avrdude.texi: (Ditto.) - -2006-08-14 Joerg Wunsch - - Submitted by : - * avrdude.conf.in (ATmega48, ATmega88, ATmega168): patch #5100: - mega88 EEPROM support (extended for ATmega48 and ATmega168 - jw). - -2006-08-14 Joerg Wunsch - - Submitted by : - * stk500v2.c (stk500v2_open): patch #5273: Emit error message - if user requests usb and no libusb support - -2006-08-14 Joerg Wunsch - - * avrdude.conf.in: Add HVSP/PP mode parameters for all AVRs. - -2006-08-13 Joerg Wunsch - - * tools: New directory. - * tools/get-hv-params.xsl: New file, extract high-voltage - programming parameters from Atmel XML files, and produce - an avrdude.conf[.in] snippet. - -2006-08-11 Joerg Wunsch - - * configure.ac (AC_CHECK_LIB([usb]): implement a private LIBUSB - macro to add this library to, to prevent it from being - automatically linked to all binaries. This should fix the Win32 - build of loaddrv. - * Makefile.am (avrdude_LDADD): add LIBUSB here. - -2006-08-10 Eric B. Weddington - - Contributed by Bob Paddock - * avrdude.conf.in: Patch #4780. Provide support for mega325, - mega3250, mega645, mega6450. - -2006-08-10 Joerg Wunsch - - * avrdude.conf.in (ATtiny11): fix the HVSP control stack, - add delay values required for flash and EEPROM. - * stk500v2.c: reverse the argument order for - CMD_CHIP_ERASE_HVSP; AVR068 and stk500.exe differ here. - -2006-08-09 Joerg Wunsch - - * stk500v2.c (stk500v2_program_enable): Fix a typo - (synchloops vs. synchcycles). - -2006-08-04 Joerg Wunsch - - * avrdude.conf.in: Add parallel programming definitions for - the ATmega8/48/88/168. - -2006-07-22 Joerg Wunsch - - * avrdude.conf.in: Add the ATtiny11, an HVSP-only device. - -2006-07-21 Joerg Wunsch - - Implement STK500 (v2) HVSP mode. - * stk500v2.c: Add new functions for HVSP support. - * stk500v2.h: Add prototype for the stk500hvsp programmer. - * avrpart.h: Add fields to struct avrpart for new features. - * config_gram.y: Extend the configuration syntax for new - features required for HVSP support. - * lexer.l: (Ditto.) - * avrdude.conf.in: Add HVSP support for ATtiny13 and - ATtiny45 as an example. - * avrdude.1: Document stk500hvsp. - * doc/avrdude.texi: (Ditto.) - -2006-07-21 Joerg Wunsch - - * avrpart.c: Print the very verbose memory details only - in debug level > 4. - -2006-07-19 Joerg Wunsch - - * stk500v2.c: Add more parameters for PP mode. Fix the - non-paged write operations for old AVRs. - * lexer.l: Add more parameters for PP mode. - * config_gram.y: (Ditto.) - * avrpart.h: (Ditto.) - * avrdude.conf.in: Use the new PP mode parameters; add PP mode - definitions for AT90S8515. - * avrdude.1: Document the stk500pp support. - * doc/avrdude.texi: (Ditto.) - -2006-07-19 Joerg Wunsch - - * stk500v2.c: Hide stk500v2_set_sck_period_mk2() behind an #if - defined(HAVE_LIBUSB) as it is only used there (for the AVRISP - mkII). - -2006-07-17 Joerg Wunsch - - * stk500v2.c: Fix all bugs in stk500pp. Eliminate pagebuf, and - use a stack-allocated buffer instead, as the pagesize can be at - most 256 for all current AVRs anyway. - -2006-07-17 Joerg Wunsch - - * main.c: Use mem->desc in place of upd->memtype in more places to - give the full name of the respective memory area, instead of - the (possibly abbreviated) name the user typed in the -U option. - -2006-07-16 Joerg Wunsch - - First stab at an implementation of the STK500 parallel programming - feature (v2 firmware only), named "stk500pp". Still not yet - complete: EEPROM writes not working, documentation missing, only - ATmega16 parameters available in avrdude.conf.in, some parameters - not yet implemented. - * avrdude.conf.in: Add sample parameters for PP mode to ATmega16. - * avrpart.h: Add the parallel programming control parameters. - * avrpart.c: (Ditto.) - * config_gram.y: Add stk500pp configuration grammar. - * lexer.l: Add stk500pp token recognition. - * stk500v2.h: Add declaration for stk500pp_initpgm(). - * stk500v2.c: Add stk500pp implementation. - -2006-07-11 Joerg Wunsch - - * avrdude.conf.in: Fix the signatures for the - ATmega164/324 devices. - -2006-07-10 Joerg Wunsch - - * avrdude.conf.in: Enter the signatures for the - ATmega164/324/644 devices. - -2006-05-25 Joerg Wunsch - - * stk500v2.c: Implement extended addressing needed - for the ATmega256x devices. - * avrdude.1: Document ATmega256x support. - * doc/avrdude.texi: Document ATmega256x support. - Also document Solaris port defaults. - -2006-05-24 Joerg Wunsch - - * avr.c: Start implementing support for ATmega256x; - jtag2 and bitbang programmers are working, stk500v2 - still needs to be done. - * avrdude.conf.in: (Ditto.) - * avrpart.c: (Ditto.) - * avrpart.h: (Ditto.) - * config_gram.y: (Ditto.) - * lexer.l: (Ditto.) - -2006-04-18 Joerg Wunsch - - Contributed by Julius Luukko : - * avrdude.conf.in: Add the "ere-isp-avr" programmer. - -2006-04-13 Joerg Wunsch - - * par.c: Add logic to negate parallel-port signals in - avrdude.conf using a tilde. - - Contributed by Bram Daams: - * avrdude.conf.in: Add the "atisp" programmer entry that - makes use of negated signals. - -2006-03-28 Joerg Wunsch - - * avrdude.conf.in: Add entries for AT90USB{64,128}{6,7} - -2006-03-23 Colin O'Flynn - - Contributed by Wim Lewis, fix a few typos (patch #4987) - * avrdude.1: Typo fix - -2006-02-27 Colin O'Flynn - - Contributed by Wim Lewis, add support for checking device - signatures in detail (patch #4924 and #4925) - * avrdude.conf.in: Add signatures - * avrpart.c: Set default signature - * avrpart.h: Variable for signature - * config_gram.y: More signature reading - * lexer.l: Define that signatures exist - * main.c: Read signatures and check them against hardware - -2006-02-21 Joerg Wunsch - - * avrdude.conf.in: Fix paged flash write for AT90PWMx - (error in datasheet). - -2006-01-23 Joerg Wunsch - - * configure.in: Bump version. - -2006-01-17 Colin O'Flynn - - * main.c: Fixed a typo in safemode variable names, fixed bug 15113 - * avrdude.conf.in : Added BS2 and pagel to M162, Patch 4766 - * main.c, stk500v2.c: Added patch 4804 from eolson@mit.edu - Which stops sck from being writtend needlessly - -2006-01-13 Joerg Wunsch - - Contributed by David Moore: add support for the - AVRISP mkII device. (Savannah patch #4789.) - * serial.h: Declare usb_serdev_frame device descriptor. - * stk500v2.c: Implementation of the AVRISP mkII handling. - * usb_libusb.c: Add USB handling for short-frame delimited - AVRISP mkII USB protocol; add distinction of different - devices in usbdev_open(). - * jtagmkII.c: Tell usbdev_open() to search for the JTAG ICE mkII. - * usbdevs.h: (New file.) - * Makefile.am: Add usbdevs.h, as well as some other forgotten - files "make distcheck" complained about. - * avrdude.conf.in: Add more aliases for the AVRISP mkII. - * avrdude.1: Document how to use the AVRISP mkII. - * doc/avrdude.texi: (Ditto.) - -2006-01-12 Joerg Wunsch - - * avrdude.conf.in: Add EEPROM page instructions for the - ATmega169 so it will work for STK500v2. - -2005-12-16 Joerg Wunsch - - * avrdude.conf.in: Added support for ATtiny24/44/84. - -2005-12-05 Colin O'Flynn - - * avrdude.conf.in: Added m162 support for stk500v2 - -2005-12-01 Joerg Wunsch - - * avrdude.conf.in: fix the number of significant bits for - the efuse memory in ATmega48/88/168; the datasheet is a bit - off here as well. - -2005-11-29 Joerg Wunsch - - * avrdude.1: update for JTAG ICE mkI support. - * doc/avrdude.texi: (Ditto.) - -2005-11-29 Joerg Wunsch - - Submitted by Galen Seitz: - patch #4459: Fix for rpm package builds - * avrdude.spec.in: update the RPM spec file: - - Default to enable-doc=yes during configure. - - Move info file to docs package. - - Make building of docs package conditional. Basic - idea copied from avr-gcc. - -2005-11-29 Joerg Wunsch - - Submitted by someone who thinks he's called "Daper": - Fix bug #15013: Wrong use of PPICLAIM (kernel: ppdev0: claim the - port first) - * par.c: don't claim/release here (thus win_ppdev.h not needed - anymore) - * ppi.c: claim/release here. - * freebsd_ppi.h: ppi_claim/ppi_release now take an fd as parameter. - * solaris_ecpp.h: (Ditto.) - * linux_ppdev.h: (Ditto.) (Also add copyright.) - * win_ppdev.h: Not needed anymore, remove. - -2005-11-28 Joerg Wunsch - - * jtagmkI.c: Improve the communication startup with the ICE. - -2005-11-28 Joerg Wunsch - - * configure.ac: enable parport access on x86_64 Linux and - FreeBSD systems. - -2005-11-27 Joerg Wunsch - - * avrdude.conf.in: add the "calibration" space to ATmega16. - -2005-11-25 Colin O'Flynn - - Fixed bug 15051, building for Windows breaks. - * par.c: ppi_claim and ppi_release definitions now in a Windows header file - * ppi.c: Only included if you are building for Windows - * win_ppdev.h: Initial Commit, see par.c - -2005-11-24 Joerg Wunsch - - Add basic support for the Atmel JTAG ICE mkI: - * config_gram.y: add mkI support to config sytax. - * lexer.l: (Ditto.) - * avrdude.conf.in: add sample programmer entries. - * jtagmkI.c: New file - * jtagmkI.h: New file - * jtagmkI_private.h: New file - * Makefile.am: include new files in build. - -2005-11-24 Colin O'Flynn - - Fix bug 14681 - Serial Communication Fails on -vvvv with Windows - * ser_win32.c: Patched with Brian Dean's patch - -2005-11-05 Colin O'Flynn - - Patch #4532 by Manfred Bartz - * avrdude.conf.in: added support for ATMega168 (also added support - for the stk500v2 protocol which was not in the patch). - -2005-11-03 Joerg Wunsch - - Add ecpp(7D) (parallel port) for Solaris. - * configure.ac: add Solaris' default parallel port. - * linux_ppdev.h: change parallel port access to the new style. - * freebsd_ppi.h: New file, abstract FreeBSD's ppi(4). - * solaris_ecpp.h: New file, abstract Solaris' ecpp(7D). - * par.c: change header inclusion sequence. - * pgm.h: remove obsolete ppi_claim() and ppi_release() dummies. - * ppi.c: change header inclusion sequence, use new parport - abstraction, drop obsolete dummy implementation. - -2005-11-02 Joerg Wunsch - - * config.h: change YYSTYPE to be a single word, to work around - a bug in Solaris' yacc. - * lexer.l: remove incompatibilities with Solaris' default lex, - bump resource limits for lex. - -2005-11-01 Joerg Wunsch - - Make avrdude Solaris-compatible. - * Makefile.am: distclean avrdude.conf. - * avrdude.conf.in: make the parallel-port programmers optional. - * bitbang.c: move the bitbang features out into PROGRAMMER. - * configure.ac: introduce --enable-parport, add Solaris. - * lexer.l: replace str by strng to work around problems in some - versions of flex. - * main.c: move getexitspecs into the respective programmer's - domain; replace rindex by the C-standard strrchr. - * par.c: make parallel port optional. - * par.h: everything but par_initpgm() is private now. - * pgm.h: add setping/getping/highpulsepin/getexitspecs. - * serbb_posix.c: generalize bitbang interface; replace - cfmakeraw() by explicit code. - * serbb_win32.c: generalize bitbang interface. - -2005-10-20 Joerg Wunsch - - * butterfly.c: fix yet another sign extension bug. - -2005-10-14 Joerg Wunsch - - * avrdude.conf.in (ATmega8515): fix size of calibration - memory. - -2005-10-09 Joerg Wunsch - - * avrdude.conf.in: add support for ATmega640/1280/1281. - * avrdude.1: document the above. - * doc/avrdude.texi: (Ditto.) - -2005-09-27 Joerg Wunsch - - * doc/avrdude.texi: Polish up the docs a bit. Use smallexample - instead of example for wide tty output. Document a trick to - find out about the serial numbers of all JTAG ICEs attached - to USB. - -2005-09-26 Joerg Wunsch - - * jtagmkII.c (jtagmkII_paged_write): default the page size early so the - buffer will be allocated correctly. - * usb_libusb.c: fix libusb handling; now it works with libusb-win32 as - well. - -2005-09-21 Joerg Wunsch - - * main.c(do_op): use mem->desc in place of upd->memtype to - give the full name of the respective memory area, instead of - the (possibly abbreviated) name the user typed in the -U option. - -2005-09-21 Joerg Wunsch - - * main.c: Add the forgotten -B option to the option string in - getopt(); sort the -s option into order. - -2005/09/21 Brian S. Dean - - * avr.c: - * main.c: - * safemode.c: - * safemode.h: - * term.h: - This is Colin O'Flynn's mega patch for updating safemode support: - - * add support for parts with just 'fuse' memory - - * if any fuse memories are altered, reflect those changes in the - post-programming safemode check so that safemode no longer - complains about fuses which were intentionally altered; this - eliminates the need to completely disable safemode using -u in - order to program fuses. - - * provide -s option which will not ask to restore fuses, it will - just do it - -2005-09-19 Joerg Wunsch - - * butterfly.c (butterfly_initialize): make the device code unsigned so - it wouldn't sign-extend when >= 0x80. - -2005-09-18 Joerg Wunsch - - Add the serial bit-bang driver, contributed by Juliane Holzt. - * bitbang.h: New file. - * bitbang.c: New file. - * serbb.h: New file. - * serbb_posix.c: New file. - * serbb_win32.c: New file. - * Makefile.am: Include new files. - * config_gram.y: Add serbb to configuration language. - * lexer.l: (Ditto.) - * par.c: Centralize bit-bang code in bitbang.c. - * par.h: Declare newly published functions. - * pgm.h (struct programmer_t): Add a flag field for private use - by the programmer. - * pindefs.h: Add definitions for negated serbb pins. - * avrdude.conf.in: Add serbb programmers ponyser, dasa, and dasa3. - * avrdude.1: Document serbb code. - * doc/avrdude.texi: (Ditto.) - -2005/09/18 Brian S. Dean - - * avrdude.conf.in: Patch #4078: add VCC pin definition for DAPA - programmer. - -2005/09/18 Brian S. Dean - - * avr910.c: This is patch #3277 which appears to fix a number of - issues with the avr910 programmer. - - Fixes the following problems with paged writes in avr910.c: - - failure to re-set address after page writes; - - no polling or delay after page writes; - - no page writes when not using auto-increment; - - an extraneous page write when data ends on page boundary. - -2005-09-17 Joerg Wunsch - - * avrdude.conf.in: Fix the poll values for the ATmega103's EEPROM - so they eventually match the XML file. - This fixes bug #7492: EEPROM writing fail on atmega103 with - atavrisp - -2005-09-17 Joerg Wunsch - - * avrdude.conf.in: The ATmega128 has four oscillator calibration - bytes, not only a single one. - This closes bug #11496: Memory bank calibration on atmega128 - should have 4 bytes - -2005/09/17 Brian S. Dean - - * avrdude.1: - Document -q -q. Expand a little on the description of the 'part' - command. - -2005/09/16 Brian S. Dean - - * fileio.c: - * main.c: - Implement -q -q to be very very quiet. - -2005/09/16 Brian S. Dean - - * avrdude.conf.in: - Add DAPA programmer. - -2005/09/16 Brian S. Dean - - * avrdude.conf.in: - * stk500v2.c: - This fixes EEPROM access using the STK500V2 programmer, partially - undoing part of a previous general fixup commit. Choose the correct - read/write operations with the stk500v2 program function - the correct - one depends on the memory type. EEPROM is byte addressable so uses - read/write. FLASH is word addressable and so uses read_lo/write_lo. - -2005-09-16 Joerg Wunsch - - * avrdude.1: document the memtypes for -U - * doc/avrdude.texi: (Ditto.) - Closes bug #13501: should be listed in the man page - -2005-09-16 Joerg Wunsch - - * doc/Makefile.am: add logic to detect the misf^H^H^H^H - gratitous API change in recent versions of texi2html where - the output directory has changed names. - Fix for: - bug #13026: The build fails with texi2html 1.76 - bug #12715: make issues during install - patch #3091: commandline fix for latest version of texi2html - -2005-09-16 Joerg Wunsch - - * usb_libusb.c (usbdev_drain): actually implement draining to aid - synchronizing against a JTAG ICE in weird state. - -2005-09-16 Joerg Wunsch - - * butterfly.c: improve the butterfly initialization so it is more likely - to synchonize; [bug #9787: avrdude 4.4.0 correct butterfly interface] - -2005-09-14 Joerg Wunsch - - * jtagmkII.c (jtagmkII_paged_load): return the number of bytes read. - This makes EEPROM block reads work again. - -2005-09-14 Joerg Wunsch - - * avrdude.conf.in: add a jtag2slow programmer alias, and make - "jtag2" default to 115200 Bd. - * doc/avrdude.texi: document the above changes. - -2005/09/14 Brian S. Dean - - * avrdude.conf.in: - Change bit 0 of the ATmega169 efuse 'write' opcode from 'x' (ignore) - to 'i' (input). Even though this bit should be ignored, it should not - be changed. The 'x' setting sets the bit to zero which programs it - and could cause undefined behaviour. Setting to 'i' enables it to be - rewritten to its old value. - - A better solution might be to read the fuse byte, apply the new value - while leaving the 'x' bit alone, then writing the value back. The - current fix is a workaround which allows the developer to change the - bit as desired. - -2005-08-30 Joerg Wunsch - - * usb_libusb.c: Consistently use unsigned char for buffers. - -2005-08-29 Brian S. Dean - - * avr910.c: Eliminate compiler warnings. GCC 4.x elicits many - signedness warnings when passing unsigned char * when char * is in - the prototype and vice versa. Clean these up along with a few - others. - * butterfly.c: (Ditto.) - * jtagmkII.c: (Ditto.) - * safemode.c: (Ditto.) - * safemode.h: (Ditto.) - * ser_posix.c: (Ditto.) - * serial.h: (Ditto.) - * stk500.c: (Ditto.) - * stk500v2.c: (Ditto.) - -2005-08-28 Joerg Wunsch - - * avrdude.conf.in: Add support for the ATtiny25/45/85. Note that - only the ATtiny45 appears to have a complete XML description right - now. - * avrdude.1: Mention all the recently added device support: AT90PWM2/3, - ATmega164/324/644, ATmega329x/649x, ATtiny25/45/85. - * doc/avrdude.texi: (Ditto.) - -2005/08/28 Brian S. Dean - - * avrdude.conf.in: - * stk500v2.c: - This is patch # 4338, obsoletes patch #4327, provides fixes for bugs - #13693, #13871, and #14212. - - This provides bug fixes to the STK500V2 programmer type. - - - incorrect token used from avrdude.conf.in - - wrong command sent to programmer, hence no write to eeprom. - - programmer was said to start writing at 0x0000 and continue - page by page and was not repositionned when a gap was found - in the hex file, or when the hex file start address was not - 0x0000. Hence the verify procedure was correct, not the - write procedure. - - speed up of flash write to skip empty pages (full of 0xFF) - by re-enabling a dedicated function for that task. - - stk500v2_paged_load() was not returning the number of byte - read, so empty hex files were generated when reading memory. - -2005-08-17 Joerg Wunsch - - * avrdude.conf.in: fix the EEPROM size for ATmega329x/649x. - -2005-08-16 Joerg Wunsch - - * avrdude.conf.in: Add support for the AT90PWM2/3. - -2005-07-27 Joerg Wunsch - - (This work has been done as part of a contract with Atmel, Dresden.) - * butterfly.c: Implement full support for AVR109 boot loaders. - * avrdude.conf.in: add avr109 and avr911 as alias for butterfly. - * avrdude.1: Document the AVR109 addition. - * doc/avrdude.texi: (Ditto.) - -2005-07-26 Brian S. Dean - - * main.c: - Don't call exit() directly here - set the exit value and jump to the - main_exit: label to ensure the programmer is released correctly. - - * stk500v2.c: - The stk500v2_getsync() function was improperly checking for success, - thus it was falsely reporting that it failed when it was actually - working correctly. Fixed. - -2005-07-25 Joerg Wunsch - - * usb_libusb.c: Catch benign errors when reading the serial #. - -2005-06-19 Joerg Wunsch - - * Makefile.am: Implement libusb-base USB transport for the - JTAG ICE mkII. - * configure.ac: ditto. - * jtagmkII.c: ditto. - * ser_posix.c: ditto. - * ser_win32.c: ditto. - * serial.h: ditto. - * usb_libusb.c: ditto (New file). - * avrdude.1: document the USB transport. - * doc/avrdude.texi: ditto. - -2005-06-15 Joerg Wunsch - - * avrdude.conf.in: The AT90CAN128 has AllowFullPageBitstream = no. - -2005-06-14 Joerg Wunsch - - * avrdude.conf.in: Add support for the ATmega164/324/644. - * jtagmkII.c: If enter_progmode fails with RSP_ILLEGAL_JTAG_ID, give - the user a hint that the JTAGEN fuse might be unset. - -2005-06-11 Joerg Wunsch - - * avrdude.conf.in: Add support for the ATmega329x/649x. - -2005-05-27 Joerg Wunsch - - * jtagmkII.c: fix a signedness bug when shifting bits; when - discarding a packet for being overly long, restart the state - machine instead of attempting to drop a preposterous amount - of data. - -2005-05-19 Joerg Wunsch - - * avrdude.1: - * doc/avrdude.texi: Document that the JTAG ICE mkII code currently - cannot write to flash one byte at a time. Also mention the bug - tracker interface on savannah. - -2005/05/14 Brian S. Dean - - * configure.ac: - * main.c: - Update version for beta release and copyright message. - Change the default port to 'serial' for the newly added serial - programmers stk500v2 and jtagmkii. - -2005-05-10 Joerg Wunsch - - * Makefile.am: - * avr910.c: - * avrdude.1: - * avrdude.conf.in: - * avrpart.c: - * avrpart.h: - * butterfly.c: - * config_gram.y: - * crc16.c: - * crc16.h: - * jtagmkII.c: - * jtagmkII.h: - * jtagmkII_private.h: - * lexer.l: - * main.c: - * pgm.h: - * serial.h: - * ser_posix.c: - * ser_win32.c: - * stk500.c: - * stk500v2.c: - * stk500v2.h: - * stk500v2_private.h: - * doc/avrdude.texi: - - Mega-commit to bring in both, the STK500v2 support from Erik - Walthinsen, as well as JTAG ICE mkII support (by me). - - Note that for the JTAG ICE, I did change a few things in the - internal API. Notably I made the serial receive timeout - configurable by the backends via an exported variable (done in - both the Posix and the Win32 implementation), and I made the - serial_recv() function return a -1 instead of bailing out with - exit(1) upon encountering a receive timeout (currently only done - in the Posix implementation). Both measures together allow me to - receive a datastreem from the ICE at 115 kbps on a somewhat lossy - PCI multi-UART card that occasionally drops a character. The JTAG - ICE mkII protocol has enough of safety layers to allow recovering - from these events, but the previous code wasn't prepared for any - kind of recovery. The Win32 change for this still has to be done. - -2005/02/11 Brian S. Dean - - * main.c: - Exit non-zero if safe-mode reverts fuse bits that were requested on - the command-line. - - Variable declarations must only appear at the beginning of a block. - -2005/02/10 Brian S. Dean - - * avrdude.1: - Document -u option to disable safe mode. - -2005/02/10 Brian S. Dean - - * configure.ac: - doc/Makefile is now dependent on whether or not doc is enabled. - -2005/02/10 Brian S. Dean - - * Makefile.am: - * configure.ac: - Disable the doc build by default; the tools needed to build - doc are either not available on all systems or are at best - inconvenient to build and install. The doc can still be built, one - just needs to specify --enable-doc at configure time. - -2005-01-24 Colin O'Flynn - - * main.c: Add "safe mode". Fuse settings will be restored at the end - of a programming session unless the -u switch is specified. - * safemode.c: New file. Safe mode support. - * safemode.h: New file. Safe mode support. - * Makefile.am: Add new files. - * doc/avrdude.texi: Document new Safe Mode feature and switch. - -2004/12/22 Brian S. Dean - - * avrdude.conf.in: - Add support for "Xilinx JTAG cable". Contributed by: - Tymm - - Add support for the AT90CAN128. Not sure if all the instruction - encoding is correct, specifically the address bits don't exactly match - those of the preliminary datasheet that I have, but I don't see how - they could be right. Tested with STK500 and it works there. - Instruction encodings have not been tested due to lack of a parallel - port on my Mac development box. - -2004-07-19 Theodore A. Roth - - * avrdude.1: Remove reference to ppi programmer schematic. - * configure.ac (AC_INIT): Set version to "4.4.0cvs". - -2004-07-18 Theodore A. Roth - - * AVRDUDE 4.4.0 has been released (cvs release tag is "release_4_4_0"). - -2004-07-18 Theodore A. Roth - - * Makefile.am (EXTRA_DIST): Remove avrdude.pdf since it is no longer - supplied. - * NEWS: Fix typo. - * bootstrap: Delete the autom4te.cache dir before running the - autotools. - * configure.ac (AC_INIT): Set version to 4.4.0. - -2004-07-17 Jan-Hinnerk Reichert - - * avrdude.1: Fixed obvious copy and paste error - (Patch #3199 contributed by Galen Seitz) - -2004-07-15 Theodore A. Roth - - * main.c (main): Don't indent CPP directives. - When showing update progress in a no tty situation, use unbuffered IO - for all systems, not just win32 native. - Update copyright year when printing version. - Remove warning about native win32 being experimental. - Split a line string. - * ppiwin.c: Update copyright year. - Add cvs Id keyword. - (usleep): Cleanup debug CPP directives to improve readability. - * ser_win32.c: Include to fix failing build. - -2004-07-08 Theodore A. Roth - - * AUTHORS: Add names of recent major contributors. - * ser_win32.c: Assign copyright to Martin J. Thomas since he did all - real work on this file. - -2004-07-07 Jan-Hinnerk Reichert - - * NEWS, doc/TODO: Updated NEWS and TODO - -2004-07-07 Jan-Hinnerk Reichert - - * stk500.c, term.c, doc/avrdude.texi, avrdude.1: - added "sck"-command to the terminal mode. - This command allows slowing down of the SCK of - STK500-programmers. - -2004-07-05 Jan-Hinnerk Reichert - - * *.c, *.h: Removed unnecessary includes of - config.h - -2004-07-04 Jan-Hinnerk Reichert - - * avr.h: Removed some unused prototypes - -2004-07-04 Jan-Hinnerk Reichert - - * stk500.c: Fixed fosc behaviour for values exceeding - maximum frequency (contributed by Galen Seitz) - -2004-07-04 Jan-Hinnerk Reichert - * avrdude.conf.in: Added support for - ATtiny2313 (contributed by Bob Paddock) - -2004-06-25 Joerg Wunsch - - * avrdude.conf.in: Fix efuse bits for ATmega169. - -2004-06-24 Alex Shepherd - - Merged in Win32 Native changes contributed by Martin Thomas - Changed all instances of __CYGWIN__ conditional compilation to - WIN32NATIVE - - * ser_win32.c: fleshed out all the previous stubs - * ser_posix.c: added WIN32NATIVE conditional compilation to skip - all function to allow ser_win32.c functions to operate - * ppi.h: removed commented code - * pgh.h: added usleep macros - * main.c: stdout,stderr tweaks for Win32 - * configure.ac: added CFLAGS and LDFLAGS for Win32Native - * config_gram.y: added strtok_r macro - * buterfly.c: added various stub functions and EXIT processing - * avr910.c: added return 0 to avr910_open() and included time headers - * term.c: added warning about libreadline not supported in WIN32NATIVE - -2004-06-17 Jan-Hinnerk Reichert - - * avrdude.conf.in: Added support for - - tiny13 (contributed by Pawel Moll) - - mega48 and mega88 (contributed by Galen Seitz) - However, the STK500-code for mega8 remains unchanged. - -2004-05-19 Brian S. Dean - - * main.c: - * stk500.c: Allow the baud rate to be specified on the command - line with a new -b switch. The specified baud rate will - override the default serial port baud rate for a particular - programmer. - -2004-05-19 Brian S. Dean - - * ppi.c: Stub-out the ppi_* functions in ppi.c with empty - wrappers that simply return an error code in order to build - successfully on MacOS X. This allows avrdude to work on MacOS - X and was tested using a USB<->RS232 cable adapter, - specifically Keyspan model USA-19HS. - -2004-04-23 Joerg Wunsch - - * lists.h, lists.c: Drop LISTSZ and the check for - it in lcreat(). - -2004-04-17 Jan-Hinnerk Reichert - - * avr910.c: Hopefully fixed that weird "first byte not - programmed"-error in a good way (previous fix was not - working with all firmwares) - -2004-02-10 Jan-Hinnerk Reichert - - * avrdude.1, doc/avrdude.texi, doc/TODO: - Removed the deprecated options from documentation - -2004-02-10 Jan-Hinnerk Reichert - - * main.c: Removed deprecated options. - -2004-01-28 Jan-Hinnerk Reichert - - * pgm.c, main.c, avr910.c, butterfly.c, stk500.c: - Changed default for powerup, powerdown and LED-commands - to do nothing and return OK. Then removed these commands - from avr910, butterfly and stk500. - * pgm.c: Fixed wrong type for default_open introduced by - the cleanup yesterday. - -2004-01-29 Jan-Hinnerk Reichert - - * par.c: changed order of port-read/writes in par_txrx(). - This change should increase immunity to delays in the - programmer-hardware. - Also did some unrelated cleanup in par_txrx(). - -2004-01-28 Jan-Hinnerk Reichert - - * pgm.[ch], main.c, par.c, avr910.c, butterfly.c, stk500.c: - Move save/restore-functionality into open/close. - * par.c: open/close now saves/restores PPICTRL, too. - * TODO: exitspecs don't work if RESET is in PPICTRL. - -2004-01-26 Theodore A. Roth - - * configure.ac (AC_INIT): Post release version update. - -2004-01-26 Theodore A. Roth - - * AVRDUDE 4.3.0 has been released (cvs release tag is "release_4_3_0"). - -2004-01-26 Theodore A. Roth - - * configure.ac: Update copyright year. - (AC_INIT): Set version to 4.3.0. - -2004-01-25 Theodore A. Roth - - * ChangeLog: Minor formatting cleanups. - Move to all 2003 entries to ChangeLog-2003. - * ChangeLog-2003: New file. - * Makefile.am: Update copyright year. - (EXTRA_DIST): Add ChangeLog-2003. - -2004-01-17 Jan-Hinnerk Reichert - - * doc/avrdude.texi: Get rid of those black boxes marking "overfull - hbox". - -2004-01-17 Jan-Hinnerk Reichert - - * doc/avrdude.texi: New appendix "Troubleshooting". - -2004-01-12 Jan-Hinnerk Reichert - - * avr910.c, avrpart.c, avrpart.h, doc/TODO: - Look up devicecode and report device. - -2004-01-03 Jan-Hinnerk Reichert - - * avr910.c, pgm.c, pgm.h, config_gram.y, lexer.l: Add new configuration - parameter baudrate to support avr910-programmers with non-standard - baudrates. - * avrdude.conf.in, doc/avrdude.texi: Added "baudrate" to documentation. - -2004-01-03 Jan-Hinnerk Reichert - - * avr910.c: Removed debugging stuff that is no longer needed. - -2004-01-03 Jan-Hinnerk Reichert - - * doc/TODO: Removed two items. - -2004-01-03 Jan-Hinnerk Reichert - - * main.c, avr.c, avr.h, par.c, stk500.c: Add function - avr_chip_erase() to unify handling of cycle-count. - Makes cycle-count work for avr910-programmers. - diff --git a/ChangeLog-2007 b/ChangeLog-2007 deleted file mode 100644 index 3514da7e..00000000 --- a/ChangeLog-2007 +++ /dev/null @@ -1,364 +0,0 @@ -2007-11-08 Joerg Wunsch - - * main.c: Partially revert the line buffered output change, - and turn stderr into unbuffered output while producing the - progress report. - -2007-11-07 Joerg Wunsch - - * main.c: Add setup and teardown hooks to the programmer - definition. If present, call the setup hook immediately after - finding the respective programmer object, and schedule the - teardown hook to be called upon exit. This allows the - programmer implementation to dynamically allocate private - programmer data. - * pgm.c: (Ditto.) - * pgm.h: (Ditto.) - * avr910.c: Convert static programmer data into dynamically - allocated data. - * butterfly.c: (Ditto.) - * jtagmkI.c: (Ditto.) - * jtagmkII.c: (Ditto.) - * stk500v2.c: (Ditto.) - * usbasp.c: (Ditto.) - * usbtiny.c: (Ditto.) - -2007-11-06 Joerg Wunsch - - * butterfly.c: Remove the no_show_func_info() calls, as Brian - promised some 4 years ago. - -2007-11-06 Joerg Wunsch - - * main.c: Add the -x option to pass extended parameters to - the programmer backend. - * pgm.c: (Ditto.) - * pgm.h: (Ditto.) - * jtagmkII.c: Implement the extended parameter jtagchain= - to support JTAG daisy-chains. - * avrdude.1: Document all of the above. - * doc/avrdude.texi: (Ditto.) - -2007-10-30 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version for post-release. - -2007-10-29 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version, releasing avrdude-5.5. - -2007-10-29 Joerg Wunsch - - Submitted by : - patch #5007: Patch for line-buffering of stdout and stderr - * main.c: call setvbuf() for stdout and stderr. - -2007-10-29 Joerg Wunsch - - Submitted by : - patch #5953: Add AT90CAN64 and AT90CAN32 to avrdude.conf - * avrdude.conf.in: Add entry for AT90CAN64 and AT90CAN32. - -2007-10-29 Joerg Wunsch - - Submitted by Wolfgang Moser: - patch #6121: ISP support for the C2N232I device (serial port - bitbanging) - * avrdude.conf.in: Add entry for c2n232i. - -2007-10-29 Joerg Wunsch - - Submitted by : - patch #6141: accept binary format immediate values - * fileio.c: Detect a 0b prefix, and call strtoul() differently - in that case. - -2007-10-29 Joerg Wunsch - - bug #21076: -vvvv serial receive prints are empty in Win32 build - * ser_win32.c (ser_recv): Drop the essentially unused variable - "len", and use the variable "read" in order to track how many - bytes have just been read in. - -2007-10-29 Joerg Wunsch - - bug #21145: atmega329p not recognized - * avrdude.conf.in: Add definitions for the ATmega329P/3290P. - Same as ATmega329/3290 except of the different signature. - -2007-10-29 Joerg Wunsch - - bug #21152: Unable to program atmega324p with avrdude 5.4 and AVRISP - using default configuration file. - * avrdude.conf.in: Uncomment the (bogus) stk500_devcode lines for - the ATmega164P, ATmega324P, ATmega644, and ATmega644P definitions. - This only affects users of STK500v1 firmware. - -2007-10-29 Joerg Wunsch - - Submitted by : - Patch #6233: Add support for USBtinyISP programmer - * usbtiny.c: New file. - * usbtiny.h: (Ditto.) - * Makefile.am: Include usbtiny into the build. - * avrdude.conf.in: (Ditto.) - * config_gram.y: (Ditto.) - * lexer.l: (Ditto.) - * avrdude.1: Document the usbtiny support. - * doc/avrdude.texi: (Ditto.) - -2007-10-29 Joerg Wunsch - - * doc/avrdude.texi: Sort list of supported programmers into - alphabetical order, add all missing programmers. - -2007-07-24 Thomas Fischl - - * usbasp.c: Added long addresses to support devices with more - than 64kB flash. Closes bug #20558: Long address problem with - USBasp. - -2007-06-27 Joerg Wunsch - - * Makefile.am (EXTRA_DIST): Add ChangeLog-2004-2006. - -2007-05-16 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version for post-release. - -2007-05-16 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version, releasing avrdude-5.4. - -2007-05-16 Joerg Wunsch - - * avrdude.conf.in: Fix AVR910 devcodes. It seems that the AVR109 - listing refers to "BOOT"-type code, while the standard codes are - different (usually one below). - -2007-05-16 Joerg Wunsch - - * avr.c (avr_read, avr_write): only use the paged_load and - paged_write backend functions iff the memory area in question has - a page_size != 0. - This is supposed to fix bug #19234: avrdude-5.3.1 segfaults when - stk500v1 tries to program an ATtiny15 - -2007-05-15 Joerg Wunsch - - * avr910.c: Fall back to avr_{read,write}_byte_default(). Fixes - bug #18803: Fuse reading regression in avrdude 5.3.1 with avr910 - programmer - -2007-05-15 Colin O'Flynn - - * avrdude.conf.in: Rename the ATmega164 and ATmega324 into - ATmega164P and ATmega324P, resp. Add an entry for the ATmega644P. - Fixes bug #19769: ATmega164p not recognized - -2007-05-15 Joerg Wunsch - - * ser_posix.c (ser_send): Don't select() on the output fd before - trying to write something to the serial line. That kind of - polling isn't very useful anyway, and it seems it breaks for the - Linux CP210x USB<->RS-232 bridge driver which is certainly a bug - in the driver, but we can just avoid that bug alltogether. - -2007-05-15 Joerg Wunsch - - * avrdude.conf.in: Fix the STK500v2 ISP delay parameter for - ATmega640/1280/1281/2560/2561. Atmel has changed the XML - files after the initial release. - -2007-05-01 Colin O'Flynn - - * safemode.c: -Oops - bug in verbose output. Fixed. - -Fixed handling of cases where programmer cannot read fuses (AVR910) - * main.c: -Also fixing handling of cases where programmer cannot - read fuses - This should close one or more bugs (18803, 19570) - -2007-05-01 Colin O'Flynn - - * safemode.c: Added verbose output from safemode routines. - -2007-03-25 Colin O'Flynn - - * stk500generic.c: Forgot to close the serial port before trying to - open it again, caused problems on Windows machines. - Closes bug #19411 - -2007-02-26 Joerg Wunsch - - * avrdude.conf.in: Add the AT90PWM2/3B devices. - -2007-02-02 Thomas Fischl - - * usbasp.c: Changed return value of function usbasp_initialize to stop - avrdude on communication errors between programmer and target. - Closes bug #18581: safemode destroys fuse bits - -2007-02-01 Joerg Wunsch - - * config_gram.y: Remove duplicate definition of token K_WRITEPAGE - -2007-01-30 Joerg Wunsch - - * butterfly.c: Implement ATmega256x support for butterfly/avr109. - -2007-01-30 Joerg Wunsch - - * configure.ac: Fix subdir handling. Now finally, "make - distcheck" will include the documentation into the tarball even if - the configure had been run without the --enable-doc. - -2007-01-30 Joerg Wunsch - - * safemode.c: Obtain progname from avrdude.h rather than trying to - roll our own (duplicate) copy of it. - * avr910.c: Constify char pointers. - * avrpart.c: (Ditto.) - * avrpart.h: (Ditto.) - * butterfly.c: (Ditto.) - * config.c: (Ditto.) - * config.h: (Ditto.) - * jtagmkI.c: (Ditto.) - * jtagmkII.c: (Ditto.) - * par.c: (Ditto.) - * pgm.c: (Ditto.) - * pgm.h: (Ditto.) - * serbb_posix.c: (Ditto.) - * serbb_win32.c: (Ditto.) - * stk500.c: (Ditto.) - * stk500v2.c: (Ditto.) - * usbasp.c: (Ditto.) - -2007-01-29 Joerg Wunsch - - * avrpart.c: More backend/library abstraction and generalization: - turn the list_parts() and list_programmers() functions into - general list iteration functions that call a caller-supplied - callback for each element. Implement list_parts() and - list_programmers() as private functions in main.c based on that - approach. - * avrpart.h: (Ditto.) - * main.c: (Ditto.) - * pgm.c: (Ditto.) - * pgm.h: (Ditto.) - -2007-01-25 Joerg Wunsch - - * Makefile.am: Rearrange everything so it is now built into a - libavrdude.a library, and link main.c against that library. - * configure.ac: Add AC_PROG_RANLIB as we are building a library - now. - -2007-01-24 Joerg Wunsch - - Major code cleanup. - - Make all internal functions "static". - - Make sure each module's header and implementation file match. - - Remove all library-like functionality from main.c, so only - the actual frontend remains in main.c. - - Add C++ brackets to all header files. - * avr.c: (Ditto.) - * avr.h: (Ditto.) - * avr910.c: (Ditto.) - * avr910.h: (Ditto.) - * avrdude.h: (Ditto.) - * avrpart.c: (Ditto.) - * avrpart.h: (Ditto.) - * bitbang.h: (Ditto.) - * butterfly.h: (Ditto.) - * config.c: (Ditto.) - * config.h: (Ditto.) - * confwin.h: (Ditto.) - * crc16.c: (Ditto.) - * crc16.h: (Ditto.) - * fileio.c: (Ditto.) - * fileio.h: (Ditto.) - * jtagmkI.h: (Ditto.) - * jtagmkII.h: (Ditto.) - * lexer.l: (Ditto.) - * lists.h: (Ditto.) - * main.c: (Ditto.) - * par.h: (Ditto.) - * pgm.c: (Ditto.) - * pgm.h: (Ditto.) - * ppi.c: (Ditto.) - * ppi.h: (Ditto.) - * safemode.h: (Ditto.) - * serbb.h: (Ditto.) - * serial.h: (Ditto.) - * stk500.h: (Ditto.) - * stk500v2.c: (Ditto.) - * stk500v2.h: (Ditto.) - * term.c: (Ditto.) - * term.h: (Ditto.) - * usbasp.h: (Ditto.) - * update.c: New file. - * update.h: New file. - * Makefile.am: Include update.c and update.h. - -2007-01-24 Joerg Wunsch - - Move all "extern" declarations into a centreal header file. - * Makefile.am: Add new avrdude.h. - * avrdude.h: New file. - * avr.c: Replace private extern decl's by #include "avrdude.h". - * avr910.c: (Ditto.) - * avrpart.c: (Ditto.) - * bitbang.c: (Ditto.) - * butterfly.c: (Ditto.) - * config.c: (Ditto.) - * config_gram.y: (Ditto.) - * fileio.c: (Ditto.) - * jtagmkI.c: (Ditto.) - * jtagmkII.c: (Ditto.) - * lexer.l: (Ditto.) - * main.c: (Ditto.) - * par.c: (Ditto.) - * pgm.c: (Ditto.) - * ppi.c: (Ditto.) - * ppiwin.c: (Ditto.) - * ser_avrdoper.c: (Ditto.) - * ser_posix.c: (Ditto.) - * ser_win32.c: (Ditto.) - * serbb_posix.c: (Ditto.) - * serbb_win32.c: (Ditto.) - * stk500.c: (Ditto.) - * stk500generic.c: (Ditto.) - * stk500v2.c: (Ditto.) - * term.c: (Ditto.) - * usb_libusb.c: (Ditto.) - * usbasp.c: (Ditto.) - -2007-01-13 Joerg Wunsch - - * avrdude.conf.in (ATmega8): Bump the delay values for flash - and EEPROM, based on the current Atmel XML file. - -2007-01-12 Joerg Wunsch - - * configure.ac: Improve the detection of the Win32 HID library, - and the presence of the header ddk/hidsdi.h. It now works - correctly under Cygwin and several flavours of MinGW. - * Makefile.am: Add new LIBHID pattern. - -2007-01-11 Joerg Wunsch - - * butterfly.c (butterfly_initialize): when sending the 'T' - command (which is ignored by current AVR109 bootloaders), - send the first reply from the list of supported device - codes back rather than using avrdude.conf's idea about - an AVR910 device code. Apparently, this solves disagreements - between different versions of at least the ATmega8 AVR910 - device code. - Closes bug #18727: Writing flash failed - -2007-01-07 Joerg Wunsch - - Reported by Till Harbaum: - * avrdude.conf.in (ATtiny25/45/85): Change HVSP reset from - 500 microseconds to 1 ms, matching the most recent Atmel XML - specs. diff --git a/ChangeLog-2008 b/ChangeLog-2008 deleted file mode 100644 index f43a10ab..00000000 --- a/ChangeLog-2008 +++ /dev/null @@ -1,185 +0,0 @@ -2008-11-20 Joerg Wunsch - - * avrdude.h: Change the prototype for usleep() to be more Cygwin- - friendly. - * ppiwin.c: (Ditto.) - -2008-11-06 Joerg Wunsch - - Submitted by limor - * usbtiny.c (usbtiny_cmd): Replace sizeof() by a fixed constant - 4 for the result array, because otherwise it would take the size - of a pointer which miserably fails on 64-bit machines. - -2008-11-05 Joerg Wunsch - - patch #6609: Using PCI parallel port cards on Windows - * ppiwin.c (ppi_open): If the port parameter passed from the - -p option is neither lpt1/2/3, try interpreting it directly as - a base address. - * avrdude.1: Document the change. - * doc/avrdude.texi: (Ditto.) - -2008-11-04 Joerg Wunsch - - bug #22882: Erase Cycle Counter does not work for stk500v2 - * stk500v2.c (stk500v2_chip_erase,stk500hv_chip_erase): Return - the expected 0 for success rather than a protocol-dependant - number. - -2008-11-04 Joerg Wunsch - - bug #22883: Chip Erase performed even with no-write flag (-n) - * main.c: Do not erase the chip if both, -e and -n options have - been specified. - -2008-11-04 Joerg Wunsch - - bug #24589: AT90USB64* have wrong signature - * avrdude.conf.in: Uncomment the correct, and delete the wrong - signature for AT90USB646/647. Alas, the datasheet has never been - corrected for years. - -2008-10-31 Joerg Wunsch - - * jtagmkII.c: Fix a serious memory corruption that happened when - using the JTAG ICE mkII (or AVR Dragon) in ISP mode. The wrong - set of per-programmer private data had been allocated (stk500v2 - vs. jtagmkII) which was too small to hold the actual data. - * jtagmkII.h: (Ditto.) - * stk500v2.c: (Ditto.) - -2008-07-29 Joerg Wunsch - - * jtagmkII.c: Implement Xmega JTAG support. - * jtagmkII_private.h: Add EMULATOR_MODE_JTAG_XMEGA. - -2008-07-29 Joerg Wunsch - - * main.c: Remember whether the device initialization worked, and - allow to continue with -F if it failed yet do not attempt to - perform anything on the device itself. That way, -tF could be - specified for programmers like the STK500/STK600 even without a - device connected, just in order to allow changing parameters on - the programmer itself. - * avrdude.1: Document that possible use of the -F option. - * doc/avrdude.texi: (Ditto.) - -2008-07-29 Joerg Wunsch - - * stk500v2.c (stk600_xprog_paged_write): Fix a fatal miscalculation - of the number of bytes to be written which caused a malloc chunk - corruption. - -2008-07-27 Joerg Wunsch - - First implementation of ATxmega support. By now, only the - PDI mode of the STK600 is supported. Single-byte EEPROM - (and flash) updates do not work yet. - * avr.c: "boot" memory is a candidate memory region for paged - operations, besides "flash" and "eeprom". - * avrdude.conf.in: add ATxmega128A1 and ATxmega128A1revD - * avrpart.h: add the AVRPART_HAS_PDI flag (used to distinguish - ATxmega parts from classic AVRs), the nvm_base part field, and - the offset field for a memory region. - * config_gram.y: add "has_pdi", "nvm_base", and "offset" - * lexer.l: (Ditto.) - * main.c: disable auto_erase for ATxmega parts - * stk500v2.c: implement the XPROG functionality, and divert to - this for ATxmega parts - * avrdude.1: Document the changes. - * doc/avrdude.texi: (Ditto.) - -2008-07-25 Joerg Wunsch - - Fix a bunch of warnings. - * avr910.c (avr910_paged_load): possible unitialized use of - rd_size - * jtagmkI.c (jtagmkI_initialize): pointer signedness mixup - * jtagmkII.c (jtagmkII_print_parms1): propagate const'ness - of parameter - * usbasp.c (usbasp_transmit): pointer signedness mixup - * ser_avrdoper.c (usbGetReport): remove useless pointer deref - -2008-07-25 Joerg Wunsch - - Contributed by Ville Voipio: - patch #6501: New autotools support for avrdude - * Makefile.am: add @WINDOWS_DIRS@ to SUBDIR - * bootstrap: allow for autconf-2.61 and automake-1.10, too - * configure.ac: fix @WINDOWS_DIRS@ recursion, replace - AC_PROG_CC by AM_PROG_CC_C_O, for esoteric reasons - -2008-06-13 Joerg Wunsch - - Contributed by Janos Sallai : - patch #6074: added support for crossbow's MIB510 programmer - * avrdude.conf.in: Add entry for mib510. - * stk500.c: Add special hooks to handle the MIB510 programmer. - It mostly talks STK500v1 protocol but has a special hello and - goodbye sequence, and uses a fixed block size of 256 bytes. - * doc/avrdude.texi: Document support for mib510. - -2008-06-07 Joerg Wunsch - - Contributed by Klaus Leidinger : - * main.c: Realign verbose messages. - * avrpart.c: (Ditto.) - * avr910.c: Print the device code selected in verbose mode. - * butterfly.c: (Ditto.) - -2008-06-07 Joerg Wunsch - - Contributed by Klaus Leidinger : - Add check for buffermode feature, and use it if present. Can be - turned off using -x no_blockmode. - * avr910.c: Implement buffermode test and usage. - * avrdude.1: Document -x no_blockmode. - * doc/avrdude.texi: (Ditto.) - -2008-03-24 Joerg Wunsch - - * usb_libusb.c: #undef interface for Win32 - -2008-03-24 Joerg Wunsch - - * avr910.c: Add support for the -x devcode option. - * avrdude.1: Document -x devcode for avr910. - * doc/avrdude.texi: (Ditto.) - -2008-03-14 Joerg Wunsch - - Add initial support for the Atmel STK600, for - "classic" AVRs (AT90, ATtiny, ATmega) in both, - ISP and high-voltage programming modes. - * Makefile.am: Add -lm. - * avrdude.conf.in: Add stk600, stk600pp, and stk600hvsp. - * config_gram.y: Add support for the stk600* keywords. - * lexer.l: (Ditto.) - * pgm.h: Add the "chan" parameter to set_varef(). - * stk500.c: (Ditto.) - * serial.h: Add USB endpoint support to struct filedescriptor. - * stk500v2.c: Implement the meat of the STK600 support. - * stk500v2.h: Add new prototypes for stk600*() programmers. - * stk500v2_private.h: Add new constants used in the STK600. - * term.c: Add AREF channel support. - * usb_libusb.c: Automatically determine the correct write - endpoint ID, the STK600 uses 0x83 while all other tools use - 0x82. Propagate the EP to use through struct filedescriptor. - * usbdevs.h: Add the STK600 USB product ID. - * tools/get-stk600-cards.xsl: XSL transformation for - targetboards.xml to obtain the list of socket and routing - card IDs, to be used in stk500v2.c (for displaying the - names). - * tools/get-stk600-devices.xsl: XSL transformation for - targetboards.xml to obtain the table of socket/routing cards - and their respective AVR device support for doc/avrdude.texi. - * avrdude.1: Document all the STK600 stuff. - * doc/avrdude.texi: Ditto. Added a new chapter for - Programmer Specific Information. - -2008-01-26 Joerg Wunsch - - * stk500v2.c (stk500v2_recv): Make length computation unsigned so - it cannot accidentally become negative. - diff --git a/ChangeLog-2009 b/ChangeLog-2009 deleted file mode 100644 index 1f993cbc..00000000 --- a/ChangeLog-2009 +++ /dev/null @@ -1,411 +0,0 @@ -2009-11-09 David Hoerl - - * fileio.c: ihex2bin did not properly handle files > 64K bytes - * usb_libusb.c: re-enabled usb_reset for Macs (no reset causes lots of failures) - * avrdude.1: spacing issue for avr32 fixed. - -2009-11-09 Michal Ludvig - - * buspirate.c: Implemented reset= and speed= extended parameters. - * avrdude.1: Document the change. - -2009-11-04 Michal Ludvig - - * configure.ac, Makefile.am: Test if GCC accepts -Wno-pointer-sign - -2009-11-04 Michal Ludvig - - * buspirate.c: Implemented 'BinMode' support for - firmware 2.7 and higher. - * avrdude.1: Added info about BusPirate. - -2009-11-03 Michal Ludvig - - * arduino.c: Add on to bug #26703 / patch #6866 - clear DTR/RTS - when closing the port. - * Makefile.am: Silent warnings about signedness - they're useless - and annoying, especially for 'char' vars. - -2009-10-22 David Hoerl - - * usb_libusb.c: disabled usb_reset for Macs (same as FreeBSD) - -2009-10-12 Michal Ludvig - - * main.c: Re-added default to serial port for BusPirate. - -2009-10-12 David Hoerl - - * main.c: removed some avr32 code that was pushed into jtagmkII.c - * jtagmkII.c: consolodated the avr32 reset code and avr32_chipreset - * avrpart.h: modified AVRPART flags for avr32 - * lexer.l: added is_avr32 flag - only way to get yacc code to set flag - * avrdude.conf.in: updated avr32 section to include "is_avr32" flag - -2009-10-12 David Hoerl - - * config_gram.y: Restored inadvertantly removed buspirate entry - * lexer.l: Restored inadvertantly removed buspirate entry - -2009-10-12 Michal Ludvig - - * buspirate.c: Replace GNU-only %as with %s in sscanf call. - * ser_win32.c(ser_set_dtr_rts): Fixed typo in parameter name. - * NEWS: Announce BusPirate. - -2009-10-11 David Hoerl - - Support for AVR32 - - * AUTHORS: added myself - * NEWS: announced AVR32 support - * main.c: AVR32 flag tests to avoid several code blocks - * fileio.c: mods to ihex read function to handle address offsets and - size of avr32 - * jtagmkI.c: added cast to printf call to remove warning - * arduino.c: added header file to bring in prototype for usleep() - * config_gram.y: added defines for avr32, new jtag_mkii variant for avr32 - * jtagmkII_private.h: new jtag_mkii message types defined (used by - avr32program) - * jtagmkII.h: extern jtagmkII_avr32_initpgm() addition - * jtagmkII.c: huge amount of code in support of avr32 - * avrpart.h: additional flags to AVRPART for avr32 - * usb_libusb.c: modified verbose test for USB read per-byte messages by - by one, so with verbose=3 you get just full messages, 4 gives you bytes - too - * lexer.l: additions for avr32 - -2009-10-10 Michal Ludvig - - Support for Arduino auto-reset: - * serial.h, ser_avrdoper.c, ser_posix.c, ser_win32.c: Added - serial_device.set_dtr_rts implementations. - * arduino.c, stk500.c, stk500.h: Call serial_set_dtr_rts() - to reset Arduino board before program upload. - Inspired by patch #6866, resolves bug #26703 - -2009-10-08 Michal Ludvig - - * buspirate.c: Optimised buspirate_cmd() - reading 1kB EEPROM now - takes only 14 sec instead of almost 2 mins with the original - implementation. - -2009-10-08 Michal Ludvig - - * buspirate.c, buspirate.h: Support for the BusPirate programmer - * config_gram.y, avrdude.conf.in, main.c, lexer.l, Makefile.am: - Glue for BusPirate. - -2009-08-17 Joerg Wunsch - - * usb_libusb.c (usbdev_close): Repair the logic around the - conditional compilation of usb_reset() introduced in r798. - -2009-07-11 Joerg Wunsch - - * configure.ac: We are post-5.8 now. - -2009-07-11 Joerg Wunsch - - * configure.ac: Prepare for releasing version 5.8 - -2009-07-11 Joerg Wunsch - - Submitted by Roger Wolff: - bug #26527: bug in unicode conversion - * ser_avrdoper.c (convertUniToAscii): when encountering a UTF-16 - character that cannot be converted to ASCII, increment the UTF-16 - pointer anyway when proceeding. - -2009-07-11 Joerg Wunsch - - * jtagmkI.c (jtagmkI_send): Replace %zd format by %u since not all - implementations do understand the C99 formatting options (sigh). - * jtagmkII.c (jtagmkII_send): (Ditto.) - * stk500v2.c (stk500v2_recv): (Ditto.) - -2009-07-11 Joerg Wunsch - - bug #26002: HVPP of EEPROM with AVR Dragon and ATmega8 Fails - * avrdude.conf.in (ATmega8): add page size for EEPROM. - -2009-07-07 Joerg Wunsch - - * stk500v2.c: Fix a serious memory corruption problem resulting - out of the chaining of both, the stk500v2 and the jtagmkII - programmers for some programming hardware (JTAG ICE mkII and AVR - Dragon running in ISP, HVSP or PP mode), where both programmers - have to maintain their private programmer data. - -2009-07-02 Joerg Wunsch - - * configure.ac: Post-release (is pre-release...) - -2009-07-02 Joerg Wunsch - - * configure.ac: Prepare for releasing version 5.7 - -2009-07-02 Joerg Wunsch - - * main.c: Add my name to the copyright output when being verbose. - -2009-07-02 Joerg Wunsch - - Contributed by Shaun Jackman - bug #21798: Fix both XSLT scripts - * tools/get-dw-params.xsl (format-hex): Add the parameter count. - * tools/get-hv-params.xsl (format_cstack): Ditto. - -2009-07-02 Joerg Wunsch - - bug #21922: ATmega163 still not working in version 5.5 - * avrdude.conf.in (atmega163): fill in stk500v2 parameters, correct - some flash programming parameters as well. - -2009-07-02 Joerg Wunsch - - bug #22206: avrdude: ser_setspeed(): tcsetattr() failed - * ser_posix.c (ser_setspeed): Don't pass TCSAFLUSH to tcsetattr() as - it apparently fails to work on Solaris. After reading the - documentation again, it seems TCSAFLUSH and TCSANOW are indeed - mutually exclusive. - -2009-07-02 Joerg Wunsch - - bug #22234: WINDOWS version: HOWTO: Specify Serial Ports Larger than COM9 - * ser_win32.c (ser_open): prepend \\.\ to any COM port name, so it is - safe to be used for COM ports above 9. - -2009-07-02 Joerg Wunsch - - bug #26408: Crash in stk500v2_open() - * stk500generic.c: Implement setup and teardown hooks, calling in turn - the respective hooks of the stk500v2 implementation. - -2009-07-02 Joerg Wunsch - - bug #26130: Avrdude doesn't display it's version. - * main.c (usage): add a version number display to the default usage - message. - -2009-07-01 Joerg Wunsch - - bug #26412: avrdude segfaults when called with a programmer that does not - support it - * main.c: do not call pgm->perform_osccal() unless it is != 0. - -2009-06-24 Joerg Wunsch - - Contributed by Zoltan Laday: - patch #6825: xmega problems with JTAGICEmkII - * jtagmkII.c: Many fixes for Xmega devices. - * jtagmkII_private.h: Add various new constants required for - Xmega devices. - * avrdude.conf.in: New devices: ATXMEGA64A1, ATXMEGA192A1, - ATXMEGA256A1, ATXMEGA64A3, ATXMEGA128A3, ATXMEGA192A3, - ATXMEGA256A3, ATXMEGA256A3B, ATXMEGA16A4, ATXMEGA32A4, - ATXMEGA64A4, ATXMEGA128A4 - * avr.c (avr_read, avr_write): Add more names for (Xmega) - memory areas that require paged operation. - -2009-06-24 Joerg Wunsch - - * stk500v2.c (stk600_xprog_write_byte): Handle writing fuse bytes. - -2009-04-28 Joerg Wunsch - - Submitted by Carl Hamilton: - * update.c (parse_op): correctly \0-terminate buf after filling - it, before it is potentially used as the source of a call to - strlen or strcpy. - -2009-04-14 Joerg Wunsch - - * doc/avrdude.texi: Merge the -P 0xXXX option description from - avrdude.1. - -2009-04-14 Joerg Wunsch - - * configure.ac: declare AM_PROG_CC_C_O to avoid the warning - "compiling `config_gram.c' with per-target flags - requires `AM_PROG_CC_C_O' in `configure.ac'" - -2009-03-22 Joerg Wunsch - - bug #25971: "error writing to " with multiple -U params. - * fileio.c: Do not close the input/output stream when working on an - stdio stream. - -2009-02-28 Thomas Fischl - - Based on patch #6484 commited by Jurgis Brigmanis: - * usbasp.c: added software control for ISP speed - * usbasp.h: (Ditto.) - -2009-02-28 Joerg Wunsch - - * avr910.c (avr910_read_byte_flash): Eliminate a static variable that - hasn't been in use for 5 years. - -2009-02-27 Joerg Wunsch - - * configure.ac: Post-release 5.6. - -2009-02-27 Joerg Wunsch - - * configure.ac: Prepare for releasing version 5.6. - -2009-02-27 Joerg Wunsch - - Submitted by Ed Okerson: - * jtagmkII.c (jtagmkII_read_byte): Fix signature reading of - Xmega. - -2009-02-26 Joerg Wunsch - - Submitted by Mikael Hermansson: - * avrdude.conf.in (ATxmega256A3): new device. - * stk500v2 (stk500v2_initialize): Enable the AVRISPmkII as a - PDI-capable device for ATxmega parts. - -2009-02-25 Joerg Wunsch - - Submitted by Lars Immisch: - patch #6750: Arduino support - new programmer-id - * arduino.c: New file, inherits stk500.c. - * arduino.h: New file. - * Makefile.am: Add arduino.c and arduino.h. - * config_gram.y: Add arduino keyword. - * lexer.l: (Ditto.) - * avrdude.conf.in: (Ditto.) - * avrdude.1: Document the new programmer type. - * doc/avrdude.texi: (Ditto.) - -2009-02-25 Joerg Wunsch - - * stk500v2.c: Turn all non-const static data into instance data. - -2009-02-25 Joerg Wunsch - - * Makefile.am: Move term.[ch] from the library into the CLI - application section, as it is not useful for anything else but - the CLI frontend. - -2009-02-25 Joerg Wunsch - - * avrdude.conf.in (ATmega1284P): new device. - -2009-02-23 Joerg Wunsch - - More fixes for Solaris, including fixes for the Sunpro compiler: - * avr.h: Remove stray semicolon. - * configure.ac: Add check for predefined types uint_t and ulong_t. - * confwin.c: Include "avrdude.h" on top to avoid empty translation - unit warning. - * ppwin.c: (Ditto.) - * ser_win32.c: (Ditto.) - * serbb_win32.c: (Ditto.) - * jtagmkII.c (jtagmkII_recv): remove unreachable "return". - * stk500.c (stk500_initialize): (Ditto.) - * par.c: Test for both, __sun__ and __sun to see whether we are - being compiled on Solaris. - * ppi.c: (Ditto.) - * stk500v2.c: Implement the DEBUG and DEBUGRECV macros in a way - that is compatible with the ISO C99 standard. - * usbtiny.c: Only typedef uint_t and ulong_t if they have not - been found already by the autoconf checks. - -2009-02-23 Joerg Wunsch - - bug #22204: Solaris10/11 Undefiniertes Symbol gethostbyname socket - connect - * configure.ac: Add checks for gethostent() and socket(). - While being here, remove some old cruft left from ancient days. - -2009-02-22 Joerg Wunsch - - * lexer.l: Bump the %p size so AT&T lex will continue to work. - -2009-02-19 Joerg Wunsch - - (Partially) submitted by John Voltz: - bug #20004: AVRDUDE update (-U) operations do not close files - * fileio.c (fmt_autodetect, fileio): fclose() files. - -2009-02-18 Joerg Wunsch - - * usbtiny.c: Replace all but one (very unlikely to trigger) exit(1) - by return -1. - -2009-02-18 Joerg Wunsch - - Submitted by Dick Streefland: - patch #6749: make reading from the USBtinyISP programmer more robust - * usbtiny.c: Add code to retry failed communication attempts. - -2009-02-17 Joerg Wunsch - - Submitted by Nick Hibma: - bug #22271: usb_reset in usb_libusb.c not necessary in FreeBSD 6.x - * usb_libusb.c (usbdev_close): Do not call usb_reset() on FreeBSD. - It is not necessary there. - -2009-02-17 Joerg Wunsch - - Submitted by Andrew O. Shadoura: - bug #25156: add direct SPI transfer mode - * bitbang.c: Implement direct SPI transfers. - * bitbang.h: (Ditto.) - * par.c: (Ditto.) - * pgm.c: (Ditto.) - * pgm.h: (Ditto.) - * term.c: Add the "spi" and "pgm" commands. - * avrdude.1: Document the changes. - * doc/avrdude.texi: (Ditto.) - -2009-02-17 Joerg Wunsch - - Submitted by Limor ("Lady Ada"): - bug #24749: add support for '328p - * avrdude.conf.in (ATmega328P): new device support. - -2009-02-17 Joerg Wunsch - - Submitted by "Womo": - bug #25241: AT90USB162, AT90USB82 device support patch for avrdude-5.5 - (also: bug #21745: AT90USBxx2 support) - * avrdude.conf.in (AT90USB162, AT90USB82): new device support. - -2009-02-17 Joerg Wunsch - - Submitted by Evangelos Arkalis: - patch #6069: Atmel AT89ISP Cable - * avrdude.conf.in (89isp): new programmer support. - -2009-02-16 Joerg Wunsch - - Submitted by Bob Paddock: - patch #6748: ATTiny88 Config - * avrdude.conf.in (ATtiny88): new device support. - -2009-02-16 Joerg Wunsch - - Submitted by Mark Litwack: - patch #6261: avrdude won't use dragon/debugwire to write a file - to eeprom - * jtagmkII.c (jtagmkII_paged_write): when in debugWire mode, - implement a paged write to EEPROM as a series of byte writes. - -2009-02-16 Joerg Wunsch - - Submitted by Janos Sallai: - patch #6542: paged_load fails on the MIB510 programming board - * stk500.c: Add a workaround for the different signon sequence on - MIB510 programmers. - -2009-02-05 Joerg Wunsch - - * avrdude.conf.in: Add the ATmega128RFA1. - * avrdude.1: document the addition of ATmega128RFA1. - * doc/avrdude.texi: (Ditto.) - diff --git a/ChangeLog-2010 b/ChangeLog-2010 deleted file mode 100644 index 45effefa..00000000 --- a/ChangeLog-2010 +++ /dev/null @@ -1,354 +0,0 @@ -2010-12-17 Joerg Wunsch - - * avrdude.conf.in (ATmega128RFA1): Bump two timing values in order to - improve ISP programming stability, in particular with the STK600. - -2010-12-14 Joerg Wunsch - - * stk500v2.c (stk500v2_command): Detect warning status codes. - -2010-10-22 Nils Springob - - * serial.h: serial_open() calls will now return -1 on error (no call to exit()) - * buspirate.c: (Dito.) - * jtagmkII.c: (Dito.) - * butterfly.c: (Dito.) - * jtagmkI.c: (Dito.) - * arduino.c: (Dito.) - * avr910.c: (Dito.) - * stk500.c: (Dito.) - * ser_avrdoper.c: (Dito.) - * stk500v2.c: (Dito.) - * ser_posix.c: (Dito.) - * usb_libusb.c: (Dito.) - -2010-07-27 Joerg Wunsch - - bug #30566: MinGW + Ubuntu 9.04 - * stk500v2.c (stk500v2_open): use same condition to refer to the AVR - Doper support as used in the definition in ser_avrdoper.c. - (Thanks to Christian Starkjohann for the analysis of the problem.) - -2010-07-19 Michal Ludvig - - * buspirate.c: Added compatibility with BusPirate "NewUI" firmware 5.x - (contributed by Kari Knuuttila) - -2010-07-12 Nils Springob - - * avrdude.conf.in (atmega88p): New device. - -2010-06-03 Joerg Wunsch - - bug #29913: 246 Byte Bug - AVRdude crashes - doc/avrdude.texi (Troubleshooting): Mention the libusb 0.1 API - wrapper issue that is present in some Linux versions. - -2010-03-19 Joerg Wunsch - - bug #29263: Can't build avrdude on windows using latest cygwin 1.7.1 - * doc/avrdude.texi: Remove the recommendation for building - Win32 binaries under Cygwin; mention MinGW as an alternative - environment. - -2010-03-08 Michal Ludvig - - * ser_posix.c(ser_set_dtr_rts): Fixed DTR on/off to make - Arduino auto-reset work. (bug #29108, patch #7100) - -2010-03-05 Joerg Wunsch - - * buspirate.c: Replace printf() by fprintf(stderr) - * safemode.c: (Dito.) - * usbtiny.c: (Dito.) - -2010-01-22 Joerg Wunsch - - Cleanup Cygwin builds. - * windows/Makefile.am (loaddrv_LDFLAGS): remove, the -mno-cygwin - flag is supposed to be set in CFLAGS by ./configure - * configure.ac: add a check for the presence of usleep(), add a - check whether the linker accepts -static - * avrdude.h: protect prototype for usleep by !defined(HAVE_USLEEP) - * ppwin.c (usleep): protect by !defined(HAVE_USLEEP) - * main.c: silence "array subscript of type char" compiler warnings - by casting all arguments to tolower()/toupper() and isspace()/ - isdigit()/ispunct() to "int" - * butterfly.c: (Dito.) - * avr910.c: (Dito.) - -2010-01-19 Joerg Wunsch - - * configure.ac: Bump for post-5.10. - -2010-01-19 Joerg Wunsch - - * configure.ac: Released version 5.10. - -2010-01-19 Joerg Wunsch - - bug #28677: Cygwin's GCC no longer supports -mno-cygwin option - * configure.ac: For Win32 environments, add a check whether the - compiler understands the -mno-cygwin option. If not, don't use - it but suggest using a different compiler. - -2010-01-18 David Hoerl - - bug #28660: Problem with loading intel hex rom files that exceed - 0x10000 bytes - * fileio.c: Fix two byte shifts. - -2010-01-15 Joerg Wunsch - - Submitted by Michael biebl: - * configure.ac: Fix FreeBSD default serial port name. - * doc/avrdude.texi: (Dito.) - -2010-01-15 Joerg Wunsch - - * jtagmkII.c: If entering JTAG mode fails with a bad JTAG ID - message, retry with external reset applied (in case the target - is in sleep mode or has asserted the JTD bit). - -2010-01-15 Joerg Wunsch - - Submitted by Aurelien Jarno: - * configure.ac: Fix build for GNU/kFreeBSD. - * ppi.c: (Dito.) - * par.c: (Dito.) - -2010-01-15 Joerg Wunsch - - * configure.ac: Bump version for post-5.8. - -2010-01-15 Joerg Wunsch - - * configure.ac: Bump version for release 5.8. - -2010-01-15 Joerg Wunsch - - Submitted by Soren Jorvang: - bug #28611: -i delay not being applied to all serial port - bit banging state transitions - * serbb_win32.c: Apply ispdelay everywhere. - * serbb_posix.c: (Dito.) - -2010-01-15 Joerg Wunsch - - * stk500v2_private.h: Implement TPI mode for AVRISPmkII/STK600 - * config_gram.y: (Dito.) - * avrpart.h: (Dito.) - * stk500v2.c: (Dito.) - * main.c: (Dito.) - * lexer.l: (Dito.) - * avrdude.conf.in: Add ATtiny4/5/9/10 - * avrdude.1: Document TPI and new device support. - * doc/avrdude.texi: (Dito.) - -2010-01-14 Joerg Wunsch - - Submitted by clint fisher: - patch #7038: Adding Atmega32U4 Device to avrdude.conf.in - * avrdude.conf.in (atmega32u4): New device. - * avrdude.1: Document the new device support. - * doc/avrdude.texi: (Dito.) - -2010-01-14 Joerg Wunsch - - Submitted by Thomas Pircher: - patch #6927: Documentation patches - * doc/avrdude.texi: Fix various typos, and remove the last - remnants of obsoleted options -i/-o/-m/-f. - * avrdude.1: Merge typo fixes from avrdude.texi where - applicable. - -2010-01-14 Joerg Wunsch - - * avrdude.1: Update documentation to match the reality (device - support, memory areas). - * doc/avrdude.texi: Update documentation to match the - reality (device support, programmer support, memory areas). - Merge buspirate-specific comments from avrdude.1. - * jtagmkII.c: Add some firmware feature checks. - -2010-01-13 Joerg Wunsch - - * jtagmkII.c: Implement PDI mode support for the JTAG ICE mkII - and the AVR Dragon. - * jtagmkII.h: (Dito.) - * config_gram.y: (Dito.) - * jtagmkII_private.h: (Dito.) - * avrdude.conf.in: (Dito.) - * lexer.l: (Dito.) - -2010-01-13 Joerg Wunsch - - * stk500v2.c: Update STK600 routing and socket card data from XML - file. - -2010-01-13 Joerg Wunsch - - * stk500v2.c: Cleanup the open/close handling to avoid accessing - unallocated memory (in the atexit handler) in case of bailing out. - * main.c: (Ditto.) - -2010-01-13 Joerg Wunsch - - * jtagmkII.c: Stylistic changes: move #defines out into - jtagmkII_private.h, drop all #if 0 blocks, fold overly long lines, - move the *_initpgm() functions to the end of the file; while being - here, remove all trailing whitespace. - * jtagmkII_private.h: move AVR32 #defines here. - -2010-01-12 Joerg Wunsch - - * bootstrap: autoconf 2.62 works well. - -2010-01-12 Joerg Wunsch - - Various fixes for Xmega devices. - * avrdude.conf.in: Correctly declare EEPROM page sizes for - all Xmega devices (0x20 instead of 0x100). - * avr.c: If a memory region has a page size declared, try - using the paged IO routines regardless of the target memory - name. Xmega EEPROM requires to be written in paged mode. - Correctly use a long (rather than unsigned long) variable to - evaluate the success status of the paged mode write attempt. - * stk500v2.c: Don't apply TIF space offsets twice (bug #27995: - AVRDUDE 5.8svn fails to program and read XMEGA); use - stk500v2_loadaddr() prior to paged mode (EEPROM and flash) writes, - otherwise programming of flash areas will fail; while being there, - check the return value of stk500v2_loadaddr() everywhere; use the - correct write/erase mode bits (same as AVR Studio does). - -2010-01-12 Michal Ludvig - - * buspirate.c: Initialise firmware version to v0.0 - prior to parsing the buspirate banner. - -2010-01-11 Joerg Wunsch - - Clean-up the Xmega erase functions. - * jtagmkII_private.h: Add CMND_XMEGA_ERASE as well as - the various XMEGA_ERASE_* definitions (from updated - appnote AVR067) - * jtagmkII.c (jtagmkII_chip_erase): Correctly implement Xmega chip - erase based on CMND_XMEGA_ERASE. After erasing an Xmega part, do - *not* reinitialize the world, as a subsequent programming - operation will fail (for unknown reasons). Actually, this was - really only required for ancient AVRs, but doesn't hurt on mega - and tiny devices. - * jtagmkII.c (jtagmkII_pre_write): Remove, this turned out - to be just a chip erase. - * jtagmkII.c (jtagmkII_program_disable): Don't try reading - "hfuse" for Xmega parts; they don't have it. - * main.c (main): Re-enable auto-erase. It's been done - before (as "jtagmkII_pre_write") in jtagmkII_paged_write() - anyway. Xmega boot and application flash areas should be - handled separately in the future, so auto_erase can only - affect the area just being programmed. - -2010-01-11 Joerg Wunsch - - * main.c (main): disable safemode for Xmega parts. - -2010-01-12 Michal Ludvig - - * buspirate.c: If the BusPirate doesn't respond - to a standard a reset command assume it was in binmode - and attempt to exit to text mode first. - -2010-01-08 Joerg Wunsch - - * bitbang.c: Fix Win32 build error: move freq up to the file - level. - * buspirate.c: Fix Win32 build warning: include to - to get a declaration for alloca(). - -2010-01-08 Thomas Fischl - - bug #28520: Programming with USBasp with low clock speed fails - * usbasp.c: Change blocksize depending on sck frequency to - avoid usb transmition timeouts. - -2010-01-08 Joerg Wunsch - - bug #27505: serbb_posix does not cope with inverted pins - * serbb_posix (serbb_highpulsepin): apply PIN_MASK when - checking pin numbers. - * serbb_win32 (serbb_highpulsepin): (Dito.) - -2010-01-08 Joerg Wunsch - - bug #28516: Linux/Dragon: Error message on exit - * stk500v2.c: Fix the "bad response to GO command: - RSP_ILLEGAL_EMULATOR_MODE" message. jtagmkII_close() - has been called with the wrong pgm->cookie. Wrap it - inside stk500v2_jtagmkII_close(), adjusting the cookie - data appropriately. - -2010-01-08 Joerg Wunsch - - Submitted by Doug: - patch #7010: Win32 enhanced bitbang_delay - * bitbang.c (bitbang_calibrate_delay, bitbang_delay): On Win32, - use the high-resolution performance counter rather than the - uneducated delay loop guess if it is available on the target - hardware. - -2010-01-08 Joerg Wunsch - - Submitted by Gerard: - patch #6828: Using arbitrary BAUD rates - * ser_posix.c (serial_baud_lookup): Allow non-standard baud - rates. - * ser_win32.c (serial_baud_lookup): (Dito.) - -2010-01-07 Joerg Wunsch - - Submitted by Eric Trein: - bug #27596: AT90s2333 is not correctly supported in avrdude.conf - * avrdude.conf.in (at90s2333): add various STK500v2 parameters. - -2010-01-07 Joerg Wunsch - - Submitted by Gyorgy Szekely: - bug #28458: Buffer line is incorrectly released for PP programmers - * par.c (par_close): use par_setmany() rather than par_setpin() - for PPI_AVR_BUFF. - -2010-01-07 Joerg Wunsch - - Submitted by Lukasz Goralczyk: - bug #27507: SIGSEGV when using avrdragon (avrdude 5.8) - * stk500v2.c (stk500v2_dragon_isp_initpgm): Use - stk500v2_jtagmkII_setup/stk500v2_jtagmkII_rather than their - jtagII counterparts, to get the private data properly - initialized. - -2010-01-07 Joerg Wunsch - - * buspirate.c: Cosmetics: remove UTF-8 dashes, adjust for 8-column - hard tabs. - -2010-01-07 Joerg Wunsch - - * buspirate.c: add $ Id $ line. - * buspirate.h: add $ Id $ line. - -2010-01-07 Joerg Wunsch - - Fix a few warnings that came up recently (some of them only triggered - by recent GCC versions). - * config_gram.y (parse_cmdbits): "brkt possibly used uninitialized" - (GCC errs here) - * jtagmkII.c (jtagmkII_reset32): "status possibly used uninitialized" - (I think GCC errs, too) - * buspirate.c: "pointers differ in signedness" (mismatch between - string processing and the use of "unsigned char" throughought the - AVRDUDE API) - -2010-01-01 Joerg Wunsch - - * jtagmkII.c (jtagmkII_smc_init32): replace sleep() by usleep() for - win32 compatibility. diff --git a/ChangeLog-2011 b/ChangeLog-2011 deleted file mode 100644 index d8fffba0..00000000 --- a/ChangeLog-2011 +++ /dev/null @@ -1,489 +0,0 @@ -2011-12-30 Rene Liebscher - - * avrdude.conf.in: Added is_at90s1200 option to part description - * doc/avrdude.texi: Added missing options to part definition - * config_gram.y: Fixed resetting of is_at90s1200 and is_avr32 flags - -2011-12-30 Rene Liebscher - - patch #7693: Fix config file atmel URLs - * avrdude.conf.in: Updated URLs - * avrpart.h: Updated URLs - * doc/avrdude.texi: Updated URLs - -2011-12-30 Joerg Wunsch - - * ser_posix.c (baud_lookup_table): Conditionalize the inclusion of - non-standard baud rates (only baud rates up to B38400 are - standardized by the Single UNIX Specification). - -2011-12-29 Rene Liebscher - - bug #34302: Feature request : device configuration with parent classes - * config_gram.y: Added part parent rule and allow overwriting existing - data at several places - * avrdude.conf.in: Added description comment and m328/m328p as example - * avrpart.c: avr_dup_mem-functions now copy buf and tags memory block - only they are already allocated. - * lexer.l: Added parent as valid token - - (not in original patch) - * avrpart.c: New function avr_dup_opcode. avr_dup_mem/avr_dup_part- - functions now duplicate the opcodes in their op-array to avoid memory leaks. - * doc/avrdude.texi: Added description of part parent feature - -2011-12-29 Rene Liebscher - - patch #7687: Autogenerating programmers and parts lists for docs - (generating the parts lists, programmers lists follows later) - * doc/Makefile.am: Add rule how to create avrdude before generating parts list - -2011-12-29 Rene Liebscher - - patch #7687: Autogenerating programmers and parts lists for docs - (generating the parts lists, programmers lists follows later) - * doc/avrdude.texi: Add include of generated table of parts - * doc/Makefile.am: Add generating of table of parts in parts.texi - * doc/parts_comments.txt: Adding file containing part commenz references - * avrdude.1: Remove table of parts and mention "-p ?" option - * avrpart.c: Use AVR_DESCLEN for strncasecmp at list sorting - -2011-12-22 Rene Liebscher - - * configure.ac: Add writing of definition of confsubst to config.status, - so it can run alone, not only called by configure. - -2011-12-17 Rene Liebscher - - patch #7680: Fixing timeout problem in ser_recv in ser_win32.c - * ser_win32.c: Return -1 at timeout in ser_recv(). - -2011-12-17 Rene Liebscher - - * config_gram.y: Fixed another memory leak, when define an operation - more than once - * avrdude.conf.in: Fixed double definition at ATmega6490 - -2011-12-17 Rene Liebscher - - * config_gram.y: Restructuring and compacting programmer definition - part of grammar (in preparation of patch #7688) - -2011-12-17 Rene Liebscher - - * avrdude.conf.in: Update documentation of programmer definition - * doc/avrdude.texi: Update documentation of programmer definition - and add list of implemented programmer types - -2011-12-17 Rene Liebscher - - patch #7667: Minor memory handling fixes - * config_gram.y: Added several free_token() calls. - -2011-12-16 Rene Liebscher - - patch #7671: Sorting programmers and parts lists for console output - * avrdude.conf.in: change part desc of several parts to common pattern - AT(mega|tiny|xmega)[0-9]+[A-Z]* (Upper case AT, lower case in middle) - * list.[ch]: added sorting function lsort() - * pgm.[ch]: added function sort_programmers() - * avrpart.[ch]: added function sort_avrparts() - * main.c: use sort functions in list_programmers() and list_parts() - * main.c: list functions show config file info only at verbose mode - -2011-10-19 Joerg Wunsch - - * configure.ac: Replace "cvs" in version number by "svn". - -2011-10-10 Joerg Wunsch - - bug #34518: loading intel hex files > 64k using record-type 4 - (Extended Linear Address Record) - fileio.c: Replace the change from r928 (handling of 0x8000000 - offset in AVR32 files) by a completely different logic that no - longer breaks hex files for other devices starting with an - offset; also apply a similar change to S-record files, as well - as when writing files. - fileio.c: (Ditto.) - -2011-09-15 Joerg Wunsch - - * avrftdi.c: Remove stray printf()s by fprintf(stderr) - * usbtiny.c: (Ditto.) - -2011-09-15 Joerg Wunsch - - * main.c: Restrict the cyclecounter readout to those cases where - it has been explicitly requested (by -y or -Y), rather than always - attempting to read the last EEPROM bytes. - -2011-09-15 Joerg Wunsch - - * stk500v2.c (stk600_xprog_paged_load, stk600_xprog_paged_write): - Fix regression in the AVRISPmkII/STK600 TPI handling introduced - by the USBasp's TPI implementation which added a pagesize even for - the minor memory regions of TPI devices. Also fix wrong offset - introduced by the memory tagging patch. - -2011-09-15 Joerg Wunsch - - * avr.c (avr_read, avr_write): Don't bail out on TPI parts if - their programmer doesn't provide a (low-level) cmd_tpi method; - instead, fall back to the normal programmer methods which are - supposed to handle the situation. - This fixes a regression where the recent bitbang-TPI implementation - broke TPI handling of STK600/AVRISPmkII. - -2011-09-14 Joerg Wunsch - - Mega-commit to bring in memory tagging. - Each memory image byte is now tagged as it's being read from a file. - Only bytes read from a file will be written or verified (modulo page - granularity requirements). - * avrpart.h: Add memory tags. - * avrpart.c: Allocate and initialize tag area. - * update.h: Drop unused parameter "verify" from do_op(). - * pgm.h: Add parameter base_addr to the paged_load and paged_write - methods, respectively. - * avr.h: New parameter to avr_read: second AVRPART to verify against. - * fileio.c: Track all memory regions that have been read from an - input file by tagging them. - * update.c: Call avr_read() with the new parameter list. - * main.c: Call avr_initmem() to initialize the memory regions, rather - than trying to duplicate an unitialized part, and then let the - original part rot away. - * avr.c: Implement the heart of the new featureset. For paged memory - areas, when writing or verifying, call the paged_write and paged_load - methods, respectively, once per page instead of on the entire memory. - When writing, only write bytes or pages that have content read from a - file. Whe verifying, only read memory bytes or pages where the - verification data have been read from a file. Only verify those bytes - that have been read from a file. - * avrftdi.c: Implement the new API for paged_load and paged_write, - respectively. - * jtagmkII.c: (Ditto.) - * butterfly.c: (Ditto.) - * jtagmkI.c: (Ditto.) - * avr910.c: (Ditto.) - * stk500.c: (Ditto.) - * usbasp.c: (Ditto.) - * stk500v2.c: (Ditto.) - * usbtiny.c: (Ditto.) - -2011-09-13 Joerg Wunsch - - * stk500v2.c (stk500v2_command): Treat warnings as errors rather than - success. - -2011-08-30 Joerg Wunsch - - bug #34027: avrdude AT90S1200 Problem (part 3 - documentation) - * avrdude.1: Document the programmer type restrictions for AT90S1200 - devices. - * doc/avrdude.texi: (Ditto.) - -2011-08-30 Joerg Wunsch - - bug #34027: avrdude AT90S1200 Problem (part 2 - stk500v2 and relatives) - * stk500v2.c (stk500v2_initialize): For the AT90S1200, release - /RESET for a moment before reinitializing, as this is required by - its programming protocol. - -2011-08-30 Joerg Wunsch - - * configure.ac: In AC_CHECK_LIB for libftdi, check for - ftdi_usb_get_strings() rathern than ftdi_init(), as this is a more - specific thing to search for in order to make sure getting a - recent enough libftdi. - -2011-08-29 Joerg Wunsch - - bug #34027: avrdude AT90S1200 Problem (part 1 - bitbang - programmers) - * config_gram.y: Introduce new keyword "is_at90s1200". - * lexer.l: (Ditto.) - * avrdude.conf.in: Applew new keyword to the AT90S1200 device. - * avrpart.h: Introduce new flag AVRPART_IS_AT90S1200, reflecting - the is_at90s1200 configuration keyword. - * bitbang.c (bitbang_initialize): Replace existing test for - AT90S1200 by AVRPART_IS_AT90S1200 - * avr.c (avr_write_byte_default): Avoid the pre-write reading for - the AT90S1200, as this appears to sometimes corrupt the high byte - by pre-programming the low byte just written into it. - -2011-08-27 Joerg Wunsch - - * configure.ac: Bump version for post-5.11. - -2011-08-27 Joerg Wunsch - - * configure.ac: Bump version for releasing AVRDUDE 5.11. - -2011-08-26 Joerg Wunsch - - * avrdude.1: Update the list of supported AVR devices. - * doc/avrdude.texi: (Ditto). - -2011-08-26 Joerg Wunsch - - * configure.ac: add -lusb as "other libraries" when checking - for libftdi. - -2011-08-26 Joerg Wunsch - - Submitted by Juergen Weigert: - patch #7056: adding support for mikrokopter bootloader to butterfly - * butterfly.c: Add some specific logic to handle the - mikrokopter.de butterfly bootloader. - * butterfly.h: Add one related function declaration. - * config_gram.y: Add butterfly_mk keyword. - * lexer.l: (Ditto.) - * avrdude.conf.in: Add entry for butterfly_mk. - -2011-08-26 Joerg Wunsch - - Submitted by Stefan Tomanek: - patch #7542: add default_bitclock to configuration files - * config.c: Add the new keyword and its handling. - * config.h: (Ditto.) - * config_gram.y: (Ditto.) - * avrdude.conf.in: (Ditto.) - * main.c: (Ditto.) - * lexer.l: (Ditto.) - * avrdude.1: Document the change. - * doc/avrdude.texi: (Ditto.) - -2011-08-26 Joerg Wunsch - - Submitted by Brett Hagman: - patch #7603: wiring - programmer type for Wiring boards - (based on STK500v2) - * wiring.c: New file. - * wiring.h: (Ditto.) - * Makefile.am: Add new files. - * stk500v2_private.h: Reorganize so some functions and struct - pdata are globally known. - * stk500v2.c: (Ditto.) - * stk500v2.h: (Ditto.) - * lexer.l: Add new programmer keywords. - * config_gram.y: (Ditto.) - * avrdude.conf.in: Add "wiring" programmer entry. - * avrdude.1: Document the new programmer. - * doc/avrdude.texi: (Ditto.) - * AUTHORS: Add Brett Hagman. - -2011-08-26 Joerg Wunsch - - Submitted by an anonymous contributor on the mailinglist: - * avrdude.conf (jtagkey): Add a definition for the Amontec - JTAGKey - -2011-08-26 Joerg Wunsch - - Submitted by Juergen Weigert: - bug #22720: avrdude-5.5 ignores buff settings in avrdude.conf - (Note that the actual bug the subject is about has been fixed - long ago.) - * update.c (do_op): fix a diagnostic message - * pgm.h: add exit_datahigh field - * par.c: set and act upon the exit_datahigh field - * avrdude.1: document the new -E options - * doc/avrdude.texi: (Ditto.) - -2011-08-26 Joerg Wunsch - - bug #33811: Parallel make fails - * Makefile.am (BUILT_SOURCES): Add this macro. - -2011-08-26 Joerg Wunsch - - bug #33114: Segfault after setting the DWEN fuse with Dragon - * jtagII.c (jtagmkII_getsync): Instead of exit()ing from - deep within the tree when detecting the "need debugWIRE" - situation, properly pass this up as a return code. - * jtagII_private.h (JTAGII_GETSYNC_FAIL_GRACEFUL): New constant. - * stk500v2.c (stk500v2_jtagmkII_open): Don't tell anything - anymore when receiving a JTAGII_GETSYNC_FAIL_GRACEFUL from - jtagmkII_getsync(); silently give up (all necessary has been - said already). - -2011-08-26 Joerg Wunsch - - Reported by Jason Hecker: - * usbasp.c (libusb_to_errno): Conditionalize some error codes - that apparently are lacking on MinGW. - -2011-08-25 Joerg Wunsch - - Fix warnings. - * ser_avrdoper.c: add so exit() is declared. - * usbtiny.c (usbtiny_open): provide an initializer to a - "may be used uninitialized" variable (since GCC could not - fully detect the logic behind). - -2011-08-25 Joerg Wunsch - - * configure.ac: Add a check for FreeBSD's libusb-1.0 - compatible library that is found in libusb.a/.so on - FreeBSD 8+. - -2011-08-25 Joerg Wunsch - - Submitted by Doug Springer, based on work by - Wolfgang Moser, Ville Voipio, Hannes Weisbach - patch #7486: Patch to add FT2232C/D, FT2232H, FT4232H, - usbvid, usbpid, usbdev for USB support - Based on #7062 - * avrftdi.c: New file. - * avrftdi.h: (Ditto.) - * configure.ac: Add check for libftdi. - * config_gram.y: Add AVRFTDI and per-programmer USB string - keywords. - * lexer.l: (Ditto.) - * avrdude.conf.in: Add avrftdi and 2232HIO programmers. - * pgm.h: Add USB parameters. - * Makefile.am: Add avrftdi.c and avrftdi.h. - * AUTHORS: Mention the new authors. - * avrdude.1: Document the changes. - * doc/avrdude.texi: (Ditto.) - -2011-08-23 Joerg Wunsch - - bug #29585: Fix license - * doc/avrdude.texi: Add FDL as an option to the licensing - statement, as the savannah administration would like it - that way. - -2011-08-23 Joerg Wunsch - - Submitted by Darell Tan: - patch #7244: TPI bitbang implementation - * bitbang.c: Add TPI bitbang stuff. - * bitbang.h: (Ditto.) - * avr.c: (Ditto.) - * avr.h: (Ditto.) - * pgm.c: (Ditto.) - * pgm.h: (Ditto.) - * serbb_posix.c: Wire bitbang_cmd_tpi into the struct pgm. - * serbb_win32.c: (Ditto.) - * par.c: (Ditto.) - * doc/avrdude.texi: Document the TPI bitbang support. - -2011-08-17 Joerg Wunsch - - Submitted by Grygoriy Fuchedzhy: - bug #31779: Add support for addressing usbtinyisp with -P option - * usbtiny.c (usbtiny_open): Add logic to distinguish multiple USBtinyISP - programmers by their bus:device tuple. - * doc/avrdude.texi: Document the new functionality. - * avrdude.1: (Ditto.) - -2011-08-16 Joerg Wunsch - - Submitted by Timon Van Overveldt: - bug #30268: Debugwire broken in avrdude-5.10 - * jtagmkII.c (jtagmkII_initialize): only try setting up a JTAG chain when - the programmer is using JTAG. - -2011-08-16 Joerg Wunsch - - bug #29636: AVRDude issues invalid CMD_CHECK_TARGET_CONNECTION - on the AVRISP-MKII - * stk500v2.c (stk500v2_program_enable): Rewrite the logic to - explain ISP activation failures. - * stk500v2_private.h: Fix the various STATUS_* constants; - AVR069 and AVR079 disagreed in their values, even though they - are apparently implementing the same logic behind. - -2011-08-16 Joerg Wunsch - - bug #29650: Programming timeouts in ATmega128RFA1 are too slow - * avrdude.conf.in (ATmega128RFA1): Bump write delay values for flash and - EEPROM to 50 ms. - -2011-08-16 Joerg Wunsch - - * avrdude.conf.in (ATmega8515, ATmega8535, ATmega48, ATmega88, ATmega88P, - ATtiny88, ATmega168, ATmega168P, ATmega328P): Bump delay value for STK500v2 - EEPROM write operation to 5, according to the respective XML files. - -2011-08-16 Joerg Wunsch - - Submitted by Darcy Houlahan: - bug #29694: error in avrdude.conf for attiny84 eeprom - * avrdude.conf.in (ATtiny84, ATtiny85): fix A7 bit in EEPROM write - command. - -2011-08-16 Joerg Wunsch - - Submitted by Durant Gilles: - * avrdude.conf.in (ATtiny4313): Fix flash addressing bits for manual ISP - algorithm. - -2011-08-16 Joerg Wunsch - - Submitted by Philip: - bug #31386: A "BUILD.svn" or similar "how to get started" doc would be helpful - * BUILD-FROM-SVN: New file. - -2011-08-15 Joerg Wunsch - - Submitted by Nic Jones: - bug #32539: [Documentation][Patch] Man page is misleading - re: Dragon & PDI - * doc/avrdude.texi: Update information about PDI connections - on AVR Dragon - -2011-08-12 Joerg Wunsch - - * usbasp.c: Add so this actually compiles - again. - -2011-08-12 Joerg Wunsch - - Contributed by tixiv@gmx.net: - bug #33345: File auto detection as binary doesn't open - file in binary mode on Windows - * fileio.c: Move the decision about opening files in - binary mode until before the fopen() call. - -2011-06-16 Thomas Fischl - - * avrdude.conf.in: Fix part id of ATtiny9. - -2011-05-28 Thomas Fischl - - Based on patch #7440 commited by Slawomir FraÅ›: - * usbasp.c: added TPI support for USBasp - * usbasp.h: (Ditto.) - -2011-05-11 Joerg Wunsch - - * avrdude.conf.in: Add support for ATmega168P. - -2011-05-11 Joerg Wunsch - - * avrdude.conf.in: Fix abbreviated name for ATmega324PA. - -2011-05-11 Joerg Wunsch - - Submitted by Lech Perczak: - bug #30946: Added support for ATmega8/16/32U2 - * avrdude.conf.in: Add ATmega8/16/32U2 entries. - -2011-05-11 Joerg Wunsch - - Submitted by David A Lyons: - patch #7393: Adding ATtiny4313 Device to avrdude.conf.in - * avrdude.conf.in: Add ATtiny4313 data. - -2011-05-11 Joerg Wunsch - - * usb_libusb.c: Bump timeout values to allow for slow clock - speeds. - * jtagmkII.c: (Ditto.) - -2011-03-04 Eric B. Weddington - - Thanks to Vitaly Chernookiy for the patch. - * avrdude.conf.in: Add support for atmega324pa. - * ChangeLog-2010: New file, rotate ChangeLog for new year. diff --git a/ChangeLog-2012 b/ChangeLog-2012 deleted file mode 100644 index bb5751a6..00000000 --- a/ChangeLog-2012 +++ /dev/null @@ -1,729 +0,0 @@ -2012-12-18 Joerg Wunsch - - * usbdefs.h (USBDEV_BULK_EP_WRITE_STK600) - (USBDEV_BULK_EP_READ_STK600): new define values - * stk500v2.c (stk600_open): use the STK600 EP values, - as they are different from AVRISPmkII - -2012-12-18 Joerg Wunsch - - bug #37942: Latest SVN can't program in dragon_jtag mode - * jtagmkII.c (jtagmkII_initialize): For Xmega devices, and - firmware >= 7.x, don't trigger a RESET, in order to work around a - firmware bug that appears to be present in at least firmware 7.24 - for the Dragon. - -2012-12-04 Joerg Wunsch - - * config_gram.y: Implement the "ocdrev" keyword - * avrpart.c: (Dito) - * avrpart.h: (Dito) - * lexer.l: (Dito) - * avrdude.conf.in: Add "ocdrev" key/value pairs, based - on the AS6 XML file information. - * jtag3.c: Use the ocdrev in the parameter block. - -2012-12-03 Joerg Wunsch - - * jtag3.c: Make jtag3_command() public - * jtag3.h: (Dito.) - * jtag3_private.h: Add two new commands - * stk500v2.c: Implement the "MonCon disable" hack that - allows temporarily falling back to ISP when trying to - talk to a part that has debugWIRE enabled - -2012-12-03 Rene Liebscher - - * pickit2.c: reordered #includes for non-usb configuration - -2012-12-03 Joerg Wunsch - - * jtag3.c: Enable interactive adjustment of the various - clock frequencies (JTAG Xmega, JTAG megaAVR, PDI Xmega) - through the set_sck_period() callback. - -2012-12-03 Joerg Wunsch - - * jtag3.c: Remove unused code that was left over from - cloning the jtagmkII.c implementation - -2012-12-03 Joerg Wunsch - - * pgm_type.c: Add "jtagice3_isp" programmer hook - * avrdude.conf.in: Add "jtag3isp" programmer - * jtag3.c: jtag3_setparm() is now public - * jtag3.h: (Dito) - * stk500v2_private.h: Command 0x1D is CMD_SPI_MULTI only - for STK500v2, AVRISPmkII, and JTAGICEmkII; for JTAGICE3, - it's CMD_SET_SCK now; also add CMD_GET_SCK - * avrpart.c (avr_get_output_index): New function - * avrpart.h: (Dito) - * stk500v2.c: Implement the pasthrough programmer glue logic - for JTAGICE3 in ISP mode - * stk500v2.h: (Dito) - * avrdude.1: Document the JTAGICE3 support. - -2012-11-30 Joerg Wunsch - - * jtag3.c (jtag3_read_byte, jtag3_write_byte): Remove the - m->offset from addr, JTAGICE3 doesn't need it anymore (similar - to JTAGICEmkII with 7+ firmware) - * jtag3.c (jtag3_read_byte): Allow for full-page reads of - EEPROM also for Xmega and debugWIRE, allow for signature - read in debugWIRE - -2012-11-30 Joerg Wunsch - - * jtag3_private.h: Add two more error detail codes I stumbled - across during development - * jtag3.c: (Dito.) - * usb_libusb.c: Reduce timeouts from 100 to 10 s, still long - enough, but not getting cold feet when something goes wrong. - -2012-11-29 Joerg Wunsch - - * jtag3.c: Handle events returned by the ICE - * usbdevs.h: Add defines that mark an event in return - from usb_recv_frame(). - * usb_libusb.c: (Dito.) - -2012-11-29 Joerg Wunsch - - * avrdude.conf.in: Remove "has_jtag" from Xmega A4 and D4 - devices, as they only have PDI. - * jtag3.c (jtag3_page_erase): Actually implement this. - -2012-11-29 Joerg Wunsch - - bug #37265: wrong page sizes for XMega64xx in avrdude.conf - * avrdude.conf.in: Fix page sizes for all Xmega devices, - by cross-checking against Atmel Studio's device XML files - -2012-11-29 Joerg Wunsch - - * jtag3.c: Fill in the missing pieces for Xmega support (both, - PDI and JTAG). - * jtagmkII.c (jtagmkII_set_xmega_params): Use "fuse1" rather - than "fuse0" memory space to fill in the NVM offset from, as - there is no "fuse0" on some Xmega devices. - -2012-11-29 Joerg Wunsch - - * avrdude.conf.in (ATmega256RFR2, ATmega128RFR2, ATmega64RFR2): - New devices - -2012-11-28 Joerg Wunsch - - First support for Atmel JTAGICE3. Guessed from USB sniffer - traces made by Knut Schwichtenberg, and by similarity to - JTAGICEmkII. - Still quite incomplete, just megaAVR/JTAG is done by now. - * jtag3.c: New file. - * jtag3.h: (Dito.) - * jtag3_private.h: (Dito.) - * pgm_type.c: Add new programmers - * avrdude.conf.in: (Dito.) - * usbdevs.h: Add new parameters - * Makefile.am: Add new files - * usb_libusb.c: Handle separate event endpoint, and larger - (USB 2.0) packet sizes - -2012-11-26 Joerg Wunsch - - * jtagmkII.c: Change all the USB details (endpoint numbers, - max transfer size etc.) to a per-programmer adjustable value. - * serial.h: (Dito.) - * stk500v2.c: (Dito.) - * usbdevs.h: (Dito.) - * usb_libusb.c: (Dito.) - -2012-11-20 Joerg Wunsch - - * buspirate.c: Replace outdated FSF postal address by a reference to - the GPL info on their website. - * jtagmkII.c: (Dito.) - * avrftdi.c: (Dito.) - * wiring.c: (Dito.) - * linux_ppdev.h: (Dito.) - * serbb.h: (Dito.) - * usbtiny.h: (Dito.) - * confwin.c: (Dito.) - * buspirate.h: (Dito.) - * avrftdi.h: (Dito.) - * wiring.h: (Dito.) - * jtagmkII.h: (Dito.) - * pickit2.c: (Dito.) - * config.c: (Dito.) - * term.c: (Dito.) - * confwin.h: (Dito.) - * avrdude.1: (Dito.) - * windows/Makefile.am: (Dito.) - * config.h: (Dito.) - * pickit2.h: (Dito.) - * term.h: (Dito.) - * tools/get-hv-params.xsl: (Dito.) - * tools/get-stk600-cards.xsl: (Dito.) - * tools/get-stk600-devices.xsl: (Dito.) - * tools/get-dw-params.xsl: (Dito.) - * butterfly.c: (Dito.) - * configure.ac: (Dito.) - * doc/Makefile.am: (Dito.) - * pgm_type.c: (Dito.) - * butterfly.h: (Dito.) - * jtagmkI.c: (Dito.) - * ft245r.c: (Dito.) - * COPYING: (Dito.) - * pgm_type.h: (Dito.) - * jtagmkI.h: (Dito.) - * pindefs.h: (Dito.) - * config_gram.y: (Dito.) - * arduino.c: (Dito.) - * arduino.h: (Dito.) - * ser_win32.c: (Dito.) - * serbb_win32.c: (Dito.) - * avr910.c: (Dito.) - * stk500.c: (Dito.) - * freebsd_ppi.h: (Dito.) - * avr910.h: (Dito.) - * solaris_ecpp.h: (Dito.) - * stk500.h: (Dito.) - * jtagmkII_private.h: (Dito.) - * avrdude.h: (Dito.) - * bitbang.c: (Dito.) - * bitbang.h: (Dito.) - * avrpart.c: (Dito.) - * safemode.c: (Dito.) - * stk500generic.c: (Dito.) - * serial.h: (Dito.) - * avrpart.h: (Dito.) - * jtagmkI_private.h: (Dito.) - * ppi.c: (Dito.) - * avr.c: (Dito.) - * safemode.h: (Dito.) - * stk500generic.h: (Dito.) - * ser_avrdoper.c: (Dito.) - * avr.h: (Dito.) - * ppi.h: (Dito.) - * usbasp.c: (Dito.) - * lists.c: (Dito.) - * stk500v2.c: (Dito.) - * my_ddk_hidsdi.h: (Dito.) - * tpi.h: (Dito.) - * usbasp.h: (Dito.) - * lists.h: (Dito.) - * stk500v2.h: (Dito.) - * ppiwin.c: (Dito.) - * fileio.c: (Dito.) - * ser_posix.c: (Dito.) - * fileio.h: (Dito.) - * serbb_posix.c: (Dito.) - * usbdevs.h: (Dito.) - * par.c: (Dito.) - * update.c: (Dito.) - * pgm.c: (Dito.) - * main.c: (Dito.) - * par.h: (Dito.) - * update.h: (Dito.) - * lexer.l: (Dito.) - * Makefile.am: (Dito.) - * pgm.h: (Dito.) - * usb_libusb.c: (Dito.) - * usbtiny.c: (Dito.) - -2012-11-13 Rene Liebscher - - bug #35186 inverting pins with "~" doesn't work for pin lists (i.e. vcc) - bug #37727 Add support for LM3S811 dev board as a programmer - * lexer.l,config_gram.y: accepting inverted pins at pin lists - syntax: ~num or ~(num,num,...) - * par.c: par_set_many_bits is now usable with inverted pins - * avrftdi.c: fixed wrong index in ftdi_pin_name - * avrdude.conf.in: added programmer lm3s811 - -2012-11-04 Rene Liebscher - - * lexer.l,config_gram.y,config.[hc]: changed reading of numbers to integers - except of default_bitclock which is the only real number. - No signs are allowed as negative values do not make sense for current - config values. - * buspirate.c: include own header file buspirate.h - * doc/.cvsignore: add programmers.texi to ignore list - -2012-09-06 Joerg Wunsch - - * doc/Makefile.am: add EXTRA_DIST, replace $(srcdir) by - $(builddir) for generated files, so "make distcheck" - works again - -2012-09-05 Rene Liebscher - - * doc/Makefile.am: add $(srcdir) to name of generated files, so BSD make - find the files ( GNU make sees no difference if the - file is called version.texi or ./version.texi ) - -2012-08-15 Rene Liebscher - - patch #7184 Support for PICKit2 programmer - * Makefile.am: add pickit2 files - * pickit2.[ch]: new programmer implementation - * pgm_type.c: add pickit to list - * avrdude.1: documentation for pickit2 - * doc/avrdude.texi: documentation for pickit2 - * avrdude.conf.in: add pickit2 programmer entry - -2012-08-15 Rene Liebscher - - bug #30559 Ft232 bit-bang support, see comment #30 - * ft245r.c: added semaphore workaround for MacOS X, - added pthread_testcancel in reader thread - - * configure.ac: added check for TYPE_232H in libftdi (not in libftdi < 0.20) - * avrftdi.c: do not use TYPE_232H if not declared - -2012-08-13 Hannes Weisbach - - * avrftdi.c: fixes pin_limit for different FTDI devices (there was a mixup - between 2232C and 2232H) - -2012-07-29 Hannes Weisbach - - * avrftdi.c: bugfixes (synchronisation) and maintenance (paged programming, - nicer output, separation of parameter checking and actual code) - -2012-07-25 Joerg Wunsch - - * jtagmkII.c (jtagmkII_memtype): return MTYPE_FLASH rather than - MTYPE_SPM for non-Xmega flash regions - -2012-07-20 Hannes Weisbach - - * avrpart.c, avrpart.h: adds avr_pin_name() - -2012-07-18 Joerg Wunsch - - * configure.ac: check for libelf.h also in libelf/ - * fileio.c: include if configure found this - to be the case - -2012-06-13 Rene Liebscher - - * configure.ac: Check for presence of - * ft245r.c: Depend on HAVE_PTHREAD_H - * Makefile.am: Add -lpthread if needed. - -2012-06-07 Joerg Wunsch - - * usbtiny.c (usbtiny_paged_load, usbtiny_paged_write): - fix breakage introduced by the recent page handling reorg; - it used to cause an infinite loop - -2012-05-04 Joerg Wunsch - - Xmega page erase implementation for XPROG (AVRISPmkII, STK600) - * stk500v2.c (stk600_xprog_page_erase): New function. - -2012-05-04 Joerg Wunsch - - Xmega page erase implementation for JTAGICEmkII - * jtagmkII.c: Handle flash pages sizes > 256 bytes, implement - page_erase() method - * avrdude.conf.in: Change flash pagesize for all Xmega devices - to 512 bytes - * avr.c: Implement auto_erase, using page_erase if available - * avr.h: Remove unused parameters from avr_read(), replace - unused parameter in avr_write)() by auto_erase - * stk500v2.c: Handle flash page sizes > 256 bytes - * update.c (do_op): Handle new updateflags parameter - * main.c: Implement auto_erase as page_erase if possible - * update.h (enum updateflags): New enum - * pgm.h (struct programmer_t): Add page_erase method - -2012-04-26 Joerg Wunsch - - * jtagmkII.c (jtagmkII_paged_load, jtagmkII_paged_write): fix bug - in memory type calculation for Xmega "boot" memory region. - -2012-04-25 Joerg Wunsch - - * update.c (parse_op): do not assume default memtype here - * main.c: after locating the part information, determine default - memtype for all update options that didn't have a memtype - specified; this is "application" for Xmega parts, and "flash" for - everything else. - -2012-04-24 Joerg Wunsch - - * fileio.c: Rework the way ELF file sections are considered: while - scanning the program header table, the offsets from a program - header entry must never be used directly when checking the bounds - of the current AVR memory region. Instead, they must always be - checked based on the corresponding section's entry. That way, - Xmega devices now properly take into account whether the segment - fits into any of the application/apptable/boot memory region. - -2012-04-20 Joerg Wunsch - - bug #30756: When setting SUT to 64ms on XMEGA, avrdude doesn't - read device signature - * main.c: When reading the signature yields 0x000000 or 0xffffff, - retry (up to twice) after some progressive delay. - -2012-04-20 Joerg Wunsch - - * avrdude.conf.in (ATxmega16D4, ATxmega32D4, ATxmega64D4, - ATxmega128D4): New devices. As Xmega D doesn't feature a fuse0 - memory cell, move that one out from the generic .xmega part into - the individual Xmega A parts. - -2012-04-19 Joerg Wunsch - - bug #29019: pagel/bs2 warning when uploading using stk500 to xmega - * stk500.c (stk500_initialize): Insert dummy values for PAGEL and - BS2 if they are not present in the config file, in order to be able - to proceed with the stk500_set_extended_parms() anyway. - -2012-04-19 Joerg Wunsch - - * stk500v2_private.h (struct pdata): add boot_start - * stk500v2.c: For the "flash" pseudo-memory of Xmega devices, - distinguish addresses between "application" and "boot" area. - -2012-04-18 Joerg Wunsch - - * fileio.c (elf2b): When checking the bounds of the current - program header segment, subtract `low' from ph[n].p_paddr in order - to correct the magic section offsets for the AVR's non-flash - memory regions. - -2012-04-18 Joerg Wunsch - - * fileio.c (elf_get_scn): Rather than trying to just match whether - any given section maps straight to a program header segment, use a - more sophisticated decision that matches any section as long as it - fits into the segment. This is needed for situations where the - program header segment spans a larger area than the section data - provided. (This can e.g. happen in an ELF file that contains no - data at address 0, like a bootloader only.) - -2012-04-13 Joerg Wunsch - - bug #28744: Can't load bootloader to xmega128a1 (part 2, fix for - firmware >= V7.x) - * jtagmkII.c: Add firmware-version dependent handling of Xmega parameters. - V7.x firmware expects the NVM offsets being specified through the Xmega - parameters command, but left out as part of the memory address itself. - * jtagmkII_private.h: Add CMND_SET_XMEGA_PARAMS, and struct xmega_device_desc. - * config_gram.y: Add mcu_base keyword. - * avrpart.h: (Dito.) - * lexer.l: (Dito.) - * avrdude.conf.in (.xmega): add mcu_base, and data memory segment. - -2012-03-30 Joerg Wunsch - - bug #28744: Can't load bootloader to xmega128a1 (part 1, fix for - firmware < V7.x) - * jtagmkII.c: When going to write to the boot section of flash, - use MTYPE_BOOT_FLASH rather than MTYPE_FLASH - * jtagmkII_private.h: add MTYPE_BOOT_FLASH constant - -2012-03-30 Joerg Wunsch - - * jtagmkII_private.h: Sort commands, response codes and events - into numerical order. - -2012-03-29 Joerg Wunsch - - bug #30451: Accessing some Xmega memory sections gives not - supported error - * stk500v2.c: Handle all Xmega memory sections (except - "prodsig" which is not documented in AVR079) - * fileio.c: Treat the "boot", "application", and "apptable" - regions (which are actually subregions of "flash") all as - being flash, i.e. suppress trailing 0xFF bytes when reading - them - * avr.c: (Dito.) - -2012-03-20 Joerg Wunsch - - * jtagmkII.c (jtagmkII_close): The GO command before signing off - turned out to be not required for normal megaAVR devices, and to - cause the exact opposite (i.e. the target stopping) on Xmega - devices being programmed to JTAG. However, programming Xmega - devcies through PDI *does* need the GO command. - -2012-03-20 Joerg Wunsch - - * configure.ac: Print a configuration summary at the end of the - configure run - -2012-02-11 Rene Liebscher - - patch #7718: Merge global data of avrftdi in a private data structure - * avrftdi.[ch]: moved global data into private data structure, moved - private defines from header file into source file - -2012-02-06 Rene Liebscher - - patch #7720 Bug in EEPROM write - * avrftdi.c: fixed wrong buffer address initialization in paged_write - * fileio.c: added #include - -2012-02-05 Rene Liebscher - - bug #30559 Ft232 bit-bang support - * ft245r.c: cancel reader thread before exiting program - -2012-02-04 Rene Liebscher - - patch #7717 avrftdi_flash_write is broken - * avrftdi.c: fixed wrong buffer address initialization in paged_write - bug #35296 Extraneous newlines in output. - * main.c: fixed output of newlines at 100% progress - -2012-02-03 Rene Liebscher - - patch #7715 FT4232H support - * avrdude.conf.in: added programmer 4232h - -2012-02-03 Rene Liebscher - - patch #7687: Autogenerating programmers and parts lists for docs - (generating the programmers lists) - * doc/avrdude.texi: Add include of generated table of programmers - * doc/Makefile.am: Add generating of table of programmers in programmers.texi - -2012-02-03 Rene Liebscher - - bug #34768 Proposition: Change the name of the AVR32 devices - * avrdude.conf.in: renamed ucr2 to uc3a0512 - * avrpart.c: added cast to avoid compiler warning - -2012-02-03 Joerg Wunsch - - * fileio.c (fileio_elf): Fix a copy'n-paste-o. - -2012-02-03 Joerg Wunsch - - * par.c (par_desc): Move to end of file, outside the #if - HAVE_PARPORT - -2012-02-02 Joerg Wunsch - - Implement ELF file reading (finally). Requires libelf(3) to be - present on the host system. - * configure.ac (HAVE_LIBELF): Add logic to detect presence of - libelf(3) - * Makefile.am (avrdude_LDADD): Add @LIBELF@ - * fileio.h (FILEFMT): add FMT_ELF - * fileio.c: Implement ELF file reader. - * update.c (parse_op): add 'e' format specifier - * avrdude.1: Document the ELF file reading capability - * doc/avrdude.texi: (Dito.) - -2012-02-01 Rene Liebscher - - bug #30559 Ft232 bit-bang support - * ft245r.[ch]: new programmer type implementation - * configure.ac: add pthread as link library - * avrdude.conf.in: added some new programmers - * Makefile.am: added new source files to compile - * pindefs.h: change PIN_MASK, PIN_INVERSE to highest bit of unsigned int - * pgm.[ch]: added generic function to print pin assignments (taken from par.c) - * par.c: moved pin assigment print function to pgm.c - -2012-02-01 Joerg Wunsch - - * lexer.l: Sort keyword tokens into alphabetic order. - -2012-01-31 Rene Liebscher - - * config_gram.y, lexer.l: removed unused ID/TKN_ID definitions - * config.[hc]: removed unused function id(), use value.type to select - values - -2012-01-31 Rene Liebscher - - 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 - * buspirate.c: added paged_write, changed binary mode setup/detection, - added clock output on AUX pin - * avrdude.1: updated documentation - * doc/avrdude.texi: updated documentation - -2012-01-31 Rene Liebscher - - Parser does not need to know all programmer types now, new programmers - will update only the table in pgm_type.c. - * config_gram.y, lexer.l: removed programmer type keywords, - use now locate_programmer_type() function - * pgm_type.[ch]: added new files for table of programmer types - * main.c: allow list of programmer types by -c ?type - * avrdude.conf.in: changed all type keywords to quoted strings - * doc/avrdude.texi: changed description of type definition, list - of valid types is now included from generated file - * doc/Makefile.am: generate list of programmer types for doc - * all programmers [hc]: add xxx_desc string for description of programmer - -2012-01-30 Rene Liebscher - - * configure.ac: fixed detection of yylex_destroy availability - by checking the version number of flex; bump required autoconf - version to 2.60 (for AC_PROG_SED) - -2012-01-30 Joerg Wunsch - - * lexer.l: Replace the old, now-defunct #define YY_NO_UNPUT by - the new %option nounput. This gets rid of a compiler warning. - -2012-01-30 Joerg Wunsch - - Add a connection_type attribute to each programmer, rather than - trying to hard-code the default port name in main.c. - * pgm.h: Add conntype to struct pgm. - * lexer.l: Extend grammar for connection_type. - * config_gram.y: (Dito.) - * config.h: Add DEFAULT_USB, for symmetry with default_parallel - and default_serial. - * main.c: Replace old default portname hack by avrdude.conf-based - knowledge. - * usbtiny.c: Drop an old hack that's no longer necessary. - * avrdude.conf.in: Add connection_type to each programmer - definition. - -2012-01-27 Rene Liebscher - - * avrdude.conf.in: used parent parts for some other parts, added - abstract .xmega part as parent for xmegas - * main.c: hide parts starting with '.' from parts list - -2012-01-22 Rene Liebscher - - patch #7688: Implement parent programmers feature - * avrdude.conf.in: updated documentation comment and some programmers - have now parents - * config_gram.y: initpgm will now called at first use of programmer - in main. parser sets only the function pointer in the pgm structure. - Pin and pin lists definitions can now be empty to remove the parents - setting. - * doc/avrdude.texi: updated documentation - * main.c: added call to pgm->initpgm after locate_programmer - * pgm.[hc]: added field initpgm in structure, added function pgm_dup - -2012-01-21 Rene Liebscher - - bug #21797: AT90PWM316: New part description - * avrdude.conf.in: added pwm316 with parent pwm3b but 16KB flash - -2012-01-20 Joerg Wunsch - - * configure.ac: Check for presence of lusb_usb.h as an alternative - to usb.h; libusb-win32 switched to this name in version 1.2.5.0. - * avrftdi.c: Decide whether to include , or . - * ser_avrdoper.c: (Dito.) - * usbasp.c: (Dito.) - * usb_libusb.c: (Dito.) - * usbtiny.c: (Dito.) - -2012-01-19 Rene Liebscher - - * avr.c: Unsigned variable was used for return code of paged_write/load - functions. So a negative return code led never to a fallback to byte - functions. - -2012-01-17 Rene Liebscher - - bug #34302: Feature request : device configuration with parent classes - * config_gram.y: if memory section is overwritten old entry is removed - - (not in original patch) - * config_gram.y: if programmer or part is defined twice, a warning is - output and the first instance is removed - - General cleanup and free functions, so valgrind does not report any lost - blocks at program end. - * avrpart.[hc]: added avr_free_(opcode|mem|part) functions - * pgm.[hc]: added pgm_free function - * update.[hc]: added free_update functions - * config.[hc]: added cleanup_config function, use yylex_destroy to reset - the lexer after usage. (So it can be reused.) - * main.c: add cleanup_main function which is called by atexit() (This - frees all lists so that at program exit only really lost memory is - reported by valgrind.) - * usbasp.c: added libusb_free_device_list() and libusb_exit() calls to - avoid lost memory - * buspirate.c: moved memory allocation from initpgm to setup and added - free in teardown - * configure.ac: add definition of HAVE_YYLEX_DESTROY if $LEX is flex. - * Makefile.am: added . in front of SUBDIRS to build avrdude before trying - to use it for creating the part list for the docs. - -2012-01-17 Rene Liebscher - - * usbasp.c: USB vid/pid/vendor/product from config file are used, for - id "usbasp" nibobee and old usbasp are tried as they were currently - implemented within usbasp - * avrdude.conf.in: added usb params to "usbasp", added new entry "nibobee" - with params which were hardcoded in usbasp.c, and added an entry - "usbasb-clone" which only checks vid/pid. - -2012-01-10 Rene Liebscher - - bug #35261 avrftdi uses wrong interface in avrftdi_paged_(write|load) - * avrftdi.c: Fixed interface and implementation of avrftdi_paged_(write|load) - patch #7672 adding support for O-Link (FTDI based JTAG) as programmer - * avrdude.conf.in: added o-link entry - -2012-01-10 Rene Liebscher - - patch #7699 Read additional config files - * main.c: Added reading of additional config files - * avrdude.1: updated man page - * doc/avrdude.texi: updated documentation - -2012-01-10 Joerg Wunsch - - Submitted by Bob Frazier: - bug #35208: avrdude 5.11 on freebsd 8.2-STABLE does not reset - Arduino Uno properly - * arduino.c (arduino_open): Bump the timeout between pulling - the DTR and RTS lines low and high. - -2012-01-08 Rene Liebscher - - Fixed following findings reported by cppcheck - * avr910.c:625 (error) Possible null pointer dereference: cmd - otherwise it is redundant to check if cmd is null at line 624 - * avr910.c:626 (error) Possible null pointer dereference: cmd - otherwise it is redundant to check if cmd is null at line 624 - * avr910.c:168 (information) The scope of the variable 'devtype_1st' can be reduced - * avr910.c:169 (information) The scope of the variable 'dev_supported' can be reduced - * avrftdi.c:647 (error) Using sizeof for array given as function argument returns the size of pointer. - * stk500v2.c:3347 (error) Memory leak: b - * stk500v2.c:3452 (error) Memory leak: b - * usbasp.c:554 (error) Using sizeof for array given as function argument returns the size of pointer. - * usbasp.c:485 (information) The scope of the variable 'dly' can be reduced - -2012-01-03 Joerg Wunsch - - Reported by Jason Kotzin: - * usbasp.c (usbasp_spi_paged_load, usbasp_spi_paged_write): - Fix buffer address calculation. - -2012-01-03 Rene Liebscher - - patch #7629 add support for atmega48p - * avrdude.conf.in: Added m48p with parent m48 + different signature - - * avrdude.conf.in: made part parents (m88p = m88 + different signature, - m168p = m168 + different signature) - -2012-01-02 Rene Liebscher - - bug #21663 AT90PWM efuse incorrect - bug #30438 efuse bits written as 0 on at90pwmxx parts - * avrdude.conf.in: (pwm2, pwm2b, pwm3, pwm3b) : Write - eight bits - - * avrdude.conf.in: made part parents (pwm3 = pwm2, pwm3b = pwm2b, - pwm2b = pwm2 + different signature) - - * ChangeLog-2011: New file, rotate ChangeLog for new year. diff --git a/ChangeLog-2013 b/ChangeLog-2013 deleted file mode 100644 index 8e975ef6..00000000 --- a/ChangeLog-2013 +++ /dev/null @@ -1,618 +0,0 @@ -2013-12-15 Nils Springob - - * pgm.c/pgm.h: fixed syntax error in const pointer to const - -2013-12-05 Joerg Wunsch - - * configure.ac: bump version to 6.1-svn-20131205 - -2013-12-05 Joerg Wunsch - - bug #40817: Elf file support (possibly) not working on 6.0.1 windows build - * fileio.c (fileio): open file in binary mode also for FMT_ELF - -2013-12-04 Rene Liebscher - - Rework of bitbanging functions setpin, getpin, highpulsepin to make simplier use - of new pindefs data in pgm structure - * linuxgpio.c, bitbang.c, buspirate.c, par.c, pgm.h, term.c, serbb_*.c: changed - interface of setpin, getpin, highpulsepin to take pin function as parameter - (not the real number, which can be found by pgm->pinno[function]) - -2013-11-30 Rene Liebscher - - bug #40748 linuxgpio doesn't work on Raspberry PI rev. 2. - * linuxgpio.c: fixed check for unused pins to ignore the inverse flag - * pindefs.c: fixed fill_old_pinlist to not create an empty mask with inverse flag set - -2013-10-18 Nils Springob - - * avrdude.conf.in (atmega1284): ATmega1284 variant added (same as ATmega1284p but with different signature) - -2013-09-25 Hannes Weisbach - - First part of patch #7720: - * avrdude.conf.in: Add UM232H and C232H programmers - -2013-09-22 Joerg Wunsch - - Submitted by Daniel Rozsnyo: - bug #40085: Typo fix in fuses report (for 6.1-svn-20130917) - * main.c: Fix a typo. - -2013-09-19 Hannes Weisbach - - task #12798: Please cleanup #ifdef notyet entries in avrftdi.c - * avrftdi.c: ditto. - avrftdi.c: Remove DRYRUN-option. - -2013-09-17 Joerg Wunsch - - bug #40055: AVRDUDE segfaults when writing eeprom - * main.c: Always clear the UF_AUTO_ERASE flag if either a - non-Xmega device was found, or the programmer does not offer a - page_erase method. - -2013-09-17 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version to post-6.0. - -2013-09-17 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version to 6.0. - -2013-09-17 Joerg Wunsch - - * jtag3.c (jtag3_initialize): Fix a buffer overflow by limiting - the flash page cache size to at most "readsize". For Xmegas with - a page size of 512 bytes, the maximum USB packet size was - overflowed, and subsequently, a memmove copied beyond the end of - the allocated buffer. - * jtag3.c (jtag3_read_byte): Add the correct offset also for the - various flash regions, so reading the apptable or boot regions - yields the correct data. - -2013-09-16 Joerg Wunsch - - Submitted by Joakim Lubeck: - bug #40040: Support for ATtiny20 and ATtiny40 - * avrdude.conf.in: Restructure the reduced-core tiny devices - to use a common entry .reduced_core_tiny; add ATtiny20 and - ATtiny40 - -2013-09-15 Joerg Wunsch - - Submitted by Joakim Lubeck: - bug #40033: Support for the XMegaE5 family - * avrdude.conf.in (ATxmega8E5, ATxmega16E5, ATxmega32E5): New - entries. - -2013-09-13 Joerg Wunsch - - * stk500v2.c (stk500v2_set_sck_period): Revamp this to match the - description/pseudo-code in appnote AVR068. - -2013-09-13 Joerg Wunsch - - Submitted by Stephen Roe: - patch #7710: usb_libusb: Check VID/PID before opening device - * usb_libusb.c (usbdev_open): Swap the sequence of verifying the - VID:PID, and opening the device. - -2013-09-13 Joerg Wunsch - - patch #8176: butterfly.c (AVR109 protocol implementation) clean-up and bug-fixing - * butterfly.c (butterfly_page_erase): Add dummy function to avoid - segfault when writing to EEPROM. - -2013-09-13 Joerg Wunsch - - bug #35474 Feature request: print fuse values in safemode output - * config_gram.y: New configuration token "default_safemode". - * lexer.l: (Dito.) - * avrdude.conf.in: (Dito.) - * config.h: Add variable default_safemode. - * config.c: (Dito.) - * main.c: Handle default_safemode, including -u option. - * avrdude.1: Document all this. - * doc/avrdude.texi: (Dito.) - -2013-09-13 Joerg Wunsch - - Submitted by HubertB: - patch #7657 Add ATmega406 support for avrdude using DRAGON + JTAG - * avrdude.conf.in (ATmega406): New entry. - -2013-09-13 Joerg Wunsch - - Submitted by Marc de Hoop: - patch #7606 ATtiny43u support - * avrdude.conf.in (ATtiny43U): New entry. - -2013-09-13 Joerg Wunsch - - patch #5708 avrdude should make 10 synchronization attempts instead of just one - * stk500.c (stk500_getsync): Loop 10 times trying to get in - sync with the programmer. - -2013-09-13 Joerg Wunsch - - Contributed by Ricardo Martins: - bug #36384 ATxmega32A4 usersig size - * avrdude.conf.in: Revamp all the ATxmega* entries. Add new - entries for 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 - -2013-09-13 Joerg Wunsch - - bug #35456 The progress bar for STK500V2 programmer is "wrong". - * avr.c (avr_read, avr_write): Change the progress reporting for - paged read/write from per-address to per-considered-page. This - ought to give a realistic estimation about the time still to be - spent. - -2013-09-13 Joerg Wunsch - - bug #34277: avrdude reads wrong byte order if using avr911 (aka butterfly) - * butterfly.c (butterfly_read_byte_flash): Swap bytes received. - -2013-09-12 Joerg Wunsch - - bug #37768 Poll usbtiny 100 times at init time to handle low-clock devices - * doc/avrdude.texi: Add a FAQ entry about how to connect to a - target where the firmware has reduced the internal clock speed. - -2013-09-11 Joerg Wunsch - - bug #28344 chip_erase_delay too short for ATmega324P, 644, 644P, and 1284P - * avrdude.conf: Bump the chip_erase_delay for all ATmega*4 devices - to 55 ms. While the datasheet still claims 9 ms, all the XML files - tell either 45 or 55 ms, depending on STK600 or not. - -2013-09-11 Joerg Wunsch - - * fileio.c (fileio): Don't exit(1) if something goes wrong; return - -1 instead. Don't refer to obsolete option -f to specify the file - format. - -2013-09-10 Joerg Wunsch - - Submitted by Matthias Trute: - bug #36901 flashing Atmega32U4 EEPROM produces garbage on chip - * avrdude.conf.in (ATmega32U4): Fix EEPROM pagesize to 4, the - datasheet is wrong here. - -2013-09-09 Joerg Wunsch - - * configure.ac: check for ar and ranlib in the target tool - namespace, rather than on the host. - -2013-09-08 Joerg Wunsch - - Fix byte-wise EEPROM and flash writes on Xmega - * jtagmkII_private.h (MTYPE_EEPROM_XMEGA): New memory type. - * jtagmkII.c (jtagmkII_write_byte): For Xmega EEPROM, use - memory type MTYPE_EEPROM_XMEGA; for flash writes, always - write 2 bytes starting on an even address. - -2013-09-08 Joerg Wunsch - - * term.c: Implement the "verbose" terminal mode command. - * avrdude.1: Document this. - * doc/avrdude.texi: (Dito.) - -2013-09-07 Joerg Wunsch - - * jtag3.c (jtag3_write_byte): Do not attempt to start the paged - algorithm for EEPROM when being connected through debugWIRE. - -2013-09-06 Joerg Wunsch - - Extend the single-byte algorithm to all devices, both flash and - EEPROM. (Flash cells must have been erased before though.) - * jtag3.c (jtag3_initialize): OCDEN no longer needs to be - considered; a session with "programming" purpose is sufficient - * jtag3.c (jtag3_write_byte): Use the paged algorithm for all - flash and EEPROM areas, not just Xmega. - -2013-09-05 Joerg Wunsch - - Fix single-byte EEPROM updates on Xmega: - * jtag3_private.h (MTYPE_EEPROM_XMEGA): New define. - * jtag3.c (jtag3_write_byte): When updating flash or - EEPROM on Xmega devices, resort to jtag3_paged_write() - after filling and modifying the page cache. - * jtag3.c (jtag3_paged_write): use MTYPE_EEPROM_XMEGA - where appropriate. - * jtag3.c (jtag3_initialize): Open with debugging intent - for Xmega devices, so single-byte EEPROM updates will - work. - -2013-09-04 Joerg Wunsch - - Submitted by Matthias Neeracher: - bug #38732: Support for ATtiny1634 - * avrdude.conf.in (ATtiny1634): New entry. - -2013-09-03 Joerg Wunsch - - Submitted by Brane Ždralo: - patch #7769: Write flash fails for AVR910 programmers - * avr910.c (avr910_paged_write): Fix flash addresses in - 'A' command. - -2013-09-03 Joerg Wunsch - - Submitted by Fred (magister): - bug #38951: AVR109 use byte offset instead of word offset - patch #8045: AVR109 butterfly failing - * butterfly.c (butterfly_paged_load, butterfly_paged_write): - fix calculation of 'A' address when operating on flash memory. - It must be given in terms of 16-bit words rather than bytes. - -2013-09-03 Rene Liebscher - - * avrftdi.c, avrftdi_private.h: added tx buffer size, and use - smaller block sizes as larger sometimes hang - -2013-09-03 Joerg Wunsch - - * avrdude.h: Remove the erase cycle counter (options -y / -Y). - * avr.c: (Dito.) - * main.c: (Dito.) - * avrdude.1: Undocument -y / -Y. - * doc/avrdude.texi: (Dito.) - -2013-09-03 Joerg Wunsch - - bug #39691 Buffer overrun when reading EEPROM byte with JTAGICE3 - * jtag3.c (jtag3_initialize): initialize the eeprom_pagesize - private attribute so the page cache will actually be usable - -2013-09-03 Joerg Wunsch - - bug #38580 Current svn head, xmega and fuses, all fuses tied to fuse0 - * jtag3.c (jtag3_read_byte, jtag3_write_byte): Correctly apply the - relevant part of mem->offset as the address to operate on. - -2013-09-03 Joerg Wunsch - - * fileio.c: Fix "unused variable" warnings. - * avr.c: (Dito.) - * stk500v2.c: (Dito.) - * stk500.c: (Dito.) - * jtagmkII.c: (Dito.) - * term.c: (Dito.) - * ser_posix.c: (Dito.) - -2013-09-02 Joerg Wunsch - - Submitted by Travis Griggs: - bug #38307: Can't write usersig of an xmega256a3 - * stk500v2.c (stk600_xprog_page_erase): allow erasing the usersig space. - -2013-09-02 Joerg Wunsch - - Submitted by Robert Niemi: - bug #35800: Compilation error on certain systems if parport is disabled - * linux_ppdev.h: Conditionalize inclusion of and - on HAVE_PARPORT - -2013-09-02 Joerg Wunsch - - bug #39794: warnings when building avrdude 6.0rc1 under CentOS 6.4 - * pickit.c (usb_open_device): Use %p rather than %X to print "handle" - which is a pointer - * jtag3.c (jtag3_initialize): Initialize "flashsize" to be sure it - proceeds with a valid value. - -2013-09-02 Joerg Wunsch - - bug #39794: warnings when building avrdude 6.0rc1 under CentOS 6.4 - * buspirate.c: Turn the "cmd" argument of the various methods into - a "const unsigned char *"; while doing this, declare all arrays being - passed as arguments to be pointers rather than arrays, as the latter - obfuscates the way arrays are being passed to a callee in C. - * avrftdi.c: (Dito.) - * pickit2.c: (Dito.) - * ft245r.c: (Dito.) - * avr910.c: (Dito.) - * stk500.c: (Dito.) - * bitbang.c: (Dito.) - * bitbang.h: (Dito.) - * avrftdi_tpi.c: (Dito.) - * avrftdi_tpi.h: (Dito.) - * usbasp.c: (Dito.) - * stk500v2.c: (Dito.) - * pgm.h: (Dito.) - * usbtiny.c: (Dito.) - -2013-09-02 Joerg Wunsch - - bug #38023: avrdude doesn't return an error code when attempting - to upload an invalid Intel HEX file - * fileio.c (ihex2b): Turn the "No end of file record found" warning - into an error if no valid record was found at all. - -2013-09-02 Joerg Wunsch - - Submitted by Claus-Justus Heine: - bug #38713: Compilation of the documentation breaks with texinfo-5 - * doc/avrdude.texi: Turn @itemx into @item, add @headitem to STK600 - Routing/Socket card table - -2013-09-02 Joerg Wunsch - - * usbasp.c: Add trace output for -vvv to non-TPI functions, too. - -2013-09-01 Joerg Wunsch - - * usbasp.c (usbasp_tpi_paged_load): Calculate correct - buffer address. - * usbasp.c (usbasp_tpi_paged_write): Calculate correct - buffer address; don't issue a SECTION_ERASE command for - each page (a CHIP_ERASE has been done before anyway); - remove the code that attempted to handle partial page - writes, as all writes are now done with a full page. - -2013-09-01 Joerg Wunsch - - * usbasp.c: Add more trace output, by now only for the TPI - functions. - -2013-08-31 Joerg Wunsch - - * usbasp.c (usbasp_transmit): Add -vvvv trace output. - -2013-08-30 Joerg Wunsch - - bug #39893: Verification failure with AVRISPmkII and Xmega - * stk500v2.c (stk600_xprog_page_erase): Fix argument that is - passed to stk600_xprog_memtype() - -2013-07-11 Joerg Wunsch - - * fileio.c (elf2b): replace elf_getshstrndx() by - elf_getshdrstrndx() as the former one is deprecated - -2013-06-19 Rene Liebscher - - use bitbanging on ftdi mpsse when wrong pins are used - * avrftdi.c, avrftdi_private.h: added additional pin check - and bitbanging fallback - * pindefs.[ch]: added a flag to enable/disable output - * ft245r.c: changes because of added flag above - -2013-05-17 Joerg Wunsch - - Submitted by "Malte" and John McCorquodale: - patch #7876 JTAGICE mkII fails to connect to attiny if debugwire - is enabled AND target has a very slow clock - * jtagmkII.c (jtagmkII_getsync): When leaving debugWIRE mode - temporarily, immediately retry with ISP, rather than leaving. - * stk500v2 (stk500v2_program_enable): Implemented similar logic - for the JTAGICE3. - -2013-05-16 Rene Liebscher - - * configure.ac: reactivate check for TYPE_232H, which does not - exist in libftdi < 0.20 - * avrftdi*.*: changed include check for libftdi/libusb, deactivate - 232H if not available - * ft245r.c: changed include check for libftdi/libusb - -2013-05-08 Joerg Wunsch - - * main.c (main): Add option -l logfile. - * avrdude.1: Document -l option. - * doc/avrdude.texi: (Dito.) - -2013-05-15 Rene Liebscher - - * configure.ac: if both found libftdi and libftdi1 use only libftdi1 - * avrdude.conf.in: fixed buff pins of avrftdi programmers (low - active buffer need now inverted numbers) - * avrftdi*.*: accept also old libftdi (0.20 still works with it), - added powerup to initialize - * ft245r.c: accept libftdi1, code cleanup and make it more similar - to avrfdti (os they might be merged someday) - -2013-05-08 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version to 6.0rc1. - -2013-05-07 Hannes Weisbach - - * avrftdi_private.h: Change size of pin_checklist to N_PINS (from N_PINS-1) - * avrftdi.c: Adapt code to new size of pin_checklist. Remove pins_check() - from set_pin(). - Add pgm->power[up|down] functions as well as fill pgm->enable|disable with - proper content as suggested by Rene Liebscher. - -2013-05-05 Rene Liebscher - - * pindefs.h: use unsigned int if stdint.h is not available and UINT_MAX is 0xffffffff - otherwise use unsinged long - * ft245r.c: added support for more pin functions led, vcc, buff - -2013-05-06 Hannes Weisbach - - * avrftdi_tpi.c: instead of private set_pin() function pointer use the one - declared in struct PROGRAMMER. - * avrftdi_private.h: remove set_pin function pointer. Add pin_checklist_t - member to check pgm->setpin calls during runtime. - * avrftdi.c: remove set_pin function pointer init, add pgm->setpin init. - Convert avrftdi to new 0-based pindefs infrastructure. - * avrdude.conf.in: Change all avrftdi-based programmers' pin definitions to - 0-based. - -2013-05-06 Joerg Wunsch - - * pindefs.h: Include "ac_cfg.h" before testing for HAVE_* macros. - -2013-05-05 Rene Liebscher - - * main.c: revert to rev 1159 (doing pgm_display after pgm_open) - * avrpart.[ch]: moved avr_pin_name to pindefs.[ch] - * pgm.c: moved pins_to_str to pindefs.[ch], added initialization of - new pin definitions in pgm_new() - * pindefs.[ch]: added moved functions from other files, added a lot of - documentation, reformatted files using astyle to have consistent spacing, - added a new generic check function for pins - * ft245r.c: used new generic pin check function - -2013-05-03 Rene Liebscher - - Create new pin definition data structures to support 0-based pin numbers, - and mixed inverse/non-inverse pin lists. - * avrftdi.c,buspirate.c,linuxgpio.c,par.c,serbb_*.c: added function call - to fill old pinno entries from new pin definitions. - * pindefs.[hc]: added data struct and helper functions for new pin definitions - * avrdude.conf.in: pins in entries using ftdi_syncbb are now 0-based - * config_gram.y: allow combinations of inverted and non-inverted pins in pin lists - * ft245r.c: reworked to work directly with the new pin definitions, - pins are now 0-based, inverse pins are supported, buff is supported - * pgm.[ch]: added new pin definitions field to programmer structure, - adapted pin display functions - -2013-05-03 Hannes Weisbach - - * avrftdi_private.h: Remove update forward declaration from avrftdi_print to - avrftdi_log. - * avrftdi_tpi.c: Do all I/O in terms of pgm->cmd_tpi()-calls instead of - avrftdi_tpi_[read,write]_byte(). - Remove unnecessary set_pin call to set MOSI high, speeds up I/O. - Removes SKEY array, moves it to tpi.h. - Integrate new avr_tpi_[program_enable,chip_erase]() and functions into - avrftdi_tpi. - * avrftdi_tpi.h: Remove avrftdi_tpi_[program_enable,chip_erase] forward - declarations. - * avr.c: Adds avr_tpi_chip_erase() generic TPI chip erase function. - Adds avr_tpi_program_enable() - generic TPI external programming enable - function. Sets guard time, reads identification register, sends SKEY command - and key, checks NVMEN bit. The required guard time has to be passed as - parameter. - * tpi.h: Adds SKEY array including CMD_SKEY in "correct" order. - -2013-05-02 Hannes Weisbach - - * avrftdi_private.h: Add libusb-1.0 include to fix include order in windows. - * NEWS: Add notice avrftdi supporting TPI - * avr.c: Fix avr_tpi_poll_nvmbsy() - poll read data instead of return code - * avrftdi_private.h, avrftdi.c: move logging #defines to from avrftdi.c to - avrftdi_private.h, so that they are available for avrftdi_tpi, too. - -2013-04-30 Hannes Weisbach - - * tpi.h: Add definition for TPI Identification Code - * avrftdi_tpi.c: Add TPI-support for FTDI-based programmers - * avrftdi_private.h: Add common include file for FTDI-based programmers - -2013-04-28 Hannes Weisbach - - * avrftdic: Rework of textual output. Messages are divided by severity and - printed accordingly to the verbosity, as specified by the user. The provided - severity level are (ERROR, WARN, INFO, DEBUG, TRACE). Where "ERROR" messages - are always printed. Shortcut-macros including function, from which the - output was generated, and line number were also added. - Some log messages were updated and other code warnings removed. - -2013-04-27 Hannes Weisbach - - * configure.ac: Add libftdi1 library check, remove TYPE_232H DECL check - * Makefile.am: Add @LIBFTDI1@ to avrdude_LDADD - * avrftdi.c: Update from libftdi0 to libftdi1. Use libftdi1's function to - find a device by vid/pid/serial instead of doing it ourself and add/update - error messages. avrftdi_print is changed so that a message is printed when - the verbosity level is greater or equal the message level, to have always-on - messages. - Fix a bug where the RX fifo of the FTDI chip is full, resulting in STALL/NAK - of the ongoing OUT request and subsequently timeout, because an IN request - cannot be issued due to the synchronous part of libftdi. This should fix - #38831 and #38659. - -2013-04-25 Joerg Wunsch - - * configure.ac(AC_CONFIG_HEADERS): Replace the old AM_CONFIG_HEADER - by this; automake 1.13+ barfs. - -2013-03-12 Joerg Wunsch - - * avrdude.conf.in (ATmega2564RFR2, ATmega1284RFR2, ATmega644RFR2): - New devices - -2013-01-30 Rene Liebscher - - patch #7724 Add TPI support for Bus Pirate using bitbang mode - * buspirate.[ch]: added support for BusPirate Bitbanging - * pgm_type.c: added entry for buspirate_bb - * avrdude.conf.in: added entry for buspirate_bb - -2013-01-30 Rene Liebscher - - patch #7936 Patch to support BusPirate AVR Extended Commands mode - * buspirate.c: added support for BusPirate AVR Extended Commands mode - * avrdude.1: added doc for nopagedread parameter - * doc/avrdude.texi: added doc for nopagedread parameter - -2013-01-30 Rene Liebscher - - patch #7723 Bus Pirate “raw-wire†mode which can run down to 5 kHz - * buspirate.c: added raw wire mode - * avrdude.1: added doc for rawfreq parameter - * doc/avrdude.texi: added doc for rawfreq parameter - -2013-01-30 Rene Liebscher - - bug #37977 Support for Openmoko Debug Board - * avrdude.conf.in: added openmoko entry - -2013-01-29 Rene Liebscher - - patch #7932 Read USBtiny VID and PID from avrdude.conf if provided. - * avrdude.conf.in: added usbpid, usbvid to usbtiny - * usbtiny.[ch]: use usbpid, usbpid if provided in config file - -2013-01-26 Joerg Wunsch - - bug #38172: avrftdi: Incorrect information in avrdude.conf - * avrdude.conf.in (avrftdi): fix comments about ACBUS vs. ADBUS; - add a comment that the MPSSE signals are fixed by the FTDI - hardware and cannot be changed - -2013-01-09 Rene Liebscher - - patch #7165 Add support for bitbanging GPIO lines using the Linux sysf GPIO interface - * doc/avrdude.texi,avrdude.1: added doc for linuxgpio - * avrdude.conf.in: added template for linuxgpio programmer - * config_gram.y: pin numbers restricted to [PIN_MIN, PIN_MAX] - * pindefs.h: added PIN_MIN, PIN_MAX, removed unused LED_ON/OFF - * configure.ac: configure option enable-linuxgpio, print of enabled options - * linuxgpio.[ch]: new source for linuxgpio programmer - * Makefile.am: added linuxgpio to sources list - * pgm_type.c: added linuxgpio to programmer types list - -2013-01-08 Joerg Wunsch - - * jtagmkI.c (jtagmkI_prmsg): replace a putchar() by putc(...stderr) - * jtagmkII.c (jtagmkII_prmsg): (Dito.) - * jtag3.c (jtag3_prevent, jtag3_prmsg): (Dito.) - -2013-01-02 Joerg Wunsch - - * usb_libusb.c (usbdev_open): Downgrade the max transfer size for - the main data endpoints when being forced so by the USB; this can - happen when attaching the JTAGICE3 to a USB 1.1 connection - * jtag3.c (jtag3_initialize): When detecting a downgraded max - transfer size on the JTAGICE3 (presumably, due to being connected - to USB 1.1 only), bail out as its firmware cannot properly handle - this (by now) - -2013-01-02 Joerg Wunsch - - * ChangeLog: annual ChangeLog rotation time diff --git a/ChangeLog-2014 b/ChangeLog-2014 deleted file mode 100644 index 3fe7a53a..00000000 --- a/ChangeLog-2014 +++ /dev/null @@ -1,697 +0,0 @@ -2014-11-26 Joerg Wunsch - - * ser_win32.c (net_send): Properly declare argument 2 as being a - pointer to const data. - -2014-11-25 Joerg Wunsch - - patch #8380: adds 500k 1M 2M baud to ser_posix.c - * ser_posix.c: Add a hack to allow for arbitrary baud rates on - Linux - -2014-11-25 Joerg Wunsch - - patch #8437: [PATCH] Serial-over-ethernet for Win32 - * configure.ac: Check for ws2_32 library - * ser_win32.c: Add hooks for forwarding serial data over - TCP connections - * avrdude.1: Drop previous restriction of -P net: - * doc/avrdude.conf: (Dito.) - -2014-11-24 Joerg Wunsch - - bug #42908: no external reset at JTAGICE3 - * jtag3.c (jtag3_initialize): Retry with external reset applied if - the first sign-on attempt fails. - -2014-11-23 Joerg Wunsch - - * main.c: Allow the -B option argument to be suffixed with Hz, - kHz, or MHz, in order to specify a bitclock frequency rather than - period. - * avrdude.1: Document the -B option changes. - * doc/avrdude.texi: (Dito.) - -2014-11-23 Joerg Wunsch - - bug #40870: config nitpick: ATtiny25/45/85 have 1 calibration byte not 2 - * avrdude.conf.in (ATtiny25, ATtiny45, ATtiny85): Fix size of - "calibration" memory area - -2014-11-23 Joerg Wunsch - - bug #43137: Writing and reading incorrect pages when using jtagicemkI - * jtagmkI.c (jtagmkI_paged_write, jtagmkI_paged_load): correctly - calculate the size of a partial (non-pagesize) buffer - -2014-11-23 Joerg Wunsch - - bug #43078: AVRDUDE crashes after sucessfully reading/writing eeprom - * jtag3.c (jtag3_edbg_recv_frame): Return correct length as - reported in the response packet, rather than full 512 byte which - are always reported by the CMSIS-DAP layer. Miscalculations - based on the wrongly reported length caused heap corruption - elsewhere, so this is presumably also a fix for bug #43078. - -2014-11-20 Joerg Wunsch - - bug #41561: AVRDUDE 6.0.1/USBasp doesn't write first bytes of - flash page - * usbasp.c (usbasp_spi_paged_write): Remove USBASP_BLOCKFLAG_LAST. - It is no longer needed, as we always write full pages now in paged - write mode. - -2014-11-19 Joerg Wunsch - - bug #43626: Inconsistent timeouts in stk500v2 - * stk500v2.c (stk500v2_recv): Add a reference to the bug report - but don't change anything, lest to break it somehow - -2014-11-14 Rene Liebscher - - patch #8529 2 more ftdi_syncbb devices - * avrdude.conf.in: added 2 new programmers - -2014-11-14 Rene Liebscher - - bug #40142 Floating point exception on Ubuntu 10.04 - * avr.c: avoid division by zero in report_progress(), eg. when - writing an empty eeprom file were total becomes 0 - -2014-11-13 Rene Liebscher - - patch #8504 buspirate: Also support "cpufreq" extended parameter - in binary mode - * buspirate.c: applied patch + switch off at disable (even when - a reset follows) + some general whitespace/tab cleanup - -2014-10-15 Joerg Wunsch - - bug #37441: lockbits in ATxmega + avrdude = problem - * fileio.c: replace strmcp(..., "lock") by strncmp(..., "lock", 4) - where applicable - * jtag3.c: (Dito.) - * jtagmkII.c: (Dito.) - -2014-10-07 Joerg Wunsch - - bug #42267: jtag3isp fails to read lock and fuse bytes directly - after changing lock byte - * stk500v2.c (stk500isp_write_byte): As a workaround for broken - tool firmware, add 10 ms of delay before returning from any - single-byte write operation. - -2014-10-06 Joerg Wunsch - - * stk500v2.c: Use stk500isp_read_byte/stk500isp_write_byte for - every byte-wide access (rather than JTAGICE3 only). This finally - obsoletes the use of the prehistoric SPI_MULTI command where - AVRDUDE used to assemble all the low-level ISP stuff by itself. - -2014-10-06 Joerg Wunsch - - bug #22248: Read efuse error - * avrdude.conf.in (m168, m328, m48, m88, t1634, t26, t261, t461, - t861, t88): In efuse (or hfuse for t26) read operation, turn all - bits in byte 3 from "x" to "o" (output); this is a first step - towards fixing the symptoms mentioned in the bug, by unifying the - behaviour between different AVRs. Not touched are the historic - devices where the fuses are not documented to form a full byte - each (2333, 4433, 4434, 8535, m103, m161, m163). - -2014-09-22 Joerg Wunsch - - bug #43268: usb_drain() call causes LUFA AVR-ISP MKII Code to Fail - * usb_libusb.c (usbdev_drain): Make this a dummy function only. - -2014-08-19 Rene Liebscher - - patch #7694 Add support for the atmega32m1 - * avrdude.conf.in: added ATmega32M1 - -2014-08-18 Rene Liebscher - - patch #8440 Print part id after signature - When printing the part signature also print the part id. - * avrpart.c (locate_part_by_signature): New function. - * libavrdude.h (locate_part_by_signature): New function. - * main.c (main): Use the new function to find the part and print its id. - -2014-08-18 Rene Liebscher - - patch #8511 Fix reset on FT245R - * ft245r.c: applied patch - -2014-08-18 Rene Liebscher - - bug #43002 usbasp debug output typo - * usbasp.c: fixed typos - -2014-07-16 Joerg Wunsch - - bug #42662 clang warnings under FreeBSD 10.x - * avrftdi.h: Fix header guard macro name. - * pgm_type.c (programmers_types): Remove duplicate "const". - -2014-07-16 Rene Liebscher - - bug #42662 clang warnings under FreeBSD 10.x - * avrftdi.c: remove warnings - * buspirate.c: (Dito.) - * dfu.c: (Dito.) - * fileio.c: (Dito.) - * libavrdude.h: (Dito.) - * pickit2.c: (Dito.) - * safemode.c: (Dito.) - * ser_avrdoper.c: (Dito.) - * ser_posix.c: (Dito.) - * ser_win32.c: (Dito.) - * stk500v2.c: (Dito.) - * usb_libusb.c: (Dito.) - * usbasp.c: (Dito.) - - * config_gram.y: fix problem when using parent part with usbpid lists - (existing list was extended not overwritten) - -2014-07-11 Axel Wachtler - - * avrftdi.c: rollback to vfprintf, fixed error from -r1305, (patch #8463) - -2014-06-23 Rene Liebscher - - * linux_ppdev.h: added missing msg level for avrdude_message - in ppi_claim/ppi_release macros - * avrftdi.c: added break at end of default - -2014-06-21 Rene Liebscher - - patch #8419 fix ftdi_syncbb hang with libftdi 1 - * ft245r.c: set pthread cancel type to asynchronous, reorder ftdi_usb_close/deinit - -2014-06-17 Rene Liebscher - - * avrftdi_private.h: added missing msg level for avrdude_message - in E/E_VOID macros - -2014-06-17 Rene Liebscher - - Removing exit calls from config parser - * config.h: cleanup, left only internally needed definitions - * config.c: removed exit calls, use yyerror and yywarning - * config_gram.y: (Dito.) - * lexer.l: (Dito.) - * libavrdude.h: removed internal definitions of config parser - * main.c: removed yyerror, it is now in config.c - * jtagmkII.c: added missing free in error case - * pgm.c: replaced exits by returns - * pickit2.c: add missing return - -2014-06-13 Axel Wachtler - - start removing global "verbose" variable, for avrdude library. - * arduino.c: added verbose level in avrdude_message() - * avr910.c: (Dito.) - * avr.c: (Dito.) - * avrdude.h: (Dito.) - * avrftdi.c: (Dito.) - * avrpart.c: (Dito.) - * bitbang.c: (Dito.) - * buspirate.c: (Dito.) - * butterfly.c: (Dito.) - * config.c: (Dito.) - * config_gram.y: (Dito.) - * dfu.c: (Dito.) - * fileio.c: (Dito.) - * flip1.c: (Dito.) - * flip2.c: (Dito.) - * ft245r.c: (Dito.) - * jtag3.c: (Dito.) - * jtagmkI.c: (Dito.) - * jtagmkII.c: (Dito.) - * lexer.l: (Dito.) - * libavrdude.h: (Dito.) - * linuxgpio.c: (Dito.) - * main.c: (Dito.) - * par.c: (Dito.) - * pgm.c: (Dito.) - * pickit2.c: (Dito.) - * pindefs.c: (Dito.) - * ppi.c: (Dito.) - * ppiwin.c: (Dito.) - * safemode.c: (Dito.) - * ser_avrdoper.c: (Dito.) - * serbb_posix.c: (Dito.) - * serbb_win32.c: (Dito.) - * ser_posix.c: (Dito.) - * ser_win32.c: (Dito.) - * stk500.c: (Dito.) - * stk500generic.c: (Dito.) - * stk500v2.c: (Dito.) - * term.c: (Dito.) - * update.c: (Dito.) - * usbasp.c: (Dito.) - * usb_libusb.c: (Dito.) - * usbtiny.c: (Dito.) - * wiring.c: (Dito.) - -2014-06-11 Rene Liebscher - - bug #42516 spelling-error-in-binary - * stk500v2.c, avrftdi.c, usbasp.c: fixed spelling errors - -2014-06-01 Rene Liebscher - - bug #42337 avrdude.conf updates for UM232H/CM232H - * avrdude.conf.in: fixed entries as proposed - -2014-05-19 Joerg Wunsch - - bug #41854: avrdude 6.1 does not compile on systems without libUSB - Submitted by Didrik Madheden: - * flip1.c: Provide dummy functions for the #ifndef HAVE_LIBUSB case - * flip2.c: (Dito.) - -2014-05-19 Joerg Wunsch - - * libavrdude.h: Join the former "public" header files (avr.h avrpart.h pindefs.h - serial.h fileio.h safemode.h update.h pgm_type.h config.h confwin.h lists.h) into - a single header that can be included by anyone wanting to link against the - library - * avr.h: Remove file. - * avrpart.h: (Dito.) - * pindefs.h: (Dito.) - * serial.h: (Dito.) - * fileio.h: (Dito.) - * safemode.h: (Dito.) - * update.h: (Dito.) - * pgm.h: (Dito.) - * pgm_type.h: (Dito.) - * config.h: (Dito.) - * confwin.h: (Dito.) - * lists.h: (Dito.) - * Makefile.am: Adapt for new include file constellation; install shared lib - * configure.ac: Bump version date - * arduino.c: #include rather than a bunch of different headers - * avr910.c: (Dito.) - * avr910.h: (Dito.) - * avr.c: (Dito.) - * avrftdi.c: (Dito.) - * avrftdi_private.h: (Dito.) - * avrftdi_tpi.c: (Dito.) - * avrftdi_tpi.h: (Dito.) - * avr.h: (Dito.) - * avrpart.c: (Dito.) - * avrpart.h: (Dito.) - * bitbang.c: (Dito.) - * buspirate.c: (Dito.) - * butterfly.c: (Dito.) - * config.c: (Dito.) - * config_gram.y: (Dito.) - * config.h: (Dito.) - * confwin.c: (Dito.) - * confwin.h: (Dito.) - * dfu.c: (Dito.) - * fileio.c: (Dito.) - * fileio.h: (Dito.) - * flip1.c: (Dito.) - * flip1.h: (Dito.) - * flip2.c: (Dito.) - * flip2.h: (Dito.) - * ft245r.c: (Dito.) - * ft245r.h: (Dito.) - * jtag3.c: (Dito.) - * jtagmkI.c: (Dito.) - * jtagmkII.c: (Dito.) - * lexer.l: (Dito.) - * libavrdude.h: (Dito.) - * linuxgpio.c: (Dito.) - * lists.c: (Dito.) - * lists.h: (Dito.) - * main.c: (Dito.) - * par.c: (Dito.) - * pgm.c: (Dito.) - * pgm_type.c: (Dito.) - * pgm_type.h: (Dito.) - * pickit2.c: (Dito.) - * pickit2.h: (Dito.) - * pindefs.c: (Dito.) - * pindefs.h: (Dito.) - * ppi.c: (Dito.) - * ppiwin.c: (Dito.) - * safemode.c: (Dito.) - * safemode.h: (Dito.) - * ser_avrdoper.c: (Dito.) - * serbb_posix.c: (Dito.) - * serbb_win32.c: (Dito.) - * serial.h: (Dito.) - * ser_posix.c: (Dito.) - * ser_win32.c: (Dito.) - * stk500.c: (Dito.) - * stk500generic.c: (Dito.) - * stk500v2.c: (Dito.) - * stk500v2_private.h: (Dito.) - * term.c: (Dito.) - * term.h: (Dito.) - * update.c: (Dito.) - * update.h: (Dito.) - * usbasp.c: (Dito.) - * usbasp.h: (Dito.) - * usb_libusb.c: (Dito.) - * usbtiny.c: (Dito.) - * usbtiny.h: (Dito.) - * wiring.c: (Dito.) - -2014-05-19 Joerg Wunsch - - * main.c: Cleanup unused include files. - -2014-05-19 Joerg Wunsch - - * linux_ppdev.h: Caught two more instances of exit() - * configure.ac: Add AC_CONFIG_MACRO_DIR as suggested by libtoolize - * Makefile.am: add -I m4 to ACLOCAL_AMFLAGS as suggested by libtoolize - -2014-05-16 Axel Wachtler - - * arduino.c: Replacing all occurences of fprintf(stderr,...) with avrdude_message(...) - in potential library functions. - * avr910.c: (Dito.) - * avr.c: (Dito.) - * avrdude.h: (Dito.) - * avrftdi.c: (Dito.) - * avrftdi_private.h: (Dito.) - * avrpart.c: (Dito.) - * bitbang.c: (Dito.) - * buspirate.c: (Dito.) - * butterfly.c: (Dito.) - * config.c: (Dito.) - * config_gram.y: (Dito.) - * dfu.c: (Dito.) - * fileio.c: (Dito.) - * flip1.c: (Dito.) - * flip2.c: (Dito.) - * ft245r.c: (Dito.) - * jtag3.c: (Dito.) - * jtagmkI.c: (Dito.) - * jtagmkII.c: (Dito.) - * lexer.l: (Dito.) - * linuxgpio.c: (Dito.) - * linux_ppdev.h: (Dito.) - * main.c: (Dito.) - * par.c: (Dito.) - * pgm.c: (Dito.) - * pickit2.c: (Dito.) - * pindefs.c: (Dito.) - * ppi.c: (Dito.) - * ppiwin.c: (Dito.) - * safemode.c: (Dito.) - * ser_avrdoper.c: (Dito.) - * serbb_posix.c: (Dito.) - * serbb_win32.c: (Dito.) - * ser_posix.c: (Dito.) - * ser_win32.c: (Dito.) - * stk500.c: (Dito.) - * stk500generic.c: (Dito.) - * stk500v2.c: (Dito.) - * term.c: (Dito.) - * update.c: (Dito.) - * usbasp.c: (Dito.) - * usb_libusb.c: (Dito.) - * usbtiny.c: (Dito.) - * wiring.c: (Dito.) - -2014-05-16 Joerg Wunsch - - * configure.ac: Bump version, add libtool hooks - * Makefile.am: First attempt to define building a shared library - (not to be installed by now) - -2014-05-16 Joerg Wunsch - - * dfu.c (dfu_open, dfu_init): Fix signature of the dummy functions - (in the !HAVE_LIBUSB case) to match prototypes. - -2014-05-16 Joerg Wunsch - - * avr910.c: Replace all occurences of exit() in potential library - functions by appropriate return values - * avrftdi.c: (Dito.) - * bitbang.c: (Dito.) - * bitbang.h: (Dito.) - * buspirate.c: (Dito.) - * butterfly.c: (Dito.) - * config.c: (Dito.) - * flip2.c: (Dito.) - * ft245r.c: (Dito.) - * jtagmkI.c: (Dito.) - * jtagmkII.c: (Dito.) - * linuxgpio.c: (Dito.) - * main.c: (Dito.) - * par.c: (Dito.) - * pgm.c: (Dito.) - * pickit2.c: (Dito.) - * pindefs.c: (Dito.) - * pindefs.h: (Dito.) - * ser_avrdoper.c: (Dito.) - * ser_posix.c: (Dito.) - * ser_win32.c: (Dito.) - * serbb_posix.c: (Dito.) - * serbb_win32.c: (Dito.) - * stk500.c: (Dito.) - * stk500v2.c: (Dito.) - -2014-05-07 Rene Liebscher - - bug #42310: New part description for AT90PWM216 - * avrdude.conf.in: added pwm216 entry - -2014-05-07 Rene Liebscher - - bug #42158: Linux GPIO - Source Typo - * pindefs.h: fixed typo - -2014-04-14 Rene Liebscher - - bug #42056: double free or corruption triggered at exit - * pgm.c: copy usbpid list in pgm_dup - -2014-04-05 Joerg Wunsch - - * avrdude.1: Remove the note that users might edit the system-wide - config file. This file will be overwritten by the next - installation, so it's not a good idea to manually modify it. - Using the -C +file option is a much better way for user - modifications. - * doc/avrdude.texi: (Dito.) - * avrdude.conf.in: Add a warning to not modify the file manually. - -2014-03-13 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version for post-6.1. - -2014-03-12 Joerg Wunsch - - * configure.ac (AC_INIT): Bump version to 6.1. - -2014-03-12 Joerg Wunsch - - * pgm.c (pgm_free): Cleanup police: destroy the p->usbpid - list when freeing the programmer struct. - -2014-03-12 Joerg Wunsch - - bug #40782: Verify errors for object size > 16 k on x32e5 due - to typo in avrdude.conf - * avrdude.conf.in (ATmega8E5, ATmega32E5): fix boot location - -2014-02-28 Joerg Wunsch - - * avrdude.conf.in (atmelice, atmelice_pdi, atmelice_dw, atmelice_isp): - New entries. - * avrdude.1: Document the Atmel-ICE addition. - * doc/avrdude.texi: (Dito.) - * usbdevs.c (USB_DEVICE_ATMEL_ICE): New entry. - -2014-02-28 Joerg Wunsch - - * main.c: Bump copyright year. - -2014-02-28 Joerg Wunsch - - * jtag3.c (jtag3_recv): avoid memmov'ing more data than available - -2014-02-27 Joerg Wunsch - - * avrdude.1: Documentation update for EDBG. - * doc/avrdude.texi: (Dito.) - -2014-02-27 Joerg Wunsch - - * jtag3.c: For EDBG protocol, always use 512-byte block I/O. The - lower layers will split this according to the EP's maxsize. This - makes it work over USB 1.1 connections (albeit very slowly, due to - the interrupt transfers used). - -2014-02-27 Joerg Wunsch - - * config_gram.y: Turn the usbpid parameter of the programmer into - a list of PIDs. Make the JTAGICE3 programmer handle a list of - PIDs, by trying each of them in sequence. Use a single, central - jtag3_open_common() function to handle the common code of all - jtag3_open_* functions. Centralize all USB VID/PID definitions in - usbdevs.h. - * flip1.c: (Dito.) - * ft245r.c: (Dito.) - * stk500v2.c: (Dito.) - * jtag3.c: (Dito.) - * jtag3.h: (Dito.) - * flip2.c: (Dito.) - * usbdevs.h: (Dito.) - * pgm.c: (Dito.) - * serial.h: (Dito.) - * pgm.h: (Dito.) - * usbtiny.c: (Dito.) - * usbasp.c: (Dito.) - * avrftdi.c: (Dito.) - * usbtiny.h: (Dito.) - * avrdude.conf.in: (Dito.) - * usbasp.h: (Dito.) - * usb_libusb.c: (Dito.) - -2014-02-27 Joerg Wunsch - - * usb_libusb.c (usbdev_open): Replace all calls to exit(1) by - return -1 - -2014-02-26 Joerg Wunsch - - * jtag3_private.h: Add EDBG/CMSIS-DAP specific constants. - * jtag3.c: Add EDBG/CMSIS-DAP protocol implementation. - * serial.h: (Dito.) - * usbdevs.h: (Dito.) - * usb_libusb.c: (Dito.) - * configure.ac: (Dito.) - * avrdude.conf.in: Add JTAGICE3 and XplainedPro entries using - EDBG. - * configure.ac: Bump version date. - -2014-02-22 Joerg Wunsch - - * usb_libusb.c (usbdev_recv_frame): Fix a bug where a new recv - request was issued even though all desired data had aldready - been received. - -2014-02-21 Joerg Wunsch - - * serial.h: Change the second parameter of the ser_open method - from "baud" into a "union pinfo", so the USB parameters can be - passed without hacks. - * arduino.c: (Dito.) - * avr910.c: (Dito.) - * buspirate.c: (Dito.) - * butterfly.c: (Dito.) - * jtag3.c: (Dito.) - * jtagmkI.c: (Dito.) - * jtagmkII.c: (Dito.) - * ser_avrdoper.c: (Dito.) - * ser_posix.c: (Dito.) - * ser_win32.c: (Dito.) - * stk500.c: (Dito.) - * stk500v2.c: (Dito.) - * usb_libusb.c: (Dito.) - * wiring.c: (Dito.) - -2014-01-30 Joerg Wunsch - - [bug #41402] dfu.c missing include - * dfu.c: include where uint16_t is defined - -2014-01-28 Joerg Wunsch - - * avrdude.conf.in (ATmega256RFR2 et al.): Fix EEPROM size. - -2014-01-27 Joerg Wunsch - - [bug #41357] OS X: Avrdude messes with the usb stack? - * usb_libusb.c (usbdev_close): Only issue the usb_reset() for - Linux systems, as these are the only ones that seem to require - it under some circumstances. - -2014-01-22 Joerg Wunsch - - * configure.ac (libelf): check against elf_getshdrstrndx() rather - than just elf_begin() only, so it is clear we found a sufficiently - recent libelf to work with. - -2014-01-22 Joerg Wunsch - - Contributed by Alan Horstmann: - bug #40897: AT Mega2560 not correctly programmed with stk500(v1) ISP (solution patch) - * stk500.c: Implement extended address byte handling. - * avrdude.conf.in (ATmega2560): enable stk500_devcode so - STK500v1 protocol actually starts at all. - -2014-01-17 Joerg Wunsch - - * flip1.c: Implement the meat of FLIP version 1 protocol. - * avrdude.1: Document the new protocol. - * doc/avrdude.texi: (Dito.) - -2014-01-17 Joerg Wunsch - - * flip2.c (flip2_page_erase): Remove unimplemented function. - * dfu.h: Correctly conditionalize vs. ; - add adjustable timeout (struct dfu_dev); add dfu_abort() - * dfu.c (dfu_abort): New function; implement adjustable timeout. - -2014-01-17 Joerg Wunsch - - * configure.ac (libhid): Turn from AC_TRY_RUN into - AC_TRY_COMPILE, so it also works for cross-compilation - setups. - -2014-01-16 Joerg Wunsch - - * dfu.c (dfu_init): Move the descriptor checks up into the - FLIP protocol implementation. - * flip2.c (flip2_initialize): (Dito.) - * flip1.c (flip1_initialize): (Dito.) - -2014-01-16 Joerg Wunsch - - * flip2.c: Rename from flip.c - * flip2.h: Rename from flip.h - * Makefile.am: Reflect the renaming. - * dfu.c: Update information how to get GPL. - * dfu.h: (Dito.) - -2014-01-16 Joerg Wunsch - - * flip.c (flip2_initialize): Check user is running on an Xmega - device. - -2014-01-15 Joerg Wunsch - - * flip.c: Added some verbose-level messages (-vv) - * dfu.c: Added some verbose-level messages (-vvvv) - -2014-01-15 Joerg Wunsch - - Submitted by Kirill Levchenko: - patch #7896: DFU FLIPv2 programming support - * pgm_type.c: Add the flip2 programmer type. - * config_gram.y: Allow for the usbid keyword in a device definition. - * avrdude.conf.in: Add usbpid values to those Xmega devices where - applicable. - * avrpart.h: Add usbpid device field. - * dfu.c: (New file.) - * dfu.h: (New file.) - * flip.c: (New file.) - * flip.h: (New file.) - * Makefile.am: Add new files. - * doc/avrdude.texi: Document the changes. - * avrdude.1: (Dito.) - -2014-01-15 Joerg Wunsch - - * ChangeLog-2013: Annual changelog rotation. diff --git a/ChangeLog-2015 b/ChangeLog-2015 deleted file mode 100644 index edc27418..00000000 --- a/ChangeLog-2015 +++ /dev/null @@ -1,54 +0,0 @@ -2015-12-15 Joerg Wunsch - - * avrdude.1 (-C): Do not suggest users might change the - default config file. It will be overwritten by updates. - -2015-12-09 Joerg Wunsch - - bug #46610: Floating point exception (core dumped) arch linux rpi2 - bug #46483: version 6.2. ser_open(): can't set attributes for device - * ser_posix.c: Back out change from patch #8380 - -2015-11-16 Joerg Wunsch - - * configure.ac: Bump for post-release 6.2. - -2015-11-16 Joerg Wunsch - - * configure.ac: Released version 6.2. - -2015-10-31 Joerg Wunsch - - Submitted by Martino Facchin: - bug #45727: Wrong atmega8u2 flash parameters - * avrdude.conf.in (ATmega8U2): correct page and block size - -2015-10-31 Joerg Wunsch - - Submitted by Pasquale Cocchini: - bug #46020: Add TIAO TUMPA to the conf file. - * avrdude.conf.in (tumpa): New entry. - -2015-10-31 Joerg Wunsch - - Submitted by Pasquale Cocchini: - bug #46021: Please add read in the memory lock section of ATtiny85 - * avrdude.conf.in (ATtiny25/45/85): add read pattern for lock bits - -2015-10-31 Joerg Wunsch - - * Makefile.am (libavrdude_a_SOURCES): reflect recent changes - (pgm.h is gone, config.h is new). - -2015-04-09 Joerg Wunsch - - bug #44717: avrdude creates empty flash dump - * update.c (do_op): When about to write an empty flash dump file, - warn about this to avoid surprises. - * avrdude.1: Document the truncation of trailing 0xFF bytes for - flash memory areas. - * doc/avrdude.texi: (Dito.) - -2015-04-09 Joerg Wunsch - - Annual ChangeLog rotation. diff --git a/ChangeLog-2016 b/ChangeLog-2016 deleted file mode 100644 index 9ee8f6f4..00000000 --- a/ChangeLog-2016 +++ /dev/null @@ -1,95 +0,0 @@ -2016-09-14 Joerg Wunsch - - * stk500v2.c (DEBUG, DEBUGRECV): define these unconditionally, - as MSG_TRACE2 messages. - -2016-05-10 Joerg Wunsch - - Submitted by Hannes Jochriem: - * avrdude.conf.in (ehajo-isp): New programmer. - -2016-04-20 Joerg Wunsch - - * configure.ac (libftdi1): Rather than hardcoding the library - providing the libusb-1.0 API, use the result from the previous - probe. This helps detecting libftdi1 on FreeBSD where the - libusb-1.0 API is provided by the system's libusb. - -2016-04-18 Joerg Wunsch - - * usb_hidapi.c (usbhid_open): Correctly calculate the - offset for serial number matching - -2016-03-28 Joerg Wunsch - - bug #47550: Linux GPIO broken - * linuxgpio.c: Replace %ud by %u in snprintf calls. - -2016-03-02 Joerg Wunsch - - * usb_hidapi.c (usbhid_recv): Bump read timeout to 300 ms. - -2016-02-20 Joerg Wunsch - - * jtag3.c: add support for libhidapi as (optional) transport for - CMSIS-DAP compliant debuggers (JTAGICE3 with firmware 3+, - AtmelICE, EDBG, mEDBG) - * usb_hidapi.c: (New file) - * libavrdude.h: Mention usbhid_serdev - * configure.ac: Bump version date - -2016-02-18 Joerg Wunsch - - (Obtained from patch #8717: pattch for mcprog and libhidapi support) - * configure.ac: Probe for libhidapi - * Makefile.am: Add @LIBHIDAPI@ - -2016-02-16 Joerg Wunsch - - * doc/avrdude.texi: Bump copyright year. - -2016-02-16 Joerg Wunsch - - * configure.ac: Bump for post-release 6.3. - -2016-02-16 Joerg Wunsch - - * configure.ac: Released version 6.3. - -2016-02-15 Joerg Wunsch - - patch #8894: Spelling in 6.2 doc - * doc/avrdude.texi: Various spelling fixes. - -2016-02-15 Joerg Wunsch - - patch #8895: Spelling in 6.2 code - * avrftdi.c (avrftdi_open): Spell fix. - -2016-02-15 Joerg Wunsch - - patch #8896: Silence cppcheck warnings in 6.2 code - * linuxgpio.c: Use %ud to print GPIO values. - -2016-02-15 Joerg Wunsch - - patch #8735: ATtiny28 support in avrdude.conf - * avrdude.conf.in (ATtiny28): New device. - -2016-02-15 Joerg Wunsch - - * avrdude.conf.in (ATmega48PB, ATmega88PB, ATmega168PB): New - devices. - -2016-02-15 Joerg Wunsch - - patch #8435: Implementing mEDBG CMSIS-DAP protocol - * usb_libusb.c: Add endpoint IDs for Xplained Mini, correctly - transfer trailing ZLP when needed - * avrdude.conf.in (xplainedmini, xplainedmini_dw): New entries. - * jtag3.c (jtag3_edbg_send, jtag3_edbg_recv_frame): Implement - fragmentation needed for the 64-byte EP size of the Xplained Mini - * avrdude.1: Document the change - * doc/avrdude.texi: (Dito.) - - diff --git a/ChangeLog-2017 b/ChangeLog-2017 deleted file mode 100644 index 28f7d23f..00000000 --- a/ChangeLog-2017 +++ /dev/null @@ -1,56 +0,0 @@ -2017-12-30 Joerg Wunsch - - Submitted by Jan Egil Ruud - patch #9507: Fix UPDI chip erase - * jtag3.c (jtag3_chip_erase_updi): New function - * jtag3_private.h: More constants - -2017-12-30 Joerg Wunsch - - Submitted by Jan Egil Ruud - patch #9508: Add PowerDebugger and XPlained Mini in UPDI mode - * avrdude.conf.in (xplainedmini_updi, powerdebugger, - powerdebugger_pdi, powerdebugger_updi, powerdebugger_dw, - powerdebugger_isp): New programmers - -2017-12-29 Joerg Wunsch - - * bootstrap: Detect whether libtoolize is named - `glibtoolize' (MacOS) - -2017-11-30 Joerg Wunsch - - * configure.ac: Bump version date, due to UPDI addition - -2017-11-29 Joerg Wunsch - - Submitted by Jan Egil Ruud - patch #9482: Add support for UPDI and AVR8X - * avrdude.conf.in (xplainedpro_updi): New programmer - * avrdude.conf.in (.avr8x, ATtiny1617, ATtiny817): New device - family and devices - * config_gram.y: add K_OCD_BASE and K_HAS_UPDI - * lexer.l: (Ditto.) - * doc/avrdude.texi: Document "has_updi" flag - * jtag3.c: Implement UPDI - * jtag3.h: (Ditto.) - * jtag3_private.h: (Ditto.) - * libavrdude.h: Add ocd_base value and AVRPART_HAS_UPDI flag - * pgm_type.c: Add jtagice3_updi - -2017-11-29 Joerg Wunsch - - Submitted by Jan Egil Ruud - * avrdude.conf.in (ATmega328PB): New part - -2017-11-13 Joerg Wunsch - - bug #48084: Avoid compiled-in timestamp for reproducible release builds - * main.c: Remove "compiled on/at" string - -2017-03-05 Joerg Wunsch - - bug #47718: "lfuse reads as" not displayed in verbose mode - SOLUTION - Reported by Roger A. Krupski: - * safemode.c: Display lfuse at correct MSG level - diff --git a/README b/README deleted file mode 100644 index af46b9a0..00000000 --- a/README +++ /dev/null @@ -1,46 +0,0 @@ -See the documentation file for the details. - -The latest version of AVRDUDE is always available here: - - http://savannah.nongnu.org/projects/avrdude - - -Important environment variables for ./configure: -================================================ - -CPPFLAGS: C preprocessor flags (*not* "C++") - -This is the place to put additional (non-standard) -I options into. -For example, if your Windows system has LibUSB-Win32 installed into -\\WINDOWS\ProgramFiles\LibUSB-Win32, use - -CPPFLAGS=-I/WINDOWS/ProgramFiles/LibUSB-Win32/include - -to tell configure where to search for the header files. (The use of -forward slashes rather than backslashes can often simplify things. -Note that the Windows system services internally treat both the same. -It's only cmd.exe which requires backslashes as the directory -separator.) - -LDFLAGS: Linker options - -This is the place to make additional library locations known to the -linker. To continue the above example, use - -LDFLAGS=-L/WINDOWS/ProgramFiles/LibUSB-Win32/lib/gcc - -to make the linker search for "libusb.a" in that directory. - - -Linux users: make sure the header files are installed -===================================================== - -While many Linux distributions install the libraries needed by AVRDUDE -(libusb, libelf) by default, they leave out the corresponding header -files. Consequently, the configure script won't find them, so these -libraries could not be used. - -Usually, the packages with the header files (and static libraries) are -derived from the regular package name by appending "-devel". Thus, -make sure you have "libusb-devel" and "libelf-devel" installed before -running the configure script. (Same goes for libftdi.) diff --git a/clean.bat b/clean.bat deleted file mode 100644 index ebe0cc51..00000000 --- a/clean.bat +++ /dev/null @@ -1,66 +0,0 @@ -@echo off -rmdir /s /q ".vs" >nul 2>nul - -rmdir /s /q "Debug" >nul 2>nul -rmdir /s /q "Release" >nul 2>nul -rmdir /s /q "x64" >nul 2>nul - -rmdir /s /q "external\libelf\Debug" >nul 2>nul -rmdir /s /q "external\libelf\Release" >nul 2>nul -rmdir /s /q "external\libelf\x64" >nul 2>nul - -rmdir /s /q "external\libftdi1\Debug" >nul 2>nul -rmdir /s /q "external\libftdi1\Release" >nul 2>nul -rmdir /s /q "external\libftdi1\x64" >nul 2>nul - -rmdir /s /q "external\libhidapi\Debug" >nul 2>nul -rmdir /s /q "external\libhidapi\Release" >nul 2>nul -rmdir /s /q "external\libhidapi\x64" >nul 2>nul - -rmdir /s /q "external\libusb\Debug" >nul 2>nul -rmdir /s /q "external\libusb\Release" >nul 2>nul -rmdir /s /q "external\libusb\x64" >nul 2>nul - -rmdir /s /q .deps -rmdir /s /q .libs -rmdir /s /q autom4te.cache -rmdir /s /q m4 - -del ac_cfg.h -del ac_cfg.h.in -del aclocal.m4 -del avrdude -del avrdude.conf -del avrdude.conf.tmp -del avrdude.spec -del compile -del config.guess -del config.log -del config.status -del config.sub -del config_gram.c -del config_gram.h -del configure -del depcomp -del INSTALL -del install-sh -del lexer.c -del libtool -del ltmain.sh -del Makefile -del Makefile.in -del mdate-sh -del mkinstalldirs -del missing -del stamp-h.in -del stamp-h1 -del texinfo.tex -del y.output -del y.tab.h -del ylwrap -del *.o -del *.lo -del *.a -del *.la -del *.diff -del *.patch diff --git a/msvc/generated/avrdude.conf b/msvc/generated/avrdude.conf deleted file mode 100644 index 4e2a8a20..00000000 --- a/msvc/generated/avrdude.conf +++ /dev/null @@ -1,16244 +0,0 @@ -# $Id$ -*- text -*- -# -# AVRDUDE Configuration File -# -# This file contains configuration data used by AVRDUDE which describes -# the programming hardware pinouts and also provides part definitions. -# AVRDUDE's "-C" command line option specifies the location of the -# configuration file. The "-c" option names the programmer configuration -# which must match one of the entry's "id" parameter. The "-p" option -# identifies which part AVRDUDE is going to be programming and must match -# one of the parts' "id" parameter. -# -# DO NOT MODIFY THIS FILE. Modifications will be overwritten the next -# time a "make install" is run. For user-specific additions, use the -# "-C +filename" commandline option. -# -# Possible entry formats are: -# -# programmer -# parent # optional parent -# id = [, [, ] ...] ; # are quoted strings -# desc = ; # quoted string -# type = ; # programmer type, quoted string -# # supported programmer types can be listed by "-c ?type" -# connection_type = parallel | serial | usb -# baudrate = ; # baudrate for avr910-programmer -# vcc = [, ... ] ; # pin number(s) -# buff = [, ... ] ; # pin number(s) -# reset = ; # pin number -# sck = ; # pin number -# mosi = ; # pin number -# miso = ; # pin number -# errled = ; # pin number -# rdyled = ; # pin number -# pgmled = ; # pin number -# vfyled = ; # pin number -# usbvid = ; # USB VID (Vendor ID) -# usbpid = [, ...] # USB PID (Product ID) (1) -# usbdev = ; # USB interface or other device info -# usbvendor = ; # USB Vendor Name -# usbproduct = ; # USB Product Name -# usbsn = ; # USB Serial Number -# -# To invert a bit, use = ~ , the spaces are important. -# For a pin list all pins must be inverted. -# A single pin can be specified as usual = ~ , for lists -# specify it as follows = ~ ( [, ... ] ) . -# -# (1) Not all programmer types can process a list of PIDs. -# ; -# -# part -# id = ; # quoted string -# desc = ; # quoted string -# has_jtag = ; # part has JTAG i/f -# has_debugwire = ; # part has debugWire i/f -# has_pdi = ; # part has PDI i/f -# has_updi = ; # part has UPDI i/f -# has_tpi = ; # part has TPI i/f -# devicecode = ; # deprecated, use stk500_devcode -# stk500_devcode = ; # numeric -# avr910_devcode = ; # numeric -# signature = ; # signature bytes -# usbpid = ; # DFU USB PID -# chip_erase_delay = ; # micro-seconds -# reset = dedicated | io; -# retry_pulse = reset | sck; -# pgm_enable = ; -# chip_erase = ; -# chip_erase_delay = ; # chip erase delay (us) -# # STK500 parameters (parallel programming IO lines) -# pagel = ; # pin name in hex, i.e., 0xD7 -# bs2 = ; # pin name in hex, i.e., 0xA0 -# serial = ; # can use serial downloading -# parallel = ; # can use par. programming -# # STK500v2 parameters, to be taken from Atmel's XML files -# timeout = ; -# stabdelay = ; -# cmdexedelay = ; -# synchloops = ; -# bytedelay = ; -# pollvalue = ; -# pollindex = ; -# predelay = ; -# postdelay = ; -# pollmethod = ; -# mode = ; -# delay = ; -# blocksize = ; -# readsize = ; -# hvspcmdexedelay = ; -# # STK500v2 HV programming parameters, from XML -# pp_controlstack = , , ...; # PP only -# hvsp_controlstack = , , ...; # HVSP only -# hventerstabdelay = ; -# progmodedelay = ; # PP only -# latchcycles = ; -# togglevtg = ; -# poweroffdelay = ; -# resetdelayms = ; -# resetdelayus = ; -# hvleavestabdelay = ; -# resetdelay = ; -# synchcycles = ; # HVSP only -# chiperasepulsewidth = ; # PP only -# chiperasepolltimeout = ; -# chiperasetime = ; # HVSP only -# programfusepulsewidth = ; # PP only -# programfusepolltimeout = ; -# programlockpulsewidth = ; # PP only -# programlockpolltimeout = ; -# # JTAG ICE mkII parameters, also from XML files -# allowfullpagebitstream = ; -# enablepageprogramming = ; -# idr = ; # IO addr of IDR (OCD) reg. -# rampz = ; # IO addr of RAMPZ reg. -# spmcr = ; # mem addr of SPMC[S]R reg. -# eecr = ; # mem addr of EECR reg. -# # (only when != 0x3c) -# is_at90s1200 = ; # AT90S1200 part -# is_avr32 = ; # AVR32 part -# -# memory -# paged = ; # yes / no -# size = ; # bytes -# page_size = ; # bytes -# num_pages = ; # numeric -# min_write_delay = ; # micro-seconds -# max_write_delay = ; # micro-seconds -# readback_p1 = ; # byte value -# readback_p2 = ; # byte value -# pwroff_after_write = ; # yes / no -# read = ; -# write = ; -# read_lo = ; -# read_hi = ; -# write_lo = ; -# write_hi = ; -# loadpage_lo = ; -# loadpage_hi = ; -# writepage = ; -# ; -# ; -# -# If any of the above parameters are not specified, the default value -# of 0 is used for numerics or the empty string ("") for string -# values. If a required parameter is left empty, AVRDUDE will -# complain. -# -# Parts can also inherit parameters from previously defined parts -# using the following syntax. In this case specified integer and -# string values override parameter values from the parent part. New -# memory definitions are added to the definitions inherited from the -# parent. -# -# part parent # quoted string -# id = ; # quoted string -# -# ; -# -# NOTES: -# * 'devicecode' is the device code used by the STK500 (see codes -# listed below) -# * Not all memory types will implement all instructions. -# * AVR Fuse bits and Lock bits are implemented as a type of memory. -# * Example memory types are: -# "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high -# fuse), "signature", "calibration", "lock" -# * The memory type specified on the avrdude command line must match -# one of the memory types defined for the specified chip. -# * The pwroff_after_write flag causes avrdude to attempt to -# power the device off and back on after an unsuccessful write to -# the affected memory area if VCC programmer pins are defined. If -# VCC pins are not defined for the programmer, a message -# indicating that the device needs a power-cycle is printed out. -# This flag was added to work around a problem with the -# at90s4433/2333's; see the at90s4433 errata at: -# -# http://www.atmel.com/dyn/resources/prod_documents/doc1280.pdf -# -# INSTRUCTION FORMATS -# -# Instruction formats are specified as a comma seperated list of -# string values containing information (bit specifiers) about each -# of the 32 bits of the instruction. Bit specifiers may be one of -# the following formats: -# -# '1' = the bit is always set on input as well as output -# -# '0' = the bit is always clear on input as well as output -# -# 'x' = the bit is ignored on input and output -# -# 'a' = the bit is an address bit, the bit-number matches this bit -# specifier's position within the current instruction byte -# -# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12 -# is address bit 12 on input, a0 is address bit 0. -# -# 'i' = the bit is an input data bit -# -# 'o' = the bit is an output data bit -# -# Each instruction must be composed of 32 bit specifiers. The -# instruction specification closely follows the instruction data -# provided in Atmel's data sheets for their parts. -# -# See below for some examples. -# -# -# The following are STK500 part device codes to use for the -# "devicecode" field of the part. These came from Atmel's software -# section avr061.zip which accompanies the application note -# AVR061 available from: -# -# http://www.atmel.com/dyn/resources/prod_documents/doc2525.pdf -# - -#define ATTINY10 0x10 /* the _old_ one that never existed! */ -#define ATTINY11 0x11 -#define ATTINY12 0x12 -#define ATTINY15 0x13 -#define ATTINY13 0x14 - -#define ATTINY22 0x20 -#define ATTINY26 0x21 -#define ATTINY28 0x22 -#define ATTINY2313 0x23 - -#define AT90S1200 0x33 - -#define AT90S2313 0x40 -#define AT90S2323 0x41 -#define AT90S2333 0x42 -#define AT90S2343 0x43 - -#define AT90S4414 0x50 -#define AT90S4433 0x51 -#define AT90S4434 0x52 -#define ATMEGA48 0x59 - -#define AT90S8515 0x60 -#define AT90S8535 0x61 -#define AT90C8534 0x62 -#define ATMEGA8515 0x63 -#define ATMEGA8535 0x64 - -#define ATMEGA8 0x70 -#define ATMEGA88 0x73 -#define ATMEGA168 0x86 - -#define ATMEGA161 0x80 -#define ATMEGA163 0x81 -#define ATMEGA16 0x82 -#define ATMEGA162 0x83 -#define ATMEGA169 0x84 - -#define ATMEGA323 0x90 -#define ATMEGA32 0x91 - -#define ATMEGA64 0xA0 - -#define ATMEGA103 0xB1 -#define ATMEGA128 0xB2 -#define AT90CAN128 0xB3 -#define AT90CAN64 0xB3 -#define AT90CAN32 0xB3 - -#define AT86RF401 0xD0 - -#define AT89START 0xE0 -#define AT89S51 0xE0 -#define AT89S52 0xE1 - -# The following table lists the devices in the original AVR910 -# appnote: -# |Device |Signature | Code | -# +-------+----------+------+ -# |tiny12 | 1E 90 05 | 0x55 | -# |tiny15 | 1E 90 06 | 0x56 | -# | | | | -# | S1200 | 1E 90 01 | 0x13 | -# | | | | -# | S2313 | 1E 91 01 | 0x20 | -# | S2323 | 1E 91 02 | 0x48 | -# | S2333 | 1E 91 05 | 0x34 | -# | S2343 | 1E 91 03 | 0x4C | -# | | | | -# | S4414 | 1E 92 01 | 0x28 | -# | S4433 | 1E 92 03 | 0x30 | -# | S4434 | 1E 92 02 | 0x6C | -# | | | | -# | S8515 | 1E 93 01 | 0x38 | -# | S8535 | 1E 93 03 | 0x68 | -# | | | | -# |mega32 | 1E 95 01 | 0x72 | -# |mega83 | 1E 93 05 | 0x65 | -# |mega103| 1E 97 01 | 0x41 | -# |mega161| 1E 94 01 | 0x60 | -# |mega163| 1E 94 02 | 0x64 | - -# Appnote AVR109 also has a table of AVR910 device codes, which -# lists: -# dev avr910 signature -# ATmega8 0x77 0x1E 0x93 0x07 -# ATmega8515 0x3B 0x1E 0x93 0x06 -# ATmega8535 0x6A 0x1E 0x93 0x08 -# ATmega16 0x75 0x1E 0x94 0x03 -# ATmega162 0x63 0x1E 0x94 0x04 -# ATmega163 0x66 0x1E 0x94 0x02 -# ATmega169 0x79 0x1E 0x94 0x05 -# ATmega32 0x7F 0x1E 0x95 0x02 -# ATmega323 0x73 0x1E 0x95 0x01 -# ATmega64 0x46 0x1E 0x96 0x02 -# ATmega128 0x44 0x1E 0x97 0x02 -# -# These codes refer to "BOOT" device codes which are apparently -# different than standard device codes, for whatever reasons -# (often one above the standard code). - -# There are several extended versions of AVR910 implementations around -# in the Internet. These add the following codes (only devices that -# actually exist are listed): - -# ATmega8515 0x3A -# ATmega128 0x43 -# ATmega64 0x45 -# ATtiny26 0x5E -# ATmega8535 0x69 -# ATmega32 0x72 -# ATmega16 0x74 -# ATmega8 0x76 -# ATmega169 0x78 - -# -# Overall avrdude defaults; suitable for ~/.avrduderc -# -default_parallel = "lpt1"; -default_serial = "com1"; -# default_bitclock = 2.5; - -# Turn off safemode by default -#default_safemode = no; - - -# -# PROGRAMMER DEFINITIONS -# - -# http://wiring.org.co/ -# Basically STK500v2 protocol, with some glue to trigger the -# bootloader. -programmer - id = "wiring"; - desc = "Wiring"; - type = "wiring"; - connection_type = serial; -; - -programmer - id = "arduino"; - desc = "Arduino"; - type = "arduino"; - connection_type = serial; -; -# this will interface with the chips on these programmers: -# -# http://real.kiev.ua/old/avreal/en/adapters -# http://www.amontec.com/jtagkey.shtml, jtagkey-tiny.shtml -# http://www.olimex.com/dev/arm-usb-ocd.html, arm-usb-tiny.html -# http://www.ethernut.de/en/hardware/turtelizer/index.html -# http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html -# http://dangerousprototypes.com/docs/FT2232_breakout_board -# http://www.ftdichip.com/Products/Modules/DLPModules.htm,DLP-2232*,DLP-USB1232H -# http://flashrom.org/FT2232SPI_Programmer -# -# The drivers will look for a specific device and use the first one found. -# If you have mulitple devices, then look for unique information (like SN) -# And fill that in here. -# -# Note that the pin numbers for the main ISP signals (reset, sck, -# mosi, miso) are fixed and cannot be changed, since they must match -# the way the Multi-Protocol Synchronous Serial Engine (MPSSE) of -# these FTDI ICs has been designed. - -programmer - id = "avrftdi"; - desc = "FT2232D based generic programmer"; - type = "avrftdi"; - connection_type = usb; - usbvid = 0x0403; - usbpid = 0x6010; - usbvendor = ""; - usbproduct = ""; - usbdev = "A"; - usbsn = ""; -#ISP-signals - lower ADBUS-Nibble (default) - reset = 3; - sck = 0; - mosi = 1; - miso = 2; -#LED SIGNALs - higher ADBUS-Nibble -# errled = 4; -# rdyled = 5; -# pgmled = 6; -# vfyled = 7; -#Buffer Signal - ACBUS - Nibble -# buff = 8; -; -# This is an implementation of the above with a buffer IC (74AC244) and -# 4 LEDs directly attached, all active low. -programmer - id = "2232HIO"; - desc = "FT2232H based generic programmer"; - type = "avrftdi"; - connection_type = usb; - usbvid = 0x0403; -# Note: This PID is reserved for generic H devices and -# should be programmed into the EEPROM -# usbpid = 0x8A48; - usbpid = 0x6010; - usbdev = "A"; - usbvendor = ""; - usbproduct = ""; - usbsn = ""; -#ISP-signals - reset = 3; - sck = 0; - mosi = 1; - miso = 2; - buff = ~4; -#LED SIGNALs - errled = ~ 11; - rdyled = ~ 14; - pgmled = ~ 13; - vfyled = ~ 12; -; - -#The FT4232H can be treated as FT2232H, but it has a different USB -#device ID of 0x6011. -programmer parent "avrftdi" - id = "4232h"; - desc = "FT4232H based generic programmer"; - usbpid = 0x6011; -; - -programmer - id = "jtagkey"; - desc = "Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2"; - type = "avrftdi"; - connection_type = usb; - usbvid = 0x0403; -# Note: This PID is used in all JTAGKey variants - usbpid = 0xCFF8; - usbdev = "A"; - usbvendor = ""; - usbproduct = ""; - usbsn = ""; -#ISP-signals => 20 - Pin connector on JTAGKey - reset = 3; # TMS 7 violet - sck = 0; # TCK 9 white - mosi = 1; # TDI 5 green - miso = 2; # TDO 13 orange - buff = ~4; -# VTG VREF 1 brown with red tip -# GND GND 20 black -# The colors are on the 20 pin breakout cable -# from Amontec -; - -# UM232H module from FTDI and Glyn.com.au. -# See helix.air.net.au for detailed usage information. -# J1: Connect pin 2 and 3 for USB power. -# J2: Connect pin 2 and 3 for USB power. -# J2: Pin 7 is SCK -# : Pin 8 is MOSI -# : Pin 9 is MISO -# : Pin 11 is RST -# : Pin 6 is ground -# Use the -b flag to set the SPI clock rate eg -b 3750000 is the fastest I could get -# a 16MHz Atmega1280 to program reliably. The 232H is conveniently 5V tolerant. -programmer - id = "UM232H"; - desc = "FT232H based module from FTDI and Glyn.com.au"; - type = "avrftdi"; - usbvid = 0x0403; -# Note: This PID is reserved for generic 232H devices and -# should be programmed into the EEPROM - usbpid = 0x6014; - usbdev = "A"; - usbvendor = ""; - usbproduct = ""; - usbsn = ""; -#ISP-signals - sck = 0; - mosi = 1; - miso = 2; - reset = 3; -; - -# C232HM module from FTDI and Glyn.com.au. -# : Orange is SCK -# : Yellow is MOSI -# : Green is MISO -# : Brown is RST -# : Black is ground -# Use the -b flag to set the SPI clock rate eg -b 3750000 is the fastest I could get -# a 16MHz Atmega1280 to program reliably. The 232H is conveniently 5V tolerant. -programmer - id = "C232HM"; - desc = "FT232H based module from FTDI and Glyn.com.au"; - type = "avrftdi"; - usbvid = 0x0403; -# Note: This PID is reserved for generic 232H devices and -# should be programmed into the EEPROM - usbpid = 0x6014; - usbdev = "A"; - usbvendor = ""; - usbproduct = ""; - usbsn = ""; -#ISP-signals - sck = 0; - mosi = 1; - miso = 2; - reset = 3; -; - - -# On the adapter you can read "O-Link". On the PCB is printed "OpenJTAG v3.1" -# You can find it as "OpenJTAG ARM JTAG USB" in the internet. -# (But there are also several projects called Open JTAG, eg. -# http://www.openjtag.org, which are completely different.) -# http://www.100ask.net/shop/english.html (website seems to be outdated) -# http://item.taobao.com/item.htm?id=1559277013 -# http://www.micro4you.com/store/openjtag-arm-jtag-usb.html (schematics!) -# some other sources which call it O-Link -# http://www.andahammer.com/olink/ -# http://www.developmentboard.net/31-o-link-debugger.html -# http://armwerks.com/catalog/o-link-debugger-copy/ -# or just have a look at ebay ... -# It is basically the same entry as jtagkey with different usb ids. -programmer parent "jtagkey" - id = "o-link"; - desc = "O-Link, OpenJTAG from www.100ask.net"; - usbvid = 0x1457; - usbpid = 0x5118; - usbvendor = "www.100ask.net"; - usbproduct = "USB<=>JTAG&RS232"; -; - -# http://wiki.openmoko.org/wiki/Debug_Board_v3 -programmer - id = "openmoko"; - desc = "Openmoko debug board (v3)"; - type = "avrftdi"; - usbvid = 0x1457; - usbpid = 0x5118; - usbdev = "A"; - usbvendor = ""; - usbproduct = ""; - usbsn = ""; - reset = 3; # TMS 7 - sck = 0; # TCK 9 - mosi = 1; # TDI 5 - miso = 2; # TDO 13 -; - -# Only Rev. A boards. -# Schematic and user manual: http://www.cs.put.poznan.pl/wswitala/download/pdf/811EVBK.pdf -programmer - id = "lm3s811"; - desc = "Luminary Micro LM3S811 Eval Board (Rev. A)"; - type = "avrftdi"; - connection_type = usb; - usbvid = 0x0403; - usbpid = 0xbcd9; - usbvendor = "LMI"; - usbproduct = "LM3S811 Evaluation Board"; - usbdev = "A"; - usbsn = ""; -#ISP-signals - lower ACBUS-Nibble (default) - reset = 3; - sck = 0; - mosi = 1; - miso = 2; -# Enable correct buffers - buff = 7; -; - -# submitted as bug #46020 -programmer - id = "tumpa"; - desc = "TIAO USB Multi-Protocol Adapter"; - type = "avrftdi"; - connection_type = usb; - usbvid = 0x0403; - usbpid = 0x8A98; - usbdev = "A"; - usbvendor = "TIAO"; - usbproduct = ""; - usbsn = ""; - sck = 0; # TCK 9 - mosi = 1; # TDI 5 - miso = 2; # TDO 13 - reset = 3; # TMS 7 -; - -programmer - id = "avrisp"; - desc = "Atmel AVR ISP"; - type = "stk500"; - connection_type = serial; -; - -programmer - id = "avrispv2"; - desc = "Atmel AVR ISP V2"; - type = "stk500v2"; - connection_type = serial; -; - -programmer - id = "avrispmkII"; - desc = "Atmel AVR ISP mkII"; - type = "stk500v2"; - connection_type = usb; -; - -programmer parent "avrispmkII" - id = "avrisp2"; -; - -programmer - id = "buspirate"; - desc = "The Bus Pirate"; - type = "buspirate"; - connection_type = serial; -; - -programmer - id = "buspirate_bb"; - desc = "The Bus Pirate (bitbang interface, supports TPI)"; - type = "buspirate_bb"; - connection_type = serial; - # pins are bits in bitbang byte (numbers are 87654321) - # 1|POWER|PULLUP|AUX|MOSI|CLK|MISO|CS - reset = 1; - sck = 3; - mosi = 4; - miso = 2; - #vcc = 7; This is internally set independent of this setting. -; - -# This is supposed to be the "default" STK500 entry. -# Attempts to select the correct firmware version -# by probing for it. Better use one of the entries -# below instead. -programmer - id = "stk500"; - desc = "Atmel STK500"; - type = "stk500generic"; - connection_type = serial; -; - -programmer - id = "stk500v1"; - desc = "Atmel STK500 Version 1.x firmware"; - type = "stk500"; - connection_type = serial; -; - -programmer - id = "mib510"; - desc = "Crossbow MIB510 programming board"; - type = "stk500"; - connection_type = serial; -; - -programmer - id = "stk500v2"; - desc = "Atmel STK500 Version 2.x firmware"; - type = "stk500v2"; - connection_type = serial; -; - -programmer - id = "stk500pp"; - desc = "Atmel STK500 V2 in parallel programming mode"; - type = "stk500pp"; - connection_type = serial; -; - -programmer - id = "stk500hvsp"; - desc = "Atmel STK500 V2 in high-voltage serial programming mode"; - type = "stk500hvsp"; - connection_type = serial; -; - -programmer - id = "stk600"; - desc = "Atmel STK600"; - type = "stk600"; - connection_type = usb; -; - -programmer - id = "stk600pp"; - desc = "Atmel STK600 in parallel programming mode"; - type = "stk600pp"; - connection_type = usb; -; - -programmer - id = "stk600hvsp"; - desc = "Atmel STK600 in high-voltage serial programming mode"; - type = "stk600hvsp"; - connection_type = usb; -; - -programmer - id = "avr910"; - desc = "Atmel Low Cost Serial Programmer"; - type = "avr910"; - connection_type = serial; -; - -programmer - id = "ft245r"; - desc = "FT245R Synchronous BitBang"; - type = "ftdi_syncbb"; - connection_type = usb; - miso = 1; # D1 - sck = 0; # D0 - mosi = 2; # D2 - reset = 4; # D4 -; - -programmer - id = "ft232r"; - desc = "FT232R Synchronous BitBang"; - type = "ftdi_syncbb"; - connection_type = usb; - miso = 1; # RxD - sck = 0; # TxD - mosi = 2; # RTS - reset = 4; # DTR -; - -# see http://www.bitwizard.nl/wiki/index.php/FTDI_ATmega -programmer - id = "bwmega"; - desc = "BitWizard ftdi_atmega builtin programmer"; - type = "ftdi_syncbb"; - connection_type = usb; - miso = 5; # DSR - sck = 6; # DCD - mosi = 3; # CTS - reset = 7; # RI -; - -# see http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html -# Note: pins are numbered from 1! -programmer - id = "arduino-ft232r"; - desc = "Arduino: FT232R connected to ISP"; - type = "ftdi_syncbb"; - connection_type = usb; - miso = 3; # CTS X3(1) - sck = 5; # DSR X3(2) - mosi = 6; # DCD X3(3) - reset = 7; # RI X3(4) -; - -# website mentioned above uses this id -programmer parent "arduino-ft232r" - id = "diecimila"; - desc = "alias for arduino-ft232r"; -; - -# There is a ATmega328P kit PCB called "uncompatino". -# This board allows ISP via its on-board FT232R. -# This is designed like Arduino Duemilanove but has no standard ICPS header. -# Its 4 pairs of pins are shorted to enable ftdi_syncbb. -# http://akizukidenshi.com/catalog/g/gP-07487/ -# http://akizukidenshi.com/download/ds/akizuki/k6096_manual_20130816.pdf -programmer - id = "uncompatino"; - desc = "uncompatino with all pairs of pins shorted"; - type = "ftdi_syncbb"; - connection_type = usb; - miso = 3; # cts - sck = 5; # dsr - mosi = 6; # dcd - reset = 7; # ri -; - -# FTDI USB to serial cable TTL-232R-5V with a custom adapter for ICSP -# http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm -# http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL-232R_CABLES.pdf -# For ICSP pinout see for example http://www.atmel.com/images/doc2562.pdf -# (Figure 1. ISP6PIN header pinout and Table 1. Connections required for ISP ...) -# TTL-232R GND 1 Black -> ICPS GND (pin 6) -# TTL-232R CTS 2 Brown -> ICPS MOSI (pin 4) -# TTL-232R VCC 3 Red -> ICPS VCC (pin 2) -# TTL-232R TXD 4 Orange -> ICPS RESET (pin 5) -# TTL-232R RXD 5 Yellow -> ICPS SCK (pin 3) -# TTL-232R RTS 6 Green -> ICPS MISO (pin 1) -# Except for VCC and GND, you can connect arbitual pairs as long as -# the following table is adjusted. -programmer - id = "ttl232r"; - desc = "FTDI TTL232R-5V with ICSP adapter"; - type = "ftdi_syncbb"; - connection_type = usb; - miso = 2; # rts - sck = 1; # rxd - mosi = 3; # cts - reset = 0; # txd -; - -programmer - id = "usbasp"; - desc = "USBasp, http://www.fischl.de/usbasp/"; - type = "usbasp"; - connection_type = usb; - usbvid = 0x16C0; # VOTI - usbpid = 0x05DC; # Obdev's free shared PID - usbvendor = "www.fischl.de"; - usbproduct = "USBasp"; - - # following variants are autodetected for id "usbasp" - - # original usbasp from fischl.de - # see above "usbasp" - - # old usbasp from fischl.de - #usbvid = 0x03EB; # ATMEL - #usbpid = 0xC7B4; # (unoffical) USBasp - #usbvendor = "www.fischl.de"; - #usbproduct = "USBasp"; - - # NIBObee (only if -P nibobee is given on command line) - # see below "nibobee" -; - -programmer - id = "nibobee"; - desc = "NIBObee"; - type = "usbasp"; - connection_type = usb; - usbvid = 0x16C0; # VOTI - usbpid = 0x092F; # NIBObee PID - usbvendor = "www.nicai-systems.com"; - usbproduct = "NIBObee"; -; - -programmer - id = "usbasp-clone"; - desc = "Any usbasp clone with correct VID/PID"; - type = "usbasp"; - connection_type = usb; - usbvid = 0x16C0; # VOTI - usbpid = 0x05DC; # Obdev's free shared PID - #usbvendor = ""; - #usbproduct = ""; -; - -# USBtiny can also be used for TPI programming. -# In that case, a resistor of 1 kOhm is needed between MISO and MOSI -# pins of the connector, and MISO (pin 1 of the 6-pin connector) -# connects to TPIDATA. -programmer - id = "usbtiny"; - desc = "USBtiny simple USB programmer, https://learn.adafruit.com/usbtinyisp"; - type = "usbtiny"; - connection_type = usb; - usbvid = 0x1781; - usbpid = 0x0c9f; -; - -# commercial version of USBtiny, using a separate VID/PID -programmer - id = "ehajo-isp"; - desc = "avr-isp-programmer from eHaJo, http://www.eHaJo.de"; - type = "usbtiny"; - connection_type = usb; - usbvid = 0x16D0; - usbpid = 0x0BA5; -; - -programmer - id = "micronucleus"; - desc = "Micronucleus Bootloader"; - type = "micronucleus"; - connection_type = usb; - usbvid = 0x16D0; - usbpid = 0x0753; -; - -programmer - id = "teensy"; - desc = "Teensy Bootloader"; - type = "teensy"; - connection_type = usb; - usbvid = 0x16C0; - usbpid = 0x0478; -; - -programmer - id = "butterfly"; - desc = "Atmel Butterfly Development Board"; - type = "butterfly"; - connection_type = serial; -; - -programmer - id = "avr109"; - desc = "Atmel AppNote AVR109 Boot Loader"; - type = "butterfly"; - connection_type = serial; -; - -programmer - id = "avr911"; - desc = "Atmel AppNote AVR911 AVROSP"; - type = "butterfly"; - connection_type = serial; -; - -# suggested in http://forum.mikrokopter.de/topic-post48317.html -programmer - id = "mkbutterfly"; - desc = "Mikrokopter.de Butterfly"; - type = "butterfly_mk"; - connection_type = serial; -; - -programmer parent "mkbutterfly" - id = "butterfly_mk"; -; - -programmer - id = "jtagmkI"; - desc = "Atmel JTAG ICE (mkI)"; - baudrate = 115200; # default is 115200 - type = "jtagmki"; - connection_type = serial; -; - -# easier to type -programmer parent "jtagmkI" - id = "jtag1"; -; - -# easier to type -programmer parent "jtag1" - id = "jtag1slow"; - baudrate = 19200; -; - -# The JTAG ICE mkII has both, serial and USB connectivity. As it is -# mostly used through USB these days (AVR Studio 5 only supporting it -# that way), we make connection_type = usb the default. Users are -# still free to use a serial port with the -P option. - -programmer - id = "jtagmkII"; - desc = "Atmel JTAG ICE mkII"; - baudrate = 19200; # default is 19200 - type = "jtagmkii"; - connection_type = usb; -; - -# easier to type -programmer parent "jtagmkII" - id = "jtag2slow"; -; - -# JTAG ICE mkII @ 115200 Bd -programmer parent "jtag2slow" - id = "jtag2fast"; - baudrate = 115200; -; - -# make the fast one the default, people will love that -programmer parent "jtag2fast" - id = "jtag2"; -; - -# JTAG ICE mkII in ISP mode -programmer - id = "jtag2isp"; - desc = "Atmel JTAG ICE mkII in ISP mode"; - baudrate = 115200; - type = "jtagmkii_isp"; - connection_type = usb; -; - -# JTAG ICE mkII in debugWire mode -programmer - id = "jtag2dw"; - desc = "Atmel JTAG ICE mkII in debugWire mode"; - baudrate = 115200; - type = "jtagmkii_dw"; - connection_type = usb; -; - -# JTAG ICE mkII in AVR32 mode -programmer - id = "jtagmkII_avr32"; - desc = "Atmel JTAG ICE mkII im AVR32 mode"; - baudrate = 115200; - type = "jtagmkii_avr32"; - connection_type = usb; -; - -# JTAG ICE mkII in AVR32 mode -programmer - id = "jtag2avr32"; - desc = "Atmel JTAG ICE mkII im AVR32 mode"; - baudrate = 115200; - type = "jtagmkii_avr32"; - connection_type = usb; -; - -# JTAG ICE mkII in PDI mode -programmer - id = "jtag2pdi"; - desc = "Atmel JTAG ICE mkII PDI mode"; - baudrate = 115200; - type = "jtagmkii_pdi"; - connection_type = usb; -; - -# AVR Dragon in JTAG mode -programmer - id = "dragon_jtag"; - desc = "Atmel AVR Dragon in JTAG mode"; - baudrate = 115200; - type = "dragon_jtag"; - connection_type = usb; -; - -# AVR Dragon in ISP mode -programmer - id = "dragon_isp"; - desc = "Atmel AVR Dragon in ISP mode"; - baudrate = 115200; - type = "dragon_isp"; - connection_type = usb; -; - -# AVR Dragon in PP mode -programmer - id = "dragon_pp"; - desc = "Atmel AVR Dragon in PP mode"; - baudrate = 115200; - type = "dragon_pp"; - connection_type = usb; -; - -# AVR Dragon in HVSP mode -programmer - id = "dragon_hvsp"; - desc = "Atmel AVR Dragon in HVSP mode"; - baudrate = 115200; - type = "dragon_hvsp"; - connection_type = usb; -; - -# AVR Dragon in debugWire mode -programmer - id = "dragon_dw"; - desc = "Atmel AVR Dragon in debugWire mode"; - baudrate = 115200; - type = "dragon_dw"; - connection_type = usb; -; - -# AVR Dragon in PDI mode -programmer - id = "dragon_pdi"; - desc = "Atmel AVR Dragon in PDI mode"; - baudrate = 115200; - type = "dragon_pdi"; - connection_type = usb; -; - -programmer - id = "jtag3"; - desc = "Atmel AVR JTAGICE3 in JTAG mode"; - type = "jtagice3"; - connection_type = usb; - usbpid = 0x2110, 0x2140; -; - -programmer - id = "jtag3pdi"; - desc = "Atmel AVR JTAGICE3 in PDI mode"; - type = "jtagice3_pdi"; - connection_type = usb; - usbpid = 0x2110, 0x2140; -; - -programmer - id = "jtag3dw"; - desc = "Atmel AVR JTAGICE3 in debugWIRE mode"; - type = "jtagice3_dw"; - connection_type = usb; - usbpid = 0x2110, 0x2140; -; - -programmer - id = "jtag3isp"; - desc = "Atmel AVR JTAGICE3 in ISP mode"; - type = "jtagice3_isp"; - connection_type = usb; - usbpid = 0x2110, 0x2140; -; - -programmer - id = "xplainedpro"; - desc = "Atmel AVR XplainedPro in JTAG mode"; - type = "jtagice3"; - connection_type = usb; - usbpid = 0x2111; -; - -programmer - id = "xplainedpro_updi"; - desc = "Atmel AVR XplainedPro in UPDI mode"; - type = "jtagice3_updi"; - connection_type = usb; - usbpid = 0x2111; -; - -programmer - id = "xplainedmini"; - desc = "Atmel AVR XplainedMini in ISP mode"; - type = "jtagice3_isp"; - connection_type = usb; - usbpid = 0x2145; -; - -programmer - id = "xplainedmini_dw"; - desc = "Atmel AVR XplainedMini in debugWIRE mode"; - type = "jtagice3_dw"; - connection_type = usb; - usbpid = 0x2145; -; - -programmer - id = "xplainedmini_updi"; - desc = "Atmel AVR XplainedMini in UPDI mode"; - type = "jtagice3_updi"; - connection_type = usb; - usbpid = 0x2145; -; - -programmer - id = "atmelice"; - desc = "Atmel-ICE (ARM/AVR) in JTAG mode"; - type = "jtagice3"; - connection_type = usb; - usbpid = 0x2141; -; - -programmer - id = "atmelice_pdi"; - desc = "Atmel-ICE (ARM/AVR) in PDI mode"; - type = "jtagice3_pdi"; - connection_type = usb; - usbpid = 0x2141; -; - -programmer - id = "atmelice_updi"; - desc = "Atmel-ICE (ARM/AVR) in UPDI mode"; - type = "jtagice3_updi"; - connection_type = usb; - usbpid = 0x2141; -; - -programmer - id = "atmelice_dw"; - desc = "Atmel-ICE (ARM/AVR) in debugWIRE mode"; - type = "jtagice3_dw"; - connection_type = usb; - usbpid = 0x2141; -; - -programmer - id = "atmelice_isp"; - desc = "Atmel-ICE (ARM/AVR) in ISP mode"; - type = "jtagice3_isp"; - connection_type = usb; - usbpid = 0x2141; -; - -programmer - id = "powerdebugger"; - desc = "Atmel PowerDebugger (ARM/AVR) in JTAG mode"; - type = "jtagice3"; - connection_type = usb; - usbpid = 0x2144; -; - -programmer - id = "powerdebugger_pdi"; - desc = "Atmel PowerDebugger (ARM/AVR) in PDI mode"; - type = "jtagice3_pdi"; - connection_type = usb; - usbpid = 0x2144; -; - -programmer - id = "powerdebugger_updi"; - desc = "Atmel PowerDebugger (ARM/AVR) in UPDI mode"; - type = "jtagice3_updi"; - connection_type = usb; - usbpid = 0x2144; -; - -programmer - id = "powerdebugger_dw"; - desc = "Atmel PowerDebugger (ARM/AVR) in debugWire mode"; - type = "jtagice3_dw"; - connection_type = usb; - usbpid = 0x2144; -; - -programmer - id = "powerdebugger_isp"; - desc = "Atmel PowerDebugger (ARM/AVR) in ISP mode"; - type = "jtagice3_isp"; - connection_type = usb; - usbpid = 0x2144; -; - -programmer - id = "pavr"; - desc = "Jason Kyle's pAVR Serial Programmer"; - type = "avr910"; - connection_type = serial; -; - -programmer - id = "pickit2"; - desc = "MicroChip's PICkit2 Programmer"; - type = "pickit2"; - connection_type = usb; -; - -programmer - id = "flip1"; - desc = "FLIP USB DFU protocol version 1 (doc7618)"; - type = "flip1"; - connection_type = usb; -; - -programmer - id = "flip2"; - desc = "FLIP USB DFU protocol version 2 (AVR4023)"; - type = "flip2"; - connection_type = usb; -; - -# Parallel port programmers. - -programmer - id = "bsd"; - desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; - type = "par"; - connection_type = parallel; - vcc = 2, 3, 4, 5; - reset = 7; - sck = 8; - mosi = 9; - miso = 10; -; - -programmer - id = "stk200"; - desc = "STK200"; - type = "par"; - connection_type = parallel; - buff = 4, 5; - sck = 6; - mosi = 7; - reset = 9; - miso = 10; -; - -# The programming dongle used by the popular Ponyprog -# utility. It is almost similar to the STK200 one, -# except that there is a LED indicating that the -# programming is currently in progress. - -programmer parent "stk200" - id = "pony-stk200"; - desc = "Pony Prog STK200"; - pgmled = 8; -; - -programmer - id = "dt006"; - desc = "Dontronics DT006"; - type = "par"; - connection_type = parallel; - reset = 4; - sck = 5; - mosi = 2; - miso = 11; -; - -programmer parent "dt006" - id = "bascom"; - desc = "Bascom SAMPLE programming cable"; -; - -programmer - id = "alf"; - desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; - type = "par"; - connection_type = parallel; - vcc = 2, 3, 4, 5; - buff = 6; - reset = 7; - sck = 8; - mosi = 9; - miso = 10; - errled = 1; - rdyled = 14; - pgmled = 16; - vfyled = 17; -; - -programmer - id = "sp12"; - desc = "Steve Bolt's Programmer"; - type = "par"; - connection_type = parallel; - vcc = 4,5,6,7,8; - reset = 3; - sck = 2; - mosi = 9; - miso = 11; -; - -programmer - id = "picoweb"; - desc = "Picoweb Programming Cable, http://www.picoweb.net/"; - type = "par"; - connection_type = parallel; - reset = 2; - sck = 3; - mosi = 4; - miso = 13; -; - -programmer - id = "abcmini"; - desc = "ABCmini Board, aka Dick Smith HOTCHIP"; - type = "par"; - connection_type = parallel; - reset = 4; - sck = 3; - mosi = 2; - miso = 10; -; - -programmer - id = "futurlec"; - desc = "Futurlec.com programming cable."; - type = "par"; - connection_type = parallel; - reset = 3; - sck = 2; - mosi = 1; - miso = 10; -; - - -# From the contributor of the "xil" jtag cable: -# The "vcc" definition isn't really vcc (the cable gets its power from -# the programming circuit) but is necessary to switch one of the -# buffer lines (trying to add it to the "buff" lines doesn't work in -# avrdude versions before 5.5j). -# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK -# to SCK (plus vcc/gnd of course) -programmer - id = "xil"; - desc = "Xilinx JTAG cable"; - type = "par"; - connection_type = parallel; - mosi = 2; - sck = 3; - reset = 4; - buff = 5; - miso = 13; - vcc = 6; -; - - -programmer - id = "dapa"; - desc = "Direct AVR Parallel Access cable"; - type = "par"; - connection_type = parallel; - vcc = 3; - reset = 16; - sck = 1; - mosi = 2; - miso = 11; -; - -programmer - id = "atisp"; - desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; - type = "par"; - connection_type = parallel; - reset = ~6; - sck = ~8; - mosi = ~7; - miso = ~10; -; - -programmer - id = "ere-isp-avr"; - desc = "ERE ISP-AVR "; - type = "par"; - connection_type = parallel; - reset = ~4; - sck = 3; - mosi = 2; - miso = 10; -; - -programmer - id = "blaster"; - desc = "Altera ByteBlaster"; - type = "par"; - connection_type = parallel; - sck = 2; - miso = 11; - reset = 3; - mosi = 8; - buff = 14; -; - -# It is almost same as pony-stk200, except vcc on pin 5 to auto -# disconnect port (download on http://electropol.free.fr/spip/spip.php?article27) -programmer parent "pony-stk200" - id = "frank-stk200"; - desc = "Frank STK200"; - buff = ; # delete buff pin assignment - vcc = 5; -; - -# The AT98ISP Cable is a simple parallel dongle for AT89 family. -# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 -programmer - id = "89isp"; - desc = "Atmel at89isp cable"; - type = "par"; - connection_type = parallel; - reset = 17; - sck = 1; - mosi = 2; - miso = 10; -; - - -#This programmer bitbangs GPIO lines using the Linux sysfs GPIO interface -# -#To enable it set the configuration below to match the GPIO lines connected to the -#relevant ISP header pins and uncomment the entry definition. In case you don't -#have the required permissions to edit this system wide config file put the -#entry in a separate .conf file and use it with -C+.conf -#on the command line. -# -#To check if your avrdude build has support for the linuxgpio programmer compiled in, -#use -c?type on the command line and look for linuxgpio in the list. If it's not available -#you need pass the --enable-linuxgpio=yes option to configure and recompile avrdude. -# -#programmer -# id = "linuxgpio"; -# desc = "Use the Linux sysfs interface to bitbang GPIO lines"; -# type = "linuxgpio"; -# reset = ?; -# sck = ?; -# mosi = ?; -# miso = ?; -#; - -# some ultra cheap programmers use bitbanging on the -# serialport. -# -# PC - DB9 - Pins for RS232: -# -# GND 5 -- |O -# | O| <- 9 RI -# DTR 4 <- |O | -# | O| <- 8 CTS -# TXD 3 <- |O | -# | O| -> 7 RTS -# RXD 2 -> |O | -# | O| <- 6 DSR -# DCD 1 -> |O -# -# Using RXD is currently not supported. -# Using RI is not supported under Win32 but is supported under Posix. - -# serial ponyprog design (dasa2 in uisp) -# reset=!txd sck=rts mosi=dtr miso=cts - -programmer - id = "ponyser"; - desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts"; - type = "serbb"; - connection_type = serial; - reset = ~3; - sck = 7; - mosi = 4; - miso = 8; -; - -# Same as above, different name -# reset=!txd sck=rts mosi=dtr miso=cts - -programmer parent "ponyser" - id = "siprog"; - desc = "Lancos SI-Prog "; -; - -# unknown (dasa in uisp) -# reset=rts sck=dtr mosi=txd miso=cts - -programmer - id = "dasa"; - desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; - type = "serbb"; - connection_type = serial; - reset = 7; - sck = 4; - mosi = 3; - miso = 8; -; - -# unknown (dasa3 in uisp) -# reset=!dtr sck=rts mosi=txd miso=cts - -programmer - id = "dasa3"; - desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts"; - type = "serbb"; - connection_type = serial; - reset = ~4; - sck = 7; - mosi = 3; - miso = 8; -; - -# C2N232i (jumper configuration "auto") -# reset=dtr sck=!rts mosi=!txd miso=!cts - -programmer - id = "c2n232i"; - desc = "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts"; - type = "serbb"; - connection_type = serial; - reset = 4; - sck = ~7; - mosi = ~3; - miso = ~8; -; - -# -# PART DEFINITIONS -# - -#------------------------------------------------------------ -# ATtiny11 -#------------------------------------------------------------ - -# This is an HVSP-only device. - -part - id = "t11"; - desc = "ATtiny11"; - stk500_devcode = 0x11; - signature = 0x1e 0x90 0x04; - chip_erase_delay = 20000; - - timeout = 200; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - memory "eeprom" - size = 64; - blocksize = 64; - readsize = 256; - delay = 5; - ; - - memory "flash" - size = 1024; - blocksize = 128; - readsize = 256; - delay = 3; - ; - - memory "signature" - size = 3; - ; - - memory "lock" - size = 1; - ; - - memory "calibration" - size = 1; - ; - - memory "fuse" - size = 1; - ; -; - -#------------------------------------------------------------ -# ATtiny12 -#------------------------------------------------------------ - -part - id = "t12"; - desc = "ATtiny12"; - stk500_devcode = 0x12; - avr910_devcode = 0x55; - signature = 0x1e 0x90 0x05; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - memory "eeprom" - size = 64; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 8; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - size = 1024; - min_write_delay = 4500; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; -; - -#------------------------------------------------------------ -# ATtiny13 -#------------------------------------------------------------ - -part - id = "t13"; - desc = "ATtiny13"; - has_debugwire = yes; - flash_instr = 0xB4, 0x0E, 0x1E; - eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x14; - signature = 0x1e 0x90 0x07; - chip_erase_delay = 4000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 90; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 0; - - memory "eeprom" - size = 64; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 1024; - page_size = 32; - num_pages = 32; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; - -; - - -#------------------------------------------------------------ -# ATtiny15 -#------------------------------------------------------------ - -part - id = "t15"; - desc = "ATtiny15"; - stk500_devcode = 0x13; - avr910_devcode = 0x56; - signature = 0x1e 0x90 0x06; - chip_erase_delay = 8200; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 5; - synchcycles = 6; - latchcycles = 16; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - memory "eeprom" - size = 64; - min_write_delay = 8200; - max_write_delay = 8200; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - size = 1024; - min_write_delay = 4100; - max_write_delay = 4100; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x o o o o x x o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x i i i i 1 1 i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; -; - -#------------------------------------------------------------ -# AT90s1200 -#------------------------------------------------------------ - -part - id = "1200"; - desc = "AT90S1200"; - is_at90s1200 = yes; - stk500_devcode = 0x33; - avr910_devcode = 0x13; - signature = 0x1e 0x90 0x01; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 1; - bytedelay = 0; - pollindex = 0; - pollvalue = 0xFF; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 64; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 20; - blocksize = 32; - readsize = 256; - ; - memory "flash" - size = 1024; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x02; - delay = 15; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; - ; - -#------------------------------------------------------------ -# AT90s4414 -#------------------------------------------------------------ - -part - id = "4414"; - desc = "AT90S4414"; - stk500_devcode = 0x50; - avr910_devcode = 0x28; - signature = 0x1e 0x92 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - ; - -#------------------------------------------------------------ -# AT90s2313 -#------------------------------------------------------------ - -part - id = "2313"; - desc = "AT90S2313"; - stk500_devcode = 0x40; - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 128; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 2048; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - ; - -#------------------------------------------------------------ -# AT90s2333 -#------------------------------------------------------------ - -part - id = "2333"; -##### WARNING: No XML file for device 'AT90S2333'! ##### - desc = "AT90S2333"; - stk500_devcode = 0x42; - avr910_devcode = 0x34; - signature = 0x1e 0x91 0x05; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - size = 2048; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - pwroff_after_write = yes; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; - ; - - -#------------------------------------------------------------ -# AT90s2343 (also AT90s2323 and ATtiny22) -#------------------------------------------------------------ - -part - id = "2343"; - desc = "AT90S2343"; - stk500_devcode = 0x43; - avr910_devcode = 0x4c; - signature = 0x1e 0x91 0x03; - chip_erase_delay = 18000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 0; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 2048; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 128; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x o o o x x x x o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x o o o x x x x o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; - ; - - -#------------------------------------------------------------ -# AT90s4433 -#------------------------------------------------------------ - -part - id = "4433"; - desc = "AT90S4433"; - stk500_devcode = 0x51; - avr910_devcode = 0x30; - signature = 0x1e 0x92 0x03; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - pwroff_after_write = yes; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; - ; - -#------------------------------------------------------------ -# AT90s4434 -#------------------------------------------------------------ - -part - id = "4434"; -##### WARNING: No XML file for device 'AT90S4434'! ##### - desc = "AT90S4434"; - stk500_devcode = 0x52; - avr910_devcode = 0x6c; - signature = 0x1e 0x92 0x02; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; - ; - -#------------------------------------------------------------ -# AT90s8515 -#------------------------------------------------------------ - -part - id = "8515"; - desc = "AT90S8515"; - stk500_devcode = 0x60; - avr910_devcode = 0x38; - signature = 0x1e 0x93 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 512; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 8192; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - ; - -#------------------------------------------------------------ -# AT90s8535 -#------------------------------------------------------------ - -part - id = "8535"; - desc = "AT90S8535"; - stk500_devcode = 0x61; - avr910_devcode = 0x68; - signature = 0x1e 0x93 0x03; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 8192; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x x o"; - write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x o o x x x x x x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - ; - -#------------------------------------------------------------ -# ATmega103 -#------------------------------------------------------------ - -part - id = "m103"; - desc = "ATmega103"; - stk500_devcode = 0xB1; - avr910_devcode = 0x41; - signature = 0x1e 0x97 0x01; - chip_erase_delay = 112000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, - 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, - 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, - 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 10; - - memory "eeprom" - size = 4096; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 22000; - max_write_delay = 56000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x11; - delay = 70; - blocksize = 256; - readsize = 256; - ; - - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o x o 1 o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATmega64 -#------------------------------------------------------------ - -part - id = "m64"; - desc = "ATmega64"; - has_jtag = yes; - stk500_devcode = 0xA0; - avr910_devcode = 0x45; - signature = 0x1e 0x96 0x02; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x22; - spmcr = 0x68; - allowfullpagebitstream = yes; - - ocdrev = 2; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 20; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - - - -#------------------------------------------------------------ -# ATmega128 -#------------------------------------------------------------ - -part - id = "m128"; - desc = "ATmega128"; - has_jtag = yes; - stk500_devcode = 0xB2; - avr910_devcode = 0x43; - signature = 0x1e 0x97 0x02; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x22; - spmcr = 0x68; - rampz = 0x3b; - allowfullpagebitstream = yes; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90CAN128 -#------------------------------------------------------------ - -part - id = "c128"; - desc = "AT90CAN128"; - has_jtag = yes; - stk500_devcode = 0xB3; -# avr910_devcode = 0x43; - signature = 0x1e 0x97 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90CAN64 -#------------------------------------------------------------ - -part - id = "c64"; - desc = "AT90CAN64"; - has_jtag = yes; - stk500_devcode = 0xB3; -# avr910_devcode = 0x43; - signature = 0x1e 0x96 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90CAN32 -#------------------------------------------------------------ - -part - id = "c32"; - desc = "AT90CAN32"; - has_jtag = yes; - stk500_devcode = 0xB3; -# avr910_devcode = 0x43; - signature = 0x1e 0x95 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 256; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATmega16 -#------------------------------------------------------------ - -part - id = "m16"; - desc = "ATmega16"; - has_jtag = yes; - stk500_devcode = 0x82; - avr910_devcode = 0x74; - signature = 0x1e 0x94 0x03; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 100; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = yes; - - ocdrev = 2; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x04; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "calibration" - size = 4; - - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATmega164P -#------------------------------------------------------------ - -# close to ATmega16 - -part parent "m16" - id = "m164p"; - desc = "ATmega164P"; - signature = 0x1e 0x94 0x0a; - - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - allowfullpagebitstream = no; - chip_erase_delay = 55000; - - ocdrev = 3; - ; - - -#------------------------------------------------------------ -# ATmega324P -#------------------------------------------------------------ - -# similar to ATmega164P - -part - id = "m324p"; - desc = "ATmega324P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x95 0x08; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 55000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATmega324PA -#------------------------------------------------------------ - -# similar to ATmega324P - -part parent "m324p" - id = "m324pa"; - desc = "ATmega324PA"; - signature = 0x1e 0x95 0x11; - - ocdrev = 3; - ; - - -#------------------------------------------------------------ -# ATmega644 -#------------------------------------------------------------ - -# similar to ATmega164 - -part - id = "m644"; - desc = "ATmega644"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x96 0x09; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 55000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega644P -#------------------------------------------------------------ - -# similar to ATmega164p - -part parent "m644" - id = "m644p"; - desc = "ATmega644P"; - signature = 0x1e 0x96 0x0a; - - ocdrev = 3; - ; - - - -#------------------------------------------------------------ -# ATmega1284 -#------------------------------------------------------------ - -# similar to ATmega164 - -part - id = "m1284"; - desc = "ATmega1284"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x97 0x06; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 55000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - - - -#------------------------------------------------------------ -# ATmega1284P -#------------------------------------------------------------ - -# similar to ATmega164p - -part - id = "m1284p"; - desc = "ATmega1284P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x97 0x05; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 55000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - - - -#------------------------------------------------------------ -# ATmega162 -#------------------------------------------------------------ - -part - id = "m162"; - desc = "ATmega162"; - has_jtag = yes; - stk500_devcode = 0x83; - avr910_devcode = 0x63; - signature = 0x1e 0x94 0x04; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - - idr = 0x04; - spmcr = 0x57; - allowfullpagebitstream = yes; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - ocdrev = 2; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - - ; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; -; - - - -#------------------------------------------------------------ -# ATmega163 -#------------------------------------------------------------ - -part - id = "m163"; - desc = "ATmega163"; - stk500_devcode = 0x81; - avr910_devcode = 0x64; - signature = 0x1e 0x94 0x02; - chip_erase_delay = 32000; - pagel = 0xd7; - bs2 = 0xa0; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 30; - programfusepulsewidth = 0; - programfusepolltimeout = 2; - programlockpulsewidth = 0; - programlockpolltimeout = 2; - - - memory "eeprom" - size = 512; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 16000; - max_write_delay = 16000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x11; - delay = 20; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o x x o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i 1 1 i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x 1 o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x 0 x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega169 -#------------------------------------------------------------ - -part - id = "m169"; - desc = "ATmega169"; - has_jtag = yes; - stk500_devcode = 0x85; - avr910_devcode = 0x78; - signature = 0x1e 0x94 0x05; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - - ocdrev = 2; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega329 -#------------------------------------------------------------ - -part - id = "m329"; - desc = "ATmega329"; - has_jtag = yes; -# stk500_devcode = 0x85; # no STK500 support, only STK500v2 -# avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x95 0x03; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega329P -#------------------------------------------------------------ -# Identical to ATmega329 except of the signature - -part parent "m329" - id = "m329p"; - desc = "ATmega329P"; - signature = 0x1e 0x95 0x0b; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega3290 -#------------------------------------------------------------ - -# identical to ATmega329 - -part parent "m329" - id = "m3290"; - desc = "ATmega3290"; - signature = 0x1e 0x95 0x04; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega3290P -#------------------------------------------------------------ - -# identical to ATmega3290 except of the signature - -part parent "m3290" - id = "m3290p"; - desc = "ATmega3290P"; - signature = 0x1e 0x95 0x0c; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega649 -#------------------------------------------------------------ - -part - id = "m649"; - desc = "ATmega649"; - has_jtag = yes; -# stk500_devcode = 0x85; # no STK500 support, only STK500v2 -# avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x96 0x03; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega6490 -#------------------------------------------------------------ - -# identical to ATmega649 - -part parent "m649" - id = "m6490"; - desc = "ATmega6490"; - signature = 0x1e 0x96 0x04; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega32 -#------------------------------------------------------------ - -part - id = "m32"; - desc = "ATmega32"; - has_jtag = yes; - stk500_devcode = 0x91; - avr910_devcode = 0x72; - signature = 0x1e 0x95 0x02; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = yes; - - ocdrev = 2; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega161 -#------------------------------------------------------------ - -part - id = "m161"; - desc = "ATmega161"; - stk500_devcode = 0x80; - avr910_devcode = 0x60; - signature = 0x1e 0x94 0x01; - chip_erase_delay = 28000; - pagel = 0xd7; - bs2 = 0xa0; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 30; - programfusepulsewidth = 0; - programfusepolltimeout = 2; - programlockpulsewidth = 0; - programlockpolltimeout = 2; - - memory "eeprom" - size = 512; - min_write_delay = 3400; - max_write_delay = 3400; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 14000; - max_write_delay = 14000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 16; - blocksize = 128; - readsize = 256; - ; - - memory "fuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x o x o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x 1 i 1 i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATmega8 -#------------------------------------------------------------ - -part - id = "m8"; - desc = "ATmega8"; - stk500_devcode = 0x70; - avr910_devcode = 0x76; - signature = 0x1e 0x93 0x07; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 10000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 10; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - - -#------------------------------------------------------------ -# ATmega8515 -#------------------------------------------------------------ - -part - id = "m8515"; - desc = "ATmega8515"; - stk500_devcode = 0x63; - avr910_devcode = 0x3A; - signature = 0x1e 0x93 0x06; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - - - -#------------------------------------------------------------ -# ATmega8535 -#------------------------------------------------------------ - -part - id = "m8535"; - desc = "ATmega8535"; - stk500_devcode = 0x64; - avr910_devcode = 0x69; - signature = 0x1e 0x93 0x08; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATtiny26 -#------------------------------------------------------------ - -part - id = "t26"; - desc = "ATtiny26"; - stk500_devcode = 0x21; - avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x09; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 16; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x x x x i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - -; - - -#------------------------------------------------------------ -# ATtiny261 -#------------------------------------------------------------ -# Close to ATtiny26 - -part - id = "t261"; - desc = "ATtiny261"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -# stk500_devcode = 0x21; -# avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x0c; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - size = 128; - page_size = 4; - num_pages = 32; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - -; - - -#------------------------------------------------------------ -# ATtiny461 -#------------------------------------------------------------ -# Close to ATtiny261 - -part - id = "t461"; - desc = "ATtiny461"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -# stk500_devcode = 0x21; -# avr910_devcode = 0x5e; - signature = 0x1e 0x92 0x08; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - size = 256; - page_size = 4; - num_pages = 64; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - -; - - -#------------------------------------------------------------ -# ATtiny861 -#------------------------------------------------------------ -# Close to ATtiny461 - -part - id = "t861"; - desc = "ATtiny861"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -# stk500_devcode = 0x21; -# avr910_devcode = 0x5e; - signature = 0x1e 0x93 0x0d; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - size = 512; - num_pages = 128; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - -; - - -#------------------------------------------------------------ -# ATtiny28 -#------------------------------------------------------------ - -# This is an HVPP-only device. - -part - id = "t28"; - desc = "ATtiny28"; - stk500_devcode = 0x22; - avr910_devcode = 0x5c; - signature = 0x1e 0x91 0x07; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "flash" - size = 2048; - page_size = 2; - readsize = 256; - delay = 5; - ; - - memory "signature" - size = 3; - ; - - memory "lock" - size = 1; - ; - - memory "calibration" - size = 1; - ; - - memory "fuse" - size = 1; - ; -; - - - -#------------------------------------------------------------ -# ATmega48 -#------------------------------------------------------------ - -part - id = "m48"; - desc = "ATmega48"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x59; -# avr910_devcode = 0x; - signature = 0x1e 0x92 0x05; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 45000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - page_size = 4; - size = 256; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x x", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega48P -#------------------------------------------------------------ - -part parent "m48" - id = "m48p"; - desc = "ATmega48P"; - signature = 0x1e 0x92 0x0a; - - ocdrev = 1; - ; - -#------------------------------------------------------------ -# ATmega48PB -#------------------------------------------------------------ - -part parent "m48" - id = "m48pb"; - desc = "ATmega48PB"; - signature = 0x1e 0x92 0x10; - - ocdrev = 1; - ; - -#------------------------------------------------------------ -# ATmega88 -#------------------------------------------------------------ - -part - id = "m88"; - desc = "ATmega88"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x73; -# avr910_devcode = 0x; - signature = 0x1e 0x93 0x0a; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - page_size = 4; - size = 512; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega88P -#------------------------------------------------------------ - -part parent "m88" - id = "m88p"; - desc = "ATmega88P"; - signature = 0x1e 0x93 0x0f; - - ocdrev = 1; - ; - -#------------------------------------------------------------ -# ATmega88PB -#------------------------------------------------------------ - -part parent "m88" - id = "m88pb"; - desc = "ATmega88PB"; - signature = 0x1e 0x93 0x16; - - ocdrev = 1; - ; - -#------------------------------------------------------------ -# ATmega168 -#------------------------------------------------------------ - -part - id = "m168"; - desc = "ATmega168"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x86; - # avr910_devcode = 0x; - signature = 0x1e 0x94 0x06; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - page_size = 4; - size = 512; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; -; - -#------------------------------------------------------------ -# ATmega168P -#------------------------------------------------------------ - -part parent "m168" - id = "m168p"; - desc = "ATmega168P"; - signature = 0x1e 0x94 0x0b; - - ocdrev = 1; -; - -#------------------------------------------------------------ -# ATmega168PB -#------------------------------------------------------------ - -part parent "m168" - id = "m168pb"; - desc = "ATmega168PB"; - signature = 0x1e 0x94 0x15; - - ocdrev = 1; -; - -#------------------------------------------------------------ -# ATtiny88 -#------------------------------------------------------------ - -part - id = "t88"; - desc = "ATtiny88"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x73; -# avr910_devcode = 0x; - signature = 0x1e 0x93 0x11; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - page_size = 4; - size = 64; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 64; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega328 -#------------------------------------------------------------ - -part - id = "m328"; - desc = "ATmega328"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x86; - # avr910_devcode = 0x; - signature = 0x1e 0x95 0x14; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - page_size = 4; - size = 1024; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; -; - -part parent "m328" - id = "m328p"; - desc = "ATmega328P"; - signature = 0x1e 0x95 0x0F; - - ocdrev = 1; -; - -part parent "m328" - id = "m328pb"; - desc = "ATmega328PB"; - signature = 0x1e 0x95 0x16; - - ocdrev = 1; -; - -#------------------------------------------------------------ -# ATmega32m1 -#------------------------------------------------------------ - -part parent "m328" - id = "m32m1"; - desc = "ATmega32M1"; - # stk500_devcode = 0x; - # avr910_devcode = 0x; - signature = 0x1e 0x95 0x84; - bs2 = 0xe2; - - memory "efuse" - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x i i i i i i"; - ; -; - -#------------------------------------------------------------ -# ATmega64m1 -#------------------------------------------------------------ - -part parent "m328" - id = "m64m1"; - desc = "ATmega64M1"; - # stk500_devcode = 0x; - # avr910_devcode = 0x; - signature = 0x1e 0x96 0x84; - bs2 = 0xe2; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x i i i i i i"; - ; -; - -#------------------------------------------------------------ -# ATtiny2313 -#------------------------------------------------------------ - -part - id = "t2313"; - desc = "ATtiny2313"; - has_debugwire = yes; - flash_instr = 0xB2, 0x0F, 0x1F; - eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x23; -## Use the ATtiny26 devcode: - avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x0a; - pagel = 0xD4; - bs2 = 0xD6; - reset = io; - chip_erase_delay = 9000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, - 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, - 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, - 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 0; - - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - -# The information in the data sheet of April/2004 is wrong, this works: - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - -# The information in the data sheet of April/2004 is wrong, this works: - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - -# The information in the data sheet of April/2004 is wrong, this works: - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; -# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. -# The information in the data sheet of April/2004 is wrong, this works: - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny4313 -#------------------------------------------------------------ - -part - id = "t4313"; - desc = "ATtiny4313"; - has_debugwire = yes; - flash_instr = 0xB2, 0x0F, 0x1F; - eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x23; -## Use the ATtiny26 devcode: - avr910_devcode = 0x5e; - signature = 0x1e 0x92 0x0d; - pagel = 0xD4; - bs2 = 0xD6; - reset = io; - chip_erase_delay = 9000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, - 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, - 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, - 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 0; - - memory "eeprom" - size = 256; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny4313 has Signature Bytes: 0x1E 0x92 0x0D. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90PWM2 -#------------------------------------------------------------ - -part - id = "pwm2"; - desc = "AT90PWM2"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x65; -## avr910_devcode = ?; - signature = 0x1e 0x93 0x81; - pagel = 0xD8; - bs2 = 0xE2; - reset = io; - chip_erase_delay = 9000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; -# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90PWM3 -#------------------------------------------------------------ - -# Completely identical to AT90PWM2 (including the signature!) - -part parent "pwm2" - id = "pwm3"; - desc = "AT90PWM3"; - ; - -#------------------------------------------------------------ -# AT90PWM2B -#------------------------------------------------------------ -# Same as AT90PWM2 but different signature. - -part parent "pwm2" - id = "pwm2b"; - desc = "AT90PWM2B"; - signature = 0x1e 0x93 0x83; - - ocdrev = 1; - ; - -#------------------------------------------------------------ -# AT90PWM3B -#------------------------------------------------------------ - -# Completely identical to AT90PWM2B (including the signature!) - -part parent "pwm2b" - id = "pwm3b"; - desc = "AT90PWM3B"; - - ocdrev = 1; - ; - -#------------------------------------------------------------ -# AT90PWM316 -#------------------------------------------------------------ - -# Similar to AT90PWM3B, but with 16 kiB flash, 512 B EEPROM, and 1024 B SRAM. - -part parent "pwm3b" - id = "pwm316"; - desc = "AT90PWM316"; - signature = 0x1e 0x94 0x83; - - ocdrev = 1; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; - ; - -#------------------------------------------------------------ -# AT90PWM216 -#------------------------------------------------------------ -# Completely identical to AT90PWM316 (including the signature!) - -part parent "pwm316" - id = "pwm216"; - desc = "AT90PWM216"; - ; - -#------------------------------------------------------------ -# ATtiny25 -#------------------------------------------------------------ - -part - id = "t25"; - desc = "ATtiny25"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x08; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny45 -#------------------------------------------------------------ - -part - id = "t45"; - desc = "ATtiny45"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x92 0x06; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 256; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny85 -#------------------------------------------------------------ - -part - id = "t85"; - desc = "ATtiny85"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x93 0x0b; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega640 -#------------------------------------------------------------ -# Almost same as ATmega1280, except for different memory sizes - -part - id = "m640"; - desc = "ATmega640"; - signature = 0x1e 0x96 0x08; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega1280 -#------------------------------------------------------------ - -part - id = "m1280"; - desc = "ATmega1280"; - signature = 0x1e 0x97 0x03; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega1281 -#------------------------------------------------------------ -# Identical to ATmega1280 - -part parent "m1280" - id = "m1281"; - desc = "ATmega1281"; - signature = 0x1e 0x97 0x04; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega2560 -#------------------------------------------------------------ - -part - id = "m2560"; - desc = "ATmega2560"; - signature = 0x1e 0x98 0x01; - has_jtag = yes; - stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 4; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 262144; - page_size = 256; - num_pages = 1024; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - load_ext_addr = " 0 1 0 0 1 1 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 a16", - " 0 0 0 0 0 0 0 0"; - - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega2561 -#------------------------------------------------------------ - -part parent "m2560" - id = "m2561"; - desc = "ATmega2561"; - signature = 0x1e 0x98 0x02; - - ocdrev = 4; - ; - -#------------------------------------------------------------ -# ATmega128RFA1 -#------------------------------------------------------------ -# Identical to ATmega2561 but half the ROM - -part parent "m2561" - id = "m128rfa1"; - desc = "ATmega128RFA1"; - signature = 0x1e 0xa7 0x01; - chip_erase_delay = 55000; - bs2 = 0xE2; - - ocdrev = 3; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 50000; - max_write_delay = 50000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 256; - readsize = 256; - ; - ; - -#------------------------------------------------------------ -# ATmega256RFR2 -#------------------------------------------------------------ - -part parent "m2561" - id = "m256rfr2"; - desc = "ATmega256RFR2"; - signature = 0x1e 0xa8 0x02; - chip_erase_delay = 18500; - bs2 = 0xE2; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 8192; - min_write_delay = 13000; - max_write_delay = 13000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - - ocdrev = 4; - ; - -#------------------------------------------------------------ -# ATmega128RFR2 -#------------------------------------------------------------ - -part parent "m128rfa1" - id = "m128rfr2"; - desc = "ATmega128RFR2"; - signature = 0x1e 0xa7 0x02; - - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega64RFR2 -#------------------------------------------------------------ - -part parent "m128rfa1" - id = "m64rfr2"; - desc = "ATmega64RFR2"; - signature = 0x1e 0xa6 0x02; - - - ocdrev = 3; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 50000; - max_write_delay = 50000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 256; - readsize = 256; - ; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 13000; - max_write_delay = 13000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - - ; - -#------------------------------------------------------------ -# ATmega2564RFR2 -#------------------------------------------------------------ - -part parent "m256rfr2" - id = "m2564rfr2"; - desc = "ATmega2564RFR2"; - signature = 0x1e 0xa8 0x03; - ; - -#------------------------------------------------------------ -# ATmega1284RFR2 -#------------------------------------------------------------ - -part parent "m128rfr2" - id = "m1284rfr2"; - desc = "ATmega1284RFR2"; - signature = 0x1e 0xa7 0x03; - ; - -#------------------------------------------------------------ -# ATmega644RFR2 -#------------------------------------------------------------ - -part parent "m64rfr2" - id = "m644rfr2"; - desc = "ATmega644RFR2"; - signature = 0x1e 0xa6 0x03; - ; - -#------------------------------------------------------------ -# ATtiny24 -#------------------------------------------------------------ - -part - id = "t24"; - desc = "ATtiny24"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x0b; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny44 -#------------------------------------------------------------ - -part - id = "t44"; - desc = "ATtiny44"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x92 0x07; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 256; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny84 -#------------------------------------------------------------ - -part - id = "t84"; - desc = "ATtiny84"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x93 0x0c; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny441 -#------------------------------------------------------------ - -part parent "t44" - id = "t441"; - desc = "ATtiny441"; - signature = 0x1e 0x92 0x15; - - memory "flash" - paged = yes; - size = 4096; - page_size = 16; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x x a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x x a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 16; - readsize = 256; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; -; - -#------------------------------------------------------------ -# ATtiny841 -#------------------------------------------------------------ - -part parent "t84" - id = "t841"; - desc = "ATtiny841"; - signature = 0x1e 0x93 0x15; - - memory "flash" - paged = yes; - size = 8192; - page_size = 16; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x x a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x x a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 16; - readsize = 256; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; -; - -#------------------------------------------------------------ -# ATtiny43U -#------------------------------------------------------------ - -part - id = "t43u"; - desc = "ATtiny43u"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x92 0x0C; - reset = io; - chip_erase_delay = 1000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, 0x4E, 0x5E, - 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, 0x06, 0x16, 0x46, 0x56, - 0x0A, 0x1A, 0x4A, 0x5A, 0x1E, 0x7C, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 20; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - memory "eeprom" - size = 64; - paged = yes; - page_size = 4; - num_pages = 16; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "0 0 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "0 0 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " 0 0 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 64; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; -; - -#------------------------------------------------------------ -# ATmega32u4 -#------------------------------------------------------------ - -part - id = "m32u4"; - desc = "ATmega32U4"; - signature = 0x1e 0x95 0x87; - usbpid = 0x2ff4; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90USB646 -#------------------------------------------------------------ - -part - id = "usb646"; - desc = "AT90USB646"; - signature = 0x1e 0x96 0x82; - usbpid = 0x2ff9; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90USB647 -#------------------------------------------------------------ -# identical to AT90USB646 - -part parent "usb646" - id = "usb647"; - desc = "AT90USB647"; - signature = 0x1e 0x96 0x82; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# AT90USB1286 -#------------------------------------------------------------ - -part - id = "usb1286"; - desc = "AT90USB1286"; - signature = 0x1e 0x97 0x82; - usbpid = 0x2ffb; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90USB1287 -#------------------------------------------------------------ -# identical to AT90USB1286 - -part parent "usb1286" - id = "usb1287"; - desc = "AT90USB1287"; - signature = 0x1e 0x97 0x82; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# AT90USB162 -#------------------------------------------------------------ - -part - id = "usb162"; - desc = "AT90USB162"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x94 0x82; - usbpid = 0x2ffa; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90USB82 -#------------------------------------------------------------ -# Changes against AT90USB162 (beside IDs) -# memory "flash" -# size = 8192; -# num_pages = 64; - -part - id = "usb82"; - desc = "AT90USB82"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x93 0x82; - usbpid = 0x2ff7; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 8192; - page_size = 128; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega32U2 -#------------------------------------------------------------ -# Changes against AT90USB162 (beside IDs) -# memory "flash" -# size = 32768; -# num_pages = 256; -# memory "eeprom" -# size = 1024; -# num_pages = 256; -part - id = "m32u2"; - desc = "ATmega32U2"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x95 0x8a; - usbpid = 0x2ff0; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - num_pages = 256; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; -#------------------------------------------------------------ -# ATmega16U2 -#------------------------------------------------------------ -# Changes against ATmega32U2 (beside IDs) -# memory "flash" -# size = 16384; -# num_pages = 128; -# memory "eeprom" -# size = 512; -# num_pages = 128; -part - id = "m16u2"; - desc = "ATmega16U2"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x94 0x89; - usbpid = 0x2fef; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega8U2 -#------------------------------------------------------------ -# Changes against ATmega16U2 (beside IDs) -# memory "flash" -# size = 8192; -# page_size = 64; -# blocksize = 64; - -part - id = "m8u2"; - desc = "ATmega8U2"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x93 0x89; - usbpid = 0x2fee; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 8192; - page_size = 128; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; -#------------------------------------------------------------ -# ATmega325 -#------------------------------------------------------------ - -part - id = "m325"; - desc = "ATmega325"; - signature = 0x1e 0x95 0x05; - has_jtag = yes; -# stk500_devcode = 0x??; # No STK500v1 support? -# avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega645 -#------------------------------------------------------------ - -part - id = "m645"; - desc = "ATmega645"; - signature = 0x1E 0x96 0x05; - has_jtag = yes; -# stk500_devcode = 0x??; # No STK500v1 support? -# avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " 0 0 0 0 0 0 0 0"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega3250 -#------------------------------------------------------------ - -part parent "m325" - id = "m3250"; - desc = "ATmega3250"; - signature = 0x1E 0x95 0x06; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega6450 -#------------------------------------------------------------ - -part parent "m645" - id = "m6450"; - desc = "ATmega6450"; - signature = 0x1E 0x96 0x06; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# AVR XMEGA family common values -#------------------------------------------------------------ - -part - id = ".xmega"; - desc = "AVR XMEGA family common values"; - has_pdi = yes; - nvm_base = 0x01c0; - mcu_base = 0x0090; - - memory "signature" - size = 3; - offset = 0x1000090; - ; - - memory "prodsig" - size = 0x32; - offset = 0x8e0200; - page_size = 0x32; - readsize = 0x32; - ; - - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; - - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; - - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; - - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; - - memory "lock" - size = 1; - offset = 0x8f0027; - ; - - memory "data" - # SRAM, only used to supply the offset - offset = 0x1000000; - ; -; - -#------------------------------------------------------------ -# ATxmega16A4U -#------------------------------------------------------------ - -part parent ".xmega" - id = "x16a4u"; - desc = "ATxmega16A4U"; - signature = 0x1e 0x94 0x41; - usbpid = 0x2fe3; - - memory "eeprom" - size = 0x400; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x4000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x803000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "boot" - size = 0x1000; - offset = 0x804000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "flash" - size = 0x5000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "usersig" - size = 0x100; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega16C4 -#------------------------------------------------------------ - -part parent "x16a4u" - id = "x16c4"; - desc = "ATxmega16C4"; - signature = 0x1e 0x94 0x43; -; - -#------------------------------------------------------------ -# ATxmega16D4 -#------------------------------------------------------------ - -part parent "x16a4u" - id = "x16d4"; - desc = "ATxmega16D4"; - signature = 0x1e 0x94 0x42; -; - -#------------------------------------------------------------ -# ATxmega16A4 -#------------------------------------------------------------ - -part parent "x16a4u" - id = "x16a4"; - desc = "ATxmega16A4"; - signature = 0x1e 0x94 0x41; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega32A4U -#------------------------------------------------------------ - -part parent ".xmega" - id = "x32a4u"; - desc = "ATxmega32A4U"; - signature = 0x1e 0x95 0x41; - usbpid = 0x2fe4; - - memory "eeprom" - size = 0x400; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x8000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x807000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "boot" - size = 0x1000; - offset = 0x808000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "flash" - size = 0x9000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "usersig" - size = 0x100; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega32C4 -#------------------------------------------------------------ - -part parent "x32a4u" - id = "x32c4"; - desc = "ATxmega32C4"; - signature = 0x1e 0x95 0x44; -; - -#------------------------------------------------------------ -# ATxmega32D4 -#------------------------------------------------------------ - -part parent "x32a4u" - id = "x32d4"; - desc = "ATxmega32D4"; - signature = 0x1e 0x95 0x42; -; - -#------------------------------------------------------------ -# ATxmega32A4 -#------------------------------------------------------------ - -part parent "x32a4u" - id = "x32a4"; - desc = "ATxmega32A4"; - signature = 0x1e 0x95 0x41; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega64A4U -#------------------------------------------------------------ - -part parent ".xmega" - id = "x64a4u"; - desc = "ATxmega64A4U"; - signature = 0x1e 0x96 0x46; - usbpid = 0x2fe5; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x10000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x80f000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "boot" - size = 0x1000; - offset = 0x810000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "flash" - size = 0x11000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "usersig" - size = 0x100; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega64C3 -#------------------------------------------------------------ - -part parent "x64a4u" - id = "x64c3"; - desc = "ATxmega64C3"; - signature = 0x1e 0x96 0x49; - usbpid = 0x2fd6; -; - -#------------------------------------------------------------ -# ATxmega64D3 -#------------------------------------------------------------ - -part parent "x64a4u" - id = "x64d3"; - desc = "ATxmega64D3"; - signature = 0x1e 0x96 0x4a; -; - -#------------------------------------------------------------ -# ATxmega64D4 -#------------------------------------------------------------ - -part parent "x64a4u" - id = "x64d4"; - desc = "ATxmega64D4"; - signature = 0x1e 0x96 0x47; -; - -#------------------------------------------------------------ -# ATxmega64A1 -#------------------------------------------------------------ - -part parent "x64a4u" - id = "x64a1"; - desc = "ATxmega64A1"; - signature = 0x1e 0x96 0x4e; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega64A1U -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64a1u"; - desc = "ATxmega64A1U"; - signature = 0x1e 0x96 0x4e; - usbpid = 0x2fe8; -; - -#------------------------------------------------------------ -# ATxmega64A3 -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64a3"; - desc = "ATxmega64A3"; - signature = 0x1e 0x96 0x42; -; - -#------------------------------------------------------------ -# ATxmega64A3U -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64a3u"; - desc = "ATxmega64A3U"; - signature = 0x1e 0x96 0x42; - usbpid = 0x2fe5; -; - -#------------------------------------------------------------ -# ATxmega64A4 -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64a4"; - desc = "ATxmega64A4"; - signature = 0x1e 0x96 0x46; -; - -#------------------------------------------------------------ -# ATxmega64B1 -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64b1"; - desc = "ATxmega64B1"; - signature = 0x1e 0x96 0x52; - usbpid = 0x2fe1; -; - -#------------------------------------------------------------ -# ATxmega64B3 -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64b3"; - desc = "ATxmega64B3"; - signature = 0x1e 0x96 0x51; - usbpid = 0x2fdf; -; - -#------------------------------------------------------------ -# ATxmega128C3 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x128c3"; - desc = "ATxmega128C3"; - signature = 0x1e 0x97 0x52; - usbpid = 0x2fd7; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x20000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "apptable" - size = 0x2000; - offset = 0x81e000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x820000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "flash" - size = 0x22000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x200; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega128D3 -#------------------------------------------------------------ - -part parent "x128c3" - id = "x128d3"; - desc = "ATxmega128D3"; - signature = 0x1e 0x97 0x48; -; - -#------------------------------------------------------------ -# ATxmega128D4 -#------------------------------------------------------------ - -part parent "x128c3" - id = "x128d4"; - desc = "ATxmega128D4"; - signature = 0x1e 0x97 0x47; -; - -#------------------------------------------------------------ -# ATxmega128A1 -#------------------------------------------------------------ - -part parent "x128c3" - id = "x128a1"; - desc = "ATxmega128A1"; - signature = 0x1e 0x97 0x4c; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega128A1 revision D -#------------------------------------------------------------ - -part parent "x128a1" - id = "x128a1d"; - desc = "ATxmega128A1revD"; - signature = 0x1e 0x97 0x41; -; - -#------------------------------------------------------------ -# ATxmega128A1U -#------------------------------------------------------------ - -part parent "x128a1" - id = "x128a1u"; - desc = "ATxmega128A1U"; - signature = 0x1e 0x97 0x4c; - usbpid = 0x2fed; -; - -#------------------------------------------------------------ -# ATxmega128A3 -#------------------------------------------------------------ - -part parent "x128a1" - id = "x128a3"; - desc = "ATxmega128A3"; - signature = 0x1e 0x97 0x42; -; - -#------------------------------------------------------------ -# ATxmega128A3U -#------------------------------------------------------------ - -part parent "x128a1" - id = "x128a3u"; - desc = "ATxmega128A3U"; - signature = 0x1e 0x97 0x42; - usbpid = 0x2fe6; -; - -#------------------------------------------------------------ -# ATxmega128A4 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x128a4"; - desc = "ATxmega128A4"; - signature = 0x1e 0x97 0x46; - has_jtag = yes; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x20000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x81f000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x820000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "flash" - size = 0x22000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x200; - readsize = 0x100; - ; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega128A4U -#------------------------------------------------------------ - -part parent ".xmega" - id = "x128a4u"; - desc = "ATxmega128A4U"; - signature = 0x1e 0x97 0x46; - usbpid = 0x2fde; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x20000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x81f000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x820000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "flash" - size = 0x22000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "usersig" - size = 0x100; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega128B1 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x128b1"; - desc = "ATxmega128B1"; - signature = 0x1e 0x97 0x4d; - usbpid = 0x2fea; - has_jtag = yes; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x20000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "apptable" - size = 0x2000; - offset = 0x81e000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x820000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "flash" - size = 0x22000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "usersig" - size = 0x100; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega128B3 -#------------------------------------------------------------ - -part parent "x128b1" - id = "x128b3"; - desc = "ATxmega128B3"; - signature = 0x1e 0x97 0x4b; - usbpid = 0x2fe0; -; - -#------------------------------------------------------------ -# ATxmega192C3 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x192c3"; - desc = "ATxmega192C3"; - signature = 0x1e 0x97 0x51; - # usbpid = 0x2f??; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x30000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "apptable" - size = 0x2000; - offset = 0x82e000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x830000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "flash" - size = 0x32000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x200; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega192D3 -#------------------------------------------------------------ - -part parent "x192c3" - id = "x192d3"; - desc = "ATxmega192D3"; - signature = 0x1e 0x97 0x49; -; - -#------------------------------------------------------------ -# ATxmega192A1 -#------------------------------------------------------------ - -part parent "x192c3" - id = "x192a1"; - desc = "ATxmega192A1"; - signature = 0x1e 0x97 0x4e; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega192A3 -#------------------------------------------------------------ - -part parent "x192a1" - id = "x192a3"; - desc = "ATxmega192A3"; - signature = 0x1e 0x97 0x44; -; - -#------------------------------------------------------------ -# ATxmega192A3U -#------------------------------------------------------------ - -part parent "x192a1" - id = "x192a3u"; - desc = "ATxmega192A3U"; - signature = 0x1e 0x97 0x44; - usbpid = 0x2fe7; -; - -#------------------------------------------------------------ -# ATxmega256C3 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x256c3"; - desc = "ATxmega256C3"; - signature = 0x1e 0x98 0x46; - usbpid = 0x2fda; - - memory "eeprom" - size = 0x1000; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x40000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "apptable" - size = 0x2000; - offset = 0x83e000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x840000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "flash" - size = 0x42000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x200; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega256D3 -#------------------------------------------------------------ - -part parent "x256c3" - id = "x256d3"; - desc = "ATxmega256D3"; - signature = 0x1e 0x98 0x44; -; - -#------------------------------------------------------------ -# ATxmega256A1 -#------------------------------------------------------------ - -part parent "x256c3" - id = "x256a1"; - desc = "ATxmega256A1"; - signature = 0x1e 0x98 0x46; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega256A3 -#------------------------------------------------------------ - -part parent "x256a1" - id = "x256a3"; - desc = "ATxmega256A3"; - signature = 0x1e 0x98 0x42; -; - -#------------------------------------------------------------ -# ATxmega256A3U -#------------------------------------------------------------ - -part parent "x256a1" - id = "x256a3u"; - desc = "ATxmega256A3U"; - signature = 0x1e 0x98 0x42; - usbpid = 0x2fec; -; - -#------------------------------------------------------------ -# ATxmega256A3B -#------------------------------------------------------------ - -part parent "x256a1" - id = "x256a3b"; - desc = "ATxmega256A3B"; - signature = 0x1e 0x98 0x43; -; - -#------------------------------------------------------------ -# ATxmega256A3BU -#------------------------------------------------------------ - -part parent "x256a1" - id = "x256a3bu"; - desc = "ATxmega256A3BU"; - signature = 0x1e 0x98 0x43; - usbpid = 0x2fe2; -; - -#------------------------------------------------------------ -# ATxmega384C3 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x384c3"; - desc = "ATxmega384C3"; - signature = 0x1e 0x98 0x45; - usbpid = 0x2fdb; - - memory "eeprom" - size = 0x1000; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x60000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "apptable" - size = 0x2000; - offset = 0x85e000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x860000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "flash" - size = 0x62000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x200; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega384D3 -#------------------------------------------------------------ - -part parent "x384c3" - id = "x384d3"; - desc = "ATxmega384D3"; - signature = 0x1e 0x98 0x47; -; - -#------------------------------------------------------------ -# ATxmega8E5 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x8e5"; - desc = "ATxmega8E5"; - signature = 0x1e 0x93 0x41; - - memory "eeprom" - size = 0x0200; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x2000; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "apptable" - size = 0x800; - offset = 0x00801800; - page_size = 0x80; - readsize = 0x100; - ; - - memory "boot" - size = 0x800; - offset = 0x00802000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "flash" - size = 0x2800; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "usersig" - size = 0x80; - offset = 0x8e0400; - page_size = 0x80; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega16E5 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x16e5"; - desc = "ATxmega16E5"; - signature = 0x1e 0x94 0x45; - - memory "eeprom" - size = 0x0200; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x4000; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x00803000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "boot" - size = 0x1000; - offset = 0x00804000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "flash" - size = 0x5000; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "usersig" - size = 0x80; - offset = 0x8e0400; - page_size = 0x80; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega32E5 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x32e5"; - desc = "ATxmega32E5"; - signature = 0x1e 0x95 0x4c; - - memory "eeprom" - size = 0x0400; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x8000; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x00807000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "boot" - size = 0x1000; - offset = 0x00808000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "flash" - size = 0x9000; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "usersig" - size = 0x80; - offset = 0x8e0400; - page_size = 0x80; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# AVR32UC3A0512 -#------------------------------------------------------------ - -part - id = "uc3a0512"; - desc = "AT32UC3A0512"; - signature = 0xED 0xC0 0x3F; - has_jtag = yes; - is_avr32 = yes; - - memory "flash" - paged = yes; - page_size = 512; # bytes - readsize = 512; # bytes - num_pages = 1024; # could be set dynamicly - size = 0x00080000; # could be set dynamicly - offset = 0x80000000; - ; -; - -part parent "uc3a0512" - id = "ucr2"; - desc = "deprecated, use 'uc3a0512'"; -; - -#------------------------------------------------------------ -# ATtiny1634. -#------------------------------------------------------------ - -part - id = "t1634"; - desc = "ATtiny1634"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x86; - # avr910_devcode = 0x; - signature = 0x1e 0x94 0x12; - pagel = 0xB3; - bs2 = 0xB1; - reset = io; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, - 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, - 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, - 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - paged = no; - page_size = 4; - size = 256; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 32; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 1 1 1 1 i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; -; - -#------------------------------------------------------------ -# Common values for reduced core tinys (4/5/9/10/20/40) -#------------------------------------------------------------ - -part - id = ".reduced_core_tiny"; - desc = "Common values for reduced core tinys"; - has_tpi = yes; - - memory "signature" - size = 3; - offset = 0x3fc0; - page_size = 16; - ; - - memory "fuse" - size = 1; - offset = 0x3f40; - page_size = 16; - blocksize = 4; - ; - - memory "calibration" - size = 1; - offset = 0x3f80; - page_size = 16; - ; - - memory "lockbits" - size = 1; - offset = 0x3f00; - page_size = 16; - ; -; - -#------------------------------------------------------------ -# ATtiny4 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - id = "t4"; - desc = "ATtiny4"; - signature = 0x1e 0x8f 0x0a; - - memory "flash" - size = 512; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; -; - -#------------------------------------------------------------ -# ATtiny5 -#------------------------------------------------------------ - -part parent "t4" - id = "t5"; - desc = "ATtiny5"; - signature = 0x1e 0x8f 0x09; -; - -#------------------------------------------------------------ -# ATtiny9 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - id = "t9"; - desc = "ATtiny9"; - signature = 0x1e 0x90 0x08; - - memory "flash" - size = 1024; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; -; - -#------------------------------------------------------------ -# ATtiny10 -#------------------------------------------------------------ - -part parent "t9" - id = "t10"; - desc = "ATtiny10"; - signature = 0x1e 0x90 0x03; -; - -#------------------------------------------------------------ -# ATtiny20 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - id = "t20"; - desc = "ATtiny20"; - signature = 0x1e 0x91 0x0F; - - memory "flash" - size = 2048; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; -; - -#------------------------------------------------------------ -# ATtiny40 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - id = "t40"; - desc = "ATtiny40"; - signature = 0x1e 0x92 0x0E; - - memory "flash" - size = 4096; - offset = 0x4000; - page_size = 64; - blocksize = 128; - ; -; - -#------------------------------------------------------------ -# ATmega406 -#------------------------------------------------------------ - -part - id = "m406"; - desc = "ATMEGA406"; - has_jtag = yes; - signature = 0x1e 0x95 0x07; - - # STK500 parameters (parallel programming IO lines) - pagel = 0xa7; - bs2 = 0xa0; - serial = no; - parallel = yes; - - # STK500v2 HV programming parameters, from XML - pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - - # JTAG ICE mkII parameters, also from XML files - allowfullpagebitstream = no; - enablepageprogramming = yes; - idr = 0x51; - rampz = 0x00; - spmcr = 0x57; - eecr = 0x3f; - - memory "eeprom" - paged = no; - size = 512; - page_size = 4; - blocksize = 4; - readsize = 4; - num_pages = 128; - ; - - memory "flash" - paged = yes; - size = 40960; - page_size = 128; - blocksize = 128; - readsize = 128; - num_pages = 320; - ; - - memory "hfuse" - size = 1; - ; - - memory "lfuse" - size = 1; - ; - - memory "lockbits" - size = 1; - ; - - memory "signature" - size = 3; - ; -; - -#------------------------------------------------------------ -# AVR8X family common values -#------------------------------------------------------------ - -part - id = ".avr8x"; - desc = "AVR8X family common values"; - has_updi = yes; - nvm_base = 0x1000; - ocd_base = 0x0F80; - - memory "signature" - size = 3; - offset = 0x1100; - ; - - memory "prodsig" - size = 0x3D; - offset = 0x1103; - page_size = 0x3D; - readsize = 0x3D; - ; - - memory "fuses" - size = 9; - offset = 0x1280; - ; - - memory "fuse0" - size = 1; - offset = 0x1280; - ; - - memory "fuse1" - size = 1; - offset = 0x1281; - ; - - memory "fuse2" - size = 1; - offset = 0x1282; - ; - - memory "fuse4" - size = 1; - offset = 0x1284; - ; - - memory "fuse5" - size = 1; - offset = 0x1285; - ; - - memory "fuse6" - size = 1; - offset = 0x1286; - ; - - memory "fuse7" - size = 1; - offset = 0x1287; - ; - - memory "fuse8" - size = 1; - offset = 0x1288; - ; - - memory "lock" - size = 1; - offset = 0x128a; - ; - - memory "data" - # SRAM, only used to supply the offset - offset = 0x1000000; - ; -; - -#------------------------------------------------------------ -# AVR8X tiny family common values -#------------------------------------------------------------ - -part parent ".avr8x" - id = ".avr8x_tiny"; - desc = "AVR8X tiny family common values"; - family_id = "tinyAVR"; - - memory "usersig" - size = 0x20; - offset = 0x1300; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# AVR8X mega family common values -#------------------------------------------------------------ - -part parent ".avr8x" - id = ".avr8x_mega"; - desc = "AVR8X mega family common values"; - family_id = "megaAVR"; - - memory "usersig" - size = 0x40; - offset = 0x1300; - page_size = 0x40; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny202 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t202"; - desc = "ATtiny202"; - signature = 0x1E 0x91 0x23; - - memory "flash" - size = 0x800; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x40; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny204 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t204"; - desc = "ATtiny204"; - signature = 0x1E 0x91 0x22; - - memory "flash" - size = 0x800; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x40; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny402 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t402"; - desc = "ATtiny402"; - signature = 0x1E 0x92 0x23; - - memory "flash" - size = 0x1000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny404 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t404"; - desc = "ATtiny404"; - signature = 0x1E 0x92 0x26; - - memory "flash" - size = 0x1000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny406 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t406"; - desc = "ATtiny406"; - signature = 0x1E 0x92 0x25; - - memory "flash" - size = 0x1000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny804 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t804"; - desc = "ATtiny804"; - signature = 0x1E 0x93 0x25; - - memory "flash" - size = 0x2000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny806 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t806"; - desc = "ATtiny806"; - signature = 0x1E 0x93 0x24; - - memory "flash" - size = 0x2000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny807 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t807"; - desc = "ATtiny807"; - signature = 0x1E 0x93 0x23; - - memory "flash" - size = 0x2000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny1604 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t1604"; - desc = "ATtiny1604"; - signature = 0x1E 0x94 0x25; - - memory "flash" - size = 0x4000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny1606 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t1606"; - desc = "ATtiny1606"; - signature = 0x1E 0x94 0x24; - - memory "flash" - size = 0x4000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny1607 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t1607"; - desc = "ATtiny1607"; - signature = 0x1E 0x94 0x23; - - memory "flash" - size = 0x4000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny212 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t212"; - desc = "ATtiny212"; - signature = 0x1E 0x91 0x21; - - memory "flash" - size = 0x800; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x40; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny214 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t214"; - desc = "ATtiny214"; - signature = 0x1E 0x91 0x20; - - memory "flash" - size = 0x800; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x40; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny412 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t412"; - desc = "ATtiny412"; - signature = 0x1E 0x92 0x23; - - memory "flash" - size = 0x1000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - - -#------------------------------------------------------------ -# ATtiny414 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t414"; - desc = "ATtiny414"; - signature = 0x1E 0x92 0x22; - - memory "flash" - size = 0x1000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny416 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t416"; - desc = "ATtiny416"; - signature = 0x1E 0x92 0x21; - - memory "flash" - size = 0x1000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - - -#------------------------------------------------------------ -# ATtiny417 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t417"; - desc = "ATtiny417"; - signature = 0x1E 0x92 0x20; - - memory "flash" - size = 0x1000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - - -#------------------------------------------------------------ -# ATtiny814 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t814"; - desc = "ATtiny814"; - signature = 0x1E 0x93 0x22; - - memory "flash" - size = 0x2000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - - -#------------------------------------------------------------ -# ATtiny816 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t816"; - desc = "ATtiny816"; - signature = 0x1E 0x93 0x21; - - memory "flash" - size = 0x2000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny817 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t817"; - desc = "ATtiny817"; - signature = 0x1E 0x93 0x20; - - memory "flash" - size = 0x2000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x80; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny1614 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t1614"; - desc = "ATtiny1614"; - signature = 0x1E 0x94 0x22; - - memory "flash" - size = 0x4000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny1616 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t1616"; - desc = "ATtiny1616"; - signature = 0x1E 0x94 0x21; - - memory "flash" - size = 0x4000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny1617 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t1617"; - desc = "ATtiny1617"; - signature = 0x1E 0x94 0x20; - - memory "flash" - size = 0x4000; - offset = 0x8000; - page_size = 0x40; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x20; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny3214 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t3214"; - desc = "ATtiny3214"; - signature = 0x1E 0x95 0x20; - - memory "flash" - size = 0x8000; - offset = 0x8000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x40; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny3216 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t3216"; - desc = "ATtiny3216"; - signature = 0x1E 0x95 0x21; - - memory "flash" - size = 0x8000; - offset = 0x8000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x40; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny3217 -#------------------------------------------------------------ - -part parent ".avr8x_tiny" - id = "t3217"; - desc = "ATtiny3217"; - signature = 0x1E 0x95 0x22; - - memory "flash" - size = 0x8000; - offset = 0x8000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x40; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega3208 -#------------------------------------------------------------ - -part parent ".avr8x_mega" - id = "m3208"; - desc = "ATmega3208"; - signature = 0x1E 0x95 0x52; - - memory "flash" - size = 0x8000; - offset = 0x4000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x40; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega3209 -#------------------------------------------------------------ - -part parent ".avr8x_mega" - id = "m3209"; - desc = "ATmega3209"; - signature = 0x1E 0x95 0x53; - - memory "flash" - size = 0x8000; - offset = 0x4000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x40; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega4808 -#------------------------------------------------------------ - -part parent ".avr8x_mega" - id = "m4808"; - desc = "ATmega4808"; - signature = 0x1E 0x96 0x50; - - memory "flash" - size = 0xC000; - offset = 0x4000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x40; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega4809 -#------------------------------------------------------------ - -part parent ".avr8x_mega" - id = "m4809"; - desc = "ATmega4809"; - signature = 0x1E 0x96 0x51; - - memory "flash" - size = 0xC000; - offset = 0x4000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "eeprom" - size = 0x100; - offset = 0x1400; - page_size = 0x40; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATtiny167 -#------------------------------------------------------------ - -part - id = "t167"; - desc = "ATtiny167"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, - 0x00, 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, - 0xBF, 0x99, 0xF9, 0xBB, 0xAF; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x94 0x87; - reset = io; - chip_erase_delay = 1000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, - 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, - 0x06, 0x16, 0x46, 0x56, 0x0A, 0x1A, 0x4A, 0x5A, - 0x1E, 0x7C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 20; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x00; - spmcr = 0x57; - allowfullpagebitstream = no; - - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 x x x x x a8", - "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " 0 0 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 64; - readsize = 256; - ; -# ATtiny167 has Signature Bytes: 0x1E 0x94 0x87. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; diff --git a/src/COPYING b/src/COPYING new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/src/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Makefile.am b/src/Makefile.am similarity index 100% rename from Makefile.am rename to src/Makefile.am diff --git a/arduino.c b/src/arduino.c similarity index 100% rename from arduino.c rename to src/arduino.c diff --git a/arduino.h b/src/arduino.h similarity index 100% rename from arduino.h rename to src/arduino.h diff --git a/avr.c b/src/avr.c similarity index 100% rename from avr.c rename to src/avr.c diff --git a/avr910.c b/src/avr910.c similarity index 100% rename from avr910.c rename to src/avr910.c diff --git a/avr910.h b/src/avr910.h similarity index 100% rename from avr910.h rename to src/avr910.h diff --git a/avrdude.1 b/src/avrdude.1 similarity index 100% rename from avrdude.1 rename to src/avrdude.1 diff --git a/avrdude.conf.in b/src/avrdude.conf.in similarity index 100% rename from avrdude.conf.in rename to src/avrdude.conf.in diff --git a/avrdude.h b/src/avrdude.h similarity index 100% rename from avrdude.h rename to src/avrdude.h diff --git a/avrdude.sln b/src/avrdude.sln similarity index 85% rename from avrdude.sln rename to src/avrdude.sln index 7231c998..f1a765f7 100644 --- a/avrdude.sln +++ b/src/avrdude.sln @@ -5,19 +5,13 @@ VisualStudioVersion = 16.0.30104.148 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "avrdude", "avrdude.vcxproj", "{718DDC4C-324E-485F-BE18-2D211659A2F4}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libelf", "external\libelf\libelf.vcxproj", "{A2D07885-A0D1-473B-83B2-209CD008EE8F}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libelf", "..\external\libelf\libelf.vcxproj", "{A2D07885-A0D1-473B-83B2-209CD008EE8F}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libhidapi", "external\libhidapi\libhidapi.vcxproj", "{17054837-6AE6-44D7-914D-9625EDEF4657}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libhidapi", "..\external\libhidapi\libhidapi.vcxproj", "{17054837-6AE6-44D7-914D-9625EDEF4657}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libusb", "external\libusb\libusb.vcxproj", "{22615EC5-9DBC-4538-9C01-2CD535B3810B}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libusb", "..\external\libusb\libusb.vcxproj", "{22615EC5-9DBC-4538-9C01-2CD535B3810B}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libftdi1", "external\libftdi1\libftdi1.vcxproj", "{632649AB-A351-46D4-A81F-1D6E9A819A5C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{743FA5F6-A0D7-46F7-B73D-632B64C732FB}" - ProjectSection(SolutionItems) = preProject - .editorconfig = .editorconfig - .travis.yml = .travis.yml - EndProjectSection +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libftdi1", "..\external\libftdi1\libftdi1.vcxproj", "{632649AB-A351-46D4-A81F-1D6E9A819A5C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/avrdude.spec.in b/src/avrdude.spec.in similarity index 100% rename from avrdude.spec.in rename to src/avrdude.spec.in diff --git a/avrdude.vcxproj b/src/avrdude.vcxproj similarity index 92% rename from avrdude.vcxproj rename to src/avrdude.vcxproj index 31c2815b..c0f7d99c 100644 --- a/avrdude.vcxproj +++ b/src/avrdude.vcxproj @@ -84,7 +84,7 @@ WIN32NATIVE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;LOG_APPNAME="avrdude";WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - msvc;msvc\generated;.;external\libelf\include;external\libusb\include;external\libhidapi\include;external\libftdi1\include;%(AdditionalIncludeDirectories) + msvc;msvc\generated;.;..\external\libelf\include;..\external\libusb\include;..\external\libhidapi\include;..\external\libftdi1\include;%(AdditionalIncludeDirectories) Level3 true @@ -99,7 +99,7 @@ WIN32NATIVE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;LOG_APPNAME="avrdude";_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - msvc;msvc\generated;.;external\libelf\include;external\libusb\include;external\libhidapi\include;external\libftdi1\include;%(AdditionalIncludeDirectories) + msvc;msvc\generated;.;..\external\libelf\include;..\external\libusb\include;..\external\libhidapi\include;..\external\libftdi1\include;%(AdditionalIncludeDirectories) Level3 true @@ -114,7 +114,7 @@ WIN32NATIVE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;LOG_APPNAME="avrdude";WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - msvc;msvc\generated;.;external\libelf\include;external\libusb\include;external\libhidapi\include;external\libftdi1\include;%(AdditionalIncludeDirectories) + msvc;msvc\generated;.;..\external\libelf\include;..\external\libusb\include;..\external\libhidapi\include;..\external\libftdi1\include;%(AdditionalIncludeDirectories) Level3 true true @@ -134,7 +134,7 @@ WIN32NATIVE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;LOG_APPNAME="avrdude";NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - msvc;msvc\generated;.;external\libelf\include;external\libusb\include;external\libhidapi\include;external\libftdi1\include;%(AdditionalIncludeDirectories) + msvc;msvc\generated;.;..\external\libelf\include;..\external\libusb\include;..\external\libhidapi\include;..\external\libftdi1\include;%(AdditionalIncludeDirectories) Level3 true true @@ -275,20 +275,6 @@ - - - {a2d07885-a0d1-473b-83b2-209cd008ee8f} - - - {632649ab-a351-46d4-a81f-1d6e9a819a5c} - - - {17054837-6ae6-44d7-914d-9625edef4657} - - - {22615ec5-9dbc-4538-9c01-2cd535b3810b} - - @@ -300,6 +286,20 @@ Text + + + {a2d07885-a0d1-473b-83b2-209cd008ee8f} + + + {632649ab-a351-46d4-a81f-1d6e9a819a5c} + + + {17054837-6ae6-44d7-914d-9625edef4657} + + + {22615ec5-9dbc-4538-9c01-2cd535b3810b} + + diff --git a/avrdude.vcxproj.filters b/src/avrdude.vcxproj.filters similarity index 100% rename from avrdude.vcxproj.filters rename to src/avrdude.vcxproj.filters diff --git a/avrftdi.c b/src/avrftdi.c similarity index 100% rename from avrftdi.c rename to src/avrftdi.c diff --git a/avrftdi.h b/src/avrftdi.h similarity index 100% rename from avrftdi.h rename to src/avrftdi.h diff --git a/avrftdi_private.h b/src/avrftdi_private.h similarity index 100% rename from avrftdi_private.h rename to src/avrftdi_private.h diff --git a/avrftdi_tpi.c b/src/avrftdi_tpi.c similarity index 100% rename from avrftdi_tpi.c rename to src/avrftdi_tpi.c diff --git a/avrftdi_tpi.h b/src/avrftdi_tpi.h similarity index 100% rename from avrftdi_tpi.h rename to src/avrftdi_tpi.h diff --git a/avrpart.c b/src/avrpart.c similarity index 100% rename from avrpart.c rename to src/avrpart.c diff --git a/bitbang.c b/src/bitbang.c similarity index 100% rename from bitbang.c rename to src/bitbang.c diff --git a/bitbang.h b/src/bitbang.h similarity index 100% rename from bitbang.h rename to src/bitbang.h diff --git a/bootstrap b/src/bootstrap old mode 100755 new mode 100644 similarity index 100% rename from bootstrap rename to src/bootstrap diff --git a/buspirate.c b/src/buspirate.c similarity index 100% rename from buspirate.c rename to src/buspirate.c diff --git a/buspirate.h b/src/buspirate.h similarity index 100% rename from buspirate.h rename to src/buspirate.h diff --git a/butterfly.c b/src/butterfly.c similarity index 100% rename from butterfly.c rename to src/butterfly.c diff --git a/butterfly.h b/src/butterfly.h similarity index 100% rename from butterfly.h rename to src/butterfly.h diff --git a/config.c b/src/config.c similarity index 100% rename from config.c rename to src/config.c diff --git a/config.h b/src/config.h similarity index 100% rename from config.h rename to src/config.h diff --git a/config_gram.y b/src/config_gram.y similarity index 100% rename from config_gram.y rename to src/config_gram.y diff --git a/configure.ac b/src/configure.ac similarity index 99% rename from configure.ac rename to src/configure.ac index 25a0e1e6..62d459cb 100644 --- a/configure.ac +++ b/src/configure.ac @@ -30,7 +30,7 @@ AC_CANONICAL_HOST AC_CANONICAL_TARGET AC_CONFIG_SRCDIR([main.c]) -AM_INIT_AUTOMAKE +AM_INIT_AUTOMAKE([foreign]) AC_CONFIG_HEADERS(ac_cfg.h) AC_CONFIG_MACRO_DIR([m4]) diff --git a/confwin.c b/src/confwin.c similarity index 100% rename from confwin.c rename to src/confwin.c diff --git a/crc16.c b/src/crc16.c similarity index 100% rename from crc16.c rename to src/crc16.c diff --git a/crc16.h b/src/crc16.h similarity index 100% rename from crc16.h rename to src/crc16.h diff --git a/dfu.c b/src/dfu.c similarity index 100% rename from dfu.c rename to src/dfu.c diff --git a/dfu.h b/src/dfu.h similarity index 100% rename from dfu.h rename to src/dfu.h diff --git a/doc/.cvsignore b/src/doc/.gitignore similarity index 91% rename from doc/.cvsignore rename to src/doc/.gitignore index afe95fe9..c0147403 100644 --- a/doc/.cvsignore +++ b/src/doc/.gitignore @@ -1,4 +1,5 @@ -.cvsignore +avrdude.t2d/ +avrdude.t2p/ Makefile Makefile.in avrdude-html diff --git a/doc/Makefile.am b/src/doc/Makefile.am similarity index 100% rename from doc/Makefile.am rename to src/doc/Makefile.am diff --git a/doc/TODO b/src/doc/TODO similarity index 100% rename from doc/TODO rename to src/doc/TODO diff --git a/doc/avrdude.texi b/src/doc/avrdude.texi similarity index 100% rename from doc/avrdude.texi rename to src/doc/avrdude.texi diff --git a/doc/parts_comments.txt b/src/doc/parts_comments.txt similarity index 100% rename from doc/parts_comments.txt rename to src/doc/parts_comments.txt diff --git a/fileio.c b/src/fileio.c similarity index 100% rename from fileio.c rename to src/fileio.c diff --git a/flip1.c b/src/flip1.c similarity index 100% rename from flip1.c rename to src/flip1.c diff --git a/flip1.h b/src/flip1.h similarity index 100% rename from flip1.h rename to src/flip1.h diff --git a/flip2.c b/src/flip2.c similarity index 100% rename from flip2.c rename to src/flip2.c diff --git a/flip2.h b/src/flip2.h similarity index 100% rename from flip2.h rename to src/flip2.h diff --git a/freebsd_ppi.h b/src/freebsd_ppi.h similarity index 100% rename from freebsd_ppi.h rename to src/freebsd_ppi.h diff --git a/ft245r.c b/src/ft245r.c similarity index 100% rename from ft245r.c rename to src/ft245r.c diff --git a/ft245r.h b/src/ft245r.h similarity index 100% rename from ft245r.h rename to src/ft245r.h diff --git a/jtag3.c b/src/jtag3.c similarity index 100% rename from jtag3.c rename to src/jtag3.c diff --git a/jtag3.h b/src/jtag3.h similarity index 100% rename from jtag3.h rename to src/jtag3.h diff --git a/jtag3_private.h b/src/jtag3_private.h similarity index 100% rename from jtag3_private.h rename to src/jtag3_private.h diff --git a/jtagmkI.c b/src/jtagmkI.c similarity index 100% rename from jtagmkI.c rename to src/jtagmkI.c diff --git a/jtagmkI.h b/src/jtagmkI.h similarity index 100% rename from jtagmkI.h rename to src/jtagmkI.h diff --git a/jtagmkII.c b/src/jtagmkII.c similarity index 100% rename from jtagmkII.c rename to src/jtagmkII.c diff --git a/jtagmkII.h b/src/jtagmkII.h similarity index 100% rename from jtagmkII.h rename to src/jtagmkII.h diff --git a/jtagmkII_private.h b/src/jtagmkII_private.h similarity index 100% rename from jtagmkII_private.h rename to src/jtagmkII_private.h diff --git a/jtagmkI_private.h b/src/jtagmkI_private.h similarity index 100% rename from jtagmkI_private.h rename to src/jtagmkI_private.h diff --git a/lexer.l b/src/lexer.l similarity index 100% rename from lexer.l rename to src/lexer.l diff --git a/libavrdude.h b/src/libavrdude.h similarity index 100% rename from libavrdude.h rename to src/libavrdude.h diff --git a/linux_ppdev.h b/src/linux_ppdev.h similarity index 100% rename from linux_ppdev.h rename to src/linux_ppdev.h diff --git a/linuxgpio.c b/src/linuxgpio.c similarity index 100% rename from linuxgpio.c rename to src/linuxgpio.c diff --git a/linuxgpio.h b/src/linuxgpio.h similarity index 100% rename from linuxgpio.h rename to src/linuxgpio.h diff --git a/lists.c b/src/lists.c similarity index 100% rename from lists.c rename to src/lists.c diff --git a/main.c b/src/main.c similarity index 100% rename from main.c rename to src/main.c diff --git a/micronucleus.c b/src/micronucleus.c similarity index 100% rename from micronucleus.c rename to src/micronucleus.c diff --git a/micronucleus.h b/src/micronucleus.h similarity index 100% rename from micronucleus.h rename to src/micronucleus.h diff --git a/msvc/IntegerHandleMap.h b/src/msvc/IntegerHandleMap.h similarity index 100% rename from msvc/IntegerHandleMap.h rename to src/msvc/IntegerHandleMap.h diff --git a/msvc/ReaderWriterLock.h b/src/msvc/ReaderWriterLock.h similarity index 100% rename from msvc/ReaderWriterLock.h rename to src/msvc/ReaderWriterLock.h diff --git a/msvc/avrdude.rc b/src/msvc/avrdude.rc similarity index 100% rename from msvc/avrdude.rc rename to src/msvc/avrdude.rc diff --git a/msvc/generated/ac_cfg.h b/src/msvc/generated/ac_cfg.h similarity index 100% rename from msvc/generated/ac_cfg.h rename to src/msvc/generated/ac_cfg.h diff --git a/msvc/generated/config_gram.c b/src/msvc/generated/config_gram.c similarity index 100% rename from msvc/generated/config_gram.c rename to src/msvc/generated/config_gram.c diff --git a/msvc/generated/config_gram.h b/src/msvc/generated/config_gram.h similarity index 100% rename from msvc/generated/config_gram.h rename to src/msvc/generated/config_gram.h diff --git a/msvc/generated/lexer.c b/src/msvc/generated/lexer.c similarity index 100% rename from msvc/generated/lexer.c rename to src/msvc/generated/lexer.c diff --git a/msvc/getopt.c b/src/msvc/getopt.c similarity index 100% rename from msvc/getopt.c rename to src/msvc/getopt.c diff --git a/msvc/getopt.h b/src/msvc/getopt.h similarity index 100% rename from msvc/getopt.h rename to src/msvc/getopt.h diff --git a/msvc/gettimeofday.c b/src/msvc/gettimeofday.c similarity index 100% rename from msvc/gettimeofday.c rename to src/msvc/gettimeofday.c diff --git a/msvc/msvc_compat.h b/src/msvc/msvc_compat.h similarity index 100% rename from msvc/msvc_compat.h rename to src/msvc/msvc_compat.h diff --git a/msvc/pthread.cpp b/src/msvc/pthread.cpp similarity index 100% rename from msvc/pthread.cpp rename to src/msvc/pthread.cpp diff --git a/msvc/pthread.h b/src/msvc/pthread.h similarity index 100% rename from msvc/pthread.h rename to src/msvc/pthread.h diff --git a/msvc/res/resource.rc2 b/src/msvc/res/resource.rc2 similarity index 100% rename from msvc/res/resource.rc2 rename to src/msvc/res/resource.rc2 diff --git a/msvc/res/version.rc2 b/src/msvc/res/version.rc2 similarity index 100% rename from msvc/res/version.rc2 rename to src/msvc/res/version.rc2 diff --git a/msvc/resource.h b/src/msvc/resource.h similarity index 100% rename from msvc/resource.h rename to src/msvc/resource.h diff --git a/msvc/semaphore.cpp b/src/msvc/semaphore.cpp similarity index 100% rename from msvc/semaphore.cpp rename to src/msvc/semaphore.cpp diff --git a/msvc/semaphore.h b/src/msvc/semaphore.h similarity index 100% rename from msvc/semaphore.h rename to src/msvc/semaphore.h diff --git a/msvc/sys/time.h b/src/msvc/sys/time.h similarity index 100% rename from msvc/sys/time.h rename to src/msvc/sys/time.h diff --git a/msvc/unistd.cpp b/src/msvc/unistd.cpp similarity index 100% rename from msvc/unistd.cpp rename to src/msvc/unistd.cpp diff --git a/msvc/unistd.h b/src/msvc/unistd.h similarity index 100% rename from msvc/unistd.h rename to src/msvc/unistd.h diff --git a/msvc/usb_com_helper.cpp b/src/msvc/usb_com_helper.cpp similarity index 100% rename from msvc/usb_com_helper.cpp rename to src/msvc/usb_com_helper.cpp diff --git a/msvc/usb_com_helper.h b/src/msvc/usb_com_helper.h similarity index 100% rename from msvc/usb_com_helper.h rename to src/msvc/usb_com_helper.h diff --git a/msvc/usb_com_locator.h b/src/msvc/usb_com_locator.h similarity index 100% rename from msvc/usb_com_locator.h rename to src/msvc/usb_com_locator.h diff --git a/msvc/version.h b/src/msvc/version.h similarity index 100% rename from msvc/version.h rename to src/msvc/version.h diff --git a/my_ddk_hidsdi.h b/src/my_ddk_hidsdi.h similarity index 100% rename from my_ddk_hidsdi.h rename to src/my_ddk_hidsdi.h diff --git a/par.c b/src/par.c similarity index 100% rename from par.c rename to src/par.c diff --git a/par.h b/src/par.h similarity index 100% rename from par.h rename to src/par.h diff --git a/pgm.c b/src/pgm.c similarity index 100% rename from pgm.c rename to src/pgm.c diff --git a/pgm_type.c b/src/pgm_type.c similarity index 100% rename from pgm_type.c rename to src/pgm_type.c diff --git a/pickit2.c b/src/pickit2.c similarity index 100% rename from pickit2.c rename to src/pickit2.c diff --git a/pickit2.h b/src/pickit2.h similarity index 100% rename from pickit2.h rename to src/pickit2.h diff --git a/pindefs.c b/src/pindefs.c similarity index 100% rename from pindefs.c rename to src/pindefs.c diff --git a/ppi.c b/src/ppi.c similarity index 100% rename from ppi.c rename to src/ppi.c diff --git a/ppi.h b/src/ppi.h similarity index 100% rename from ppi.h rename to src/ppi.h diff --git a/ppiwin.c b/src/ppiwin.c similarity index 100% rename from ppiwin.c rename to src/ppiwin.c diff --git a/safemode.c b/src/safemode.c similarity index 100% rename from safemode.c rename to src/safemode.c diff --git a/ser_avrdoper.c b/src/ser_avrdoper.c similarity index 100% rename from ser_avrdoper.c rename to src/ser_avrdoper.c diff --git a/ser_posix.c b/src/ser_posix.c similarity index 100% rename from ser_posix.c rename to src/ser_posix.c diff --git a/ser_win32.c b/src/ser_win32.c similarity index 100% rename from ser_win32.c rename to src/ser_win32.c diff --git a/serbb.h b/src/serbb.h similarity index 100% rename from serbb.h rename to src/serbb.h diff --git a/serbb_posix.c b/src/serbb_posix.c similarity index 100% rename from serbb_posix.c rename to src/serbb_posix.c diff --git a/serbb_win32.c b/src/serbb_win32.c similarity index 100% rename from serbb_win32.c rename to src/serbb_win32.c diff --git a/solaris_ecpp.h b/src/solaris_ecpp.h similarity index 100% rename from solaris_ecpp.h rename to src/solaris_ecpp.h diff --git a/stk500.c b/src/stk500.c similarity index 100% rename from stk500.c rename to src/stk500.c diff --git a/stk500.h b/src/stk500.h similarity index 100% rename from stk500.h rename to src/stk500.h diff --git a/stk500_private.h b/src/stk500_private.h similarity index 100% rename from stk500_private.h rename to src/stk500_private.h diff --git a/stk500generic.c b/src/stk500generic.c similarity index 100% rename from stk500generic.c rename to src/stk500generic.c diff --git a/stk500generic.h b/src/stk500generic.h similarity index 100% rename from stk500generic.h rename to src/stk500generic.h diff --git a/stk500v2.c b/src/stk500v2.c similarity index 100% rename from stk500v2.c rename to src/stk500v2.c diff --git a/stk500v2.h b/src/stk500v2.h similarity index 100% rename from stk500v2.h rename to src/stk500v2.h diff --git a/stk500v2_private.h b/src/stk500v2_private.h similarity index 100% rename from stk500v2_private.h rename to src/stk500v2_private.h diff --git a/teensy.c b/src/teensy.c similarity index 100% rename from teensy.c rename to src/teensy.c diff --git a/teensy.h b/src/teensy.h similarity index 100% rename from teensy.h rename to src/teensy.h diff --git a/term.c b/src/term.c similarity index 100% rename from term.c rename to src/term.c diff --git a/term.h b/src/term.h similarity index 100% rename from term.h rename to src/term.h diff --git a/tpi.h b/src/tpi.h similarity index 100% rename from tpi.h rename to src/tpi.h diff --git a/update.c b/src/update.c similarity index 100% rename from update.c rename to src/update.c diff --git a/usb_hidapi.c b/src/usb_hidapi.c similarity index 100% rename from usb_hidapi.c rename to src/usb_hidapi.c diff --git a/usb_libusb.c b/src/usb_libusb.c similarity index 100% rename from usb_libusb.c rename to src/usb_libusb.c diff --git a/usbasp.c b/src/usbasp.c similarity index 100% rename from usbasp.c rename to src/usbasp.c diff --git a/usbasp.h b/src/usbasp.h similarity index 100% rename from usbasp.h rename to src/usbasp.h diff --git a/usbdevs.h b/src/usbdevs.h similarity index 100% rename from usbdevs.h rename to src/usbdevs.h diff --git a/usbtiny.c b/src/usbtiny.c similarity index 100% rename from usbtiny.c rename to src/usbtiny.c diff --git a/usbtiny.h b/src/usbtiny.h similarity index 100% rename from usbtiny.h rename to src/usbtiny.h diff --git a/windows/.cvsignore b/src/windows/.gitignore similarity index 71% rename from windows/.cvsignore rename to src/windows/.gitignore index 601c4fbf..e9955884 100644 --- a/windows/.cvsignore +++ b/src/windows/.gitignore @@ -1,4 +1,3 @@ -.cvsignore .deps Makefile Makefile.in diff --git a/windows/Makefile.am b/src/windows/Makefile.am similarity index 100% rename from windows/Makefile.am rename to src/windows/Makefile.am diff --git a/windows/giveio.c b/src/windows/giveio.c similarity index 100% rename from windows/giveio.c rename to src/windows/giveio.c diff --git a/windows/giveio.sys b/src/windows/giveio.sys similarity index 100% rename from windows/giveio.sys rename to src/windows/giveio.sys diff --git a/windows/install_giveio.bat b/src/windows/install_giveio.bat old mode 100755 new mode 100644 similarity index 100% rename from windows/install_giveio.bat rename to src/windows/install_giveio.bat diff --git a/windows/loaddrv.c b/src/windows/loaddrv.c similarity index 99% rename from windows/loaddrv.c rename to src/windows/loaddrv.c index ca92a2a1..e6d55c66 100644 --- a/windows/loaddrv.c +++ b/src/windows/loaddrv.c @@ -45,6 +45,7 @@ void DisplayErrorText(DWORD dwLastError) { int exists(char *filename) { FILE * pFile; pFile = fopen(filename, "r"); + if (pFile) fclose(pFile); return pFile != NULL; } diff --git a/windows/loaddrv.h b/src/windows/loaddrv.h similarity index 100% rename from windows/loaddrv.h rename to src/windows/loaddrv.h diff --git a/windows/remove_giveio.bat b/src/windows/remove_giveio.bat old mode 100755 new mode 100644 similarity index 100% rename from windows/remove_giveio.bat rename to src/windows/remove_giveio.bat diff --git a/windows/status_giveio.bat b/src/windows/status_giveio.bat old mode 100755 new mode 100644 similarity index 100% rename from windows/status_giveio.bat rename to src/windows/status_giveio.bat diff --git a/wiring.c b/src/wiring.c similarity index 100% rename from wiring.c rename to src/wiring.c diff --git a/wiring.h b/src/wiring.h similarity index 100% rename from wiring.h rename to src/wiring.h