Compare commits
10 commits
749fe3432f
...
bf07f0cf55
Author | SHA1 | Date | |
---|---|---|---|
|
bf07f0cf55 | ||
|
6e1c422ff9 | ||
|
faa18b7129 | ||
|
6ca5d75ffa | ||
|
10692602f5 | ||
|
24dcb62fdb | ||
|
7d156cdc05 | ||
|
ce1a2634f0 | ||
|
fbf00957dd | ||
|
1798bc6eea |
8 changed files with 78 additions and 38 deletions
14
.github/workflows/main.yml
vendored
14
.github/workflows/main.yml
vendored
|
@ -13,11 +13,11 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout files
|
- name: Checkout files
|
||||||
id: checkout-files
|
id: checkout-files
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Check the cached arm-none-eabi-gcc compiler
|
- name: Check the cached arm-none-eabi-gcc compiler
|
||||||
id: cache-toolchain
|
id: cache-toolchain
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v4
|
||||||
env:
|
env:
|
||||||
cache-name: cache-toolchain-10-2020-q4
|
cache-name: cache-toolchain-10-2020-q4
|
||||||
with:
|
with:
|
||||||
|
@ -68,35 +68,35 @@ jobs:
|
||||||
|
|
||||||
- name: Upload full binary distribution
|
- name: Upload full binary distribution
|
||||||
id: upload-binaries
|
id: upload-binaries
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: wasp-os-${{ github.sha }}
|
name: wasp-os-${{ github.sha }}
|
||||||
path: wasp-os-${{ github.sha }}.tar.gz
|
path: wasp-os-${{ github.sha }}.tar.gz
|
||||||
|
|
||||||
- name: Upload pinetime binaries
|
- name: Upload pinetime binaries
|
||||||
id: upload-pinetime
|
id: upload-pinetime
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: pinetime-${{ github.sha }}
|
name: pinetime-${{ github.sha }}
|
||||||
path: build-pinetime
|
path: build-pinetime
|
||||||
|
|
||||||
- name: Upload Colmi P8 binaries
|
- name: Upload Colmi P8 binaries
|
||||||
id: upload-p8
|
id: upload-p8
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: p8-${{ github.sha }}
|
name: p8-${{ github.sha }}
|
||||||
path: build-p8
|
path: build-p8
|
||||||
|
|
||||||
- name: Upload Senbono K9 binaries
|
- name: Upload Senbono K9 binaries
|
||||||
id: upload-k9
|
id: upload-k9
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: k9-${{ github.sha }}
|
name: k9-${{ github.sha }}
|
||||||
path: build-k9
|
path: build-k9
|
||||||
|
|
||||||
- name: Upload extra apps binaries
|
- name: Upload extra apps binaries
|
||||||
id: upload-apps
|
id: upload-apps
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: apps-${{ github.sha }}
|
name: apps-${{ github.sha }}
|
||||||
path: apps/*.mpy
|
path: apps/*.mpy
|
||||||
|
|
4
.github/workflows/sim.yml
vendored
4
.github/workflows/sim.yml
vendored
|
@ -13,11 +13,11 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout files
|
- name: Checkout files
|
||||||
id: checkout-files
|
id: checkout-files
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Check the cached python downloads
|
- name: Check the cached python downloads
|
||||||
id: cache-modules
|
id: cache-modules
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v4
|
||||||
env:
|
env:
|
||||||
cache-name: cache-toolchain
|
cache-name: cache-toolchain
|
||||||
with:
|
with:
|
||||||
|
|
19
Makefile
19
Makefile
|
@ -23,10 +23,13 @@ clean :
|
||||||
reloader/build-$(BOARD) reloader/src/boards/$(BOARD)/bootloader.h \
|
reloader/build-$(BOARD) reloader/src/boards/$(BOARD)/bootloader.h \
|
||||||
micropython/mpy-cross/build \
|
micropython/mpy-cross/build \
|
||||||
micropython/ports/nrf/build-$(BOARD)-s132 \
|
micropython/ports/nrf/build-$(BOARD)-s132 \
|
||||||
|
apps/*.mpy \
|
||||||
|
build-$(BOARD) \
|
||||||
wasp/boards/$(BOARD)/watch.py \
|
wasp/boards/$(BOARD)/watch.py \
|
||||||
wasp/apps/user \
|
wasp/apps/user \
|
||||||
wasp/boards/manifest_user_apps.py \
|
wasp/boards/manifest_user_apps.py \
|
||||||
wasp/appregistry.py
|
wasp/appregistry.py
|
||||||
|
find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete
|
||||||
|
|
||||||
# Avoid a recursive update... it grabs far too much
|
# Avoid a recursive update... it grabs far too much
|
||||||
submodules :
|
submodules :
|
||||||
|
@ -62,7 +65,13 @@ wasp/boards/$(BOARD_SAFE)/watch.py : wasp/boards/$(BOARD_SAFE)/watch.py.in
|
||||||
|| ($(RM) wasp/boards/$(BOARD)/watch.py; false)
|
|| ($(RM) wasp/boards/$(BOARD)/watch.py; false)
|
||||||
|
|
||||||
micropython/mpy-cross/mpy-cross:
|
micropython/mpy-cross/mpy-cross:
|
||||||
$(MAKE) -C micropython/mpy-cross
|
$(MAKE) -C micropython/mpy-cross \
|
||||||
|
CWARN="-Wall -Wno-error"
|
||||||
|
# ^ Disable some Werrors from GCC>=13, specifically
|
||||||
|
# - dangling-pointer
|
||||||
|
# - enum-int-mismatch
|
||||||
|
# TODO update micropython and remove.
|
||||||
|
# https://github.com/wasp-os/wasp-os/issues/493
|
||||||
|
|
||||||
micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$(BOARD_SAFE)/watch.py micropython/mpy-cross/mpy-cross
|
micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$(BOARD_SAFE)/watch.py micropython/mpy-cross/mpy-cross
|
||||||
$(RM) micropython/ports/nrf/build-$(BOARD)-s132/frozen_content.c
|
$(RM) micropython/ports/nrf/build-$(BOARD)-s132/frozen_content.c
|
||||||
|
@ -70,7 +79,13 @@ micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$
|
||||||
BOARD=$(BOARD) SD=s132 \
|
BOARD=$(BOARD) SD=s132 \
|
||||||
MICROPY_VFS_LFS2=1 \
|
MICROPY_VFS_LFS2=1 \
|
||||||
FROZEN_MANIFEST=$(CURDIR)/wasp/boards/$(BOARD)/manifest.py \
|
FROZEN_MANIFEST=$(CURDIR)/wasp/boards/$(BOARD)/manifest.py \
|
||||||
USER_C_MODULES=$(CURDIR)/wasp/modules
|
USER_C_MODULES=$(CURDIR)/wasp/modules \
|
||||||
|
COPT="-Wno-error"
|
||||||
|
# ^ Disable some Werrors from GCC>=13, specifically
|
||||||
|
# - dangling-pointer
|
||||||
|
# - enum-int-mismatch
|
||||||
|
# TODO update micropython and remove.
|
||||||
|
# https://github.com/wasp-os/wasp-os/issues/493
|
||||||
$(PYTHON) -m nordicsemi dfu genpkg \
|
$(PYTHON) -m nordicsemi dfu genpkg \
|
||||||
--dev-type 0x0052 \
|
--dev-type 0x0052 \
|
||||||
--application micropython/ports/nrf/build-$(BOARD)-s132/firmware.hex \
|
--application micropython/ports/nrf/build-$(BOARD)-s132/firmware.hex \
|
||||||
|
|
|
@ -254,7 +254,7 @@ To launch the simulator:
|
||||||
|
|
||||||
sh$ make sim
|
sh$ make sim
|
||||||
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=.:wasp/boards/simulator:wasp \\
|
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=.:wasp/boards/simulator:wasp \\
|
||||||
python3 -i wasp/main.py
|
python3 -i wasp/boards/simulator/main.py
|
||||||
MOTOR: set on
|
MOTOR: set on
|
||||||
BACKLIGHT: 2
|
BACKLIGHT: 2
|
||||||
Watch is running, use Ctrl-C to stop
|
Watch is running, use Ctrl-C to stop
|
||||||
|
@ -280,8 +280,8 @@ by swiping or using the Arrow keys to bring up the launcher and then clicking
|
||||||
on your application.
|
on your application.
|
||||||
|
|
||||||
The application can also be registered automatically when you load the
|
The application can also be registered automatically when you load the
|
||||||
simulator if you add it to ``wasp/main.py``. Try adding lines 5 and 6 from
|
simulator if you add it to ``wasp/boards/simulator/main.py``. Try adding lines
|
||||||
the above example into this file (between ``import wasp`` and
|
5 and 6 from the above example into this file (between ``import wasp`` and
|
||||||
``wasp.system.run()``).
|
``wasp.system.run()``).
|
||||||
|
|
||||||
The simulator accepts gestures such as up/down and left/right swipes but the
|
The simulator accepts gestures such as up/down and left/right swipes but the
|
||||||
|
|
|
@ -243,9 +243,9 @@ screen, a step counter and a heart rate sensor.
|
||||||
|
|
||||||
wasp-os can be installed directly from the factory default operating
|
wasp-os can be installed directly from the factory default operating
|
||||||
system using an over-the-air update with no tools or disassembly
|
system using an over-the-air update with no tools or disassembly
|
||||||
required. nRF Connect for Android can be used to install both the
|
required. Gadgetbridge for Android can be used to install both the
|
||||||
:ref:`wasp-bootloader<Bootloader nRF Connect>` and the
|
:ref:`wasp-bootloader<Bootloader Gadgetbridge>` and the
|
||||||
:ref:`main OS image<Main OS nRF Connect>`.
|
:ref:`main OS image<Main OS Gadgetbridge>`.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
@ -330,12 +330,12 @@ DaFlasher for Android can be used to install both the
|
||||||
Installing wasp-bootloader
|
Installing wasp-bootloader
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
.. _Bootloader nRF Connect:
|
.. _Bootloader Gadgetbridge:
|
||||||
|
|
||||||
nRF Connect for Android
|
Gadgetbridge for Android
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
For Pine64 PineTime devices running Infinitime then nRF Connect for Android
|
For Pine64 PineTime devices running Infinitime then Gadgetbridge for Android
|
||||||
can be used to install wasp-bootloader:
|
can be used to install wasp-bootloader:
|
||||||
|
|
||||||
* Ensure the watch is fully charged before attempting to install the
|
* Ensure the watch is fully charged before attempting to install the
|
||||||
|
@ -343,12 +343,14 @@ can be used to install wasp-bootloader:
|
||||||
sealed devices.
|
sealed devices.
|
||||||
* Copy ``reloader-mcuboot.zip`` (see :ref:`Building wasp-os from source`) to
|
* Copy ``reloader-mcuboot.zip`` (see :ref:`Building wasp-os from source`) to
|
||||||
your Android device and download
|
your Android device and download
|
||||||
`nRF Connect <https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp>`_
|
`Gadgetbridge <https://f-droid.org/en/packages/nodomain.freeyourgadget.gadgetbridge/>`_
|
||||||
for Android if you do not already have it.
|
for Android if you do not already have it.
|
||||||
* Wake the device so that Infinitime is showing a watch face.
|
* Wake the device so that Infinitime is showing a watch face.
|
||||||
* Connect to the *Infinitime* device usnig nRF Connect, click the DFU button
|
* Connect to the *Infinitime* device usnig Gadgetbridge, tap on the "+" button on the
|
||||||
and send ``reloader-mcuboot.zip`` to the device.
|
bottom right of the screen to add a new device, *Infinitime* should be detected.
|
||||||
* When the progress meter reaches 100% the nRF Connect will disconnect
|
* Tap on it and Gadgdetbridge will pair and connect to your device. Use the file browser
|
||||||
|
application and find and send ``reloader-mcuboot.zip`` to the device.
|
||||||
|
* When the progress meter reaches 100% Gadgetbridge will disconnect
|
||||||
and the watch will reboot.
|
and the watch will reboot.
|
||||||
* The watch will boot the reloader application which draws a small blue
|
* The watch will boot the reloader application which draws a small blue
|
||||||
pine cone in the centre of the screen. The pine cone acts a progress
|
pine cone in the centre of the screen. The pine cone acts a progress
|
||||||
|
@ -366,9 +368,11 @@ can be used to install wasp-bootloader:
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
If you want to restore the PineTime factory firmware then you can
|
If you want to restore the PineTime factory firmware then you can
|
||||||
use nRF Connect to do this. Perform a long press reset and then
|
use Gadgetbridge to do this. Perform a long press reset and then
|
||||||
use nRF Connect to send ``reloader-factory.zip`` to the *PineDFU*
|
use Gadgetbridge to send ``reloader-factory.zip`` to the *PineDFU*
|
||||||
device.
|
device. GadgetBridge may list *PINE DFU* as an unsupported device.
|
||||||
|
See the work around at the end of
|
||||||
|
:ref:`main OS image<Main OS Gadgetbridge>`.
|
||||||
|
|
||||||
.. _Bootloader DaFlasher:
|
.. _Bootloader DaFlasher:
|
||||||
|
|
||||||
|
@ -465,23 +469,35 @@ logo and wait for a OTA update.
|
||||||
Installing wasp-os
|
Installing wasp-os
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
.. _Main OS nRF Connect:
|
.. _Main OS Gadgetbridge:
|
||||||
|
|
||||||
nRF Connect for Android
|
Gadgetbridge for Android
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
To install the main firmware using nRF Connect for Android:
|
To install the main firmware using Gadgetbridge for Android:
|
||||||
|
|
||||||
* Copy ``micropython.zip`` (see :ref:`Building wasp-os from source`) to
|
* Copy ``micropython.zip`` (see :ref:`Building wasp-os from source`) to
|
||||||
your Android device and download
|
your Android device and download
|
||||||
`nRF Connect <https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp>`_
|
`Gadgetbridge <https://f-droid.org/en/packages/nodomain.freeyourgadget.gadgetbridge/>`_
|
||||||
for Android if you do not already have it.
|
for Android if you do not already have it.
|
||||||
* Ensure the watch is running in :ref:`OTA update mode<OTA update mode>`.
|
* Ensure the watch is running in :ref:`OTA update mode<OTA update mode>`.
|
||||||
* Connect to the device (e.g. *PineDFU* if you have a PineTime) using
|
* Connect to the device (e.g. *PineDFU* if you have a PineTime) using
|
||||||
nRFConnect, click the DFU button and send ``micropython.zip`` to the device.
|
Gadgetbridge, use the file browser application and send ``micropython.zip`` to the
|
||||||
|
device.
|
||||||
* When the upload is complete the watch will reboot and launch the digital
|
* When the upload is complete the watch will reboot and launch the digital
|
||||||
clock application.
|
clock application.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
GadgetBridge may list PINE DFU as an unsupported device. This prevents users from
|
||||||
|
sending the ``micropython.zip`` file to the device. Do the following to work around
|
||||||
|
this: In GadgetBridge, go to discovery and pairing options and allow unsupported
|
||||||
|
devices.
|
||||||
|
|
||||||
|
The Pinetime will show up as an unsupported device. Long-press it and select Add
|
||||||
|
as a test device. A list of devices will show up. Scroll down to Pinetime and select
|
||||||
|
it. The device will be added and you then can upload the ``micropython.zip`` file.
|
||||||
|
|
||||||
.. _Main OS DaFlasher:
|
.. _Main OS DaFlasher:
|
||||||
|
|
||||||
DaFlasher for Android
|
DaFlasher for Android
|
||||||
|
@ -584,8 +600,14 @@ A default version of ``main.py`` is installed automatically when wasp-os initial
|
||||||
formats the external flash as a file system.
|
formats the external flash as a file system.
|
||||||
|
|
||||||
Most problems with normal mode operation occur either because ``main.py`` is
|
Most problems with normal mode operation occur either because ``main.py`` is
|
||||||
missing, out-of-date or corrupt. These issues most commonly result in an
|
missing, out-of-date or corrupt, or because too many applications are being started
|
||||||
entirely black screen when running the watch is running in normal mode.
|
by default, resulting in the system running out of RAM.
|
||||||
|
|
||||||
|
Out of memory problems are best addressed by reducing the number of applications you
|
||||||
|
have set to automatically load (auto_load in wasp.toml). If you are developing your
|
||||||
|
own application, it is best that you load the minimal set of applications to have
|
||||||
|
the maximum possible amount of available RAM and minimum fragmentation. For example,
|
||||||
|
only autoloading the software app will get you the maximum amount of RAM.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,9 @@ let
|
||||||
ifLinux = pkgs.lib.optionals pkgs.stdenv.isLinux;
|
ifLinux = pkgs.lib.optionals pkgs.stdenv.isLinux;
|
||||||
|
|
||||||
in pkgs.mkShell {
|
in pkgs.mkShell {
|
||||||
|
buildInputs = ifLinux [
|
||||||
|
pkgs.gobject-introspection
|
||||||
|
];
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
(pkgs.python3.withPackages (pp: with pp; [
|
(pkgs.python3.withPackages (pp: with pp; [
|
||||||
cbor
|
cbor
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 5572b01b26e04c7f8c79e8407f4d202e7258bf6b
|
Subproject commit 0e95be2ed0ddc21ea0c833fe0497e175a132524c
|
|
@ -1 +1 @@
|
||||||
Subproject commit b968b2530440afae8b555613e89b1240afcf4da2
|
Subproject commit 2c41c396adc80ee0c09f7cc7263f162c0f508d59
|
Loading…
Reference in a new issue