Mini Framebuffer ImageViewer

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Mini Framebuffer ImageViewer

Beitrag von KingBonecrusher » 17.03.2010 10:28:13

Ich suche für eine Embedded Box ein richtig kleines Programm um auf einer FB-Konsole ein Bild anzuzeigen und im Hintergrund den Start ablaufen zu lassen. Splashy ist keine alternative, zu gross und ich habe keine initrd. Desweiteren bleibt es im Grafikmodus stehen. Fbi ist ebenfalls mit allen Abhängigkeiten zu gross und kann nur alleine ablaufen.

Mein Plan wäre es frühzeitig ein Script zu starten welches das Programm startet, den Bildschirm anzeigt. Bootvorgang sollte weiter laufen. Und kurz vorm X-Server kille ich das Programm wieder. Ich brauche keine Prozentanzeigen oder sonst was für SchnickSchnack, Bootvorgang dauert eh nur paar Sekunden.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Mini Framebuffer ImageViewer

Beitrag von cosmac » 17.03.2010 13:49:50

hi,

du könntest das Linux-Logo im Kernel durch ein eigenes Bild ersetzen. Das erscheint dann so früh wie möglich und muss nicht vor dem Start von X gekillt werden. Die Konfiguration passiert unter Device Drivers -> Graphics support -> Bootup logo (z.B. CONFIG_LOGO_LINUX_CLUT224). Das Bild muss als Portable Pixmap unter drivers/video/logo/ gespeichert werden (z.B. logo_linux_clut224.ppm). Wenn du eine der Original-Dateien durch deine ersetzt, ist nichts weiter nötig, nur ein "make".

Gimp kann dieses Format direkt erzeugen, wenn man das Bild vorher in das "indexed"-Format mit 224 Farben umwandelt. Die Größe muss natürlich zum Framebuffer passen, wenn's kleiner ist, bleibt rechts und/oder unten ein schwarzer Rand. Den kann man für Boot-Meldungen nutzen, indem man in einem der ersten Scripte den Cursor positioniert, z.B. in Zeile 42, Spalte 1:

Code: Alles auswählen

echo -en '\e[42;1H'
Beware of programmers who carry screwdrivers.

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Re: Mini Framebuffer ImageViewer

Beitrag von KingBonecrusher » 17.03.2010 14:29:44

Ja, stimmt. Diese Möglichkeit hatte ich ja ganz vergessen :-) So wie Du mir das erklärst kann ich also ein Bild@1024x768 basteln und es wird füllend angezeigt? So wie ich in Erinnerung habe wird pro CPU-Kern ein Bild angezeigt. War jedenfalls damals so bei meinen ersten Versuchen. Hatte dann 4x BMW Logo beim Start ;-)

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Mini Framebuffer ImageViewer

Beitrag von cosmac » 17.03.2010 15:00:12

hmpf, wer denkt denn bei "Embedded Box" und "richtig kleines Programm" an mehrere Kerne? In dem Fall müsste man wohl einen echten Patch anbringen, wahrscheinlich in drivers/video/fbmem.c, da gibt's einen Call

Code: Alles auswählen

y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,
                              num_online_cpus());
Ich hab's mal mit einem 1280x960 Bild in einem 1280x1024-Framebuffer probiert und das sah richtig aus. Der Kernel ist in dem Fall um ca. 1.2MB grösser, aber das ist "__initdata" und wird wieder freigegeben (siehe "dmesg | grep freed").
Beware of programmers who carry screwdrivers.

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Re: Mini Framebuffer ImageViewer

Beitrag von KingBonecrusher » 17.03.2010 15:08:14

Hi

Ich habe nich tviel Ahnung von C, sollte das dann so aussehen?

Code: Alles auswählen

y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,0);
Ich probiere es einfach mal. Das ist ein Sempron 2100+, also nur ein Kern. Aber mag sein, das irgendwann mal ein ATOM folgt. Bootmedium ist eine kleine 1GB DOM. Mit allem benötigten zeug sowie MediaCenter, X-Server, Emulatoren wird es dann schon recht eng.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Mini Framebuffer ImageViewer

Beitrag von cosmac » 17.03.2010 15:13:53

