Hello community,

here is the log from the commit of package dfu-programmer for openSUSE:Factory 
checked in at 2016-03-26 15:28:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dfu-programmer (Old)
 and      /work/SRC/openSUSE:Factory/.dfu-programmer.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "dfu-programmer"

Changes:
--------
--- /work/SRC/openSUSE:Factory/dfu-programmer/dfu-programmer.changes    
2015-01-05 04:43:21.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.dfu-programmer.new/dfu-programmer.changes       
2016-03-26 17:25:32.000000000 +0100
@@ -1,0 +2,7 @@
+Tue Mar 22 11:52:41 UTC 2016 - [email protected]
+
+- Update to version 0.7.2
+  + Use the correct memory ranges for XMega. 
+    Bootloader space is additional to listed device size.
+
+-------------------------------------------------------------------

Old:
----
  dfu-programmer-0.7.1.tar.gz

New:
----
  dfu-programmer-0.7.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ dfu-programmer.spec ++++++
--- /var/tmp/diff_new_pack.vExJGH/_old  2016-03-26 17:25:33.000000000 +0100
+++ /var/tmp/diff_new_pack.vExJGH/_new  2016-03-26 17:25:33.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package dfu-programmer
 #
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           dfu-programmer
-Version:        0.7.1
+Version:        0.7.2
 Release:        0
 Summary:        A Device Firmware Update based USB programmer for Atmel chips
 License:        GPL-2.0+

++++++ dfu-programmer-0.7.1.tar.gz -> dfu-programmer-0.7.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dfu-programmer-0.7.1/AUTHORS 
new/dfu-programmer-0.7.2/AUTHORS
--- old/dfu-programmer-0.7.1/AUTHORS    2015-01-03 20:25:03.000000000 +0100
+++ new/dfu-programmer-0.7.2/AUTHORS    2015-02-04 23:53:44.000000000 +0100
@@ -71,6 +71,7 @@
         - better support for Windows users
         - improve layout of help text
         - add security fuse support for AVR32
+        - fix memory bounds for xmega devices
     - Johannes Carlsson
         - patch to fix use of libusb in configure.ac
     - Grégory S.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dfu-programmer-0.7.1/NEWS 
new/dfu-programmer-0.7.2/NEWS
--- old/dfu-programmer-0.7.1/NEWS       2015-01-03 20:38:03.000000000 +0100
+++ new/dfu-programmer-0.7.2/NEWS       2015-02-04 23:53:00.000000000 +0100
@@ -1,4 +1,7 @@
-== Release 0.7.1 [2015-01-03]
+== Release 0.7.2 [2015-02-04]
+ * Fix memory bounds used for XMega targets.
+
+ == Release 0.7.1 [2015-01-03]
  * Fix use of mandatory filename ChangeLog in distribution tarball
  * Fix infinite loop in rpl_malloc
  * Add experimental support for autocomplete on Ubuntu
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dfu-programmer-0.7.1/README 
new/dfu-programmer-0.7.2/README
--- old/dfu-programmer-0.7.1/README     2014-10-05 17:32:18.000000000 +0200
+++ new/dfu-programmer-0.7.2/README     2015-01-10 15:49:11.000000000 +0100
@@ -93,8 +93,8 @@
 
   [ If the source was checked-out from GitHub, run the following command ]
   $ ./bootstrap.sh
-
-  $ ./configure
+
+  $ ./configure --disable-libusb_1_0
 
   $ make
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dfu-programmer-0.7.1/configure 
new/dfu-programmer-0.7.2/configure
--- old/dfu-programmer-0.7.1/configure  2015-01-03 20:33:49.000000000 +0100
+++ new/dfu-programmer-0.7.2/configure  2015-02-05 00:05:00.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for dfu-programmer 0.7.1.
+# Generated by GNU Autoconf 2.68 for dfu-programmer 0.7.2.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -557,8 +557,8 @@
 # Identity of this package.
 PACKAGE_NAME='dfu-programmer'
 PACKAGE_TARNAME='dfu-programmer'
-PACKAGE_VERSION='0.7.1'
-PACKAGE_STRING='dfu-programmer 0.7.1'
+PACKAGE_VERSION='0.7.2'
+PACKAGE_STRING='dfu-programmer 0.7.2'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL='https://github.com/dfu-programmer/dfu-programmer'
 
@@ -1254,7 +1254,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures dfu-programmer 0.7.1 to adapt to many kinds of systems.
+\`configure' configures dfu-programmer 0.7.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1320,7 +1320,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of dfu-programmer 0.7.1:";;
+     short | recursive ) echo "Configuration of dfu-programmer 0.7.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1420,7 +1420,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-dfu-programmer configure 0.7.1
+dfu-programmer configure 0.7.2
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1726,7 +1726,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by dfu-programmer $as_me 0.7.1, which was
+It was created by dfu-programmer $as_me 0.7.2, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2542,7 +2542,7 @@
 
 # Define the identity of the package.
  PACKAGE='dfu-programmer'
- VERSION='0.7.1'
+ VERSION='0.7.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5189,7 +5189,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by dfu-programmer $as_me 0.7.1, which was
+This file was extended by dfu-programmer $as_me 0.7.2, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5256,7 +5256,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-dfu-programmer config.status 0.7.1
+dfu-programmer config.status 0.7.2
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dfu-programmer-0.7.1/configure.ac 
new/dfu-programmer-0.7.2/configure.ac
--- old/dfu-programmer-0.7.1/configure.ac       2015-01-03 20:32:35.000000000 
+0100
+++ new/dfu-programmer-0.7.2/configure.ac       2015-02-04 23:58:53.000000000 
+0100
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT([dfu-programmer],[0.7.1],[],[],[https://github.com/dfu-programmer/dfu-programmer])
+AC_INIT([dfu-programmer],[0.7.2],[],[],[https://github.com/dfu-programmer/dfu-programmer])
 AC_CONFIG_AUX_DIR(m4)
 AC_CONFIG_SRCDIR([src/atmel.c])
 AM_INIT_AUTOMAKE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dfu-programmer-0.7.1/fedora/dfu-programmer.spec 
new/dfu-programmer-0.7.2/fedora/dfu-programmer.spec
--- old/dfu-programmer-0.7.1/fedora/dfu-programmer.spec 2015-01-03 
20:34:57.000000000 +0100
+++ new/dfu-programmer-0.7.2/fedora/dfu-programmer.spec 2015-02-05 
00:06:21.000000000 +0100
@@ -1,5 +1,5 @@
 Name:           dfu-programmer
-Version:        0.7.1
+Version:        0.7.2
 Release:        1%{?dist}
 Summary:        A Device Firmware Update based USB programmer for Atmel chips
 
@@ -42,6 +42,13 @@
 %{_datadir}/hal/fdi/information/20thirdparty/10-dfu-programmer.fdi
 
 %changelog
+* Wed Feb 04 2015 Simon Large - 0.7.2-1
+- Fix memory bounds used for XMega targets.
+* Sat Jan 03 2015 Simon Large - 0.7.1-1
+- Fix use of mandatory filename ChangeLog in distribution tarball
+- Fix infinite loop in rpl_malloc
+- Add experimental support for autocomplete on Ubuntu
+- Fix exit status of help-related options and improve start sequence
 * Sat Aug 02 2014 Simon Large - 0.7.0-1
 - Add support for atmega16c4 and atmega32c4
 - Fix device erase for bootloaders which return busy status
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dfu-programmer-0.7.1/fedora/dfu-programmer.spec.in 
new/dfu-programmer-0.7.2/fedora/dfu-programmer.spec.in
--- old/dfu-programmer-0.7.1/fedora/dfu-programmer.spec.in      2014-08-02 
23:35:16.000000000 +0200
+++ new/dfu-programmer-0.7.2/fedora/dfu-programmer.spec.in      2015-02-05 
00:00:41.000000000 +0100
@@ -42,6 +42,13 @@
 %{_datadir}/hal/fdi/information/20thirdparty/10-dfu-programmer.fdi
 
 %changelog
+* Wed Feb 04 2015 Simon Large - 0.7.2-1
+- Fix memory bounds used for XMega targets.
+* Sat Jan 03 2015 Simon Large - 0.7.1-1
+- Fix use of mandatory filename ChangeLog in distribution tarball
+- Fix infinite loop in rpl_malloc
+- Add experimental support for autocomplete on Ubuntu
+- Fix exit status of help-related options and improve start sequence
 * Sat Aug 02 2014 Simon Large - 0.7.0-1
 - Add support for atmega16c4 and atmega32c4
 - Fix device erase for bootloaders which return busy status
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dfu-programmer-0.7.1/src/arguments.c 
new/dfu-programmer-0.7.2/src/arguments.c
--- old/dfu-programmer-0.7.1/src/arguments.c    2015-01-02 23:58:33.000000000 
+0100
+++ new/dfu-programmer-0.7.2/src/arguments.c    2015-01-05 13:21:08.000000000 
+0100
@@ -34,6 +34,23 @@
 #define LIST_TEX        1
 #define LIST_HTML       2
 
+/* Bootloader location options
+   For AVR32 the bootloader is at the bottom of memory space and is included
+   in the total stated memory size. For all other types the bootloader is above
+   the application flash. For AVR and most 8051 types the bootloader space is
+   taken out of the stated memory capacity. For XMega and two of the 8051
+   chips the bootloader space is a separate flash area in addition to the
+   stated memory capacity. Those 8051 chips are also unusual in that the
+   bootloader location is not immediately above the internal flash.
+   In theory you could have a separate bootloader space in low memory but
+   it is not obvious how the addressing would work and none of the Atmel
+   chips do this at present.
+*/
+#define BL_BASE         0   /* Bootloader at bottom */
+#define BL_TOP          1   /* Bootloader at top, space included in total 
memory */
+#define BL_EXTRA        2   /* Bootloader at top in separate memory area */
+#define BL_SPECIFIC     3   /* Any value greater than this is a specific start 
address */
+
 struct option_mapping_structure {
     const char *name;
     int32_t value;
@@ -47,10 +64,8 @@
     uint16_t vendor_id;
     size_t memory_size;
     size_t bootloader_size;
-    dfu_bool bootloader_at_highmem;
+    size_t bootloader_location;
     size_t flash_page_size;
-    dfu_bool initial_abort;
-    dfu_bool honor_interfaceclass;
     size_t eeprom_page_size;
     size_t eeprom_memory_size;
 };
@@ -62,9 +77,6 @@
  * by BOOTSZ0/BOOTSZ1 fuse bits; here we assume the bootloader is 4kb or 8kb.
  * The window used for the bootloader is at the top of the of memory.
  *
- * For at89c5130/1 the bootloader is outside the normal flash area.
- * Which is why the boot size is marked as 0 bytes.
- *
  * VID and PID are the USB identifiers returned by the DFU bootloader.
  * They are defined by Atmel's bootloader code, and are not in the chip 
datasheet.
  * An incomplete list can be found the the various DFU bootloader docs.
@@ -75,91 +87,91 @@
 /* ----- target specific structures ----------------------------------------- 
*/
 static struct target_mapping_structure target_map[] = {
     // START_TARGET_LIST_LINE .. used for autocompletion script
-    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootHi FPage Abort IF     EPage ESize
-    { "at89c51snd1c",   tar_at89c51snd1c,   ADC_8051,  0x2FFF, 0x03eb, 
0x10000, 0x1000, true,  128, false, true,  0,   0      },
-    { "at89c51snd2c",   tar_at89c51snd2c,   ADC_8051,  0x2FFF, 0x03eb, 
0x10000, 0x1000, true,  128, false, true,  0,   0      },
-    { "at89c5130",      tar_at89c5130,      ADC_8051,  0x2FFD, 0x03eb, 
0x04000, 0x0000, true,  128, false, true,  128, 0x0400 },
-    { "at89c5131",      tar_at89c5131,      ADC_8051,  0x2FFD, 0x03eb, 
0x08000, 0x0000, true,  128, false, true,  128, 0x0400 },
-    { "at89c5132",      tar_at89c5132,      ADC_8051,  0x2FFF, 0x03eb, 
0x10000, 0x0C00, true,  128, false, true,  0,   0      },
-    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootHi FPage Abort IF     EPage ESize
-    { "at90usb1287",    tar_at90usb1287,    ADC_AVR,   0x2FFB, 0x03eb, 
0x20000, 0x2000, true,  128, true,  false, 128, 0x1000 },
-    { "at90usb1286",    tar_at90usb1286,    ADC_AVR,   0x2FFB, 0x03eb, 
0x20000, 0x2000, true,  128, true,  false, 128, 0x1000 },
-    { "at90usb1287-4k", tar_at90usb1287_4k, ADC_AVR,   0x2FFB, 0x03eb, 
0x20000, 0x1000, true,  128, true,  false, 128, 0x1000 },
-    { "at90usb1286-4k", tar_at90usb1286_4k, ADC_AVR,   0x2FFB, 0x03eb, 
0x20000, 0x1000, true,  128, true,  false, 128, 0x1000 },
-    { "at90usb647",     tar_at90usb647,     ADC_AVR,   0x2FF9, 0x03eb, 
0x10000, 0x2000, true,  128, true,  false, 128, 0x0800 },
-    { "at90usb646",     tar_at90usb646,     ADC_AVR,   0x2FF9, 0x03eb, 
0x10000, 0x2000, true,  128, true,  false, 128, 0x0800 },
-    { "at90usb162",     tar_at90usb162,     ADC_AVR,   0x2FFA, 0x03eb, 
0x04000, 0x1000, true,  128, true,  false, 128, 0x0200 },
-    { "at90usb82",      tar_at90usb82,      ADC_AVR,   0x2FF7, 0x03eb, 
0x02000, 0x1000, true,  128, true,  false, 128, 0x0200 },
-    { "atmega32u6",     tar_atmega32u6,     ADC_AVR,   0x2FF2, 0x03eb, 
0x08000, 0x1000, true,  128, true,  false, 128, 0x0400 },
-    { "atmega32u4",     tar_atmega32u4,     ADC_AVR,   0x2FF4, 0x03eb, 
0x08000, 0x1000, true,  128, true,  false, 128, 0x0400 },
-    { "atmega32u2",     tar_atmega32u2,     ADC_AVR,   0x2FF0, 0x03eb, 
0x08000, 0x1000, true,  128, true,  false, 128, 0x0400 },
-    { "atmega16u4",     tar_atmega16u4,     ADC_AVR,   0x2FF3, 0x03eb, 
0x04000, 0x1000, true,  128, true,  false, 128, 0x0200 },
-    { "atmega16u2",     tar_atmega16u2,     ADC_AVR,   0x2FEF, 0x03eb, 
0x04000, 0x1000, true,  128, true,  false, 128, 0x0200 },
-    { "atmega8u2",      tar_atmega8u2,      ADC_AVR,   0x2FEE, 0x03eb, 
0x02000, 0x1000, true,  128, true,  false, 128, 0x0200 },
-    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootHi FPage Abort IF     EPage ESize
-    { "at32uc3a0128",   tar_at32uc3a0128,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x20000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a1128",   tar_at32uc3a1128,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x20000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a0256",   tar_at32uc3a0256,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a1256",   tar_at32uc3a1256,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a0512",   tar_at32uc3a0512,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x80000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a1512",   tar_at32uc3a1512,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x80000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a0512es", tar_at32uc3a0512es, ADC_AVR32, 0x2FF8, 0x03eb, 
0x80000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a1512es", tar_at32uc3a1512es, ADC_AVR32, 0x2FF8, 0x03eb, 
0x80000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a364",    tar_at32uc3a364,    ADC_AVR32, 0x2FF1, 0x03eb, 
0x10000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a364s",   tar_at32uc3a364s,   ADC_AVR32, 0x2FF1, 0x03eb, 
0x10000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a3128",   tar_at32uc3a3128,   ADC_AVR32, 0x2FF1, 0x03eb, 
0x20000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a3128s",  tar_at32uc3a3128s,  ADC_AVR32, 0x2FF1, 0x03eb, 
0x20000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a3256",   tar_at32uc3a3256,   ADC_AVR32, 0x2FF1, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a3256s",  tar_at32uc3a3256s,  ADC_AVR32, 0x2FF1, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3a4256s",  tar_at32uc3a4256s,  ADC_AVR32, 0x2FF1, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootHi FPage Abort IF     EPage ESize
-    { "at32uc3b064",    tar_at32uc3b064,    ADC_AVR32, 0x2FF6, 0x03eb, 
0x10000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3b164",    tar_at32uc3b164,    ADC_AVR32, 0x2FF6, 0x03eb, 
0x10000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3b0128",   tar_at32uc3b0128,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x20000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3b1128",   tar_at32uc3b1128,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x20000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3b0256",   tar_at32uc3b0256,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3b1256",   tar_at32uc3b1256,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3b0256es", tar_at32uc3b0256es, ADC_AVR32, 0x2FF6, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3b1256es", tar_at32uc3b1256es, ADC_AVR32, 0x2FF6, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3b0512",   tar_at32uc3b0512,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x80000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3b1512",   tar_at32uc3b1512,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x80000, 0x2000, false, 512, false, true,  0,   0      },
-    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootHi FPage Abort IF     EPage ESize
-    { "at32uc3c064",    tar_at32uc3c064,    ADC_AVR32, 0x2FEB, 0x03eb, 
0x10000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c0128",   tar_at32uc3c0128,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x20000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c0256",   tar_at32uc3c0256,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c0512",   tar_at32uc3c0512,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x80000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c164",    tar_at32uc3c164,    ADC_AVR32, 0x2FEB, 0x03eb, 
0x10000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c1128",   tar_at32uc3c1128,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x20000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c1256",   tar_at32uc3c1256,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c1512",   tar_at32uc3c1512,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x80000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c264",    tar_at32uc3c264,    ADC_AVR32, 0x2FEB, 0x03eb, 
0x10000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c2128",   tar_at32uc3c2128,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x20000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c2256",   tar_at32uc3c2256,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x40000, 0x2000, false, 512, false, true,  0,   0      },
-    { "at32uc3c2512",   tar_at32uc3c2512,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x80000, 0x2000, false, 512, false, true,  0,   0      },
-    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootHi FPage Abort IF     EPage ESize
-    { "atxmega64a1u",   tar_atxmega64a1u,   ADC_XMEGA, 0x2FE8, 0x03eb, 
0x10000, 0x1000, true,  256, true,  false, 32,  0x0800 },
-    { "atxmega128a1u",  tar_atxmega128a1u,  ADC_XMEGA, 0x2FED, 0x03eb, 
0x20000, 0x2000, true,  256, true,  false, 32,  0x0800 },
-    { "atxmega64a3u",   tar_atxmega64a3u,   ADC_XMEGA, 0x2FE5, 0x03eb, 
0x10000, 0x1000, true,  256, true,  false, 32,  0x0800 },
-    { "atxmega128a3u",  tar_atxmega128a3u,  ADC_XMEGA, 0x2FE6, 0x03eb, 
0x20000, 0x2000, true,  512, true,  false, 32,  0x0800 },
-    { "atxmega192a3u",  tar_atxmega192a3u,  ADC_XMEGA, 0x2FE7, 0x03eb, 
0x30000, 0x2000, true,  512, true,  false, 32,  0x0800 },
-    { "atxmega256a3u",  tar_atxmega256a3u,  ADC_XMEGA, 0x2FEC, 0x03eb, 
0x40000, 0x2000, true,  512, true,  false, 32,  0x1000 },
-    { "atxmega16a4u",   tar_atxmega16a4u,   ADC_XMEGA, 0x2FE3, 0x03eb, 
0x04000, 0x1000, true,  256, true,  false, 32,  0x0400 },
-    { "atxmega32a4u",   tar_atxmega32a4u,   ADC_XMEGA, 0x2FE4, 0x03eb, 
0x08000, 0x1000, true,  256, true,  false, 32,  0x0400 },
-    { "atxmega64a4u",   tar_atxmega64a4u,   ADC_XMEGA, 0x2FDD, 0x03eb, 
0x10000, 0x1000, true,  256, true,  false, 32,  0x0800 },
-    { "atxmega128a4u",  tar_atxmega128a4u,  ADC_XMEGA, 0x2FDE, 0x03eb, 
0x20000, 0x2000, true,  256, true,  false, 32,  0x0800 },
-    { "atxmega256a3bu", tar_atxmega256a3bu, ADC_XMEGA, 0x2FE2, 0x03eb, 
0x40000, 0x2000, true,  512, true,  false, 32,  0x1000 },
-    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootHi FPage Abort IF     EPage ESize
-    { "atxmega64b1",    tar_atxmega64b1,    ADC_XMEGA, 0x2FE1, 0x03eb, 
0x10000, 0x1000, true,  256, true,  false, 32,  0x0800 },
-    { "atxmega128b1",   tar_atxmega128b1,   ADC_XMEGA, 0x2FEA, 0x03eb, 
0x20000, 0x2000, true,  256, true,  false, 32,  0x0800 },
-    { "atxmega64b3",    tar_atxmega64b3,    ADC_XMEGA, 0x2FDF, 0x03eb, 
0x10000, 0x1000, true,  256, true,  false, 32,  0x0800 },
-    { "atxmega128b3",   tar_atxmega128b3,   ADC_XMEGA, 0x2FE0, 0x03eb, 
0x20000, 0x2000, true,  256, true,  false, 32,  0x0800 },
-    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootHi FPage Abort IF     EPage ESize
-    { "atxmega64c3",    tar_atxmega64c3,    ADC_XMEGA, 0x2FD6, 0x03eb, 
0x10000, 0x1000, true,  256, true,  false, 32,  0x0800 },
-    { "atxmega128c3",   tar_atxmega128c3,   ADC_XMEGA, 0x2FD7, 0x03eb, 
0x20000, 0x2000, true,  512, true,  false, 32,  0x0800 },
-    { "atxmega256c3",   tar_atxmega256c3,   ADC_XMEGA, 0x2FDA, 0x03eb, 
0x40000, 0x2000, true,  512, true,  false, 32,  0x1000 },
-    { "atxmega384c3",   tar_atxmega384c3,   ADC_XMEGA, 0x2FDB, 0x03eb, 
0x60000, 0x2000, true,  512, true,  false, 32,  0x1000 },
-    { "atxmega16c4",    tar_atxmega16c4,    ADC_XMEGA, 0x2FD8, 0x03eb,  
0x4000, 0x1000, true,  256, true,  false, 32,   0x400 },
-    { "atxmega32c4",    tar_atxmega32c4,    ADC_XMEGA, 0x2FD9, 0x03eb,  
0x8000, 0x1000, true,  256, true,  false, 32,   0x400 },
+    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootLoc  FPage EPage  ESize
+    { "at89c51snd1c",   tar_at89c51snd1c,   ADC_8051,  0x2FFF, 0x03eb, 
0x10000, 0x1000, BL_TOP,    128,   0,      0 },
+    { "at89c51snd2c",   tar_at89c51snd2c,   ADC_8051,  0x2FFF, 0x03eb, 
0x10000, 0x1000, BL_TOP,    128,   0,      0 },
+    { "at89c5130",      tar_at89c5130,      ADC_8051,  0x2FFD, 0x03eb, 
0x04000, 0x0C00, 0xF400,    128, 128, 0x0400 },
+    { "at89c5131",      tar_at89c5131,      ADC_8051,  0x2FFD, 0x03eb, 
0x08000, 0x0C00, 0xF400,    128, 128, 0x0400 },
+    { "at89c5132",      tar_at89c5132,      ADC_8051,  0x2FFF, 0x03eb, 
0x10000, 0x0C00, BL_TOP,    128,   0,      0 },
+    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootLoc  FPage EPage  ESize
+    { "at90usb1287",    tar_at90usb1287,    ADC_AVR,   0x2FFB, 0x03eb, 
0x20000, 0x2000, BL_TOP,    128, 128, 0x1000 },
+    { "at90usb1286",    tar_at90usb1286,    ADC_AVR,   0x2FFB, 0x03eb, 
0x20000, 0x2000, BL_TOP,    128, 128, 0x1000 },
+    { "at90usb1287-4k", tar_at90usb1287_4k, ADC_AVR,   0x2FFB, 0x03eb, 
0x20000, 0x1000, BL_TOP,    128, 128, 0x1000 },
+    { "at90usb1286-4k", tar_at90usb1286_4k, ADC_AVR,   0x2FFB, 0x03eb, 
0x20000, 0x1000, BL_TOP,    128, 128, 0x1000 },
+    { "at90usb647",     tar_at90usb647,     ADC_AVR,   0x2FF9, 0x03eb, 
0x10000, 0x2000, BL_TOP,    128, 128, 0x0800 },
+    { "at90usb646",     tar_at90usb646,     ADC_AVR,   0x2FF9, 0x03eb, 
0x10000, 0x2000, BL_TOP,    128, 128, 0x0800 },
+    { "at90usb162",     tar_at90usb162,     ADC_AVR,   0x2FFA, 0x03eb, 
0x04000, 0x1000, BL_TOP,    128, 128, 0x0200 },
+    { "at90usb82",      tar_at90usb82,      ADC_AVR,   0x2FF7, 0x03eb, 
0x02000, 0x1000, BL_TOP,    128, 128, 0x0200 },
+    { "atmega32u6",     tar_atmega32u6,     ADC_AVR,   0x2FF2, 0x03eb, 
0x08000, 0x1000, BL_TOP,    128, 128, 0x0400 },
+    { "atmega32u4",     tar_atmega32u4,     ADC_AVR,   0x2FF4, 0x03eb, 
0x08000, 0x1000, BL_TOP,    128, 128, 0x0400 },
+    { "atmega32u2",     tar_atmega32u2,     ADC_AVR,   0x2FF0, 0x03eb, 
0x08000, 0x1000, BL_TOP,    128, 128, 0x0400 },
+    { "atmega16u4",     tar_atmega16u4,     ADC_AVR,   0x2FF3, 0x03eb, 
0x04000, 0x1000, BL_TOP,    128, 128, 0x0200 },
+    { "atmega16u2",     tar_atmega16u2,     ADC_AVR,   0x2FEF, 0x03eb, 
0x04000, 0x1000, BL_TOP,    128, 128, 0x0200 },
+    { "atmega8u2",      tar_atmega8u2,      ADC_AVR,   0x2FEE, 0x03eb, 
0x02000, 0x1000, BL_TOP,    128, 128, 0x0200 },
+    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootLoc  FPage EPage  ESize
+    { "at32uc3a0128",   tar_at32uc3a0128,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x20000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a1128",   tar_at32uc3a1128,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x20000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a0256",   tar_at32uc3a0256,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a1256",   tar_at32uc3a1256,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a0512",   tar_at32uc3a0512,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x80000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a1512",   tar_at32uc3a1512,   ADC_AVR32, 0x2FF8, 0x03eb, 
0x80000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a0512es", tar_at32uc3a0512es, ADC_AVR32, 0x2FF8, 0x03eb, 
0x80000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a1512es", tar_at32uc3a1512es, ADC_AVR32, 0x2FF8, 0x03eb, 
0x80000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a364",    tar_at32uc3a364,    ADC_AVR32, 0x2FF1, 0x03eb, 
0x10000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a364s",   tar_at32uc3a364s,   ADC_AVR32, 0x2FF1, 0x03eb, 
0x10000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a3128",   tar_at32uc3a3128,   ADC_AVR32, 0x2FF1, 0x03eb, 
0x20000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a3128s",  tar_at32uc3a3128s,  ADC_AVR32, 0x2FF1, 0x03eb, 
0x20000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a3256",   tar_at32uc3a3256,   ADC_AVR32, 0x2FF1, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a3256s",  tar_at32uc3a3256s,  ADC_AVR32, 0x2FF1, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3a4256s",  tar_at32uc3a4256s,  ADC_AVR32, 0x2FF1, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootLoc  FPage EPage  ESize
+    { "at32uc3b064",    tar_at32uc3b064,    ADC_AVR32, 0x2FF6, 0x03eb, 
0x10000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3b164",    tar_at32uc3b164,    ADC_AVR32, 0x2FF6, 0x03eb, 
0x10000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3b0128",   tar_at32uc3b0128,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x20000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3b1128",   tar_at32uc3b1128,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x20000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3b0256",   tar_at32uc3b0256,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3b1256",   tar_at32uc3b1256,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3b0256es", tar_at32uc3b0256es, ADC_AVR32, 0x2FF6, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3b1256es", tar_at32uc3b1256es, ADC_AVR32, 0x2FF6, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3b0512",   tar_at32uc3b0512,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x80000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3b1512",   tar_at32uc3b1512,   ADC_AVR32, 0x2FF6, 0x03eb, 
0x80000, 0x2000, BL_BASE,   512,   0,      0 },
+    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootLoc  FPage EPage  ESize
+    { "at32uc3c064",    tar_at32uc3c064,    ADC_AVR32, 0x2FEB, 0x03eb, 
0x10000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c0128",   tar_at32uc3c0128,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x20000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c0256",   tar_at32uc3c0256,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c0512",   tar_at32uc3c0512,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x80000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c164",    tar_at32uc3c164,    ADC_AVR32, 0x2FEB, 0x03eb, 
0x10000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c1128",   tar_at32uc3c1128,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x20000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c1256",   tar_at32uc3c1256,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c1512",   tar_at32uc3c1512,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x80000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c264",    tar_at32uc3c264,    ADC_AVR32, 0x2FEB, 0x03eb, 
0x10000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c2128",   tar_at32uc3c2128,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x20000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c2256",   tar_at32uc3c2256,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x40000, 0x2000, BL_BASE,   512,   0,      0 },
+    { "at32uc3c2512",   tar_at32uc3c2512,   ADC_AVR32, 0x2FEB, 0x03eb, 
0x80000, 0x2000, BL_BASE,   512,   0,      0 },
+    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootLoc  FPage EPage  ESize
+    { "atxmega64a1u",   tar_atxmega64a1u,   ADC_XMEGA, 0x2FE8, 0x03eb, 
0x10000, 0x1000, BL_EXTRA,  256,  32, 0x0800 },
+    { "atxmega128a1u",  tar_atxmega128a1u,  ADC_XMEGA, 0x2FED, 0x03eb, 
0x20000, 0x2000, BL_EXTRA,  256,  32, 0x0800 },
+    { "atxmega64a3u",   tar_atxmega64a3u,   ADC_XMEGA, 0x2FE5, 0x03eb, 
0x10000, 0x1000, BL_EXTRA,  256,  32, 0x0800 },
+    { "atxmega128a3u",  tar_atxmega128a3u,  ADC_XMEGA, 0x2FE6, 0x03eb, 
0x20000, 0x2000, BL_EXTRA,  512,  32, 0x0800 },
+    { "atxmega192a3u",  tar_atxmega192a3u,  ADC_XMEGA, 0x2FE7, 0x03eb, 
0x30000, 0x2000, BL_EXTRA,  512,  32, 0x0800 },
+    { "atxmega256a3u",  tar_atxmega256a3u,  ADC_XMEGA, 0x2FEC, 0x03eb, 
0x40000, 0x2000, BL_EXTRA,  512,  32, 0x1000 },
+    { "atxmega16a4u",   tar_atxmega16a4u,   ADC_XMEGA, 0x2FE3, 0x03eb, 
0x04000, 0x1000, BL_EXTRA,  256,  32, 0x0400 },
+    { "atxmega32a4u",   tar_atxmega32a4u,   ADC_XMEGA, 0x2FE4, 0x03eb, 
0x08000, 0x1000, BL_EXTRA,  256,  32, 0x0400 },
+    { "atxmega64a4u",   tar_atxmega64a4u,   ADC_XMEGA, 0x2FDD, 0x03eb, 
0x10000, 0x1000, BL_EXTRA,  256,  32, 0x0800 },
+    { "atxmega128a4u",  tar_atxmega128a4u,  ADC_XMEGA, 0x2FDE, 0x03eb, 
0x20000, 0x2000, BL_EXTRA,  256,  32, 0x0800 },
+    { "atxmega256a3bu", tar_atxmega256a3bu, ADC_XMEGA, 0x2FE2, 0x03eb, 
0x40000, 0x2000, BL_EXTRA,  512,  32, 0x1000 },
+    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootLoc  FPage EPage  ESize
+    { "atxmega64b1",    tar_atxmega64b1,    ADC_XMEGA, 0x2FE1, 0x03eb, 
0x10000, 0x1000, BL_EXTRA,  256,  32, 0x0800 },
+    { "atxmega128b1",   tar_atxmega128b1,   ADC_XMEGA, 0x2FEA, 0x03eb, 
0x20000, 0x2000, BL_EXTRA,  256,  32, 0x0800 },
+    { "atxmega64b3",    tar_atxmega64b3,    ADC_XMEGA, 0x2FDF, 0x03eb, 
0x10000, 0x1000, BL_EXTRA,  256,  32, 0x0800 },
+    { "atxmega128b3",   tar_atxmega128b3,   ADC_XMEGA, 0x2FE0, 0x03eb, 
0x20000, 0x2000, BL_EXTRA,  256,  32, 0x0800 },
+    // Name             ID (arguments.h)    DevType    PID     VID     MemSize 
 BootSz  BootLoc  FPage EPage  ESize
+    { "atxmega64c3",    tar_atxmega64c3,    ADC_XMEGA, 0x2FD6, 0x03eb, 
0x10000, 0x1000, BL_EXTRA,  256,  32, 0x0800 },
+    { "atxmega128c3",   tar_atxmega128c3,   ADC_XMEGA, 0x2FD7, 0x03eb, 
0x20000, 0x2000, BL_EXTRA,  512,  32, 0x0800 },
+    { "atxmega256c3",   tar_atxmega256c3,   ADC_XMEGA, 0x2FDA, 0x03eb, 
0x40000, 0x2000, BL_EXTRA,  512,  32, 0x1000 },
+    { "atxmega384c3",   tar_atxmega384c3,   ADC_XMEGA, 0x2FDB, 0x03eb, 
0x60000, 0x2000, BL_EXTRA,  512,  32, 0x1000 },
+    { "atxmega16c4",    tar_atxmega16c4,    ADC_XMEGA, 0x2FD8, 0x03eb,  
0x4000, 0x1000, BL_EXTRA,  256,  32,  0x400 },
+    { "atxmega32c4",    tar_atxmega32c4,    ADC_XMEGA, 0x2FD9, 0x03eb,  
0x8000, 0x1000, BL_EXTRA,  256,  32,  0x400 },
     { NULL }
     // END_TARGET_LIST_LINE .. used for autocompletion script
 };
@@ -418,49 +430,74 @@
             args->eeprom_memory_size = map->eeprom_memory_size;
             args->flash_page_size = map->flash_page_size;
             args->eeprom_page_size = map->eeprom_page_size;
-            args->initial_abort = map->initial_abort;
-            /* There have been several reports on the mailing list of 
dfu-programmer
-               reporting "No device present" when there clearly is. It seems 
Atmel's
-               bootloader has changed (or is buggy) and doesn't report 
interface class
-               and subclass the way is did before. However we have already 
matched
-               VID and PID so why would we worry about this. Don't use the 
device-
-               specific value, just ignore the error for all device types.
-            */
-            args->honor_interfaceclass = false;
-            args->memory_address_top = map->memory_size - 1;
-            args->memory_address_bottom = 0;
-            args->flash_address_top = args->memory_address_top;
-            args->flash_address_bottom = args->memory_address_bottom;
-            args->bootloader_bottom = 0;
-            args->bootloader_top = 0;
-            args->bootloader_at_highmem = map->bootloader_at_highmem;
-            if( true == map->bootloader_at_highmem ) {
-                args->bootloader_bottom = map->memory_size - 
map->bootloader_size;
-                args->bootloader_top = args->flash_address_top;
-                args->flash_address_top -= map->bootloader_size;
+            if ( map->bootloader_location > BL_SPECIFIC ) {
+                /* Bootloader space at a specific location, but does not
+                   lie immediately above the application flash area.
+                */
+                args->flash_address_bottom = 0;
+                args->flash_address_top = map->memory_size - 1;
+                args->bootloader_bottom = map->bootloader_location;
+                args->bootloader_top = map->bootloader_location + 
map->bootloader_size - 1;
+                args->memory_address_bottom = args->flash_address_bottom;
+                args->memory_address_top = args->bootloader_top;
+            } else if( BL_BASE == map->bootloader_location ) {
+                /* Bootloader space is at bottom of memory and is
+                   included within stated memory space. */
+                args->bootloader_bottom = 0;
+                args->bootloader_top = map->bootloader_size - 1;
+                args->flash_address_bottom = map->bootloader_size;
+                args->flash_address_top = map->memory_size - 1;
+                args->memory_address_bottom = args->bootloader_bottom;
+                args->memory_address_top = args->flash_address_top;
             } else {
-                args->bootloader_bottom = args->flash_address_bottom;
-                args->bootloader_top += map->bootloader_size - 1;
-                args->flash_address_bottom += map->bootloader_size;
+                /* Bootloader space is at top of memory above application 
area. */
+                if( BL_EXTRA == map->bootloader_location ) {
+                    /* Bootloader space is additional to stated memory space. 
*/
+                    args->bootloader_bottom = map->memory_size;
+                } else {
+                    /* Bootloader space is included within stated memory 
space. */
+                    args->bootloader_bottom = map->memory_size - 
map->bootloader_size;
+                }
+                args->flash_address_bottom = 0;
+                args->flash_address_top = args->bootloader_bottom - 1;
+                args->bootloader_top = args->bootloader_bottom + 
map->bootloader_size - 1;
+                args->memory_address_bottom = args->flash_address_bottom;
+                args->memory_address_top = args->bootloader_top;
             }
             switch( args->device_type ) {
                 case ADC_8051:
                     strncpy( args->device_type_string, "8051",
                              DEVICE_TYPE_STRING_MAX_LENGTH );
+                    args->initial_abort = false;
+                    //args->honor_interfaceclass = true;
                     break;
                 case ADC_AVR:
                     strncpy( args->device_type_string, "AVR",
                              DEVICE_TYPE_STRING_MAX_LENGTH );
+                    args->initial_abort = true;
+                    //args->honor_interfaceclass = false;
                     break;
                 case ADC_AVR32:
                     strncpy( args->device_type_string, "AVR32",
                              DEVICE_TYPE_STRING_MAX_LENGTH );
+                    args->initial_abort = false;
+                    //args->honor_interfaceclass = true;
                     break;
                 case ADC_XMEGA:
                     strncpy( args->device_type_string, "XMEGA",
                              DEVICE_TYPE_STRING_MAX_LENGTH );
+                    args->initial_abort = true;
+                    //args->honor_interfaceclass = false;
                     break;
             }
+            /* There have been several reports on the mailing list of 
dfu-programmer
+               reporting "No device present" when there clearly is. It seems 
Atmel's
+               bootloader has changed (or is buggy) and doesn't report 
interface class
+               and subclass the way is did before. However we have already 
matched
+               VID and PID so why would we worry about this? Don't use the 
device-
+               specific value, just ignore the error for all device types.
+            */
+            args->honor_interfaceclass = false;
             return 0;
         }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dfu-programmer-0.7.1/src/arguments.h 
new/dfu-programmer-0.7.2/src/arguments.h
--- old/dfu-programmer-0.7.1/src/arguments.h    2014-09-17 18:07:00.000000000 
+0200
+++ new/dfu-programmer-0.7.2/src/arguments.h    2015-01-05 09:57:04.000000000 
+0100
@@ -167,7 +167,6 @@
     uint32_t flash_address_bottom;      /*     excludes bootloader region  */
     uint32_t bootloader_top;            /* top of the bootloader region    */
     uint32_t bootloader_bottom;         /* bottom of the bootloader region */
-    dfu_bool bootloader_at_highmem;
     size_t flash_page_size;             /* size of a page in bytes         */
     dfu_bool initial_abort;
     dfu_bool honor_interfaceclass;


Reply via email to