reloader: OTA flashing tool for wasp-os
This commit is contained in:
parent
17a8cfc346
commit
dc4ea4ab62
5 changed files with 46 additions and 3 deletions
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -22,3 +22,6 @@
|
||||||
[submodule "tools/ota-dfu"]
|
[submodule "tools/ota-dfu"]
|
||||||
path = tools/ota-dfu
|
path = tools/ota-dfu
|
||||||
url = https://github.com/daniel-thompson/ota-dfu-python
|
url = https://github.com/daniel-thompson/ota-dfu-python
|
||||||
|
[submodule "reloader"]
|
||||||
|
path = reloader
|
||||||
|
url = https://github.com/daniel-thompson/wasp-reloader
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -23,6 +23,8 @@ bootloader:
|
||||||
bootloader/_build-$(BOARD)_nrf52832/$(BOARD)_nrf52832_bootloader-*-nosd.hex \
|
bootloader/_build-$(BOARD)_nrf52832/$(BOARD)_nrf52832_bootloader-*-nosd.hex \
|
||||||
bootloader/lib/softdevice/s132_nrf52_6.1.1/s132_nrf52_6.1.1_softdevice.hex \
|
bootloader/lib/softdevice/s132_nrf52_6.1.1/s132_nrf52_6.1.1_softdevice.hex \
|
||||||
-o bootloader.hex
|
-o bootloader.hex
|
||||||
|
python3 tools/hex2c.py bootloader.hex > \
|
||||||
|
reloader/src/boards/$(BOARD)/bootloader.h
|
||||||
|
|
||||||
softdevice:
|
softdevice:
|
||||||
micropython/ports/nrf/drivers/bluetooth/download_ble_stack.sh
|
micropython/ports/nrf/drivers/bluetooth/download_ble_stack.sh
|
||||||
|
|
6
TODO.md
6
TODO.md
|
@ -46,7 +46,7 @@ applications.
|
||||||
|
|
||||||
### Bootloader
|
### Bootloader
|
||||||
|
|
||||||
* [ ] OTA bootloader update
|
* [X] OTA bootloader update
|
||||||
* [ ] Stay in bootloader after battery run down
|
* [ ] Stay in bootloader after battery run down
|
||||||
* [ ] Implement power off support (no splash screen)
|
* [ ] Implement power off support (no splash screen)
|
||||||
* [ ] RTC time measurement whilst in bootloader
|
* [ ] RTC time measurement whilst in bootloader
|
||||||
|
@ -64,14 +64,14 @@ applications.
|
||||||
* [X] Button driver (interrupt based)
|
* [X] Button driver (interrupt based)
|
||||||
* [X] Touch sensor driver
|
* [X] Touch sensor driver
|
||||||
* [X] Event driven application framework
|
* [X] Event driven application framework
|
||||||
* [ ] Stopwatch app
|
* [X] Stopwatch app
|
||||||
* [X] Settings app
|
* [X] Settings app
|
||||||
* [X] PC-hosted simulation platform
|
* [X] PC-hosted simulation platform
|
||||||
* [.] Documentation
|
* [.] Documentation
|
||||||
- [X] Sphinx framework and integration with github.io
|
- [X] Sphinx framework and integration with github.io
|
||||||
- [ ] Document bootloader protocols
|
- [ ] Document bootloader protocols
|
||||||
- [ ] Write full docstring documentation for all WASP components
|
- [ ] Write full docstring documentation for all WASP components
|
||||||
* [ ] Application Launcher
|
* [X] Application Launcher
|
||||||
* [X] Debug notifications
|
* [X] Debug notifications
|
||||||
* [o] Multi-colour RLE images
|
* [o] Multi-colour RLE images
|
||||||
- [X] Optimized "2-bit" RLE encoder and decoder
|
- [X] Optimized "2-bit" RLE encoder and decoder
|
||||||
|
|
1
reloader
Submodule
1
reloader
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 5e9a1c85509130af123735aa550ef36b53f772b7
|
37
tools/hex2c.py
Executable file
37
tools/hex2c.py
Executable file
|
@ -0,0 +1,37 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
# Copyright (C) 2020 Daniel Thompson
|
||||||
|
|
||||||
|
import intelhex
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def generate_c(ihex):
|
||||||
|
print('/* this file is auto-generated - DO NOT EDIT */')
|
||||||
|
print()
|
||||||
|
print('#include <stdint.h>')
|
||||||
|
print()
|
||||||
|
print('struct segment {')
|
||||||
|
print(' uint32_t start;');
|
||||||
|
print(' uint32_t end;');
|
||||||
|
print(' const uint8_t *data;')
|
||||||
|
print('};')
|
||||||
|
print()
|
||||||
|
|
||||||
|
for i, segment in enumerate(ihex.segments()):
|
||||||
|
print(f'static const uint8_t segment{i}[] = {{', end='')
|
||||||
|
|
||||||
|
for j in range(segment[0], segment[1]):
|
||||||
|
if 0 == j % 12:
|
||||||
|
print('\n ', end='')
|
||||||
|
print(f' 0x{ihex[j]:02x},', end='')
|
||||||
|
|
||||||
|
print('\n};\n')
|
||||||
|
print(f'const struct segment segments[] = {{')
|
||||||
|
for i, segment in enumerate(ihex.segments()):
|
||||||
|
print(f' 0x{segment[0]:08x}, 0x{segment[1]:08x}, segment{i},')
|
||||||
|
print('};')
|
||||||
|
|
||||||
|
ihex = intelhex.IntelHex()
|
||||||
|
ihex.loadhex(sys.argv[1])
|
||||||
|
generate_c(ihex)
|
Loading…
Add table
Reference in a new issue