diff --git a/README.md b/README.md index 6ae0dd7fb75543ae023f0f1111450f4ce03bc4de..210476038edf157eab4bc0b38db5df7030714495 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,50 @@ -# RPi-Zero-Videowall +# Aktueller Stand Der aktuelle Stand is wild and chaotic. -Vor der Weiterentwicklung müsste man sich noch Mal in die build pipeline reinlesen, das war immer großer Krampf. Der code hängt von irgendwelchen Bibliotheken ab, bin unsicher welche gerade. +Aktuell existiert ein funktionierendes C-Programm, das einen Buffer für Pixeldaten bereitstellt, einen TCP-Server öffnet und die Pixel aus dem Buffer direkt an den VGA-Ausgang schickt. + +Der TCP-Server nimmt Pixeldaten als rohe bytes aus Paketen entgegen und speichert diese direkt in den Buffer. + +Da der Buffer durchgängig über VGA gerendert wird, kann man so durch gehend das aktuelle Bild sehen. + +Der code hängt von irgendwelchen Bibliotheken ab, bin unsicher welche gerade. In den pico-examples und den pico-extras findet man aber Code, der sehr ähnlich ist. +Die Build-Pipeline war immer sehr wackelig und ich hab nicht ganz verstanden was da passierte... + + +# Rewrite in Rust + +Ich würde gerne Rust lernen, das ist eine Sprache etwa auf der gleichen Abstraktionsebene wie C++. +Mit Rust könnte die Build-Pipeline etwas einfacher/ordentlicher werden. Da nerven keine Makefiles und man muss nich wissen was nen Headerfile is, omg C ist SO ALT. + +Die Roadmap dafür ist aktuell: + +- [] Blinky: on board LED blinken lassen mit Rust Programm +- [] Netzwerk: mit dem Netzwerk-Chip kommunizieren +- [] VGA: pixeldaten über das VGA-Board an den Anschluss senden, noch keine Bild-Generierungs-Logik, nur erstmal schauen, obs klappt +- [] SD-Karte: schauen wie daten auf die Karte geschrieben / von der Karte gelesen werden + + +## Ressourcen und Notizen + +Der Chip auf dem Pico ist ein RP2040. + +"rust runs on EVERYTHING (no operating system, just Rust)" von Low Level +Kleine Anleitung Blinky in Rust auf den R-Pi Pico zu übersetzen. Benutzt rp2040_hal +https://www.youtube.com/watch?v=Yi0WRF5WPFw + +rp2040_hal: Der Hardware Abstraction Layer ist eine Rust-Bibliothek (Crate), die die Kommunikation mti dem rp2040-Chip vereinfacht/ermöglicht. +https://docs.rs/rp2040-hal/latest/rp2040_hal/ + +Embassy: Ein Framework für Microcontroller. Hier gibt es einiges um mit der Netzwerk-Hardware zu arbeiten. Das könnte sehr gut sein. +Außerdem zielen die drauf ab parallele Ausführung (async) zu verwenden. Was wichtig werden könnte. Wie sich Embassy mit dem R-Pi verhält weiß ich noch nicht. +https://embassy.dev/ + -Wenn die builds wieder gut klappen, könnte man folgendes weiter umsetzen: +# Ziele für die kommende Version -- UDP statt TCP, aber muss man vielleicht nochmal abwägen, is auch nich so wichtig hm -- Validierungsmechanismus, dass wirklich alle Pixel-Zeilen angekommen sind -- anderer Ansatz für das buffering -- Lesen von Bildern von der SD-Karte -- Speichern von Netzwerk-Übertragenenen Bildern auf die SD-Karte +- Steuerprogramm für den Show-Rechner/Kontroll-Rechner +- Mehrere Bilder auf der SD-Karte speichern +- Uhr auf dem Pi +- Bilder nach Uhrzeit anzeigen \ No newline at end of file