Oliver Fabel 1 год назад
Родитель
Сommit
4179f75058
8 измененных файлов с 60 добавлено и 21 удалено
  1. 17 1
      CHANGELOG.md
  2. 5 1
      Makefile
  3. 34 17
      README.md
  4. 3 1
      application.fam
  5. BIN
      assets/file-browser.png
  6. BIN
      assets/qflipper.png
  7. BIN
      assets/tic-tac-toe.png
  8. 1 1
      lib/micropython

+ 17 - 1
CHANGELOG.md

@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 
+## [0.4.0-beta.1] - 2024-04-14
+
+### Added
+
+* [Library](https://github.com/ofabel/mp-flipper/tree/lib) to include in the [firmware repository](https://github.com/ofabel/flipperzero-firmware).
+* All generated files from the build prozess are now [part of the repository](https://github.com/ofabel/mp-flipper/tree/lib-release).
+* Enabled split heap support for MicroPython:
+  * The runtime can allocate and free heap memory.
+  * Allows to start the Python process with small heap.
+* Enabled scheduler support (required for interrupt handling).
+* Enabled support for module `__init__` functions.
+* Stabilized `flipperzero` module API:
+  * Canvas support has now a proper implementation.
+  * Interrupts from buttons are supported.
+
 ## [0.3.0-alpha.1] - 2024-04-04
 
 ### Added
@@ -36,7 +51,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 * Basic build setup
 * Minimal working example
 
-[Unreleased]: https://github.com/ofabel/mp-flipper/compare/v0.3.0-alpha.1...HEAD
+[Unreleased]: https://github.com/ofabel/mp-flipper/compare/v0.4.0-beta.1...HEAD
+[0.4.0-beta.1]: https://github.com/ofabel/mp-flipper/compare/v0.3.0-alpha.1...v0.4.0-beta.1
 [0.3.0-alpha.1]: https://github.com/ofabel/mp-flipper/compare/v0.2.0-alpha.1...v0.3.0-alpha.1
 [0.2.0-alpha.1]: https://github.com/ofabel/mp-flipper/compare/v0.1.0-alpha.1...v0.2.0-alpha.1
 [0.1.0-alpha.1]: https://github.com/ofabel/mp-flipper/releases/tag/v0.1.0-alpha.1

+ 5 - 1
Makefile

@@ -1,5 +1,9 @@
+.PHONY: update
+update:
+	git submodule update --remote lib/micropython && git add lib/micropython
+
 .PHONY: build
-build:
+build: update
 	ufbt build
 
 .PHONY: launch

+ 34 - 17
README.md

@@ -1,10 +1,9 @@
 # MicroPython Flipper Zero
 
-This branch contains the research of adding [Python](https://www.python.org) support to the famous [Flipper Zero](https://flipperzero.one/) gadget.
-~~The content of this repository is just work in progress at the moment.
-But the first working examples already look promising.~~
-The research phase was successful and the development has moved to a [fork of the original firmware](https://github.com/ofabel/flipperzero-firmware).
+This branch contains the [FAP](https://developer.flipper.net/flipperzero/doxygen/apps_on_sd_card.html) version of the [MicroPython](https://micropython.org/) support for the famous [Flipper Zero](https://flipperzero.one/) gadget.
+The results of the preceding research phase is still available in the [poc](https://github.com/ofabel/mp-flipper/tree/poc) branch.
 The [lib](https://github.com/ofabel/mp-flipper/tree/lib) branch of this repository contains just the MicroPython library.
+The progress of further research on what can be achieved when moving functionality to the firmware can be found in the [fork of the original firmware](https://github.com/ofabel/flipperzero-firmware).
 
 Check the progress in this [issue](https://github.com/flipperdevices/flipperzero-firmware/issues/3559) and feel free to share your thoughts and ideas.
 
@@ -12,13 +11,8 @@ Check the progress in this [issue](https://github.com/flipperdevices/flipperzero
 
 * [Git](https://git-scm.com/)
 * [Make](https://www.gnu.org/software/make/)
-* [uFBT](https://pypi.org/project/ufbt/) available in your `PATH` (or you have to adjust the [Makefile](./Makefile)
-* [Flipper Zero](https://flipperzero.one/) (tested with firmware version 0.99.1 and 0.100.3)
-
-For compiling MicroPython, you will also need:
-
-* [gcc](https://gcc.gnu.org/)
-* [Arm GNU Toolchain](https://developer.arm.com/Tools%20and%20Software/GNU%20Toolchain) (e.g. `gcc-arm-none-eabi` on Ubuntu)
+* [uFBT](https://pypi.org/project/ufbt/) available in your `PATH` (or you have to adjust the [Makefile](./Makefile))
+* [Flipper Zero](https://flipperzero.one/) (tested with firmware versions 0.99.1 and 0.100.3)
 
 ## Setup
 
@@ -28,7 +22,7 @@ git clone --recurse-submodules git@github.com:ofabel/mp-flipper.git
 
 ## Build
 
-Since this application requires a 3th party library, more than just a simple `ufbt build` is needed to build the application:
+Just open a terminal and run the Makefile targets:
 
 ```bash
 make build
@@ -40,13 +34,36 @@ You can also build an launch the application on the attached Flipper Zero device
 make launch
 ```
 
+## Install
+
+To install a [release](https://github.com/ofabel/mp-flipper/releases) by hand, just copy the `mp_flipper_app.fap` file on the SD card of your flipper (e.g. using the [qFlipper](https://flipperzero.one/downloads) app):
+
+![](./assets/qflipper.png)
+
+You should now be able to start the application on your Flipper: Apps > Tools > uPython
+
+_You might need to unconnect qFlipper first to free some space in SRAM._
+
 ## Usage
 
-The application just starts with an open file browser.
-Here you can select any Python file to compile and execute from the SD card.
+Just place your Python files somewhere on the SD card.
+
+The application just starts with an open file browser:
+
+![](./assets/file-browser.png)
+
+Here you can select any Python file to compile and execute from the SD card:
+
+![](./assets/tic-tac-toe.png)
 
 ## Disclaimer
 
-**This is work in progress and just a proof of concept.**
-The produced application has very limited functionality at the moment and since the whole application runs in the SRAM there is not much space left.
-However, the Python application itself can use about 16 kB of heap space (minus up to 2 kB for the stack).
+This FAP version requires about 120 kB from SRAM to start (needed for the Python runtime and compiler).
+Due to memory fragmentation it's possible, that the application crashes when you start it (tested with the original 0.100.3 firmware).
+If this happens, just try again (the crash doesn't harm your device).
+
+**This is still work in progress, but already more than just a proof of concept.**
+
+There is no documentation of the `flipperzero` module.
+Just checkout the [examples](./examples/) for the syntax.
+Sadly, REPL support is only available in fhe [firmware fork](https://github.com/ofabel/flipperzero-firmware) version.

+ 3 - 1
application.fam

@@ -4,7 +4,9 @@ App(
     apptype=FlipperAppType.EXTERNAL,
     entry_point="mp_flipper_app",
     stack_size=4 * 1024,
-    fap_category="Examples",
+    fap_category="Tools",
+    fap_version="0.4",
+    fap_description="compile and execute MicroPython scripts",
     fap_icon="icon.png",
     fap_author="Oliver Fabel",
     fap_file_assets="examples",

BIN
assets/file-browser.png


BIN
assets/qflipper.png


BIN
assets/tic-tac-toe.png


+ 1 - 1
lib/micropython

@@ -1 +1 @@
-Subproject commit 13bb8bc514b4c2e76fe8745c66e951c8c8f93617
+Subproject commit 3d8dde824a20a2b51825f7c8047fc6b81f164ee2