Linux: tvservice -o dann tvservice -p Ergebnisse auf eingeschaltetem dipslay aber nicht angezeigt.

Erstellt am 17. März 2015  ·  9Kommentare  ·  Quelle: raspberrypi/linux

Ich habe dies mit zwei verschiedenen Displays und 3.12 und 3.18 .... auf einem B+ und Rev2 B ausprobiert.

Hilfreichster Kommentar

Die sdl-App hat einen eigenen Framebuffer erstellt und hat einen Zeiger auf den Framebuffer-Speicher, muss dies also selbst handhaben.
Ich denke wirklich, Sie sollten HDMI nicht ausschalten, wenn Apps den Bildschirm verwenden.
Sie können verwenden:

vcgencmd display_power 0

und

vcgencmd display_power 1

Dies ist eine weniger aufdringliche Art, das HDMI-Ausgangssignal zu entfernen, lässt aber die Overlays intakt.

Alle 9 Kommentare

Das ist normal. Das Ausschalten des zerstört alle Overlays (von denen der Framebuffer einer ist).
Sie können es mit "fbset -depth 8 && fbset -depth 16" neu erstellen.

Die App, die ich habe, basiert auf SDL und gibt immer noch auf dem Bildschirm aus.
17. März 14:33:46 raspberrypi user.err fbcp[3318]: Snapshot -1 nicht möglich. (60)
17. März 14:34:00 raspberrypi user.info Kernel: [ 326.704707] bcm2708_fb_ioctl 40044620,0 return=0 p[1]=0x80000001
17. März 14:34:00 raspberrypi user.err Kernel: [ 326.704940] bcm2708_fb_pan_display(0,0) return=16
17. März 14:34:46 raspberrypi user.err fbcp[3318]: Snapshot -1 nicht möglich. (120)
17. März 14:35:00 raspberrypi user.info Kernel: [ 386.693696] bcm2708_fb_ioctl 40044620,0 return=0 p[1]=0x80000001
17. März 14:35:00 raspberrypi user.err Kernel: [ 386.693907] bcm2708_fb_pan_display(0,720) return=16

Wiederherstellung mit versucht
(tvservice -p && sleep 2 && fbset -Tiefe 8 && fbset -Tiefe 16) 2>&1
keine Bildschirmausgabe
17. März 14:43:26 raspberrypi user.warn kernel: [ 268.637255] fb_set_par-Fehler erkannt, Fehlercode: 16
17. März 14:43:26 raspberrypi user.err Kernel: [ 268.649473] bcm2708_fb_blank(0) return=0 p[1]=0x80000001
17. März 14:43:26 raspberrypi user.info Kernel: [ 268.821121] bcm2708_fb_ioctl 40044620,0 return=0 p[1]=0x80000001
17. März 14:43:26 raspberrypi user.err Kernel: [ 268.821395] bcm2708_fb_pan_display(0,0) return=16
17. März 14:43:26 raspberrypi user.info Kernel: [ 268.972086] bcm2708_fb_ioctl 40044620,0 return=0 p[1]=0x80000001
17. März 14:43:26 raspberrypi user.err Kernel: [ 268.972286] bcm2708_fb_pan_display(0,720) return=16
17. März 14:43:26 raspberrypi user.info Kernel: [ 269.105637] bcm2708_fb_ioctl 40044620,0 return=0 p[1]=0x80000001
17. März 14:43:26 raspberrypi user.err Kernel: [ 269.105901] bcm2708_fb_pan_display(0,0) return=16

Eine Änderung von VT zu diesem Zeitpunkt führte zu einer Verkeilung von Pi.

Die sdl-App hat einen eigenen Framebuffer erstellt und hat einen Zeiger auf den Framebuffer-Speicher, muss dies also selbst handhaben.
Ich denke wirklich, Sie sollten HDMI nicht ausschalten, wenn Apps den Bildschirm verwenden.
Sie können verwenden:

vcgencmd display_power 0

und

vcgencmd display_power 1

Dies ist eine weniger aufdringliche Art, das HDMI-Ausgangssignal zu entfernen, lässt aber die Overlays intakt.

Ja, die SDL-App hat einen HW-Doppelpuffer verwendet, der über das Kernel-FB-Gerät zugewiesen wurde und zwischen den beiden Puffern schwenkt. Ich zeichne den Puffer danach neu und gebe den Wiederherstellungsbefehlssatz aus. Laut der Ausgabe von fbset -i ändert sich die fb-Adresse nach dem Durchlaufen des Energiezyklus nicht, aber ich denke nicht, dass das glaubwürdig ist und wahrscheinlich nicht synchron ist, daher der Absturz bei der vt-Änderung. An diesem Punkt eine Modusänderung erzwingen, um die fb neu zuzuweisen und die Zeiger zu aktualisieren?

Dass alles gesagte vcgencmd display_power (abzüglich der s auf den Displays) scheint das zu tun, was ich will (Implementierung eines Soft-Offs), danke.

Es gibt eine gepatchte Version der SDL-Bibliothek, auf die in diesem Forumsbeitrag verwiesen wird (http://www.raspberrypi.org/forums/viewtopic.php?f=38&t=99822&p=692525&hilit=sdl#p692525), die mit der Basisadresse von die FB ändert sich bei einer Auflösungsänderung. Es könnte sich lohnen, diese Version auszuprobieren, um zu sehen, ob sie sich besser verhält.

@pelwell lol ja das war ich, von dieser Seite ;-)

Sie können hier über das Problem lesen - https://github.com/raspberrypi/firmware/issues/354 SDL-Paket.

LOL in der Tat. Zu meiner Verteidigung ist es schon eine Weile her und ein unaussprechlicher Griff sieht dem anderen sehr ähnlich...

Der zugewiesene Framebuffer-Speicher wird beim Ausschalten nicht freigegeben, aber alle dispmanx-Elemente werden entfernt. Wenn Sie das dispmanx-Backend von sdl verwenden, wird die übliche dispmanx_element_add-Sequenz den Framebuffer wieder auf die Anzeige bringen.
Wenn Sie das Standard-Framebuffer-Backend verwenden, müssen Sie es ändern, damit es entfernt/hinzugefügt wird. Führen Sie in SDL praktisch dasselbe wie "fbset -depth 8 && fbset -depth 16" aus (zB Größe oder Tiefe ändern).
Die Lösung "vcgencmd display_power" ist jedoch wahrscheinlich am einfachsten.

vcgencmd display_power codierte Lösung tut, was ich brauche, um das Problem zu schließen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen