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 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 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 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 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 die zur Ansteuerung des TonBERRY dient anzubieten wird das
[microdot](https://github.com/miguelgrinberg/microdot) web framework eingesetzt. [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 Die Webanwendung selber ist eine mit (TODO: Javascript, CSS frameworks evaluieren) implementierte
Webseite, die modernen Designrichtlinien entspricht und somit sowohl auf Handybildschirmen als auch Webseite, die modernen Designrichtlinien entspricht und somit sowohl auf Handybildschirmen als auch
an Desktop- oder Laptop-PCs benutzbar ist. an Desktop- oder Laptop-PCs benutzbar ist.