micropython asyncio in software architektur eingebaut

2024-04-17 17:08:32 +00:00
parent 81091998cf
commit 04d046e228

@@ -34,7 +34,7 @@ Mögliche Optionen:
Auf dem RP2040-Controller wird [MicroPython](https://micropython.org/) eingesetzt. MicroPython
zusammen mit dem [Raspberry Pi Pico SDK](https://github.com/raspberrypi/pico-sdk) bietet
Unterstützung für WLAN und Bluetooth, SD-Karten-zugriff (TODO: Evaluieren).
Unterstützung für WLAN und Bluetooth, SD-Karten-Zugriff.
Ein MP3-Dekoder sowie ein Treiber für den I2S-DAC laufen außerhalb von MicroPython auf dem zweiten
Prozessor des RP2040, um die Audioausgabe ohne Aussetzer sicherzustellen. Die Ansteuerung des
@@ -53,6 +53,12 @@ Um die als Webanwendung angebotene Benutzeroberfläche des TonBERRY auszuliefern
die zur Ansteuerung des TonBERRY dient anzubieten wird das
[microdot](https://github.com/miguelgrinberg/microdot) web framework eingesetzt.
Um die verschiedenen Aktivitäten "simultan" auszuführen wird das asyncio Modul benutzt.
- MBL: Einfacher zu implementieren und meiner Meinung nach auch einfacher zu verstehen als Multithreading mit einem RTOS. Und schöner vom code als eine manuell geschriebene Event-Loop die zwischen den ganzen Aktivitäten multiplext.
- (verifizieren) Der TCP/IP stack und microdot unterstützen asyncio bereits
- Der SDcard und damit vermutlich auch vfat Treiber müssen um asyncio support erweitert werden. Dem SDcard treiber sollte man an der stelle vermutlich auch DMA support beibringen.
- Alles weitere (z.b. Tastendrücke, events vom MP3-Player) können vermutlich recht einfach über interrupt-handler und [ThreadSafeFlag](https://docs.micropython.org/en/latest/library/asyncio.html#class-threadsafeflag) eingebunden werden.
Die Webanwendung selber ist eine mit (TODO: Javascript, CSS frameworks evaluieren) implementierte
Webseite, die modernen Designrichtlinien entspricht und somit sowohl auf Handybildschirmen als auch
an Desktop- oder Laptop-PCs benutzbar ist.