X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=tools%2Fupdate-firmware;h=306674031a8784291cc5c7d82430fe3a0d7c0f02;hb=c017864cc96e65ced1eece625d41877c0c834f34;hp=f610343f37c8ba1fb672b73e49ac37c2fde44841;hpb=6c782c1ea136dd3968ae611a61bd5512cf5c009e;p=gps-watch.git diff --git a/tools/update-firmware b/tools/update-firmware index f610343..3066740 100755 --- a/tools/update-firmware +++ b/tools/update-firmware @@ -1,4 +1,25 @@ #!/usr/bin/env python3 +# +# Copyright (c) 2019-2020 Tilman Sauerbeck (tilman at code-monkey de) +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. import argparse import serial @@ -168,6 +189,13 @@ class Application: sys.stderr.write('File too large.\n') return 3 + # The bootloader only accepts chunks whose size is word-aligned: + num_extra = len(chunks[-1]) & 3 + + if num_extra != 0: + num_pad = 4 - extra + chunks[-1] += b'\xff' * num_pad + # Defaulting to zero seems too dangerous: if self._offset is None: sector0 = None