fast, aber 1 Bild soll ja wohl angezeigt werden, also eher

Code: Alles auswählen

y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, 1);
aber probier's erstmal ohne das wenn du sowieso nur einen Kern hast.
Beware of programmers who carry screwdrivers.

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Re: Mini Framebuffer ImageViewer

Beitrag von KingBonecrusher » 17.03.2010 15:32:39

Alles klar, werde dann mal ein Bild wandeln. ich berichte dann. Grossen dank für die Hilfe!

Code: Alles auswählen

pngtopnm logo.png | ppmquant -fs 223 | pnmtoplainpnm > logo_linux_clut224.ppm

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Re: Mini Framebuffer ImageViewer

Beitrag von KingBonecrusher » 18.03.2010 07:50:49

So, leider erster Versuch fehlgeschlagen. Habe mir so schickes Logo gemacht. Auf 1360x768 (TV) (Datei ~ 380Kb)skaliert. Das dann nach plainppm gewandelt. Hatte dann ne richtig fette 10,2MB Datei. Das dann in den Kernel kompiliert. Kernel startet ganz normal, ich kann ausserdem nur die letzte Zeile sehen. 45% des Schirms ist komplett schwarz. Der Rest steht still. Nur die letzte Zeile bewegt sich.

Hm, ich denke mal das Logo ist enfach zu gross oder falsch. Jedenfalls der Kernel hat sich kaum verändert in der Grösse. Gibt es da ein paar Tipps wie ich das Bild kleiner machen kann? Bestimmte Farben verwendne oder so?

mfg

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Mini Framebuffer ImageViewer

Beitrag von cosmac » 18.03.2010 12:20:57

welche Auflösung hat denn dein Framebuffer? Wenn das Bild breiter ist, wird es bei mir garnicht angezeigt, aber evt. passieren dann ganz seltsame Dinge. Was wird denn von deinem Bild angezeigt? Falsche Farben oder nur ein Teil oder...? Wie sieht das logo.ppm in einem Bildbetrachter aus? Dass die reine Größe ein Problem sein soll, kann ich mir nicht vorstellen, mein logo.ppm hat 13MB und der Kernel wird ca. 555kB größer.

Dass nur die untersten Zeilen scrollen ist mir auch aufgefallen, allerdings nur auf einem von zwei Rechnern. Wahrscheinlich werden bei dem (wegen "quiet") zuwenig Boot-Meldungen ausgegeben -- was ja auch vernünftig ist, man will ja das Logo nicht mit Text vollmüllen. Insofern würde ich das als Feature betrachten, man müsste nur eine sinnvolle Zeilenzahl einstellen können.
Beware of programmers who carry screwdrivers.

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Re: Mini Framebuffer ImageViewer

Beitrag von KingBonecrusher » 18.03.2010 14:35:31

Daran wird es wohl liegen, hatte das Bild auf 1360x768 skaliert und vga=791 genommen, natürlich passt das nicht. Werde mal das Bild auf 800x600 skalieren und mit grub2 mal den gfxpayload ebenflls auf 800x600 setzen. Das sollte klappen und an sich nur kurz das Bild verschwinden lassen und einen konstanten Bootschirm bringen ;-)

mfg

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Re: Mini Framebuffer ImageViewer

Beitrag von KingBonecrusher » 22.03.2010 12:31:32

So, hat geklappt :-) Habe unten ein wenig frei gelassen vom Image. Dort werden nun die Bootmeldungen ausgegeben :-) Mit dem setzen des Cursors klappt zwar auch, aber wenn ich von USB Stick boote meldet sich der Kernel leider zuerst bevor das Cursor Script gestartet wird.

mfg

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Re: Mini Framebuffer ImageViewer

Beitrag von KingBonecrusher » 29.03.2010 23:11:55

Hier mal mein Ergebnis. Wie man sieht ist das BIOS noch nicht auf Tempo angepasst, aber der Rest bootet schon recht schnell. Bootmedium ist eine 1GB DOM.

Sempron 2100+ @1GHz / 2GB RAM / 1GB DOM

http://www.file-upload.net/download-239 ... t.mp4.html

Antworten