Raspbian: SainSmart 1.8 "TFT LCD module control
Raspbian: SainSmart 1,8" TFT LCD Modul ansteuern
Das SainSmart 1.8" TFT LCD Modul verwendet den ST7735R Chip, bietet eine Auflösung von 128x160 Pixel und kann über SPI (Serial Peripheral Interface) angesteuert werden. In der folgenden Anleitung wird beschrieben wie Sie dieses Display an Ihren Raspberry Pi anschließen und den Kernel mit der ST7735-Unterstützung kompilieren und installieren. Als Grundlage wird hier das derzeit aktuelle Raspbian Image vom 09.02.2013 (2013-02-09-wheezy-raspbian.zip) verwendet.
Display mit dem Raspberry Pi verbinden
Der folgende Schaltplan soll Ihnen zeigen wie Sie das SainSmart 1,8" TFT LCD Module mit Ihrem Raspberry Pi verbinden.
Kernel-Quellen herunterladen
Damit Sie das Display ansteuern können müssen Sie den Kernel von Raspbian neu kompilieren. Da dieser Vorgang auf dem Raspberry Pi über 6 Stunden dauert soll hier der Kernel auf einem Dual Core System mit Ubuntu 12.04 kompiliert werden. Dieser Vorgang wird als Cross Compile bezeichnet. Sollten Sie dennoch den Kernel auf dem Raspberry Pi kompilieren wollen, lesen Sie bitte die Anleitung Raspbian: Linux Kernel 3.6.11 kompilieren und installieren.
Bevor Sie den Kernel kompilieren können, müssen Sie ein paar Programme installieren welche dazu benötigt werden.
georg@ubuntu1204:~$ sudo apt-get update georg@ubuntu1204:~$ sudo apt-get install gcc-arm-linux-gnueabi make git-core ncurses-dev
Anschließend laden Sie sich den Quellcode des Kernels herunter. Hier wird der Quellcode von Kamal Mostafa verwendet, weil dieser bereits für den ST7735R Chip angepasst wurde.
georg@ubuntu1204:~$ git clone git://github.com/kamalmostafa/raspberrypi-linux.git
Nachdem Sie das Git-Repository heruntergeladen haben, wechseln Sie in das Verzeichnis raspberrypi-linux und checken die Kernelquellen aus.
georg@ubuntu1204:~$ cd raspberrypi-linux georg@ubuntu1204:~/raspberrypi-linux$ git checkout rpi-3.6.y+kamal-st7735fb
Kernel-Konfiguration exportieren
Jetzt benötigen Sie die Konfiguration des Kernels welcher auf Ihrem Raspberry Pi eingesetzt wird. Diese können Sie auf Ihrem Raspberry Pi mit dem folgenden Befehl exportieren.
pi@raspberrypi ~ $ sudo zcat /proc/config.gz > config
Kopieren Sie die erstellte Datei config auf Ihr Ubuntu System. Hierfür können Sie wie in diesem Beispiel scp verwenden.
pi@raspberrypi ~ $ scp config georg@ubuntu1204.home.lan:/home/georg
Kernel-Konfiguration anpassen
Auf Ihrem Ubuntu System verschieben Sie jetzt die übertragene Kernel-Konfiguration in das Verzeichnis mit dem Kernel-Quellcode und benennen die Datei gleichzeitig in .config um.
georg@ubuntu1204:~/raspberrypi-linux$ mv ~/config ~/raspberrypi-linux/.config
Da in der exportierten Kernel-Konfiguration die Einstellungen für den ST7735 Chip fehlen, müssen Sie diese mit Hilfe von make hinzufügen.
georg@ubuntu1204:~/raspberrypi-linux$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-oldconfig
Beantworten Sie für das SainSmart 1,8" TFT LCD Modul die Fragen wie im folgenden Listing gezeigt.
ST7735 LCD panel framebuffer support (FB_ST7735) [N/m/y/?] (NEW) y ST7735 'red tab' panel type? (FB_ST7735_PANEL_TYPE_RED_TAB) [Y/n/?] (NEW) y ST7735 panel has reversed RGB? (FB_ST7735_RGB_ORDER_REVERSED) [N/y/?] (NEW) y ST7735 framebuffer mapping to GPIO/SPI (FB_ST7735_MAP) [Y/n/m/?] (NEW) y ST7735 RST gpio pin number (FB_ST7735_MAP_RST_GPIO) [-1] (NEW) 25 ST7735 D/C gpio pin number (FB_ST7735_MAP_DC_GPIO) [-1] (NEW) 24 ST7735 SPI bus number (FB_ST7735_MAP_SPI_BUS_NUM) [0] (NEW) 0 ST7735 SPI bus chipselect (FB_ST7735_MAP_SPI_BUS_CS) [0] (NEW) 0 ST7735 SPI bus clock speed (Hz) (FB_ST7735_MAP_SPI_BUS_SPEED) [4000000] (NEW) 32000000 ST7735 SPI bus mode (0, 1, 2, or 3) (FB_ST7735_MAP_SPI_BUS_MODE) [0] (NEW) 0
Nachdem Sie die Konfiguration mittels make erweitert wurde müssen Sie noch ein paar manuelle Änderungen vornehmen. Öffnen Sie dazu die .config mit einem Editor.
georg@ubuntu1204:~/raspberrypi-linux$ vi .config
Suchen Sie zuerst nach der folgenden Zeile.
CONFIG_SPI_BCM2708=m
Setzen Sie den Wert von m auf y.
CONFIG_SPI_BCM2708=y
Als nächstes suchen Sie die folgenden Zeilen.
CONFIG_FRAMEBUFFER_CONSOLE=y
- CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
- CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
- CONFIG_FONTS is not set
CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_LOGO=y
Ändern Sie diese wie folgt und speichern anschließend die Datei ab.
CONFIG_FRAMEBUFFER_CONSOLE=y
- CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_FONTS=y CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_LOGO=y
Kernel kompilieren
Mit dem nächsten Befehl wird jetzt der Kernel kompiliert. Da ich hier ein Dual Core System verwende habe ich den Parameter -j 3 angegeben um den Vorgang zu beschleunigen. Sollten Sie ein Single Core System verwenden, müssen Sie diesen Parameter entfernen. Bei einem Quad Core System können Sie stattdessen -j 5 angeben.
georg@ubuntu1204:~/raspberrypi-linux$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k -j 3
Kernelmodule kompilieren
Nachdem Sie den Kernel kompiliert haben müssen Sie noch die Kernelmodule erstellen. Für diese legen Sie zuerst ein eigenes Verzeichnis an.
georg@ubuntu1204:~/raspberrypi-linux$ mkdir ./modules
Kompilieren Sie anschließend die Kernelmodule.
georg@ubuntu1204:~/raspberrypi-linux$ make modules_install ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- INSTALL_MOD_PATH=./modules/
Nach dem Kompilieren sollten Sie die temporären Dateien welche beim Kompilieren erstellt wurden löschen.
georg@ubuntu1204:~/raspberrypi-linux$ rm -rf ./modules/lib/modules/3.6.11+/build ./modules/lib/modules/3.6.11+/source
Kernel und Kernelmodule installieren
Kehren wir wieder zum Raspberry Pi zurück und löschen hier die Verzeichnisse /lib/modules und /lib/firmware.
pi@raspberrypi ~ $ sudo rm -rf /lib/modules /lib/firmware
Anschließend kopieren Sie die soeben kompilierten Kernelmodule auf Ihren Raspberry Pi. In diesem Beispiel holen wir die benötigten Dateien und Verzeichnisse mit scp direkt vom Ubuntu System auf den Raspberry Pi.
pi@raspberrypi ~ $ sudo scp -r georg@ubuntu1204.home.lan:/home/georg/raspberrypi-linux/modules/lib /
Als nächstes müssen wir noch den neuen Kernel in das Verzeichnis /boot kopieren. Auch hier rufen wir die benötigte Datei mit scp vom Ubuntu System ab.
pi@raspberrypi ~ $ sudo scp -r georg@ubuntu1204.home.lan:/home/georg/raspberrypi-linux/arch/arm/boot/Image /boot/kernel.img
Kernel laden
Da wir jetzt den Kernel und die Kernelmodule ausgetauscht haben sollten Sie das System neu starten damit dieses mit dem neuen Kernel gestartet wird und auch alle Kernelmodule verfügbar sind.
pi@raspberrypi ~ $ sudo shutdown -r now
Sobald Raspbian wieder gestartet ist können Sie mit dem folgenden Befehl überprüfen ob die Framebuffer Gerätedateien automatisch angelegt wurden.
pi@raspberrypi ~ $ ls -la /dev/fb* crw-rw---T 1 root video 29, 0 Jan 1 1970 /dev/fb0 crw-rw---T 1 root video 29, 1 Jan 1 1970 /dev/fb1
Anwendungen für das Display
Das SainSmart 1,8" TFT LCD Modul lässt sich vielseitig für die Ausgabe von Informationen verwenden. In den weiterführenden Anleitungen wird zum Beispiel beschrieben wie Sie das Linux-Terminal auf das Display umlenken können. Des weiteren können Sie mit dem Linux Framebuffer Image Viewer eine Grafik auf dem Display ausgeben oder sich die aktuelle Uhrzeit und das Datum mit Hilfe eines Python-Skriptes anzeigen lassen.
Weiterführende Anleitungen
Raspbian: Linux-Terminal auf das SainSmart 1,8" TFT LCD Modul umlenken Raspbian: Grafik auf dem SainSmart 1,8" TFT LCD Modul ausgeben Raspbian: Datum und Uhrzeit auf dem SainSmart 1,8" TFT LCD Modul ausgeben
Dieser Eintrag wurde am 26.05.2013 erstellt und zuletzt am 09.06.2013 bearbeitet.
Direkter Link zu dieser Seite: http://www.gtkdb.de/index_7_2226.html