Update README.md

This commit is contained in:
Thomas Farstrike
2025-06-15 09:34:45 +02:00
parent 2229fc876c
commit 20d42a94f7
+43 -21
View File
@@ -10,25 +10,37 @@ The architecure is inspired by the Android operating system for smartphones:
- 'everything is an app' idea - 'everything is an app' idea
- making it as simple as possible for developers to build new apps - making it as simple as possible for developers to build new apps
## Installation
See https://install.MicroPythonOS.com
## Apps ## Apps
The operating system comes with a few apps built-in that are necessary to bootstrap: The operating system comes with a few apps built-in that are necessary to bootstrap:
- launcher: to be able to start apps - launcher: to be able to start apps
- wificonf: to be able to connect to the wifi - wificonf: to be able to connect to the wifi
- appstore: to be able to download and install new apps - appstore: to be able to download and install new apps
Furthermore, these apps are also built-in for convenience:
- osupdate: to download and install operating system updates - osupdate: to download and install operating system updates
- camera: to take pictures and videos
- imutest: to test the Inertial Measurement Unit (accelerometer) Other apps are available in the AppStore.
See https://apps.MicroPythonOS.com/
## Supported hardware ## Supported hardware
### ESP32 computers
- https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-2 - https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-2
### Desktop computers
- Linux desktop (uses SDL)
- MacOS should work. Untested.
### Raspberry Pi
- Should work, especially if it's running a Linux desktop like Raspbian. Untested.
## Architecture ## Architecture
- boot.py: initializes the hardware - boot.py: initializes the hardware on ESP32 / boot_unix.py: initializes the hardware on linux desktop
- main.py: initializes the User Interface, contains helper functions for apps, and starts the launcher app - main.py: initializes the User Interface, contains helper functions for apps, and starts the launcher app
## Filesystem layout: ## Filesystem layout:
@@ -41,52 +53,59 @@ Furthermore, these apps are also built-in for convenience:
- /builtin/: read-only filesystem that's compiled in and mounted at boot by main.py - /builtin/: read-only filesystem that's compiled in and mounted at boot by main.py
- /builtin/apps: apps that are builtin and necessary for minimal facilities (launcher, wificonf, appstore etc) - /builtin/apps: apps that are builtin and necessary for minimal facilities (launcher, wificonf, appstore etc)
- /builtin/res/mipmap-mdpi/default_icon_64x64.bin: default icon for apps that don't have one - /builtin/res/mipmap-mdpi/default_icon_64x64.bin: default icon for apps that don't have one
- /data/: place where apps store their data
- /data/images/: place where apps (like the camera) store their images
- /data/com.example.app1/: storage (usually config.json) specific to com.example.app1
# Building # Building
Prepare all the sources: Prepare all the sources:
``` ```
mkdir ~/sources/ mkdir ~/MicroPythonOS
cd ~/sources/ cd ~/MicroPythonOS
git clone https://github.com/MicroPythonOS/MicroPythonOS.git git clone https://github.com/MicroPythonOS/MicroPythonOS.git
git clone https://github.com/bixb922/freezeFS git clone https://github.com/MicroPythonOS/freezeFS
~/sources/MicroPythonOS/scripts/freezefs_mount_builtin.sh ~/sources/MicroPythonOS/scripts/freezefs_mount_builtin.sh
git clone https://github.com/cnadler86/micropython-camera-API git clone https://github.com/cnadler86/micropython-camera-API
echo 'include("~/sources/lvgl_micropython/build/manifest.py")' >> micropython-camera-API/src/manifest.py echo 'include("~/sources/lvgl_micropython/build/manifest.py")' >> micropython-camera-API/src/manifest.py
git clone https://github.com/lvgl-micropython/lvgl_micropython git clone https://github.com/MicroPythonOS/lvgl_micropython
cp ~/sources/MicroPythonOS/patches/lv_conf.h lvgl_micropython/lib/
cd lvgl_micropython/lib/micropython git clone https://github.com/MicroPythonOS/secp256k1-embedded-ecdh
patch -p1 < ~/sources/MicroPythonOS/patches/lvgl_micropython*.patch
``` ```
Start the build:
Start the build for ESP32:
``` ```
~/sources/MicroPythonOS/scripts/build_lvgl_micropython.sh cd ~/projects/MicroPythonOS/MicroPythonOS
```
```
./scripts/build_lvgl_micropython.sh esp32 prod
``` ```
Or if you want to build for development, so without any preinstalled files, do: Or if you want to build for development, so without any preinstalled files, do:
``` ```
~/sources/MicroPythonOS/scripts/build_lvgl_micropython.sh devbuild ./scripts/build_lvgl_micropython.sh esp32 dev
``` ```
Now install it with: Now make sure your ESP32 is in bootloader mode (long-press the BOOT button if you're already running MicroPythonOS) and install it with:
``` ```
~/sources/MicroPythonOS/scripts/flash_over_usb.sh ./scripts/flash_over_usb.sh
``` ```
If you made a 'devbuild', then you probably want to install all files and apps manually: If you made a 'devbuild', then you probably want to install all files and apps manually:
``` ```
~/sources/MicroPythonOS/scripts/install.sh ./scripts/install.sh
``` ```
Release checklist Release checklist
@@ -111,19 +130,22 @@ Building for desktop
Building to run as an app on the Linux desktop or MacOS (untested) is supported. Building to run as an app on the Linux desktop or MacOS (untested) is supported.
To do so, make sure you have the necessary dependencies: To do so, make sure you have the necessary dependencies:
- see https://github.com/lvgl-micropython/ - see https://github.com/MicroPythonOS/lvgl-micropython/
- sudo apt install libv4l-dev # for webcam.c - sudo apt install libv4l-dev # for webcam.c
...and then run: ...and then run:
``` ```
~/sources/MicroPythonOS/scripts/build_lvgl_micropython.sh unix cd ~/projects/MicroPythonOS/MicroPythonOS/
```
./scripts/build_lvgl_micropython.sh unix dev
``` ```
or or
``` ```
~/sources/MicroPythonOS/scripts/build_lvgl_micropython.sh macOS ./scripts/build_lvgl_micropython.sh macOS dev
``` ```
Then to run it, do: Then to run it, do: