Skip to content

Commit

Permalink
update changelog and readme
Browse files Browse the repository at this point in the history
  • Loading branch information
ofabel committed Apr 14, 2024
1 parent 636fdec commit 4179f75
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 21 deletions.
18 changes: 17 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -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
Expand Down
51 changes: 34 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,18 @@
# 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.

## Requirements

* [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

Expand All @@ -28,7 +22,7 @@ git clone --recurse-submodules [email protected]: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
Expand All @@ -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.
4 changes: 3 additions & 1 deletion application.fam
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Binary file added assets/file-browser.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/qflipper.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/tic-tac-toe.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion lib/micropython

0 comments on commit 4179f75

Please sign in to comment.