LVGL 01 Bindings

Aus Micropython
Zur Navigation springen Zur Suche springen

LVGL-MicroPython-Bindings: Überblick[Bearbeiten | Quelltext bearbeiten]

LVGL ist eine in C geschriebene GUI-Bibliothek. Um sie aus MicroPython heraus nutzen zu können, braucht es ein Binding: generierten Wrapper-Code, der die C-API von LVGL als Python-Modul verfügbar macht (z. B. lv.obj() statt lv_obj_create()).

Für MicroPython existieren dabei zwei getrennte, nicht kompatible Entwicklungslinien. Dieses Handbuch bezieht sich ausschließlich auf Linie 2 (kdschlosser's lvgl_micropython).

Linie 1: Das offizielle LVGL-Projekt[Bearbeiten | Quelltext bearbeiten]

lv_binding_micropython
Der eigentliche Binding-Code ("lib"). Kein eigenständiges MicroPython, sondern das Bindeglied zwischen LVGL und MicroPython. Repository: https://github.com/lvgl/lv_binding_micropython
lv_micropython
Ein Fork des offiziellen MicroPython-Repos, der lv_binding_micropython als Submodule einbindet und fertige Ports für ESP32, STM32, RP2 und Unix bereitstellt. Ursprünglich als Referenzbeispiel gedacht, hat sich aber zum von den meisten Nutzern bevorzugten Weg entwickelt, weil kaum jemand die Bindings selbst in einen eigenen MicroPython-Fork integrieren möchte. Repository: https://github.com/lvgl/lv_micropython

Diese Linie stellt die Event-Loop über lv_utils.event_loop bereit.

Linie 2: kdschlosser's lvgl_micropython[Bearbeiten | Quelltext bearbeiten]

Kein Fork von lv_binding_micropython, sondern eine eigenständige Neuentwicklung, mittlerweile unter der GitHub-Organisation lvgl-micropython gepflegt (ursprünglich ein persönliches Projekt von kdschlosser). Repository: https://github.com/lvgl-micropython/lvgl_micropython

Schwerpunkte gegenüber Linie 1:

  • Eigenes Build-System (make.py) statt klassischer MicroPython-Makefiles
  • Eigene Bus-Abstraktion (lcd_bus-Modul) für die Kommunikation mit Display-Controllern, inklusive Framebuffer-Verwaltung (MEMORY_INTERNAL / MEMORY_DMA)
  • Deutlich breitere Treiberauswahl direkt verfügbar (u. a. ST7789, ST7796, ILI9341, XPT2046, FT6X36), ohne eigenen C-Code
  • Eigenes task_handler-Modul für die Event-Loop
  • Fokus auf LVGL v9 und aktuelle Consumer-Boards (CYD, JC-Serie, WT32-SC01 u. a.)
  • Aktiv gepflegt, reaktiver Maintainer im LVGL-Forum

Dies ist die Codebasis, die für alle Anleitungen in diesem Handbuch verwendet wird.

Gegenüberstellung[Bearbeiten | Quelltext bearbeiten]

lv_binding_micropython (offiziell) lvgl_micropython (kdschlosser)
Event-Loop-Helfer lv_utils.event_loop task_handler.TaskHandler
Low-Level-Aufruf lv.task_handler() lv.task_handler()
Build-System MicroPython-Makefiles make.py
Bus / Framebuffer treiberspezifisch, meist in C lcd_bus-Modul, Python-seitig konfigurierbar
Zielgruppe generische MicroPython-Ports aktuelle Consumer-Boards (u. a. CYD)

Relevanz für dieses Handbuch[Bearbeiten | Quelltext bearbeiten]

Da beide Linien unterschiedliche Modulnamen und Architekturen für dieselben Grundkonzepte verwenden, gilt beim Nachschlagen externer Beispiele: Stammt ein gefundenes Codebeispiel aus lv_binding_micropython / lv_micropython, sind Details wie die Event-Loop (lv_utils.event_loop) nicht direkt übertragbar auf die in diesem Handbuch verwendete Codebasis. Maßgeblich sind ausschließlich Beispiele aus dem Repository lvgl-micropython/lvgl_micropython.