Advamation-Logo (Druckversion)

TFT-Displays - Anleitung

Stand:2014-01-30
Produkt:
TFT-Displays TFT24, TFT32, TFT43, TFT50, TFT70
Produktnummern:
1202, 1203, 1204, 1205, 1207
Produktseite:
http://www.advamation.de/produkte/embeddedpc/tft/

1   Hinweise

1.1   Bestimmungsgemäße Verwendung

Die Displays TFT24 (2.4" / 61mm), TFT32 (3.2" / 81mm), TFT43 (4.3" / 109mm), TFT50 (5.0" / 126mm) und TFT70 (7.0" / 176mm) sind Displays zum Anschluss an das AdvaBoard RPi1. Es handelt sich dabei um elektronische Produkte, deren Verwendung gewisses Fachwissen voraussetzt, und die deshalb nur von sachkundigen Personen eingesetzt werden dürfen.

Die Displays dürfen (ohne Rücksprache mit uns) nur an das AdvaBoard RPi1 angeschlossen werden, da ansonsten Schäden am Display bzw. an anderen Geräten entstehen können.

Lesen Sie vor der Benutzung diese Anleitung sowie die weitere Dokumentation sorgfältig durch, bewahren Sie sie auf und reichen Sie das Produkt nur zusammen mit dieser Anleitung (bzw. einem Hinweis/Link auf diese Anleitung) an dritte Personen weiter.

1.2   Sicherheitshinweise

Warnung
  • Bei Schäden, die durch Nichtbeachten dieser Anleitung verursacht werden, erlischt die Gewährleistung/Garantie! Für Folgeschäden übernehmen wir keine Haftung!

    Bei Sach- oder Personenschäden, die durch unsachgemäße Handhabung oder Nichtbeachten der Sicherheitshinweise verursacht werden, übernehmen wir keine Haftung. In solchen Fällen erlischt die Gewährleistung/Garantie.

  • Trotz sorgfältiger Arbeit kann leider nicht ausgeschlossen werden, dass das Produkt, die Software oder die Dokumentation Fehler enthält. Anwender sollten daher in jedem Fall überprüfen, ob das Produkt für ihre Anwendung geeignet ist und in ihrer Anwendung korrekt funktioniert.

    Für eventuelle Schäden, die durch fehlerhafte oder fehlende Information, Softwarefehler oder andere Fehler im Produkt verursacht werden, kann unabhängig von ihrer Ursache keine Haftung übernommen werden. Da wir zudem keinen Einfluss auf die Installation und Verwendung des Produkts haben, deckt die Gewährleistung nur das Produkt selbst ab.

  • Das Produkt darf nicht für Anwendungen eingesetzt werden, bei denen eine Fehlfunktion oder ein Produktversagen zu Personenschäden, Tod, relevanten Sach- oder Umweltschäden oder anderen schwerwiegenden Folgeschäden führen kann.

    Soll das Produkt dennoch für einen derartigen Zweck verwendet (oder in ein anderes derartiges Produkt eingebaut) werden, so ist sicherzustellen, dass durch eine Fehlfunktion oder ein Produktversagen unseres Produkts keine derartigen Schäden auftreten können!

ESD-Schutz
  • Das TFT-Display ist ein elektronisches Produkt. Es darf deshalb nur von fachkundigen Personen eingesetzt werden, da bei unsachgemäßer Verwendung Schäden am Produkt und evtl. an damit verbundenen Geräten auftreten können. Es ist zudem stets auf entsprechenden ESD-Schutz zu achten.
  • Das Produkt darf nicht extremen Temperaturen, starken Temperaturschwankungen, direktem Sonnenlicht, starken Erschütterungen, Feuchtigkeit, Nässe, Dämpfen, Schmutz, brennbaren Gasen oder übermäßiger mechanischer Beanspruchung ausgesetzt werden.
  • Das Produkt darf nicht bzw. nur nach Rücksprache verändert oder umgebaut werden.
  • Das Produkt ist kein Spielzeug und sollte außerhalb der Reichweite von Kindern aufbewahrt werden! Das Produkt und dessen Zubehör kann zudem verschluckbare Kleinteile beinhalten; bewahren Sie diese Teile unbedingt außerhalb der Reichweite von Kindern auf. Lassen Sie ebenso niemals Verpackungsmaterial unachtsam herumliegen, da insbesondere Plastikfolien für Kinder zu einem gefährlichen Spielzeug werden können. Es besteht Erstickungsgefahr!
  • Wenn anzunehmen ist, dass ein gefahrloser Betrieb nicht mehr möglich ist, so ist das Produkt außer Betrieb zu setzen und gegen unbeabsichtigten Betrieb zu sichern. Dies ist insbesondere dann der Fall, wenn das Produkt sichtbare Beschädigungen aufweist.
  • Sollten Sie Zweifel oder Fragen zum korrekten Gebrauch des Produkts oder bezüglich der Sicherheit haben, so wenden Sie sich bitte an uns oder an qualifiziertes Fachpersonal.

2   Lieferumfang

  • TFT-Display
  • optional: TFT-Display-Verlängerungskabel, 40-polig

3   Kontaktinformationen / Support

Sollten Sie Fragen oder Beanstandungen zum Produkt haben, bzw. Ihr Gerät einen Defekt aufweisen, so wenden Sie sich bitte an uns.

Bei Fragen bzw. Problemen, die Ihr Gerät betreffen, würden wir Sie bitten, uns die entsprechende Seriennummer mitzuteilen. Die Seriennummer finden Sie auf dem gelben Aufkleber auf dem Produkt.

Bitte senden Sie Ihr Gerät nicht ohne Aufforderung an uns Anschrift. Viele Probleme können gelöst werden, ohne dass ein Versand erforderlich ist.

E-Mail:
support@advamation.de
Mailinglisten:
http://www.advamation.de/community/
Webseite:
http://www.advamation.de
Anschrift:
Cletech Ltd. & Co. KG
- Advamation -
Südendstr. 1
86517 Wehringen

4   Übersicht

TFT-Displays 2.4" - 7.0" TFT-Display Rückseiten
TFT-Display Vorderseite
(zum Vergrößern anklicken)
TFT-Display Rückseite
(zum Vergrößern anklicken)

Die TFT-Displays sind für den Anschluss an das AdvaBoard RPi1 konzipiert. Zusammen mit diesem und einem Raspberry Pi ergibt sich somit ein universeller kleiner Embedded-PC mit Touch-Bedienung.

Alle Displays besitzen 4 Befestigungslöcher, mit denen sie z.B. an einer Frontplatte oder (ggf. mittels Adapter) am AdvaBoard befestigt werden können. Beim TFT32-Display entsprechen die Positionen der Befestigungslöcher exakt denen des AdvaBoard RPi1, so dass das TFT32-Display (mit Abstandshaltern) direkt mit dem AdvaBoard verschraubt werden kann.

Alle Displays besitzen einen resistiven Touchscreen (der auch mit Handschuhen bedienbar ist), und eine einstellbare LED-Hintergrundbeleuchtung.

Außerdem enthalten die Displays einen SD-Karten-Steckplatz, der per SPI angesprochen werden kann.

Im Auslieferungszustand ist die Display-Oberfläche durch eine Schutzfolie geschützt, die vor dem Betrieb entfernt werden kann.


Warnung ESD-Schutz

Das AdvaBoard RPi1, die TFT-Displays, der Raspberry Pi usw. enthalten höchst empfindliche IC-Chips. Um die Platinen und andere Komponenten vor Beschädigung durch statische Elektrizität (ESD) zu schützen, sollten Sie bei allen Arbeiten am AdvaBoard RPi1, TFT-Display, Raspberry Pi, usw. einige Vorsichtsmaßnahmen beachten:

  • Trennen Sie alle Komponenten vom Stromnetz, bevor Sie eine Komponente an- oder abstecken.
  • Achten Sie auf entsprechenden ESD-Schutz, bevor Sie mit elektronischen Bauteilen arbeiten. Hierzu sollte ein geerdetes Schutzarmband angelegt werden.
  • Fassen Sie die Platinen nur an den Rändern an, und berühren Sie möglichst nicht die IC-Chips und die Anschlüsse.
  • Verwenden Sie immer eine stabile, antistatische, nichtleitende Unterlage für die Platinen.

5   Inbetriebnahme

Beachten Sie vor der Inbetriebnahme unbedingt die oben stehenden Hinweise zum Umgang mit elektronischen Bauteilen/Baugruppen!

Inbetriebnahme:

  • mit vorkonfigurierter SD-Karte

    Sollten Sie zusammen mit dem TFT-Display eine SD-Karte mit installierter Software gekauft haben, so ist das TFT-Display dort bereits konfiguriert, der Touchscreen bereits kalibriert und beides in das Linux-System eingebunden. Schließen Sie in diesem Fall das TFT-Display an das AdvaBoard RPi1, (siehe Anschluss am AdvaBoard RPi1), sowie das AdvaBoard RPi1 an den Raspberry Pi an.

    Wenn Sie danach von der SD-Karte booten, sollte gegen Ende des Bootvorgangs die Linux-Kommandozeile inkl. einiger Boot-Meldungen auf dem TFT-Display erscheinen.

  • ohne vorkonfigurierte SD-Karte

    1. Inbetriebnahme des AdvaBoard RPi1

      Bevor das TFT-Display in Betrieb genommen wird, sollte das AdvaBoard RPi1 – wie in der AdvaBoard RPi1-Inbetriebnahme-Anleitung beschrieben – in Betrieb genommen werden.

    2. Anschluss des TFT-Displays an das AdvaBoard RPi1

      Schließen Sie das TFT-Display wie unter Anschluss am AdvaBoard RPi1 beschrieben an das AdvaBoard RPi1 an. Um Fehler auszuschließen, empfehlen wir, danach die "ersten Tests" aus der AdvaBoard RPi1-Inbetriebnahme-Anleitung nochmals durchzuführen.

    3. Unterbrechung der Verwendung als Linux-Display

      Wird das Display bereits als Linux-Display verwendet (z.B. zur Anzeige der Linux-Kommandozeile oder eines Linux-Desktops), und will man einen der folgenden Schritte (z.B. die Touchpanel-Kalibrierung) durchführen, so muss zunächst die Verwendung als Linux-Display unterbrochen werden:

      sudo /etc/init.d/am_rpi_framebuffer.sh stop
      sudo /etc/init.d/am_rpi_touchpanel.sh stop
      
    4. Einschalten des Displays

      sudo am_rpi_tft_tool -t TFT_32 -m on
      

      Sollten Sie nicht das 3.2"-Display verwenden, so ersetzten Sie TFT_32 hier und in den folgenden Kommandos durch:

      • TFT_43 für das 4.3" (109mm) TFT-Display
      • TFT_50 für das 5.0" (126mm) TFT-Display
      • TFT_70 für das 7.0" (176mm) TFT-Display
    5. Erste Tests (Farbdurchlauf, Testbild)

      sudo am_rpi_tft_tool -t TFT_32 -m TEST_COLORS
      sudo am_rpi_tft_tool -t TFT_32 -m TEST_ROTATE
      
    6. Optional: Kalibrierung des Touchscreens

      siehe Touchpanel-Kalibrierung

    7. Optional: Einrichten des Displays als Linux-Display

      Um das Display als Linux-Display zu verwenden, müssen die entsprechenden Treiber installiert und aktiviert werden:

      1. Framebuffer-Kernel-Modul installieren: siehe Framebuffer-Kernel-Modul

      2. Init-Skripte installieren und konfigurieren: siehe Init-Skript am_rpi_framebuffer.sh sowie "Start per Init-Skript" unter Linux-Touchpanel-Treiber

      3. Optional: /etc/X11/xorg.conf erstellen und modifizieren: siehe X Window System / X11

      4. Optional: Soll nach dem Booten automatisch die graphische Benutzeroberfläche (X11) gestartet werden, so sollte dies per raspi-config konfiguriert werden:

        $ sudo raspi-config
        
        -> 3 Enable Boot to Desktop/Scratch
        ---> Desktop Log in as user 'pi' at the graphical desktop
        

        Zusätzlich sollte die Datei /etc/X11/xorg.conf modifiziert werden, so dass X11 standardmäßig in der gewünschten Konfiguration startet. Da X11 standardmäßig die jeweils obersten Einträge einer Art (z.B. 1. Screen-Eintrag, 1. ServerLayout-Eintrag) in der xorg.conf-Datei verwendet, müssen dazu die gewünschten Screen- und ServerLayout-Abschnitte zum Anfang der Datei verschoben werden (so dass sie die ersten ihrer Art sind).

6   Hardware

6.1   Anschluss am AdvaBoard RPi1

Die TFT-Displays können auf zwei Arten mit dem AdvaBoard RPi1 verbunden werden:

  • per direktem "Aufstecken" auf das AdvaBoard RPi1

    Das TFT-Display wird direkt auf das AdvaBoard RPi1 aufgesteckt; es ist kein Kabel notwendig.

    Insbesondere beim 3.2"-Display (TFT32) ist dies die bevorzugte Variante, da die Befestigungslöcher des TFT32-Displays mit denen des AdvaBoard RPi1 übereinstimmen, und AdvaBoard und Display mit Abstandsbolzen einfach miteinander verschraubt werden können. (Entsprechende Abstandsbolzen sind im AdvaBoard RPi1-Zubehörset enthalten; der etwas abgefräste Abstandsbolzen sollte hierbei für das Loch neben dem Raspberry Pi-Steckverbinder verwendet werden.)

    Für die größeren Displays werden demnächst Befestigungsadapter verfügbar sein, um diese Displays am AdvaBoard RPi1 zu fixieren, wenn sie auf das AdvaBoard RPi1 gesteckt sind.

    Wird zudem der Raspberry Pi (mit den weiteren Abstandshaltern aus dem AdvaBoard-Zubehörset) mit dem AdvaBoard RPi1 verschraubt, entsteht eine kompakte Embedded-PC-Einheit aus Display, AdvaBoard und Raspberry Pi.

  • per Flachbandkabel-Verlängerung

    Soll das TFT-Display nicht direkt auf das AdvaBoard RPi1 gesteckt werden, so ist eine 40-polige Flachbandkabel-Verlängerung notwendig (siehe Bild).

    Dieses Kabel sollte aus technischen Gründen möglichst kurz gehalten werden. Wir empfehlen eine Länge von max. 12cm, größere Längen sind aber ggf. nach Rücksprache möglich. Entsprechende Kabel (mit wählbarer Länge und wählbarer Steckerausrichtung) können von uns bezogen werden.

    Flachbandkabel-Verlängerung

In beiden Fällen ist unbedingt auf die richtige Orientierung zu achten (siehe Bild)!
Insbesondere beim 3.2"-Display muss darauf geachtet werden, dass die "Nase" des Steckverbinders immer zur Innenseite des Displays zeigt! (Die Steckverbinder der größeren Displays sind bereits entsprechend codiert.)

Der Anschluss des Displays an das AdvaBoard RPi1 sollte immer nur im ausgeschalteten Zustand erfolgen!

TFT-Anschluss / Pin 1
TFT-Display-Anschluss, Vorderseite
TFT-Anschluss / Pin 1
TFT-Display-Anschluss, Rückseite

6.2   Stromversorgung

Die TFT-Displays werden vom AdvaBoard RPi1 mit Strom versorgt.

Beim 7.0"-Display (TFT70) ist jedoch zu beachten, dass die max. Stromaufnahme dieses Displays zusammen mit dem AdvaBoard RPi1 und dem Raspberry Pi 1A übersteigt; eine Versorgung über ein handelsübliches Micro-USB-Netzteil (5V/1A) ist in diesem Fall nicht ausreichend. Es wird empfohlen, stattdessen ein stärkeres Netzteil (z.B. 5V/2A) am 5V-Netzteil-Steckverbinder des AdvaBoard RPi1 zu verwenden (siehe Punkt 2 unter Stromversorgung in der AdvaBoard RPi1-Anleitung).

6.3   Touchpanel

Die Touchpanels der TFT-Displays arbeiten resistiv, d.h. die Oberfläche besteht aus einer Kunststoff-Schicht, auf die zur Bedienung ein geringer Druck ausgeübt werden muss. Die Bedienung ist dabei sowohl mit dem Finger, als auch mit einem Handschuh oder einem Touchscreen-Stift möglich.

Scharfe Gegenstände, normale Stifte (z.B. Kugelschreiber, Bleistifte) und andere eckige bzw. kantige Gegenstände sollten auf keinen Fall verwendet werden, da diese die Touchpanel-Oberfläche beschädigen können.

Das Touchpanel erkennt gleichzeitig immer nur eine Position, eine Multi-Touch-Bedienung ist somit nicht möglich.

6.4   Technische Daten

TFT24 TFT32 TFT43 TFT50 TFT70
Größe / Diagonale 2.4" / 61mm 3.2" / 81mm 4.3" / 109mm 5.0" / 126mm 7.0" / 176mm
aktive Fläche [mm] 48.96*36.72 64.80*48.6 95.04*53.86 108*64.80 153.7*86
Auflösung 320*240 320*240 480*272 800*480 800*480
Seitenverhältnis 4:3 4:3 16:9 15:9 15:9/16:9
Pixelgröße 0.15mm 0.2025mm 0.2mm 0.135mm ~0.2mm
Pixeldichte 166 dpi 125 dpi 128 dpi 188 dpi ~132 dpi
Vollbild-Framerate   max. 31 fps max. 18 fps max. 6-7 fps max. 6-7 fps
Touchpanel resistiv resistiv resistiv resistiv resistiv
Helligkeit [cd/m²]          
Kontrast   150-250:1 250-350:1 150-250:1 400-500:1
Blickwinkel hor.   +35°/-15° 130° +45°/-45° +60°/-60°
Blickwinkel vert.   +48°/-48° 110° +15°/-35° +50°/-70°
Stromaufnahme          
Leistungsaufnahme          
Platinengröße [mm] 53*48 94.5*65 120*74 133*84.4 181*108
Bef.-Löcher D 2.5mm D 3.2mm D 3.2mm D 3.2mm D 3.2mm
Gewicht 32g 53g 95g 135g 255g

(Typische Werte, Abweichungen möglich, Maße in mm, Blickwinkel bei Kontrast >= 10:1;
die fehlenden Daten werden in Kürze ergänzt.)

Maßzeichnungen:
[1]Kostenfreie CAD-Software für DXF-Dateien: z.B. http://www.librecad.org, http://www.qcad.org/de/

6.5   Steckverbinder

  • Stiftleiste (TFT24 / TFT32) bzw. Wannenstecker (TFT43 / TFT50 / TFT70), 40-polig, RM 2.54mm
  • Pin 1/3/../39 in Richtung Platinen-Innenseite
Stiftleiste 40pol.
TFT-Display-Stiftleiste (TFT24 / TFT32)
(Ansicht: Steckseite)
Wannenstecker 40pol.
TFT-Display-Stecker (TFT43 / TFT50 / TFT70)
(Ansicht: Steckseite)
Pin Signal Beschreibung
1 TFT_DB0 Display-Datenbus
2 GND Masse
3 TFT_DB1 Display-Datenbus
4 +3.3V Display-Versorgungsspannung (3.3V)
5 TFT_DB2 Display-Datenbus
6 RES reserviert
7 TFT_DB3 Display-Datenbus
8 TFT_RS Display-Steuerleitung
9 TFT_DB4 Display-Datenbus
10 TFT_DB11 Display-Datenbus
10 TFT_WR Display-Steuerleitung
11 TFT_DB5 Display-Datenbus
12 TFT_RD Display-Steuerleitung
13 TFT_DB6 Display-Datenbus
14 TFT_DB8 Display-Datenbus
15 TFT_DB7 Display-Datenbus
16 TFT_DB9 Display-Datenbus
17 TP_SCK Touchpanel Takteingang
18 TFT_DB10 Display-Datenbus
19 TP_CS Touchpanel Chip-Select
21 TP_MOSI Touchpanel MOSI
22 TFT_DB12 Display-Datenbus
23
24 TFT_DB13 Display-Datenbus
25 TP_MISO Touchpanel MISO
26 TFT_DB14 Display-Datenbus
27 TP_IRQ Touchpanel Interrupt
28 TFT_DB15 Display-Datenbus
29 SD_MISO SD-Karte MISO
30 TFT_CS Display-Steuerleitung
31 SD_SCK SD-Karte Takteingang
32
33 SD_MOSI SD-Karte MOSI
34 TFT_RESET Display-Steuerleitung
35 SD_CS SD-Karte Chip-Select
36 LED_5V Hintergrundbeleuchtung (5V)
37
38 LED_R Hintergrundbeleuchtung (5V + Vorwiderstand)
39
40

7   Software

7.1   Überblick

Die Software für die TFT-Displays ist in der AdvaBoard RPi1-Software enthalten. Vor der Verwendung der TFT-Display-Software sollte die AdvaBoard RPi1-Software installiert und das AdvaBoard RPi1 in Betrieb genommen werden (siehe AdvaBoard RPi1-Inbetriebnahmeanleitung).

Auf die TFT-Displays und das Touchpanel kann auf mehrere Arten zugegriffen werden:

  • Direkter Zugriff:

    Es kann direkt mit C, Python [2], Shell-Skripten oder einem Kommandozeilenprogramm auf das Display zugegriffen werden, um z.B. das Display zu initialisieren, einzelne Pixel zu setzen, Pixelbilder anzuzeigen, oder das Display zu konfigurieren.

  • Linux-Display:

    Das Display kann als "Linux-Display" dienen, und darauf die Linux-Konsole oder eine grafische Benutzeroberfläche angezeigt werden.

  • Eine Kombination der beiden Möglichkeiten ist ebenfalls möglich.

Es ist zudem möglich, auf das Display von mehreren Programmen aus "gleichzeitig" zuzugreifen; beispielsweise kann sich ein Programm um die Anzeige kümmern, ein anderes um das Touchpanel, und ein weiteres kann die Display-Helligkeit einstellen. Hierzu ist in der Software ein automatischer Locking-Mechanismus integriert.

[2]Die Python-Bibliotheken werden in Kürze verfügbar sein.

7.2   Programmbibliotheken

Die AdvaBoard RPi1-Software enthält eine Bibliothek für die TFT-Displays und Touchpanels (am_rpi_tft). Mit dieser kann das Display ein-/ausgeschaltet, initialisiert, konfiguriert und beschrieben (z.B. einzelne Pixel gesetzt oder Flächen ausgefüllt) werden. Zusätzlich kann die Display-Helligkeit eingestellt und das Touchpanel abgefragt und kalibriert werden.

Informationen zur Programmbibliothek und den darin enthaltenen Funktionen finden Sie in der Software-Dokumentation.

7.3   Programm am_rpi_tft_tool

Zusätzlich zur Programmbibliothek gibt es ein Kommandozeilenprogramm (am_rpi_tft_tool), das nahezu die gesamte Funktionalität der Bibliothek enthält, und mit dem das TFT-Display und das Touchpanel auf einfache Art und Weise getestet, eingestellt und verwendet werden können.

Insbesondere für Tests, zum Experimentieren mit den Bibliotheks-Funktionen, zum Anzeigen von Pixelbildern, zur Einstellung der Display-Helligkeit und zur Kalibrierung (und Überprüfung der Kalibrierung) des Touchpanels ist dieses Programm ein sehr hilfreiches Werkzeug.

Da die Funktionsnamen und Parameter des Kommandozeilenprogramms nahezu identisch mit den Bibliotheksfunktionen sind, können bestimmte Funktionen bzw. Abläufe zunächst mit dem Kommandozeilenprogramm getestet, und später einfach in C- oder Python-Programme überführt werden.

Eine kurze Übersicht über die Funktionen erhalten Sie per am_rpi_tft_tool --help:

Usage:
  am_rpi_tft_tool [OPTION...] - Advamation RPi TFT-display-interface tool

Help Options:
  -h, --help                     Show help options

Application Options:
  -i, --iface=ADVABOARD_RPi1     display-interface (default: ADVABOARD_RPi1)
  -c, --clk=CLKDIV               interface clock speed (clock-divider, 4/6/8/../65536, default: 4)
  -t, --type=TFT_..              display-type (TFT_32,TFT_43,TFT_50,TFT_70)
  -r, --rot=angle                display-rotation (0, 90, 180, 270)
  -f, --calib=FILENAME           touchpanel calibration-file
            necessary for TEST_TPCALIB
            optional for TP_POS, TP_NEXT, TEST_TP, TP_CALIBRATE
            TP_CALIBRATE writes this file, the others read it
  -m, --mode=MODE
        POWER           ON|OFF           - turn display-power (and pins) on/off
        POWER_READ                       - check display-power
        RESET                            - reset display
        ON              [BRIGHTNESS]     - turn display on (incl. power)
        OFF             [POWEROFF]       - turn display off
        SLEEP           ON|OFF [BRIGHTNESS]- sleep mode

        WINDOW          X0 Y0 W H        - set drawing-window
                                           (+ position to top-left)
        POSITION        [X0 Y0 W H] X Y  - set drawing-position in window
        PIXEL           R G B            - draw pixel and increment position
        PIXELS          N R G B          - draw N pixels and increment position
        FILL            R G B            - fill display
        BLACK                            - fill display in black
        WHITE                            - fill display in white
        BACKLIGHT       ON|OFF [BRIGHTNESS]- set brightness

        TEST_COLORS                        - color-test
        TEST_FPS                           - measure FPS
        TEST_ROTATE                        - rotation-test
        IMAGE           X0 Y0 W H FILENAME - draw image

            CLKDIV: 4/6/8/10/.../65536, speed=250MHz/CLKDIV
            ON|OFF:   0/OFF=off, 1/ON=on
            POWEROFF: 0=not off, 1=off, default: 1
            BRIGHTNESS: backlight-brightness, 0..255, -1=don't change (default: 255)
            X0/Y0: top-left-corner of drawing-window
            XY:    X-/Y-position
            W:     window-width,  0=max. width
            H:     window-height, 0=max. height
            R:     red-value,   0..255
            G:     green-value, 0..255
            B:     blue-value,  0..255
            N:     number of pixels

        TP_TOUCHED      [TIMEOUT_MS]  - wait until touch
        TP_POS                        - read touch-position
        TP_NEXT         [TIMEOUT_MS]  - wait until touch and read position
        TP_POSRAW                     - read raw touch-position
        TEST_TP                       - touchpanel-loop
        TP_CALIBRATE                  - calibrate the touchscreen
        TEST_TPCALIB                  - test calibration
            TIMEOUT_MS: timeout in ms, or 0=non-blocking, -1=no timeout

        Note that all drawing-functions (PIXEL, PIXELS, FILL, BLACK, WHITE,
        IMAGE, TP_CALIBRATE) set or modify the drawing-window and position.

        All numeric parameters can be decimal, hexadecimal (0x...) or
        binary (0b...) numbers.

  -l, --nolock                   don't use locking (use with care!)
  -v, --verbose=LEVEL            verbosity level (default: 64)
      (DEBUG: 128, INFO: 64, MESSAGE: 32, WARNING: 16, CRITICAL: 8, ERROR: 4|0)

Die Touchpanel-Funktionen beginnen hierbei mit TP_ oder TEST_TP. Eine detailliertere Dokumentation der einzelnen Funktionen und Parameter finden Sie bei den entsprechenden Bibliotheksfunktionen in der Software-Dokumentation.

Beispiele:

  • kurzer Test eines TFT32-Displays:

    am_rpi_advaboard_tool -m INIT
    am_rpi_tft_tool -t TFT32 -m ON
    am_rpi_tft_tool -t TFT32 -m TEST_COLORS
    am_rpi_tft_tool -t TFT32 -m TEST_ROTATE
    am_rpi_tft_tool -t TFT32 -m OFF
    
  • Einstellen der LED-Hintergrundbeleuchtung:

    am_rpi_tft_tool -t TFT32 -m BACKLIGHT ON 255
    
  • Kalibrieren des Touchscreens:

    siehe Touchpanel-Kalibrierung

7.4   Linux-Display

Siehe auch:Framebuffer-Software-Dokumentation

Wird das Display als Linux-Display verwendet, so ist die Ausgabe ähnlich der, die über die HDMI Schnittstelle ausgegeben wird. Es gibt jedoch ein paar Unterschiede:

  • Framerate: Die Framerate ist üblicherweise geringer als bei HDMI-Displays. Beim 5.0" und 7.0"-Display sind max. 6-7 komplette Frames/s möglich, beim 4.3" bis zu knapp 18 Frames/s und beim 3.2" bis zu 31 Frames/s.

    Sofern sich nur Teile des angezeigten Bildes ändern, sind deutlich höhere Frameraten möglich, so dass in diesem Fall trotz der niedrigen Vollbild-Framerate eine sehr flüssige Anzeige möglich ist.

    Unsere TFT-Displays eignen sich deshalb primär für Benutzeroberflächen oder Daten-Visualisierungen. Für das Abspielen von Videos sind sie dagegen nur bedingt geeignet.

  • Rechenlast: Da die Displays den Grafikchip des Raspberry Pi nur bedingt verwenden können, verursachen unsere Displays eine höhere CPU-Rechenlast auf dem Raspberry Pi. Ist der Raspberry Pi durch andere Aufgaben bereits stark ausgelastet, so kann sich die Aktualisierung der Anzeige verzögern.

Um das TFT-Display als "normales Linux-Display" (Konsole und X11) zu verwenden, muss der AdvaBoard-Framebuffer-Treiber installiert und gestartet werden. Dieser besteht aus zwei Teilen:

  • einem displayunabhängigen Kernel-Modul, das virtuelle Framebuffer zur Verfügung stellt, und
  • einem Programm (user-space daemon), das den virtuellen Framebuffer ausliest und dessen Inhalt auf das Display schreibt.

Technisch funktioniert das "Linux-Display" dann folgendermaßen:

  • Man legt ein Framebuffer-Device (z.B. /dev/fb1) an, dessen Auflösung und Farbtiefe zum Display passen.
    Alternativ kann das bereits vorhandene Standard-Raspberry Pi-Framebuffer-Device (/dev/fb0) angepasst und verwendet werden.
  • Die Linux-Konsole bzw. X11 schreibt seine Ausgabe in dieses Framebuffer-Device.
  • Ein Programm (am_rpi_framebuffer) liest den Framebuffer-Speicher periodisch aus und schreibt dessen Inhalt auf das TFT-Display.
  • Gleichzeitig können andere Programme (z.B. am_rpi_tft_tool) auf das Display zugreifen, um z.B. die Display-Helligkeit einzustellen oder das Touchpanel abzufragen.

Prinzipiell wird das AdvaBoard-TFT-Display vom Linux-System genauso gehandhabt wie eine zweite Grafikkarte; ein Multi-Monitor-Betrieb (z.B. HDMI-Display + AdvaBoard-TFT-Display) ist genauso möglich wie bei einem Linux-PC mit zwei Grafikkarten.

7.4.1   Framebuffer-Kernel-Modul

Das Advamation-Framebuffer-Linux-Kernel-Modul (advamationfb) stellt geräteunabhängige, virtuelle Framebuffer mit einstellbarer Auflösung bereit. Über das sysfs-Dateisystem können damit dynamisch Framebuffer generiert, abgefragt und wieder gelöscht werden (siehe Framebuffer).

Soll am Raspberry Pi nur das AdvaBoard-TFT-Display, und kein weiteres Display (z.B. HDMI-Display) gleichzeitig betrieben werden, so kann ggf. auf dieses Kernelmodul verzichtet, und der bereits für das HDMI-Display vorgesehene Framebuffer modifiziert und verwendet werden. In diesem Fall ist keine Installation des Framebuffer-Kernelmoduls notwendig. Gleiches gilt, falls das AdvaBoard-TFT-Display und das HDMI-Display die gleiche Auflösung und den gleichen Inhalt anzeigen sollen.

Installation:

  1. Sollten Sie eine SD-Karte mit installierter AdvaBoard-Software von uns erworben haben, so ist das Advamation-Framebuffer-Kernel-Modul dort bereits installiert, und die folgenden Schritte können übersprungen werden.

    Soll am Raspberry Pi nur das AdvaBoard-TFT-Display, und gleichzeitig kein weiteres Display (z.B. HDMI-Display) verwendet werden, oder sollen AdvaBoard-TFT-Display und HDMI-Display den gleichen Inhalt anzeigen, so können die folgenden Schritte ebenso übersprungen werden.

  2. Kernel:

    Das Advamation-Framebuffer-Kernel-Modul benötigt einen Linux-Kernel mit (a) Unterstützung für Framebuffer-Kernel-Module [3] und (b) verfügbaren Kernel-Headerdateien. Ist im Kernel diese Unterstützung nicht enthalten oder sind keine Kernel-Header verfügbar, so muss ein anderer Kernel installiert werden.

    • Raspbian:

      Leider ist der Standard-Raspbian-Kernel sehr eingeschränkt, und unterstützt u.a. keine Framebuffer-Kernel-Module und stellt keine Kernel-Headerdateien zur Verfügung. Deshalb muss ein anderer Kernel verwendet werden, z.B. der "trunk"-Kernel aus dem Raspbian-Repository.

      Installation des "trunk"-Kernels:

      sudo apt-get update
      sudo apt-get install linux-image-3.6-trunk-rpi
      

      Danach muss dieser Kernel als "Boot-Kernel" ausgewählt werden, indem der Datei /boot/config.txt folgende Zeile hinzugefügt wird (bzw. eine evtl. bereits vorhandene kernel=-Zeile entsprechend modifiziert wird):

      kernel=vmlinuz-3.6-trunk-rpi
      

      Existiert noch keine kernel=-Zeile in der Datei /boot/config.txt, so kann folgendes Kommando verwendet werden, um die Zeile hinzuzufügen:

      sudo sh -c 'echo "kernel=vmlinuz-3.6-trunk-rpi" >> /boot/config.txt'
      
    • andere Linux-Distributionen:

      Um festzustellen, ob der Linux-Kernel Framebuffer-Module unterstützt, sollte geprüft werden, ob dieser folgende Module enthält (z.B. per ls /lib/modules/`uname -r`/kernel/drivers/video/):

      fb_sys_fops.ko
      syscopyarea.ko
      sysfillrect.ko
      sysimgblt.ko
      

      Existieren diese Module nicht, so sollte geprüft werden, ob diese Module evtl. fest in den Kernel einkompiliert wurden. Dazu sollte überprüft werden, ob die Kernel-Konfigurationsdatei (je nach Linux-Distribution: /proc/config.gz oder /boot/config-`uname -r`) folgende Einträge enthält:

      CONFIG_FB=y
      CONFIG_FB_SYS_FILLRECT=y
      CONFIG_FB_SYS_COPYAREA=y
      CONFIG_FB_SYS_IMAGEBLIT=y
      CONFIG_FB_SYS_FOPS=y
      CONFIG_FB_DEFERRED_IO=y
      

      Ist dies nicht der Fall, so ist ein anderer Kernel notwendig, und es sollte sollte im Repository der Linux-Distribution nachgesehen werden, ob diese einen entsprechenden Kernel enthält, z.B. bei Debian-basierten Distributionen per:

      apt-cache search linux-image
      # oder: aptitude search linux-image
      

      Nach der Installation eines entsprechenden Kernels muss dieser als "Boot-Kernel" ausgewählt werden, indem der Datei /boot/config.txt folgende Zeile hinzugefügt wird (bzw. eine evtl. bereits vorhandene kernel=-Zeile entsprechend modifiziert wird):

      kernel=YOUR_KERNEL_IMAGE_FILENAME
      

      YOUR_KERNEL_IMAGE_FILENAME ist hierbei durch den Namen der Kernel-Image-Datei zu ersetzen. Diese Datei liegt üblicherweise in /boot/ und beginnt normalerweise mit vmlinuz-.

  3. Neustart:

    Sollten Sie einen anderen Kernel installiert haben, so ist ein Neustart des Raspberry Pi notwendig:

    sudo reboot
    

    Nach dem Neustart sollte überprüft werden, ob der neue Kernel tatsächlich verwendet wird:

    uname -r
    
  4. Kompilieren des Framebuffer-Kernel-Moduls:

    • Raspbian:

      Die AdvaBoard RPi1-Software enthält im Verzeichnis prebuilt.2013-09-25-wheezy-raspbian bereits das kompilierte Kernel-Modul für den Kernel "3.6-trunk"; es ist somit nicht notwendig, dieses zu kompilieren.

    • andere Linux-Distributionen:

      1. Feststellen des Kernel-Namens und der Kernel-Version:

        uname -r
        
      2. Installieren der zugehörigen Kernel-Headerdateien, z.B. für Raspbian 3.6-trunk:

        sudo apt-get install linux-headers-3.6-trunk-all
        
      3. Kompilieren des Kernel-Moduls:

        cd advaboard_rpi1-VERSION/kernel/advamationfb/
        make clean
        make
        
  5. Test des Framebuffer-Kernel-Moduls:

    Um das Framebuffer-Kernel-Modul zu testen, sollte dieses dem Kernel hinzugefügt und ein virtueller Framebuffer angelegt werden. Es wird empfohlen, vorher alle anderen Programme zu schließen, da das System im Fehlerfall abstürzen kann.

    • Wechsel ins Framebuffer-Kernel-Modul-Verzeichnis:

      • Raspbian:

        cd advaboard_rpi1-VERSION/prebuilt.2013-09-25-wheezy-raspbian/
        
      • andere Linux-Distributionen:

        cd advaboard_rpi1-VERSION/kernel/advamationfb/
        
    • Kernel-Modul hinzufügen:

      sudo modprobe -a fb_sys_fops sysfillrect syscopyarea sysimgblt
      sudo insmod ./advamationfb.ko
      

      Falls insmod mit der Fehlermeldung "Invalid module format." oder "Exec format error" fehlschlägt, wurde das Kernelmodul für einen anderen Kernel übersetzt. Dies kann überprüft werden, indem die Ausgaben von uname -a und modinfo ./advamationfb.ko verglichen werden. In diesem Fall muss entweder das Framebuffer-Kernel-Modul nochmals für den laufenden Kernel übersetzt werden, oder es muss der Kernel verwendet werden, für den das Modul übersetzt wurde.

    • Erstellen eines virtuellen Framebuffers (als root):

      $ sudo bash
      $ echo "320,240,16" > /sys/bus/platform/drivers/advamationfb/new_device
      $ cat /sys/bus/platform/drivers/advamationfb/list_devices
      0: fb1, 320x240x16
      $ echo 0 >> /sys/bus/platform/drivers/advamationfb/delete_device
      $ exit
      

      (Evtl. wird statt fb1 ein anderes Framebuffer-Device (z.B. fb2) angezeigt.)

    • Optional: Test des virtuellen Framebuffers, indem die Ausgabe der Linux-Konsole darauf umgelenkt und ein Screenshot erstellt wird.

      Vorher sollte sichergestellt werden, dass die Bildschirmausgabe aktiv ist, und die Anzeige nicht wegen Inaktivität abgeschaltet wurde (z.B. indem eine Taste auf einer an den Raspberry Pi angeschlossenen Tastatur gedrückt wird).

      sudo apt-get install fbcat
      sudo sh -c 'echo "800,480,16" > /sys/bus/platform/drivers/advamationfb/new_device'
      con2fbmap 1 1
      fbcat /dev/fb1 > ~/advamationfb_test.ppm
      con2fbmap 1 0
      sudo sh -c 'echo 0 >> /sys/bus/platform/drivers/advamationfb/delete_device'
      

      Die Datei advamationfb_test.ppm sollte nun einen Screenshot der Linux-Konsole enthalten.

  6. Installation des Framebuffer-Kernel-Moduls:

    • Raspbian: Das Kernel-Modul wurde bereits mit der anderen AdvaBoard RPi1-Software installiert; eine separate Installation ist daher nicht notwendig.

    • andere Linux-Distributionen:

      sudo make install
      sudo depmod
      
[3]

Kernel-Konfiguration:

CONFIG_FB=y
CONFIG_FB_SYS_FILLRECT=m
CONFIG_FB_SYS_COPYAREA=m
CONFIG_FB_SYS_IMAGEBLIT=m
CONFIG_FB_SYS_FOPS=m
CONFIG_FB_DEFERRED_IO=y

7.4.2   Framebuffer

Bevor das AdvaBoard-TFT-Display als Linux-Display verwendet werden kann, muss ein Framebuffer mit der passenden Auflösung und Farbtiefe zur Verfügung stehen.

Hierzu gibt es zwei Möglichkeiten:

  • advamationfb-Framebuffer:

    Es wird ein zum Display passender virtueller Framebuffer angelegt. Hierzu ist das Advamation-Framebuffer-Kernel-Modul (siehe vorheriger Abschnitt) notwendig.

    • Anlegen eines virtuellen Framebuffers (als root):

      echo "XRES,YRES,16" > /sys/bus/platform/drivers/advamationfb/new_device
      

      z.B.:

      # TFT32, quer und hochkant
      $ echo "320,240,16" > /sys/bus/platform/drivers/advamationfb/new_device
      $ echo "240,320,16" > /sys/bus/platform/drivers/advamationfb/new_device
      
      # TFT43, quer
      $ echo "480,272,16" > /sys/bus/platform/drivers/advamationfb/new_device
      
      # TFT50, TFT70, quer
      $ echo "800,480,16" > /sys/bus/platform/drivers/advamationfb/new_device
      
    • Auflistung aller virtuellen Framebuffer (als root):

      $ cat /sys/bus/platform/drivers/advamationfb/list_devices
      

      Es wird eine Liste aller virtuellen advamationfb-Framebuffer im Format NUMMER: FRAMEBUFFERDEVICE, XRESxYRESxBPP angezeigt.

      z.B.:

      $ cat /sys/bus/platform/drivers/advamationfb/list_devices
      0: fb1, 320x240x16
      1: fb2, 240x320x16
      2: fb3, 800x480x16
      
      $ ls -l /dev/fb*
      crw-rw---T 1 root video 29, 0 Jan  1  1970 /dev/fb0
      crw-rw---T 1 root video 29, 1 Nov  3 23:05 /dev/fb1
      crw-rw---T 1 root video 29, 3 Nov  4 17:47 /dev/fb2
      crw-rw---T 1 root video 29, 4 Nov  4 17:47 /dev/fb3
      
    • Entfernen eines virtuellen Framebuffers:

      echo NUMMER > /sys/bus/platform/drivers/advamationfb/delete_device
      

      z.B.:

      $ cat /sys/bus/platform/drivers/advamationfb/list_devices
      0: fb1, 320x240x16
      1: fb2, 240x320x16
      2: fb3, 800x480x16
      
      $ echo 1 > /sys/bus/platform/drivers/advamationfb/delete_device
      
      $ cat /sys/bus/platform/drivers/advamationfb/list_devices
      0: fb1, 320x240x16
      2: fb3, 800x480x16
      

      Ein Framebuffer kann nur entfernt werden, wenn er derzeit nicht verwendet wird.

  • Standard-Raspberry Pi-Framebuffer:

    Alternativ zum advamationfb-Framebuffer kann der bereits (für das HDMI-Display) vorhandene Standard-Raspberry Pi-Framebuffer /dev/fb0 verwendet werden. In diesem Fall zeigen das HDMI-Display (falls vorhanden) und das TFT-Display immer den gleichen Inhalt an. Ist die Auflösung des HDMI-Displays bzw. -Framebuffers größer als die des TFT-Displays, so zeigt das TFT-Display nur einen Ausschnitt an.

    Eine evtl. vorhandene und von Linux unterstützte Videobeschleunigung des Raspberry Pi-Grafikchips kann in diesem Fall auch für das TFT-Display verwendet werden.

    Informationen des Standard-Framebuffers anzeigen:

    fbset -fb /dev/fb0 -i
    

    z.B.:

    $ fbset -fb /dev/fb0 -i
    
    mode "1024x768"
        geometry 1024 768 1024 768 16
        timings 0 0 0 0 0 0 0
        rgba 5/11,6/5,5/0,0/16
    endmode
    
    Frame buffer device information:
        Name        : BCM2708 FB
        Address     : 0x5f005000
        Size        : 1572864
        Type        : PACKED PIXELS
        Visual      : TRUECOLOR
        XPanStep    : 0
        YPanStep    : 0
        YWrapStep   : 0
        LineLength  : 2048
        Accelerator : No
    

    Modifikation der Auflösung des Standard-Framebuffers, z.B. für das TFT50-Display (die Auflösung der HDMI-Ausgabe verändert sich dabei ebenso):

    fbset -fb /dev/fb0 -xres 800 -yres 480 -vxres 800 -vyres 480 -depth 16
    

7.4.3   Programm am_rpi_framebuffer

Das Programm am_rpi_framebuffer ist ein Linux-Daemon, der einen Framebuffer periodisch ausliest und dessen Inhalt auf das AdvaBoard-TFT-Display schreibt. Es ist in der AdvaBoard RPi1-Software enthalten und wird zusammen mit dieser (wie in der README-Datei beschrieben) übersetzt und installiert.

Eine kurze Hilfe erhalten Sie mittels am_rpi_framebuffer --help:

Usage:
  am_rpi_framebuffer [OPTION...] - Advamation framebuffer-daemon

Help Options:
  -?, --help                     Show help options

Application Options:
  -d, --dev=N                    framebuffer-number (e.g. 0 for /dev/fb0)
  -i, --iface=ADVABOARD_RPi1     display-interface (default: ADVABOARD_RPi1)
  -t, --type=TFT_..              display-type (TFT_32,TFT_43,TFT_50,TFT_70)
  -c, --clk=CLKDIV               interface clock speed (clock-divider, 4/6/8/../65536, default: 4)
  -f, --fps=FPS                  max. frames-per-second
        Lower framerates reduce the CPU load.
  -r, --rot=angle                display-rotation (0, 90, 180, 270)
  -x, --x0=X                     display-window X-coordinate (default: 0)
  -y, --y0=Y                     display-window Y-coordinate (default: 0)
  -w, --width=W                  display-window width  (default: max.)
  -h, --height=H                 display-window height (default: max.)
  -b, --brightness=0..255        backlight-brightness (0..255, default 255)
  --skipon                       skip 'display-on'
  --daemon                       daemonize
  -v, --verbose=LEVEL            verbosity level (default: 64)
      (DEBUG: 128, INFO: 64, MESSAGE: 32, WARNING: 16, CRITICAL: 8, ERROR: 4|0)

wichtigste Optionen:

--dev:
Nummer des zu verwendenden Framebuffers. Dieser Framebuffer muss bereits existieren.
--type:
TFT-Display-Typ: TFT_32, TFT_43, TFT_50 oder TFT_70
--rot:
Drehung des Displayinhalts um 0, 90, 180 oder 270 Grad.
--brightness:
Helligkeit der Display-Hintergrundbeleuchtung. Diese kann später jederzeit per am_rpi_tft_tool verändert werden.
--daemon:
Startet das Programm im Hintergrund.
--fps:
FPS definiert die maximale Anzahl an Bildern pro Sekunde, und damit die Wartezeit zwischen Display-Updates. Höhere FPS-Werte führen zu einer höheren CPU-Belastung.
--skipon:
Überspringt die Display-Initialisierung. Notwendig, falls das Display bereits angeschaltet und (z.B. per am_rpi_tft_tool) konfiguriert wurde, und diese Konfiguration beibehalten werden soll.

Beispiele:

# Verwendung des HDMI-Framebuffers
sudo am_rpi_framebuffer -d 0 -t TFT_50

# Verwendung eines Advamation-Framebuffers
sudo am_rpi_framebuffer -d 1 -t TFT_50

Sollte die Auflösung des gewählten Framebuffers nicht mit der Auflösung des Displays übereinstimmen, so wird nur derjenige Teil angezeigt, der auf das Display passt. Allerdings wird auf dem Display erst dann etwas angezeigt, wenn der entsprechende Framebuffer von einer Linux-Konsole oder von X11 verwendet wird (siehe Linux-Konsole bzw. X Window System / X11 weiter unten).

Das am_rpi_framebuffer-Programm darf jederzeit abgebrochen und später erneut gestartet werden. Soll z.B. der Displayinhalt um 180° gedreht werden, so kann das Programm abgebrochen und mit dem zusätzlichen Parameter -r 180 erneut gestartet werden. Ebenso sollte das Programm abgebrochen werden, bevor der Touchscreen kalibriert wird.

7.4.4   Init-Skript am_rpi_framebuffer.sh

Siehe auch:Init-Skript README

Um beim Booten automatisch einen Framebuffer anzulegen und am_rpi_framebuffer zu starten, kann das Init-Skript am_rpi_framebuffer.sh verwendet werden.

  • Installation:

    cd advaboard_rpi1-VERSION/
    sudo cp tools/sysvinit/am_rpi_framebuffer.sh /etc/init.d/
    sudo cp tools/sysvinit/am_rpi_framebuffer /etc/default/
    
  • Konfiguration: Das Init-Skript wird über die Datei /etc/default/am_rpi_framebuffer konfiguriert. In dieser sind der TFT-Display-Typ, die Display-Rotation, die Display-Helligkeit und evtl. die Touchpanel-Kalibrierdatei angegeben. Zudem kann angegeben werden, ob ein eigener Advamation-Framebuffer angelegt oder der HDMI-Framebuffer verwendet werden soll [4]:

    • USE_FB0="0" (Standardeinstellung): Es wird ein eigener Advamation-Framebuffer angelegt.
    • USE_FB0="1": Es wird der HDMI-Framebuffer (/dev/fb0) verwendet, und dessen Auflösung an das TFT-Display angepasst.
    • USE_FB0="2": Es wird der HDMI-Framebuffer (/dev/fb0) verwendet, ohne dessen Auflösung zu ändern.

    Beispiel:

    # configuration for AdvaBoard RPi1 framebuffer/touchscreen
    #
    # Should be in /etc/default/am_rpi_framebuffer.
    #
    # :Author: Advamation <support@advamation.com>
    TYPE="TFT_50"
    ROT="0"
    BRIGHTNESS="255"
    USE_FB0="0"
    CALIB="/etc/am_rpi_touchpanel.calib"
    TP_MODE="0"
    
  • Init-Skripte aktivieren: Bei Raspbian bzw. Debian-basierten Systemen kann hierzu update-rc.d (siehe auch: man update-rc.d) verwendet werden:

    sudo update-rc.d am_rpi_framebuffer.sh defaults
    sudo update-rc.d am_rpi_framebuffer.sh enable
    

Beim nächsten Neustart des Systems wird nun das TFT-Display aktiviert und die Linux-Konsole 1 darauf umgeleitet. Zusätzlich kann das Display über das Init-Skript gestartet und gestoppt werden:

  • Start (+Umleitung der Linux-Konsole auf das TFT-Display):

    sudo /etc/init.d/am_rpi_framebuffer.sh start
    
  • Stopp (+Umleitung der Linux-Konsole zurück auf das HDMI-Display):

    sudo /etc/init.d/am_rpi_framebuffer.sh stop
    
  • Stopp + Start (bzw. Neuladen der Konfigurationsdatei):

    sudo /etc/init.d/am_rpi_framebuffer.sh restart
    
  • Status-Abfrage:

    sudo /etc/init.d/am_rpi_framebuffer.sh status
    

Anmerkung: Wird der am_rpi_framebuffer-Daemon manuell gestartet (z.B. per sudo am_rpi_framebuffer -t TFT_50 --daemon), so können die stop- und status-Kommandos des Init-Skripts dennoch verwendet werden. Das start bzw. restart-Kommando starten am_rpi_framebuffer jedoch wieder mit der Konfiguration aus /etc/default/am_rpi_framebuffer.

[4]USE_FB0 ist ab Softwareversion 20140101 verfügbar. Um dies auch in älteren Softwareversionen zu verwenden, muss eine neue Version des Init-Skripts am_rpi_framebuffer.sh nach /etc/init.d kopiert werden.

7.4.5   Linux-Konsole

Unter Linux existieren normalerweise mehrere Konsolen, zwischen denen mit (Ctrl-)Alt-Fx (z.B. Alt-F1 für die 1. Konsole, Alt-F2 für die 2. usw.) oder Alt-Links/Alt-Rechts gewechselt werden kann. Die Konsole 7 wird bei Raspbian und bei Debian-Systemen üblicherweise für X11 verwendet. (siehe auch: /etc/inittab)

Für jede Konsole kann mittels con2fbmap ausgewählt werden, welches Display (bzw. genauer: welcher Framebuffer) dafür verwendet werden soll (siehe: man con2fbmap). Damit sind verschiedene Konfigurationen möglich.

Im Folgenden wird angenommen, dass /dev/fb0 der Framebuffer des HDMI-Displays ist, und /dev/fb1 der Framebuffer des AdvaBoard-TFT-Displays. Werden mehrere virtuelle Advamation-Framebuffer angelegt, so müssen bei den folgenden Kommandos ggf. statt /dev/fb1 bzw. 1 höhere Nummern verwendet werden.

7.4.5.1   nur 1 Display
  • Konsole 1 auf dem HDMI-Display (bzw. dem HDMI-Framebuffer):

    con2fbmap 1 0
    
  • Konsole 1 auf dem AdvaBoard-Display:

    con2fbmap 1 1
    
7.4.5.2   2 Displays, identische Anzeige
  • identische Anzeige auf beiden Displays:

    Um auf beiden Displays eine identische Anzeige zu erzielen, muss für beide Displays der gleiche Framebuffer verwendet werden. Dazu sollte in der Konfigurationsdatei /etc/defaults/am_rpi_framebuffer der Wert USE_FB0="2" gesetzt und der Framebuffer-Daemon neu gestartet werden:

    sudo /etc/init.d/am_rpi_framebuffer.sh restart
    

    Alternativ kann der Framebuffer-Daemon manuell mit den entsprechenden Einstellungen neu gestartet werden, z.B. für das 5.0"-Display:

    con2fbmap 1 0
    sudo /etc/init.d/am_rpi_framebuffer.sh stop
    sudo am_rpi_framebuffer -d 0 -t TFT_50 --daemon
    

    Ist die Auflösung des HDMI-Framebuffers größer als die des AdvaBoard-Displays, so zeigt das AdvaBoard nur denjenigen Ausschnitt an, der auf das Display passt.

  • identische Anzeige auf beiden Displays + Anpassung der HDMI-Auflösung an das AdvaBoard-Display:

    Um auf dem HDMI-Display und dem AdvaBoard-Display wirklich eine identische Anzeige zu erreichen, muss die Auflösung der HDMI-Ausgabe dem AdvaBoard-Display angepasst werden. Dazu sollte in der Konfigurationsdatei /etc/defaults/am_rpi_framebuffer der Wert USE_FB0="1" gesetzt und der Framebuffer-Daemon neu gestartet werden:

    sudo /etc/init.d/am_rpi_framebuffer.sh restart
    

    Alternativ kann die HDMI-Auflösung manuell per fbset geändert (siehe "Standard-Raspberry Pi-Framebuffer" im Abschnitt Framebuffer). und der Framebuffer-Daemon mit den entsprechenden Parametern neu gestartet werden, z.B. für das 5.0"-Display:

    fbset -fb /dev/fb0 -xres 800 -yres 480 -vxres 800 -vyres 480 -depth 16
    con2fbmap 1 0
    sudo /etc/init.d/am_rpi_framebuffer.sh stop
    sudo am_rpi_framebuffer -d 0 -t TFT_50 --daemon
    
7.4.5.3   2 Displays, unterschiedliche Anzeige
  • Konsolen auf beiden Displays:

    Da für jede Linux-Konsole eingestellt werden kann, welchen Framebuffer sie verwenden soll, ist es möglich, z.B. Konsole 1 auf dem HDMI-Display, und Konsole 2 auf dem AdvaBoard-Display anzuzeigen:

    con2fbmap 1 0
    con2fbmap 2 1
    

    Leider wird bei dieser Konfiguration immer nur die Anzeige der momentan "aktiven" Konsole aktualisiert. Mit Alt-Fx, Alt-Links bzw. Alt-Rechts kann jedoch zwischen den beiden Konsolen (und damit zwischen den beiden Displays) umgeschaltet werden, wobei jeweils die Anzeige der aktivierten Konsole aktualisiert wird.

  • gleichzeitige Verwendung beider Displays (inkl. Aktualisierung beider Displays):

    Leider ist es mit der im Linux-Kernel integrierten Konsole nicht möglich, auf beiden Displays gleichzeitig jeweils eine Konsole anzuzeigen, und beiden Anzeigen ständig zu aktualisieren. Es gibt jedoch zwei Möglichkeiten, dies dennoch zu erreichen:

    • kmscon: Statt der im Linux-Kernel integrierten Konsole kann "kmscon" – eine virtuelle Konsole im User-Space – verwendet werden. kmscon unterstützt u.a. den gleichzeitigen Betrieb mehrerer Displays.

      Weitere Informationen zu kmscon finden Sie unter:

    • X11: Es kann auf beiden Displays eine graphische Benutzeroberfläche gestartet werden (siehe nächster Abschnitt), und darauf ein einfacher Fenstermanager mit je einem Vollbild-Terminal laufen.

7.4.6   X Window System / X11

Ein Raspberry Pi mit angeschlossenem AdvaBoard RPi1 und TFT-Display (mit aktivem Framebuffer-Treiber) verhält sich aus Linux-Sicht wie ein System mit 2 Grafikkarten mit jeweils 1 Display:

  • "1. Grafikkarte": Dies ist die im Raspberry Pi integrierte Videohardware mit optional angeschlossenem HDMI-Display.
  • "2. Grafikkarte": Dies ist das AdvaBoard (bzw. der zugehörige Framebuffer) mit dem angeschlossenen TFT-Display.

Sämtliche Multi-Monitor-Betriebsarten sind hierbei wie bei einem "normalen" System mit 2 Grafikkarten möglich.

Im Folgenden wird wieder angenommen, dass /dev/fb0 der Framebuffer des HDMI-Displays und /dev/fb1 der Framebuffer des AdvaBoard-Displays ist, und dass der am_rpi_framebuffer-Daemon läuft.

Zudem wird die folgende Standard-AdvaBoard-X11-Konfigurationsdatei verwendet. Diese muss ggf. als /etc/X11/xorg.conf angelegt bzw. dorthin kopiert werden:

# generic xorg.conf for AdvaBoard RPi1
#
# :Version: 2013-01-09
# :Author:  Advamation / Roland Koebler <info@advamation.de>

# AdvaBoard-TFT-Display
Section "Device"
    Identifier  "Advamation Framebuffer"
    Driver      "fbdev"
    Option      "fbdev" "/dev/fb1"
EndSection
Section "Screen"
    Identifier  "AdvaBoard"
    Device      "Advamation Framebuffer"
EndSection

# HDMI
Section "Device"
    Identifier  "HDMI Framebuffer"
    Driver      "fbdev"
    Option      "fbdev" "/dev/fb0"
EndSection
Section "Screen"
    Identifier  "HDMI"
    Device      "HDMI Framebuffer"
EndSection

# dummy/single-head layout
Section "ServerLayout"
    Identifier  "default"
EndSection

# multi-head layout
Section "ServerLayout"
    Identifier  "HDMIAdvaBoard"
    Screen      0 "HDMI" 0 0
    Screen      1 "AdvaBoard" RightOf "HDMI"
EndSection

# multi-head layout, Xinerama
Section "ServerLayout"
    Identifier  "Xinerama"
    Screen      0 "HDMI" 0 0
    Screen      1 "AdvaBoard" RightOf "HDMI"
    Option      "Xinerama" "true"
EndSection
7.4.6.1   nur 1 Display
  • nur HDMI-Display, bzw. AdvaBoard-Display mit HDMI-Framebuffer:

    • ohne xorg.conf:

      startx
      
    • mit AdvaBoard-Standard-xorg.conf:

      startx -- -screen HDMI
      
  • nur AdvaBoard-Display (mit Advamation-Framebuffer):

    • ohne /etc/X11/xorg.conf:

      FRAMEBUFFER=/dev/fb1 startx
      
    • mit AdvaBoard-Standard-xorg.conf:

      startx
      # oder:
      startx -- -screen AdvaBoard
      
7.4.6.2   2 Displays, identische Anzeige
  • HDMI-Display + AdvaBoard-Display, identische Anzeige:

    Um auf dem HDMI-Display und dem AdvaBoard-Display die gleiche Anzeige zu erhalten, muss für beide Displays der gleiche Framebuffer verwendet werden.

    Ist die Auflösung des HDMI-Framebuffers größer als die des AdvaBoard-Displays, so zeigt das AdvaBoard nur denjenigen Ausschnitt an, der auf das Display passt. Alternativ kann die Auflösung der HDMI-Ausgabe dem AdvaBoard-Display angepasst werden, um eine wirklich identische Anzeige zu erreichen.

    Hierzu muss die Konfigurationsdatei /etc/defaults/am_rpi_framebuffer angepasst und der Framebuffer-Daemon neu gestartet werden:

    • Verwendung des gleichen Framebuffers für beide Displays, ohne Anpassung der Auflösung:

      USE_FB0="2"
      
    • Verwendung des gleichen Framebuffers für beide Displays, mit Anpassung der Auflösung:

      USE_FB0="1"
      

    Alternativ kann die Auflösung manuell geändert, und danach der Framebuffer-Daemon mit den entsprechenden Parametern neu gestartet werden:

    • Anpassung der Auflösung des HDMI-Framebuffers (optional), z.B. für das 5.0"-TFT-Display:

      fbset -fb /dev/fb0 -xres 800 -yres 480 -vxres 800 -vyres 480 -depth 16
      
    • Verwendung des gleichen Framebuffers für beide Displays, z.B. für das 5.0"-Display:

      con2fbmap 1 0
      sudo /etc/init.d/am_rpi_framebuffer.sh stop
      sudo am_rpi_framebuffer -d 0 -t TFT_50 --daemon
      

    Danach kann X11 gestartet werden:

    • ohne xorg.conf:

      startx
      
    • mit AdvaBoard-Standard-xorg.conf:

      startx -- -screen HDMI
      
7.4.6.3   2 Displays, unterschiedliche Anzeige
  • HDMI-Display + AdvaBoard-Display, getrennte Desktops:

    Auf dem HDMI-Display und dem AdvaBoard-Display können getrennte X11-Desktops angezeigt werden. Für jedes Display ist hierbei ein eigener Fenstermanager notwendig.

    Der Standard-Desktop von Raspbian (LXDE) unterstützt es jedoch nicht, gleichzeitig auf zwei Displays zu laufen; für das 2. Display muss deshalb ein anderer Fenstermanager (z.B. fvwm) verwendet werden.

    • Start mit AdvaBoard-Standard-xorg.conf:

      startx -- -layout HDMIAdvaBoard
      
    • Nach dem Start von LXDE: Start eines Fenstermanagers auf dem 2. Desktop, z.B. fvwm (der zuvor allerdings installiert werden muss):

      DISPLAY=:0.1 fvwm
      

    Ein Verschieben der Fenster zwischen den Displays ist hierbei im Normalfall nicht möglich. Programme öffnen sich standardmäßig auf dem Desktop, auf dem sie gestartet werden. Es ist jedoch möglich, sie auf dem jeweils anderen Desktop zu starten, indem die Umgebungsvariable DISPLAY entsprechend gesetzt wird, wobei die beiden Desktops die Namen :0.0 und :0.1 tragen. Beispiele:

    • Start eines LXTerminals auf dem 1. Display:

      $ DISPLAY=:0.0 lxterminal
      
    • Start eines LXTerminals auf dem 2. Display:

      $ DISPLAY=:0.1 lxterminal
      
  • HDMI-Display + AdvaBoard-Display, gemeinsamer Desktop (Xinerama):

    Mittels Xinerama kann 1 X11-Desktop verwendet werden, der sich über beide Displays erstreckt [5]. Es wird hierbei nur 1 Fenstermanager verwendet, und die Fenster können zwischen den Displays verschoben werden.

    Zu beachten ist jedoch, dass der resultierende Desktop weiterhin rechteckig ist; besitzen HDMI-Display und AdvaBoard-Display unterschiedliche Auflösungen, so kann dies zu unsichtbaren Bereichen des Desktops (außerhalb des "kleineren" Displays) führen. Deshalb sollte darauf geachtet werden, dass sich in diesem Bereich keine wichtigen Desktop-Elemente (z.B. das Startmenü) befinden.

    • Start mit AdvaBoard-Standard-xorg.conf:

      startx -- -layout Xinerama
      
[5]Dies ist derzeit nur mit Xinerama möglich. Die neuere Erweiterung "RandR" ist dazu bisher nicht geeignet, da RandR 1.3 keine Unterstützung für mehrere Grafikkarten enthält. Mit RandR 1.4 soll sich dies angeblich ändern, da dort ein sogenannter "GPU object support" eingeführt werden soll.

7.4.7   SDL

Die Bibliothek "Simple DirectMedia Layer" (SDL) wird von einigen Programmen (z.B. SqueezePlay/Jive) für ihre Grafikausgabe verwendet. Damit ist es möglich, diese Programme auch ohne X11 laufen zu lassen.

Soll ein SDL-basierendes Programm ohne X11 auf dem AdvaBoard-TFT-Display verwendet werden, so muss evtl. eingestellt werden, welchen Framebuffer das SDL-Programm verwenden soll. Hierzu kann die Umgebungsvariable SDL_FBDEV gesetzt werden, z.B.:

$ SDL_FBDEV=/dev/fb1 PROGRAMM

7.5   Touchpanel

7.5.1   Linux-Touchpanel-Treiber

Soll das Touchpanel unter X11 verwendet werden, so muss der entsprechende Treiber (am_rpi_touchpanel) installiert und gestartet werden.

Hinweis:
Das Touchpanel funktioniert derzeit unter X11 und nur im 1-Monitor-Betrieb sowie, wenn für beide Monitore der gleiche Framebuffer verwendet wird. Im X11-Multi-Monitor-Betrieb sollte das Touchpanel derzeit nicht verwendet werden.

Eine kurze Hilfe zu den Parametern des Treibers erhalten Sie mit am_rpi_touchpanel --help:

Usage:
  am_rpi_touchpanel [OPTION...] - Advamation touchpanel-driver

Help Options:
  -h, --help                     Show help options

Application Options:
  -i, --iface=ADVABOARD_RPi1     display-interface (default: ADVABOARD_RPi1)
  -t, --type=TFT_..              display-type (TFT_32,TFT_43,TFT_50,TFT_70)
  -r, --rot=angle                display-/tp-rotation (0, 90, 180, 270)
  -f, --calib=FILENAME           touchpanel calibration-file
  -m, --mode=MODE                touchpanel-mode
                                     0: touchpanel (default)
                                     1: mouse-emulation
  --daemon                       daemonize
  -v, --verbose=LEVEL            verbosity level (default: 64)
      (DEBUG: 128, INFO: 64, MESSAGE: 32, WARNING: 16, CRITICAL: 8, ERROR: 4|0)

wichtigste Optionen:

--type:
TFT-Display-Typ: TFT_32, TFT_43, TFT_50 oder TFT_70
--rot:
Drehung des Touchpanels um 0, 90, 180 oder 270 Grad. Hier sollte der gleich Wert wie bei am_rpi_framebuffer angegeben werden.
--calib:
Touchpanel-Kalibrierdatei
--daemon:
Startet das Programm im Hintergrund.
--mode:

(ab Softwareversion 20140101 verfügbar)
Touchpanel-Modus: Im Normalfall sollte die Standardeinstellung (Touchscreen-Modus) beibehalten werden.

Unterstützt ein Programm jedoch keine Touchscreens, oder funktioniert die Touchscreen-Unterstütung nicht korrekt (z.B. SDL 1.2, siehe unten), so kann als "Workaround" eine normale Maus emuliert werden. Die relative Mausbewegung ergibt sich hierbei aus der Differenz der aktuellen Touchposition zur vorherigen Touchposition. Zu beachten ist, dass dies nur dann sinnvoll funktioniert, wenn keine weitere Maus verwendet wird, und wenn keine Programme verwendet werden, die eigenmächtig die Mauszeiger-Position verändern.

Wird der Touchpanel-Treiber per Init-Skript gestartet, so kann der Modus per TP_MODE="0" bzw. TP_MODE="1" in /etc/default/am_rpi_framebuffer eingestellt werden.

  • Installation:

    Der Touchpanel-Treiber wird zusammen mit der AdvaBoard RPi1-Software installiert (siehe README-Datei der AdvaBoard RPi1-Software).

  • Kalibrierung:

    siehe Touchpanel-Kalibrierung

  • Start:

    Der Touchpanel-Treiber kann entweder manuell, oder per Init-Skript gestartet werden:

    • manueller Start, z.B. für ein TFT50-Display:

      sudo modprobe uinput
      sudo am_rpi_touchpanel -t TFT_50 -calib tft50.calib --daemon
      
    • Start per Init-Skript:

      Installation des Init-Skripts und der Kalibrierdatei, z.B. für eine Kalibrierdatei tft50.calib:

      sudo cp tools/sysvinit/am_rpi_touchpanel.sh /etc/init.d/
      sudo cp tft50.calib /etc/am_rpi_touchpanel.calib
      sudo update-rc.d am_rpi_touchpanel.sh defaults
      sudo update-rc.d am_rpi_touchpanel.sh enable
      

      Beim nächsten Neustart des Systems wird nun das Touchpanel aktiviert. Zusätzlich kann das Touchpanel über das Init-Skript gesteuert werden:

      sudo /etc/init.d/am_rpi_touchpanel.sh start
      sudo /etc/init.d/am_rpi_touchpanel.sh stop
      sudo /etc/init.d/am_rpi_touchpanel.sh restart
      sudo /etc/init.d/am_rpi_touchpanel.sh status
      
  • Zu Test- und Debugzwecken können zudem die vom Linux-Touchscreen-Treiber generierten Ereignisse mittels evtest angezeigt werden:

    apt-get install evtest
    sudo evtest /dev/input/event2
    

    Je nach dem, welche weiteren Eingabegeräte an den Raspberry Pi angeschlossen sind, muss evtl. statt event2 eine andere Datei verwendet werden.

Sollten Sie zusammen mit dem TFT-Display eine SD-Karte mit installierter AdvaBoard-Software von uns erworben haben, so ist der Touchscreen dort bereits kalibriert und das Init-Skript installiert.

7.5.2   Touchpanel-Kalibrierung

  1. Bevor der Touchscreen kalibriert wird, sollten der Framebuffer-Treiber und der Touchpanel-Treiber abgebrochen werden:

    sudo /etc/init.d/am_rpi_framebuffer.sh stop
    sudo /etc/init.d/am_rpi_touchpanel.sh stop
    

    Sollte das Display derzeit aus sein, so muss es eingeschaltet werden, z.B. für das 5.0"-Display:

    sudo am_rpi_tft_tool -t TFT_50 -f tft50.calib -m ON
    
  2. Touchpanel kalibrieren, z.B. für das 5.0"-Display:

    sudo am_rpi_tft_tool -t TFT_50 -f tft50.calib -m TP_CALIBRATE
    

    Hierbei müssen 3 Punkte auf dem TFT-Display möglichst exakt berührt werden. Wir empfehlen, hierzu einen Touchscreen-Stift zu verwenden.

  3. Kalibrierung testen, z.B. für das 5.0"-Display:

    sudo am_rpi_tft_tool -t TFT_50 -f tft50.calib -m TEST_TPCALIB
    

    Nun kann der Touchscreen berührt werden, und am Berührpunkt sollte ein Kreuz angezeigt werden. Stimmt die Position des Kreuzes nicht hinreichend gut mit der Berührposition überein, so sollte die Kalibrierung wiederholt werden. Der Test kann per Ctrl-C abgebrochen werden.

  4. Kopieren der Kalibrierdatei an den passenden Ort, z.B.:

    sudo cp tft50.calib /etc/am_rpi_touchpanel.calib
    
  5. ggf. Framebuffer-Treiber und Touchpanel-Treiber wieder starten:

    sudo /etc/init.d/am_rpi_framebuffer.sh start
    sudo /etc/init.d/am_rpi_touchpanel.sh start
    

7.5.3   tslib

Der Touchscreen kann zudem mit der tslib verwendet werden. Dazu muss zunächst der Linux-Touchscreen-Treiber gestartet (siehe vorheriger Abschnitt), und danach der Touchscreen per tslib kalibriert werden.

  • Installieren der tslib-Testprogramme (ts_calibrate, ts_test):

    apt-get install libts-bin
    
  • tslib-Touchscreen-Kalibrierung:

    sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/event2 ts_calibrate
    
    # bzw.:
    sudo bash
    export TSLIB_FBDEVICE=/dev/fb1
    export TSLIB_TSDEVICE=/dev/input/event2
    ts_calibrate
    

    Ggf. müssen – je nach dem, welche weiteren Geräte an dem Raspberry Pi angeschlossen sind – statt fb1 und event2 andere Dateien (z.B. event3) verwendet werden.

    Die Kalibrierdaten werden hierbei standardmäßig in die Datei /etc/pointercal geschrieben.

  • tslib-Test:

    sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/event2 ts_set
    

7.5.4   SDL

Von SDL (Simple DirectMedia Layer) existieren mehrere Versionen mit unterschiedlicher Touchscreen-Unterstütztung:

  • Version 1.2:

    Dies scheint die am weitesten verbreitete Version zu sein: Sie wird von vielen Programmen (z.B. von SqueezePlay) verwendet und ist u.a. im Raspbian-Repository enthalten.

    Leider ist die Touchscreen-Unterstützung sehr beschränkt: SDL 1.2 scheint selbst weder mit evdev-Eingabegeräten (/dev/input/event*), die Absolutkoordinaten liefern, noch mit tslib-Touchscreens zurecht zu kommen. Es gab jedoch verschiedene (teilweise erfolgreiche) Versuche, SDL 1.2 entsprechend zu patchen [6].

  • Version 1.3/2.0:

    In Version 1.3 wurde die Touchscreen-Unterstützung verbessert, jedoch sind die Versionen 1.3 und 2.0 inkompatibel zur Version 1.2, so dass Programme, die SDL 1.2 verwenden, nicht einfach mit SDL 1.3 oder 2.0 übersetzt werden können. Zudem sind SDL 1.3 und 2.0 nicht in Raspbian enthalten, und wurden deshalb nicht getestet.

Soll nun ein Programm, das SDL 1.2 verwendet (z.B. SqueezePlay), per Touchscreen bedient werden, so gibt es zwei Möglichkeiten:

  1. Start des Programms unter X11: Da X11 eine gut funtkionierende Touchscreen-Unterstützung besitzt, können SDL-Programme per Touchscreen bedient werden, wenn sie unter X11 gestartet werden.
  2. Emulation einer Maus: Der Touchscreen-Treiber am_rpi_touchpanel kann optional eine Maus emulieren (siehe --mode unter Linux-Touchpanel-Treiber). Damit ist es möglich, auch Programme per Touchscreen zu bedienen, die selbst keine Touchscreen-Unterstütztung beinhalten. Allerdings funktioniert dies wie oben bereits erwähnt nur dann zuverlässig, wenn keine weitere Maus verwendet wird und das SDL-Progamm selbst die Mauszeiger-Position nicht verändert. Zudem funktioniert dies derzeit nur, wenn das SDL-Programm den gesamten Bildschirm ausfüllt.
[6]z.B.: http://www.vogons.org/viewtopic.php?t=27360, http://forums.libsdl.org/viewtopic.php?p=25979