Así que tengo un modelo Palm Pre (P100EWW original) en el que habilité el modo de desarrollador e instalé un chroot Debian Squeeze. Funciona genial. Tengo planes de usar esto para CUALQUIER COSA (bittorrent peer, servidor web) pero un teléfono.
Me di cuenta de que si lo hago cat /dev/urandom > /dev/fb0
, escribe píxeles aleatorios en la pantalla hasta que No space left on device
se genera un error. Impresionante, ahora puedo usar la pantalla.
Entonces, ¿qué tipo de utilidades hay? A) me permitirá usar / dev / fb0 como consola a la que puedo enviar texto o B) renderizar texto en / dev / fb0 desde la línea de comandos.
Todavía no sé cómo volver a compilar el kernel para esto (me encantaría despojar a WebOS por completo y convertirlo en un servidor ARM mínimo) para que las herramientas de espacio de usuario si existen es lo que estoy preguntando. También preferiría renderizar directamente a / dev / fb0 y no usar X.
fuente
Respuestas:
Para usar el framebuffer como consola, necesita el
fbdev
módulo. Puede que tenga que recompilar su núcleo.También te puede interesar el proyecto DirectFB, que es una biblioteca que facilita el uso del framebuffer. También hay aplicaciones y entornos GUI escritos para ello.
fuente
dfbg
que me permite poner una imagen allí (y no la elimina al finalizar, comofbi
). Sé que es probable que pueda encontrar una utilidad para crear un .png o similar de un bloque de texto por lo que este podría funcionar ...Varias personas han respondido las partes de su pregunta relacionadas con el núcleo y colocando imágenes (en lugar de texto) en el framebuffer, pero hasta ahora el resto permanece sin abordar. Sí, puede usar el subsistema de terminal virtual del núcleo para crear la llamada consola framebuffer . Pero hay varias herramientas que le permiten usar el dispositivo framebuffer para crear terminales virtuales de espacio de usuario . Éstas incluyen:
console-terminal-emulator
andconsole-fb-realizer
tools in nosh : un terminal virtual de espacio de usuario destinado a replicar terminales virtuales de kernel Linux y FreeBSD / PC-BSD. Tampoco tiene dependencias en las bibliotecas X.logind
servidor en systemd y sus nociones de "asientos".Ali Gholami Rudi en particular ha producido más que un simple emulador de terminal para el trabajo de framebuffer. También escribió un visor de PDF directo a framebuffer, visor de VNC, reproductor de medios y lector de Corán.
Una comparación completa lado a lado está fuera del alcance de esta respuesta; pero aquí hay algunos puntos que son relevantes para la pregunta:
fbpad
y las herramientas nosh por diseño no hacen uso de ninguna biblioteca X.bdftobogl
herramienta; y uno convierte TTF a las fuentes "tinyfont" que fbpad usa con la herramienta ft2tf ( Arch ).console-fb-realizer
herramienta nosh usa las mismas fuentes "vt" que el nuevo subsistema de terminal virtual del núcleo FreeBSD 10.1 y, por lo tanto, comparte la herramienta de manipulación de fuentes FreeBSDvtfontcvt
para convertir las fuentes BDF.console-convert-kbdmap
herramienta. Una vez más, estos archivos kbdmap son los que se usan con el subsistema FreeBSD / PC-BSD vt .login
./etc/ttys
(BSD),/etc/inittab
(sistema Linux 5init
) u otro sistema, al que dejan el trabajo de generar getty / login / shell.console-fb-realizer
solo necesita suficientes privilegios para abrir el framebuffer y los dispositivos de eventos de entrada, que no necesitan ser privilegios de superusuario, y para acceder a los FIFO y los archivos ordinarios que mantieneconsole-terminal-emulator
, lo que a su vez no necesita ningún privilegio especial.Todos estos son emuladores de terminal, por supuesto. Si desea eliminar la emulación de terminal y colocar el texto en el framebuffer más directamente, tiene algunas opciones:
console-terminal-emulator
.console-fb-realizer
usa un archivo de visualización con una matriz de celdas de caracteres, como/dev/vcsa*
un archivo ordinario (no un archivo de dispositivo especial de caracteres) y con puntos de código Unicode, atributos ECMA-48 y color RGB de 24 bits. Por lo tanto, uno puede ejecutarlo y simplemente escribir carácter + atributo + color directamente en el archivo de matriz de celdas de caracteres, dejandoconsole-fb-realizer
que la representación de fuentes en el buffer de cuadros.Como comentario: observe que esto es lo opuesto a la integración con BRLTTY , que usa
console-terminal-emulator
pero no se ejecutaconsole-fb-realizer
.fuente
fbcon
, dependiendo de las opciones de tiempo de compilación . Esto también es cierto para su emulador de terminal dependiente Terminología : funciona directamente en el framebuffer de Linux (fbcon) . Aparteterminology
, la segunda mekmscon
(y otros trabajos de David Herrmann) recomendación a mí mismo .Si puede capturar
/dev/urandom > /dev/fb0
y obtener píxeles aleatorios en la pantalla, tiene todo lo que necesita.En mi caso, necesitaba volcar información de texto. Probé esto en busybox y raspi, por lo que podría funcionar para usted. La respuesta puede ser un poco larga, ya que si no usa alguna consola, deberá imprimir los píxeles de los caracteres usted mismo. Afortunadamente, alguien ha hecho el trabajo duro, por lo que solo tenemos que combinarlo.
En busybox o en tu raspi deberías tener un
fbset
binario. Esto podría ayudarlo a conocer su configuración como dimensiones de pantalla.En mi aspecto incrustado así:
La parte importante aquí es el ancho 480 y la altura 272 píxeles.
Como mencionó, puede completar la pantalla con
cat /dev/urandom > /dev/fb0
y puedes limpiarlo con
cat /dev/zeros > /dev/fb0
Luego de limpiar su pantalla, debemos asegurarnos de que obtenga las dimensiones correctamente.
Por casualidad, mi busybox tenía un binario fbsplash que recibía como entrada un archivo .ppm.
Corregir si me equivoco, pero parece que
fb0
acepta este formato. Echando un vistazo a Portable Anymap en Wikipedia , hay varios "subformatos" ... fbsplash usa uno elegante con color, y así sucesivamente ... pero queremos poder imprimir algo legible. Usemos el P1 codificado en ASCII por simplicidad. Si pudiéramos imprimir una línea vertical, sabríamos que nuestras dimensiones son correctas. Vamos a intentarlo:Una línea vertical en un ppm tipo P1 debería verse así:
Entonces, habrá 272 líneas, 959 caracteres de ancho. La documentación dice que debería ser 1 en lugar de f ... en busybox y raspi f era más brillante.
Es importante que no tenga espacio después de los 0 ... Esta tarea puede ser un poco tediosa ... es mejor que use un editor de texto que lo ayude. En vim, puede copiar las dos primeras líneas, ir al modo de comando (esc), que escribir los siguientes caracteres:
Por supuesto, estoy usando mis dimensiones, deberías usar las tuyas. Cat a este archivo
/dev/fb0
, debería verse así:Ok, estoy haciendo trampa ... no es solo una línea allí ... son aproximadamente 8 ... pero cuando no funciona (tenemos dimensiones incorrectas o tenemos espacio al final, tener una sola línea es mucho más fácil).
Si llegaste tan lejos, solo tenemos que imprimir los píxeles correctos para verlos como caracteres. Gracias a Marcel Sondaar y su repositorio en GitHub no necesitaremos dibujar cada personaje.
Con un pequeño ajuste, expanda su programa simple para imprimir en
f
lugar deX
y en0
lugar de espacios, inserte espacios entre cada carácter, agregue el encabezado y tenemos un archivo .ppm con la letra correspondiente a su código de carácter.Un pequeño paso más y no obtienes un carácter como entrada, sino una línea. Cat un archivo, canalice a su programa y salida a
/dev/fb0
y obtendrá una salida de texto:Probé esta solución también en una frambuesa pi y funcionó. El sistema me dice que no tengo reputación para publicar más de 2 enlaces. Hasta que reciba esto, debes confiar en mi palabra: D
fuente
Para el lado de la consola, puede hacer eco de cosas
/dev/console
o puede usar syslog, y dependiendo de varias otras configuraciones, puede aparecer en la consola.Para las imágenes, ¡acabo de intentar capturar un archivo bmp en fb0 y realmente funcionó! (tipo de - copias múltiples, tamaño más pequeño)
Encontré un programa de bmp a framebuffer aquí . Ese debería ser un ejemplo perfecto del formato que espera fb0. También hay
fbi
un programa para escribir directamente en el búfer de trama.fuente
fbi
me permite poner una imagen en la pantalla, lo cual es útil, pero borra el framebuffer una vez que sale.Es una publicación antigua, pero entiendo que normalmente necesitas la consola framebuffer (fbcon) para ejecutar la consola en framebuffer. Está en la configuración. (controladores de dispositivo / gráficos / pantalla de consola ..)
fuente