Linux: tvservice -o luego tvservice -p da como resultado dipslay encendido pero no se muestra nada.

Creado en 17 mar. 2015  ·  9Comentarios  ·  Fuente: raspberrypi/linux

He intentado esto con dos pantallas diferentes y 3.12 y 3.18 .... en un B + y rev2 B.

Comentario más útil

La aplicación sdl habrá creado su propio framebuffer y tendrá un puntero a la memoria del framebuffer, por lo que tendrá que manejar esto por sí misma.
Realmente creo que no debería apagar HDMI cuando las aplicaciones están usando la pantalla.
Puedes usar:

vcgencmd display_power 0

y

vcgencmd display_power 1

que es una forma menos intrusiva de eliminar la señal de salida HDMI pero deja intactas las superposiciones.

Todos 9 comentarios

Eso es normal. Al apagar el, se destruyen las superposiciones (de las cuales el framebuffer es una).
Puede recrearlo con "fbset -depth 8 && fbset -depth 16"

La aplicación que tengo está basada en sdl y todavía se muestra en la pantalla, así que viendo,
17 de marzo 14:33:46 raspberrypi user.err fbcp [3318]: No se puede tomar la instantánea -1. (60)
17 de marzo 14:34:00 kernel de raspberrypi user.info: [326.704707] bcm2708_fb_ioctl 40044620,0 devuelve = 0 p [1] = 0x80000001
17 de marzo 14:34:00 kernel de raspberrypi user.err: [326.704940] bcm2708_fb_pan_display (0,0) devuelve = 16
17 de marzo 14:34:46 raspberrypi user.err fbcp [3318]: No se puede tomar la instantánea -1. (120)
17 de marzo 14:35:00 kernel de raspberrypi user.info: [386.693696] bcm2708_fb_ioctl 40044620,0 devuelve = 0 p [1] = 0x80000001
17 de marzo 14:35:00 kernel de raspberrypi user.err: [386.693907] bcm2708_fb_pan_display (0,720) devuelve = 16

Intenté restaurar con
(servicio de tv -p && dormir 2 && fbset -depth 8 && fbset -depth 16) 2> & 1
sin salida de pantalla
17 de marzo 14:43:26 raspberrypi user.warn kernel: [268.637255] detectó error fb_set_par, código de error: 16
17 de marzo 14:43:26 kernel de raspberrypi user.err: [268.649473] bcm2708_fb_blank (0) devuelve = 0 p [1] = 0x80000001
17 de marzo 14:43:26 kernel de raspberrypi user.info: [268.821121] bcm2708_fb_ioctl 40044620,0 devuelve = 0 p [1] = 0x80000001
17 de marzo 14:43:26 kernel de raspberrypi user.err: [268.821395] bcm2708_fb_pan_display (0,0) devuelve = 16
17 de marzo 14:43:26 kernel de raspberrypi user.info: [268.972086] bcm2708_fb_ioctl 40044620,0 devuelve = 0 p [1] = 0x80000001
17 de marzo 14:43:26 kernel de raspberrypi user.err: [268.972286] bcm2708_fb_pan_display (0,720) devuelve = 16
17 de marzo 14:43:26 kernel de raspberrypi user.info: [269.105637] bcm2708_fb_ioctl 40044620,0 devuelve = 0 p [1] = 0x80000001
17 de marzo 14:43:26 kernel de raspberrypi user.err: [269.105901] bcm2708_fb_pan_display (0,0) devuelve = 16

el cambio de VT en este punto resultó en una cuña de pi.

La aplicación sdl habrá creado su propio framebuffer y tendrá un puntero a la memoria del framebuffer, por lo que tendrá que manejar esto por sí misma.
Realmente creo que no debería apagar HDMI cuando las aplicaciones están usando la pantalla.
Puedes usar:

vcgencmd display_power 0

y

vcgencmd display_power 1

que es una forma menos intrusiva de eliminar la señal de salida HDMI pero deja intactas las superposiciones.

Sí, la aplicación SDL usó un búfer doble HW asignado a través del dispositivo kernel fb y pans entre los dos búferes, estoy redibujando el búfer después, emitiendo el conjunto de comandos de restauración. de acuerdo con el resultado de fbset -i, la dirección de fb no cambia después de pasar por el ciclo de encendido, pero no creo que eso sea creíble y probablemente no esté sincronizado, por lo tanto, el bloqueo del cambio de vt. ¿Forzar un cambio de modo en ese punto para reasignar el fb y actualizar los punteros?

Todo lo dicho vcgencmd display_power (menos los s en las pantallas) parecería hacer lo que quiero (implementando un apagado suave) gracias.

Hay una versión parcheada de la biblioteca SDL a la que se hace referencia en esta publicación del Foro (http://www.raspberrypi.org/forums/viewtopic.php?f=38&t=99822&p=692525&hilit=sdl#p692525) que hace frente a la dirección base de el FB cambia en un cambio de resolución. Podría valer la pena probar esa versión para ver si se comporta mejor.

@pelwell lol sí ese era yo, de esa página ;-)

Puede leer sobre el problema aquí - https://github.com/raspberrypi/firmware/issues/354 - Afortunadamente, alguien llamado pssc ya había solucionado el problema principal como parte de su trabajo de squeezeplay, por lo que incorporé la solución en una actualización Paquete SDL.

LOL de hecho. En mi defensa, fue hace un tiempo, y una manija impronunciable se parece mucho a otra ...

La memoria framebuffer asignada no se libera cuando se apaga la energía, pero se eliminarán los elementos dispmanx. Si está utilizando el backend dispmanx de sdl, la secuencia habitual dispmanx_element_add hará que el framebuffer vuelva a aparecer en la pantalla.
Si está utilizando el back-end del framebuffer predeterminado, deberá cambiarlo para que se elimine / agregue. Efectivamente, haga lo mismo que "fbset -depth 8 && fbset -depth 16" desde dentro de SDL (por ejemplo, cambie el tamaño o la profundidad).
Sin embargo, la solución "vcgencmd display_power" es probablemente la más sencilla.

La solución codificada vcgencmd display_power hace lo que necesito para cerrar el problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones