kopia lustrzana https://github.com/peterhinch/micropython-micro-gui
README.md: Add frozen bytecode appendix.
rodzic
b2e34a72e2
commit
09451fb222
42
README.md
42
README.md
|
@ -147,6 +147,7 @@ development so check for updates.
|
||||||
8. [ESP32 touch pads](./README.md#8-esp32-touch-pads) Replacing buttons with touch pads.
|
8. [ESP32 touch pads](./README.md#8-esp32-touch-pads) Replacing buttons with touch pads.
|
||||||
9. [Realtime applications](./README.md#9-realtime-applications) Accommodating tasks requiring fast RT performance.
|
9. [Realtime applications](./README.md#9-realtime-applications) Accommodating tasks requiring fast RT performance.
|
||||||
[Appendix 1 Application design](./README.md#appendix-1-application-design) Tab order, button layout, encoder interface, use of graphics primitives
|
[Appendix 1 Application design](./README.md#appendix-1-application-design) Tab order, button layout, encoder interface, use of graphics primitives
|
||||||
|
[Appendix 2 Freezing bytecode](./README.md#appendix-2-freezing-bytecode) Optional way to save RAM.
|
||||||
|
|
||||||
# 1. Basic concepts
|
# 1. Basic concepts
|
||||||
|
|
||||||
|
@ -413,6 +414,7 @@ There is scope for speeding loading and saving RAM by using frozen bytecode.
|
||||||
The entire `gui` tree may be frozen but the directory structure must be
|
The entire `gui` tree may be frozen but the directory structure must be
|
||||||
maintained. For reasons that are unclear freezing display drivers does not
|
maintained. For reasons that are unclear freezing display drivers does not
|
||||||
work. For fexibility, consider keeping `hardware_setup.py` in the filesystem.
|
work. For fexibility, consider keeping `hardware_setup.py` in the filesystem.
|
||||||
|
See [Appendix 2 Freezing bytecode](./README.md#appendix-2-freezing-bytecode).
|
||||||
|
|
||||||
###### [Contents](./README.md#0-contents)
|
###### [Contents](./README.md#0-contents)
|
||||||
|
|
||||||
|
@ -3079,3 +3081,43 @@ micro-gui.
|
||||||
The `primitives.py` demo provides a simple example.
|
The `primitives.py` demo provides a simple example.
|
||||||
|
|
||||||
###### [Contents](./README.md#0-contents)
|
###### [Contents](./README.md#0-contents)
|
||||||
|
|
||||||
|
## Appendix 2 Freezing bytecode
|
||||||
|
|
||||||
|
This achieves a major saving of RAM. The correct way to do this is via a
|
||||||
|
[manifest file](http://docs.micropython.org/en/latest/reference/manifest.html).
|
||||||
|
The first step is to clone MicroPython and prove that you can build and deploy
|
||||||
|
firmware to the chosen platform. Build instructions vary between ports and can
|
||||||
|
be found in the MicroPython source tree in `ports/<port>/README.md`.
|
||||||
|
|
||||||
|
The following is an example of how the entire
|
||||||
|
GUI with fonts, demos and all widgets can be frozen on RP2.
|
||||||
|
|
||||||
|
Build script:
|
||||||
|
```bash
|
||||||
|
cd /mnt/qnap2/data/Projects/MicroPython/micropython/ports/rp2
|
||||||
|
MANIFEST='/mnt/qnap2/Scripts/manifests/rp2_manifest.py'
|
||||||
|
|
||||||
|
make submodules
|
||||||
|
make clean
|
||||||
|
if make -j 8 BOARD=PICO FROZEN_MANIFEST=$MANIFEST
|
||||||
|
then
|
||||||
|
echo Firmware is in build-PICO/firmware.uf2
|
||||||
|
else
|
||||||
|
echo Build failure
|
||||||
|
fi
|
||||||
|
cd -
|
||||||
|
```
|
||||||
|
Manifest file contents (first line ensures that the default files are frozen):
|
||||||
|
```python
|
||||||
|
include("$(MPY_DIR)/ports/rp2/boards/manifest.py")
|
||||||
|
freeze('/mnt/qnap2/Scripts/modules/rp2_modules')
|
||||||
|
```
|
||||||
|
The directory `/mnt/qnap2/Scripts/modules/rp2_modules` contains only a symlink
|
||||||
|
to the `gui` directory of the `micropython-micro-gui` source tree. The freezing
|
||||||
|
process follows symlinks and respects directory structures.
|
||||||
|
|
||||||
|
It is usually best to keep `hardware_setup.py` unfrozen for ease of making
|
||||||
|
changes. I also keep the display driver and `boolpalette.py` in the filesystem
|
||||||
|
as I have experienced problems freezing display drivers - but feel free to
|
||||||
|
experiment.
|
||||||
|
|
Ładowanie…
Reference in New Issue