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;
