projects
/
gps-watch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tools: Don't try to erase and program the second flash sector.
[gps-watch.git]
/
tools
/
update-firmware
diff --git
a/tools/update-firmware
b/tools/update-firmware
index 32381dc47393ac39b32d4819d5f0ddbb54214485..f610343f37c8ba1fb672b73e49ac37c2fde44841 100755
(executable)
--- a/
tools/update-firmware
+++ b/
tools/update-firmware
@@
-94,6
+94,12
@@
class ChecksumMismatch(BootloaderError):
super(ChecksumMismatch, self).__init__(msg)
super(ChecksumMismatch, self).__init__(msg)
+class PermissionDenied(BootloaderError):
+ def __init__(self, command):
+ msg = 'Target reported permission denied for command {}'.format(command)
+
+ super(PermissionDenied, self).__init__(msg)
+
class Command:
def __init__(self, num, name):
self._num = num
class Command:
def __init__(self, num, name):
self._num = num
@@
-179,15
+185,19
@@
class Application:
for i in range(len(chunks)):
sector = sector0 + i
for i in range(len(chunks)):
sector = sector0 + i
- self._erase(sector)
+ # The bootloader will refuse to erase the second sector
+ # as it contains the precious flash configuration field.
+ if sector != 1:
+ self._erase(sector)
# Write first sector last, to prevent the bootloader from
# jumping to partially programmed code.
for i, chunk in reversed(list(enumerate(chunks))):
sector = sector0 + i
# Write first sector last, to prevent the bootloader from
# jumping to partially programmed code.
for i, chunk in reversed(list(enumerate(chunks))):
sector = sector0 + i
- self._load_chunk(chunk)
- self._program(sector)
+ if sector != 1:
+ self._load_chunk(chunk)
+ self._program(sector)
num_verify_errors = 0
num_verify_errors = 0
@@
-295,6
+305,8
@@
class Application:
raise InvalidArgument(self._last_command)
elif e == 3:
raise ChecksumMismatch(self._last_command)
raise InvalidArgument(self._last_command)
elif e == 3:
raise ChecksumMismatch(self._last_command)
+ elif e == 4:
+ raise PermissionDenied(self._last_command)
else:
msg = 'Target reported some other error for {}'.format(self._last_command)
else:
msg = 'Target reported some other error for {}'.format(self._last_command)