Ich will in einem RasPI-Projekt Text und Grafiken auf einem LCD ausgeben, aber nicht notwendigerweise im Sinne einer Desktopanwendung.
Ich habe mir dafür ein Waveshare 3.5" LCD (B V2 version , IPS, 480×320) besorgt. Hauptgründe für dieses Display waren das IPS-Display und die Steuerung der Hintergrundbeleuchtung über PWM.
https://www.waveshare.com/wiki/3.5inch_RPi_LCD_(B)
Eigentlich hatte ich ursprünglich nicht vor, das Display zur Anzeige der Konsole und/oder des Desktops zu verwenden, aber um es mal auszuprobieren, habe ich auch mal versucht, es laut Anleitung zu installieren.
Weil ich meinen Pi Zero 2 W erst gerade eben aufgesetzt habe, wurde mir BookWorm 64bit empfohlen, also habe ich das installiert.
Neben anderen Problemen führt das leider dazu, daß die einfache Installation des Treibers nicht funktioniert.
Ich habe mich dann durch diese etwas verworrene manuelle Konfiguration gekämpft, bei der auch so einiges nicht auf Anhieb geklappt hat:
https://www.waveshare.com/wiki…_(B)_Manual_Configuration
Aber am Ende wurde mir eine Konsole angezeigt. Hatte zu diesem Zeitpunkt auch "Boot to CLI (o.ä.)" ausgewählt. Umschalten auf den Desktop hat nicht funktioniert. Teils bin ich dann auch nicht mehr per SSH auf den RasPi gekommen.
Also habe ich wieder auf "Boot to CLI" umgestellt und mal spaßeshalber versucht, mit "cp /dev/random /dev/fb1" in den Frame Buffer zu schreiben. Das hat im Prinzip funktioniert, aber ein Zeichen wurde wieder von der Konsole überschrieben.
Vor allem aber hat in dieser Kombination der Login über SSH extrem lange gedauert (10 Sekunden oder so statt sofort). Ich vermute, daß es irgendwie daran liegt, daß der Treiber nur mit X11 funktionieren würde, aber die Umstellung auf X11 unter den neuesten Bookwork-Versionen nicht mehr funktioniert. Oder was auch immer.
Nun war Bookwork 64bit anscheinend auch Anfang 2025 noch eine schlechte Wahl, wenn man damit eigentlich überall nur Probleme bekommt, aber eigentlich wollte ich das Display ja eh nur "direkt" ansteuern. Schreiben in den Framebuffer klang zwar irgendwie verlockend, aber direkte Kontrolle über die zu schickenden Daten ist vermutlich eh besser. Nun benutzt mein Display anscheinend einen ILI9486 und keinen IlI9341, den ich schon bei diversen Mikrocontrollerprojekten benutzt hatte, aber irgendwie bin ich davon ausgegangen, daß es da auch diverse Bibliotheken für den RasPi geben müßte. Gibt es aber anscheinend nicht. Schon gar nicht als Teil von WiringPi (will ja in C programmieren).
Was mich zum meiner eigentlichen Frage bringt: was ist der beste/einfachste Weg, ein SPI-LCD auf dem RasPi als Ausgabe für ein einziges Programm zu benutzen (am Ende wird nur dieses Programm direkt beim Booten gestartet)? Speziell wenn man in C programmieren will.
Anscheinend scheinen 99.9% der Leute über einen Treiber und den Framebuffer zu gehen. Gibt es dafür einen speziellen Grund? Es erscheint mir irgendwie bizarr, ein winziges Display mit niedriger Auflösung zur Darstellung der Konsole oder des Desktops zu verwenden.
Und auf einem "nackten" Mikrocontroller ohne Linux würde man natürlich direkt per SPI Befehle schicken.