Rename urclock's option forcetrim to restore

This commit is contained in:
Stefan Rueger 2022-11-10 22:35:08 +00:00
parent afa408e2c6
commit 321bddbf7b
No known key found for this signature in database
GPG Key ID: B0B4F1FD86B1EC55
2 changed files with 13 additions and 9 deletions

View File

@ -1219,12 +1219,12 @@ options, by filling the remainder of unused flash below the bootloader
with 0xff. If this option is specified, the urclock programmer will assume with 0xff. If this option is specified, the urclock programmer will assume
that the bootloader cannot erase the chip itself. The option is useful that the bootloader cannot erase the chip itself. The option is useful
for backwards-compatible bootloaders that do not implement chip erase. for backwards-compatible bootloaders that do not implement chip erase.
.It Ar forcetrim .It Ar restore
Upload unchanged flash input files and trim below the bootloader if Upload unchanged flash input files and trim below the bootloader if
needed. This is most useful when one has a backup of the full flash and needed. This is most useful when one has a backup of the full flash and
wants to play that back onto the device. No metadata are written in this wants to play that back onto the device. No metadata are written in this
case and no vector patching happens either if it is a vector bootloader. case and no vector patching happens either if it is a vector bootloader.
However, for vector bootloaders, even under the option -xforcetrim an However, for vector bootloaders, even under the option -xrestore an
input file will not be uploaded for which the reset vector does not point input file will not be uploaded for which the reset vector does not point
to the vector bootloader. This is to avoid writing an input file to the to the vector bootloader. This is to avoid writing an input file to the
device that would render the vector bootloader not functional as it would device that would render the vector bootloader not functional as it would

View File

@ -297,7 +297,7 @@ typedef struct {
xemulate_ce, // ... for making avrdude emulate any chip erase xemulate_ce, // ... for making avrdude emulate any chip erase
initstore, // Zap store when writing the application, ie, fill with 0xff initstore, // Zap store when writing the application, ie, fill with 0xff
//@@@ copystore, // Copy over store as far as possible when writing the application //@@@ copystore, // Copy over store as far as possible when writing the application
forcetrim, // Force uploading of exactly this file, possibly trimming it restore, // Restore a flash backup exactly as it is trimming the bootloader
nofilename, // Don't store application filename when writing the application nofilename, // Don't store application filename when writing the application
nodate, // Don't store application filename and no date either nodate, // Don't store application filename and no date either
nometadata, // Don't store any metadata at all (implies no store support) nometadata, // Don't store any metadata at all (implies no store support)
@ -596,7 +596,7 @@ static int urclock_flash_readhook(const PROGRAMMER *pgm, const AVRPART *p, const
ur.yyyy, ur.mm, ur.dd, ur.hr, ur.mn, nmdata, ur.blstart > 0? flm->size-ur.blstart: 0); ur.yyyy, ur.mm, ur.dd, ur.hr, ur.mn, nmdata, ur.blstart > 0? flm->size-ur.blstart: 0);
// Force upload of exactly this file, no patching, no metadata update, just trim if too big // Force upload of exactly this file, no patching, no metadata update, just trim if too big
if(ur.forcetrim) { if(ur.restore) {
if(size > maxsize) if(size > maxsize)
size = maxsize; size = maxsize;
@ -613,7 +613,7 @@ static int urclock_flash_readhook(const PROGRAMMER *pgm, const AVRPART *p, const
// Check size of uploded application and protect bootloader from being overwritten // Check size of uploded application and protect bootloader from being overwritten
if(size > ur.blstart) if(size > ur.blstart)
Return("input [0x%04x, 0x%04x] overlaps bootloader [0x%04x, 0x%04x], consider -xforcetrim", Return("input [0x%04x, 0x%04x] overlaps bootloader [0x%04x, 0x%04x]",
firstbeg, size-1, ur.blstart, flm->size-1); firstbeg, size-1, ur.blstart, flm->size-1);
if(nmdata >= nmeta(0, ur.uP.flashsize) && size > ur.blstart - nmeta(0, ur.uP.flashsize)) if(nmdata >= nmeta(0, ur.uP.flashsize) && size > ur.blstart - nmeta(0, ur.uP.flashsize))
@ -859,10 +859,14 @@ nopatch_nometa:
int resetdest; int resetdest;
if(reset2addr(flm->buf, vecsz, flm->size, &resetdest) < 0) if(reset2addr(flm->buf, vecsz, flm->size, &resetdest) < 0)
Return("input overwrites the reset vector bricking the bootloader; use -F to patch input"); Return("input would overwrite the reset vector bricking the bootloader\n"
"%*susing -F will patch the input but this may not be what is needed",
(int) strlen(progname)+1, "");
if(resetdest != ur.blstart) if(resetdest != ur.blstart)
Return("input points reset to 0x%04x, not to bootloader at 0x%04x; use -F to patch input", Return("input points reset to 0x%04x, not to bootloader at 0x%04x\n"
resetdest, ur.blstart); "%*susing -F will patch the input but this may not be what is needed",
resetdest, ur.blstart, (int) strlen(progname)+1, "");
} }
} }
@ -2083,7 +2087,7 @@ static int urclock_parseextparms(const PROGRAMMER *pgm, LISTID extparms) {
{"vectornum", &ur.xvectornum, ARG, "Manual override for vector number"}, {"vectornum", &ur.xvectornum, ARG, "Manual override for vector number"},
{"eepromrw", &ur.xeepromrw, NA, "Asssertion of bootloader EEPROM read/write capability"}, {"eepromrw", &ur.xeepromrw, NA, "Asssertion of bootloader EEPROM read/write capability"},
{"emulate_ce", &ur.xemulate_ce, NA, "Emulate chip erase"}, {"emulate_ce", &ur.xemulate_ce, NA, "Emulate chip erase"},
{"forcetrim", &ur.forcetrim, NA, "Upload of unchanged files, trim it if needed"}, {"restore", &ur.restore, NA, "Restore a flash backup as is trimming the bootloader"},
{"initstore", &ur.initstore, NA, "Fill store with 0xff on writing to flash"}, {"initstore", &ur.initstore, NA, "Fill store with 0xff on writing to flash"},
//@@@ {"copystore", &ur.copystore, NA, "Copy over store on writing to flash"}, //@@@ {"copystore", &ur.copystore, NA, "Copy over store on writing to flash"},
{"nofilename", &ur.nofilename, NA, "Do not store filename on writing to flash"}, {"nofilename", &ur.nofilename, NA, "Do not store filename on writing to flash"},