showiframe/write crash dump sourcecode ? - please ...

  • Hallo !


    Ich habe einen kleinen Bootmanager für thowi's multiboot geschrieben, weil mir das Wechseln der Images über die Spiele/Erweiterungen zu mühsam war.


    Nachdem ich im Moment für das Zeigen des Bootmenus das showiframe binary verwendet habe, wollte ich fragen ob jemand den Quellcode des showiframe binaries für die DM 7025 posten könnte, um zu sehen wie ich das bootmenu direkt in den Framebuffer schreiben kann.


    LG
    gutemine


    Kit ist im Anhang wenn es wer ausprobieren will, hier noch das readme.txt:


    **********************************************
    Bootmanger V2.0 by gutemine
    **********************************************


    Are you impatient to wait until your image is
    booted to choose another image in thowi's
    multiboot with the menu interface ?


    Are you impatient to wait for Flashwizzard
    support on the 7025 ?


    Well, then gutemine's bootmanager is
    worth a try !!!


    If you have installed already thowi's
    multiboot of a version greater then 6.0
    with all images already on the CF card,
    then simply unpack the
    bootmanager kit, either with manual
    install in Blue Pannel or in telnet:


    cd /
    bunzip2 /var/tmp/bootmanager20.tar.bz2
    tar -xvf /var/tmp/bootmanager20.tar.bz2


    Then you have to be booted from Flash
    (multiboot.sh boot 0) to enable the bootmanager
    in telnet:


    cd /media/mb/bootmanager
    install.sh


    That's it - simply reboot and watch the boot
    screen - after about 30 seconds it gets interesting !


    You can choose to boot from Flash and now up to
    all 12 Images that thowi's Multiboot supports


    Simply choose with your remote control
    UP/DOWN keys and then press OK - if you simply
    want to continue booting press OK without
    choosing another image (because booted image is always
    the default), or press EXIT.


    Now you can also choose the partitions
    for booting by pressing the numbers (0..9)
    and the colour buttons directly.


    If you press LEFT you will move to the first
    entry of the image list, with RIGHt to the last one.


    But hurry to choose another image for booting
    and Ok to confirm, because timeout for the
    bootmanager is 20 secs, after this
    the image continues booting !


    If you try to select an empty Image for booting
    the boot will simply continue with the currently
    booted image.


    If you want to remove gutemine's bootmanager
    simply boot from Flash again and type
    in telnet:


    cd /media/mb/bootmanager
    uninstall.sh


    PS: gutemine's bootmanager is not doing
    any harm to your multiboot environment,
    it is simply an addon offering extra
    functionality. All other multiboot
    functionality (including boot selection
    from addon menu) continues to work as usual !


    bye


    gutemine

  • kann mir den keiner helfen, sonst muss ich mich durch das ganze CVS quälen ?


    Ausserdem bin ich gestern draufgekommen das die Crashdumps (Blauer Bildschirm) auch in den Framebuffer geschrieben werden (wenn man schnell genug ist kann man mit seddi's fbshot einen screendump davon machen)


    Im Prinzip wäre der codeabschnitt wo enigma den text in den Framebuffer schreibt sogar noch besser geeignet um damit einen bootmanager zu schreiben der von enigma unabhängig ist, weil dann könnte man auch den Text im Bootmanager Menu dynamisch machen (Imagenamen,..), Fehlermeldungen ausgeben wenn ein Image nicht bootbar ist, etc...


    Ich muss also meine Bitte entsprechend erweitern, wenn wer auch den sourcecode der crashdumproutine von enigma posten kann wäre gutemine froh !


    Im mytest.py wird die routine als traceback.print_exc aufgerufen, dürfte aber in C ausprogrammiert sein weil.


    LG
    gutemine

    3 Mal editiert, zuletzt von Lost in Translation ()

    • Offizieller Beitrag
    Zitat

    Original von gutemine
    Ausserdem bin ich gestern draufgekommen das die Crashdumps (Blauer Bildschirm) auch in den Framebuffer geschrieben werden (wenn man schnell genug ist kann man mit seddi's fbshot einen screendump davon machen)


    Ääääähhhhm ...
    Kuck doch mal ins Rootverzeichnis deiner Festplatte, da liegen die Crashlogs fein säuberlich.


    Olove

    Grüße,
    Olove

    "All we need to do ... is keep talking (Stephen Hawking)"


    Ich leiste KEINEN Support per PN/E-Mail, derartige Anfragen werden nicht beantwortet.
    I won't give support via PN/E-Mail and I won't answer such messages.

  • ich weis, aber ich möchte die C routine haben wo der text in den Framebuffer geschrieben wird um den blauen Bildschirm zu erzeugen.


    Damit könnte ich dann den Bootmanager dynamisch machen - jetzt zeigt er einfach screenshots mit showiframe um das bootmenu zu emulieren - geht auch, tut aber im Herz weh es so zu lösen, auch wenn es dadurch schnell ging (und man glaubt das enigma läuft)


    PS: Wenn Ihr den Bootmanager testen wollt ohne Ihn zu installieren (install.sh macht aber nur einen S00 link im /etc/rc3.d), nach dem Auspacken des Kits folgendes eingeben:


    cd /media/mb/bootmanager
    init 2
    bootmanager (nach 20sek wird er aber automatisch gestoppt)


    Dadurch ist der bootmanager im Moment zwar abhängig davon, dass schon ein Kernel läuft, aber es ist ein erster Schritt um ohne enigma2 Interaktive Sachen auf dem TV Schirm zu zaubern.


    Den Input der Fernbedienung hohlt das Programm sich ja schon direkt vom /dev/input device, und genauso sollte auch der output funktionieren mit /dev/fb.


    LG
    gutemine

    Einmal editiert, zuletzt von Lost in Translation ()

  • Na ja, showiframe nutzt ja eben NICHT den Framebuffer, sondern nutzt den MPEG-Decoder.


    Der Framebuffer ist relativ simpel anzusteuern - unterm Strich ist das ja eine Bitmap, die du via mmap in den User-Space legst und da dann reinschreibst (das externe Flash-Utility aus enigma1 ist da ein recht kompaktes Beispiel für). Somit musst du alle Routinen z.B: zum Zeichnen einer Linie usw. selber schreiben. Für die Schriftausgabe greifst du entweder auf Bitmap-Fonts zurück, oder linkst gegen die freetype.
    Bei der dBox2 wird der Framebuffer in den Textmodus geschaltet, um Text auszugeben - das geht natürlich auch, allerdings werden in diesem Modus wohl keine Grafiken dargestellt...


    Ich habe mal was für die dm7xx0 geschrieben - praktisch ein Tool, womit man aus dem init-Skript heraus den Framebuffer beeinflussen kann (Laden von nem PNG, Fortschritsbalken, Text schreiben usw.). Irgendwann habe ich daran das Interesse verloren - insofern schreib mir mal ne Mail (littleboy69@arcor.de), wenn du den Source haben willst; wobei ich nicht weiss, ob der Kram im Moment noch durchkompiliert...


    Wenn du Glück hast, hat sich tmbinc schon die Mühe gemacht, eine entsprechende Python-lib für die dm7025 zu schreiben - damit könnte das ganze dann deutlich einfacher werden.

  • Hab hier für das MVI (Stillframe) reinschieben in den MPEG-Decoder nur einen Code-Schnipsel von den PPC-Boxen (also alte DVB Api), aber vielleicht brint dich das auf die richtige Fährte. Aber Achtung: Minimalcode ohne Netz und doppelten Boden, sprich keine Sicherheitsabfragen, etc ....


  • @LitteBoy


    Deswegen versuche ich ja das showiframe loszuwerden - aber wenn es eh nur ein anderes tool aufruft um die mpegs der Bootlogos darzustellen hilft es mir nicht wirklich, danke !


    Ich versuche aber gerade den Zen Browser auf der DM7025 zum Laufen zu kriegen - war der Einzige den ich bis jetzt gefunden habe der direkt auf dem Framebuffer laufen kann und einen 16/32 Bit FB unterstützt.


    Im Textmodus compiliert der eigentlich ohne irgendwelche Änderungen und funktioniert so auch (aber ist dann eigentlich nur eine art wget Ersatz).


    Damit die Grafikausgabe des Zen Browsers funktioniert muss man aber die oFbis Library zum Laufen bringen, das ist dann sowieso ein ganzer Toolkit von Routinen für den Framebuffer.


    Wenn ich damit nicht weiterkomme kriegst Du aber e-mail !


    Seddi


    Einfache Beispiele für Framebuffer manipulieren (Hintergrundfarbe ändern, Linie zeichnen, etc.) gibt es leider im Web schon genug, aber die helfen nicht wirklich wenn man eine Bootmanager Logik mit einem Menu implementieren will, und ich mag nicht bei 0 anfangen müssen - bis jetzt habe ich mich ja auch meist an Code von anderen Leuten bedient um rauszufinden wie es geht ein Plugin zu schreiben oder ähnliches. Der derzeitige Bootmanager lädt ja eigentlich auch nur auf mpeg konvertierte screenshots von thowi's Multiboot die mit showiframe angezeigt werden um das Herumschalten zwischen den Images zu ermöglichen ohne enigma2 anzuwerfen.


    Gerade der Code mit dem der Crashdump vom python ausgegeben wird
    wäre aber fein, weil Textmodus reicht anfangs durchaus aus, nachher schön machen (Hintergrundbilder, Farben, etc.) kann man dann immer noch.


    Also muss ich wohl weitersuchen und erstmals mit oFbis mein Glück versuchen.


    LG
    gutemine

    Einmal editiert, zuletzt von Lost in Translation ()

  • Ähmm .. das war kein Codeschnipsel für den Framebuffer sondern um ein MVI (MPEG Still Frame) in den Videodecoder zu schieben, nicht in den Framebuffer. Aber wie gesagt ist der noch für die alte DVB Api und müsste daher an 2 Stellen angepasst werden und setzt natürlich geladene DVB Treiber vorraus.


    Du hattest ja gefragt:

    Zitat


    wollte ich fragen ob jemand den Quellcode des showiframe binaries für die DM 7025 posten könnte


    Und wie gesagt, das ShowIframe hat nichts aber auch gar nichts mit dem Framebuffer zu tun, sondern schreibt MPEG Bilder in den MPEG Decoder die dann HINTER dem Framebuffer liegen und genau das macht der Codeschnipsel oben auch :winking_face:

  • Wenn du aber Text in den Framebuffer zaubern willst, kann ich dir auch was anbieten. Hab das gerade mal zusammengeschoben und etwas durchkommentiert, da ich gerade kein OE zur Hand habe, kann ichs allerdings nicht testen, sollte aber funktionieren. Wenn nicht kann ichs heute abend kurz testen und gegebenfalls korrigieren.
    Das Ganze spricht direkt den Framebuffer der 7025 im 32Bit Modus an und benutzt die Libfreetype, muss also auch gegen diese gelinkt werden. Der Source sollte ansonsten ohne weiteres kompilierbar sein und die Binary soltle man direkt auf der 7025 ausführen können und erzeugt dann eine grosse schwarze Box und schreibt links oben in weisser Schrift "Hallo !" rein, wartet 10 Sekunden, löscht dann alles wieder und beendet sich.


    Das ganze ist für den 32Bit Framebuffer der 7025 und funktioniert daher nicht auf den PPC Boxen.


    Ich häng den Code mal als Datei an, wollte ihn eigentlich direkt reinschreiben, kann hier aber leider nur 10000 Zeichen Grosse Beiträge schreiben :frowning_face:

  • Hi !


    Danke seddi, sowas habe ich gesucht, weil ich brauche eine variante die möglichst früh im Bootvorgang auch funktioniert und das geht nur mit dem Framebuffer device denke ich, weil die chance das ein bestehender minikernel eines bootmanagers das video device unterstützt ist recht gering denke ich.


    Ich spiele mich damit mal am Wochenende und dann kommt wenn alles gutgeht bald die nächste Version von gutemine's "Bootmanager"


    Eigentlich ist der Name aber Irreführend solange man einen laufenden Unixkernel braucht um Ihn aufzurufen - sollte wohl eher Multiboot Imageselector heissen.


    PS: Ich habe schon gesehen das der code auf /dev/video schreibt und nicht auf /dev/fb - mir war nur nicht bewußt das ich es damit durch das mpeg video decoding device der Dreambox jage :smiling_face:


    LG
    gutemine


    PS: ich bin noch auf der Suche nach der richtigen freetype Version, weil die *.h file müssen zusammenpassen.


    ------------------------- EDIT -----------------------------
    Ein paar Kleinigkeiten in seddi's code habe ich aber schon gefunden:


    Bei Hallo ! fehlt der " der den textstring wieder zumacht, ausserdem sind die .font.pix_height und .font.pix_width scheinbar nicht mehr aktuell - in der structur der include files gibt es nur mehr .width und .height ohne .font. und mit aktuellen includes beklagt der gcc Compiler sich mit warnings wenn man den FONT von face_id übergibt das Ihm die Pointer nicht passen, daher segmentation fault, aber das wird schon werden, weil besser als selbstschreiben ist das noch allemal ...

    9 Mal editiert, zuletzt von Lost in Translation ()

  • @gutemine


    Wie gesagt, hab das nur kurz aus ein paar meiner Codeschnipsel zusammengestupft und hatte kein OE um das mal kurz zu kompilieren und testen, werde das heute abend kurz durchfliegen und korrigieren :winking_face:


    Ähmm und wieso suchst du die richtige Freetype Version ? Auf der Box ist die libfreetype 2.0 doch da und wenn du ein ordentliches configure.ac und Makefile.am anlegst, dann biegt dich OE schon auf die richtigen include Verzeichnisse, da musst du dir nun wirklich keinen Kopf machen ...


    Ach ja und das mit den desc.font.pix_width etc, stimmt alles sowohl für freetype 2.0 als auch für 2.1, hab gerade mal den Source nochmal überflogen ... ist so problemlos kompilierbar, wenn du das sauber im OE machst (autotools!) mal abgesehen von den fehlenden Gänsefüschen :winking_face:


    Wenn ich deine Fehlerbeschreibung so lese, bezweifle ich dass du das im OE sauber kompilierst und gegen die dort vorhandene libfreetype und passenden includes kompilierst. Entweder legst du dir ein paar saubere autotools Dateien (configure.ac und so) an und machst ein bitbake file dazu oder du sparst dir das bitbake file und machst das mit der devshell ... ich kann da heute abend mal ein Paket zusammenstückeln. Ich denke hier fehlt es einfach mal an den richtigen include Verzeichnissen, etc. ...

    4 Mal editiert, zuletzt von Seddi ()

  • Seddi


    Ich muss beichten das ich es erstmals direkt auf der box compiliert habe, mein OE funktioniert noch nicht so wie es soll (liegt wohl an meinem älteren Red Hat Linux - ist noch nicht mal Fedora, und ich bin noch nicht dazu gekommen ein aktuelles Debian zu saugen).


    Ich habe die DM 7025 auch erst seit 2 Wochen, dafür bin ich eh schon weit gekommen denke ich :smiling_face:


    Anfangs hatte ich ja auch die Hoffnung das diese Sachen in Python geschrieben sind, weil C/C++ ist auch nicht meine Stärke, insbesondere
    das man alles variablen deklarieren muss und dann auch richtig übergeben ist manchmal ganz schon nervig !


    Bis jetzt bastle ich ja auch nur mit Sachen herum die andere gemacht haben um rauszufinden wie es überhaupt geht.
    Und dafür sind die Sachen die ich mir rausgesucht habe eh recht einfach, aber das ist eigentlich auch schon wieder Geschmacksache.


    Danke auf jeden Fall für die Hilfe, ich sagte ja schon, dass ich übers Wochenende jetzt denke wieder ein Stückchen weiter zu kommen.


    PS: Habe gerade den Picture Viewer von mechatron ausprobiert - jetzt verstehe ich warum Euch manche Fragen schon fast wieder langweilen, weil der ist schon ein "bischen" schöner als ein Hello World für den Framebuffer, aber irgendwo muss jeder ja mal anfangen und ich war ja auf der Suche nach einem einfachen Beispiel um zu sehen wie es geht.

    4 Mal editiert, zuletzt von Lost in Translation ()

  • Och du, das langweilt nicht und es war auch nicht böse gemeint. Bin eben nur von anderen Vorraussetzungen ausgegangen. Im Gegenteil ich freu mich über jeden der anfängt für die Box zu programmieren, denn nur so gehts vorwärts. Und da helfe ich (wir) auch gerne, nur wenn ich weiss, dass du mit dem make/configure System und dem OE noch keine so grossen Erfahrungen hast, dann knall ich dir auch nicht einfach ein Stück Source um die Ohren mit der knappen Erklärung "muss natürlich gegen libhfreetype gelinkt werden" :winking_face:


    Um sinnvoll zu kompilieren solltest du auf jeden Fall erst mal ein OE aufsetzen, das sollte auch auf einem "alten" Redhat ganz gut funktionieren. Das ist ja das schöne an dem OE, die Abhängigkeiten sind relativ gering (im Vergleich zum alten CDK, da war das aufsetzen wirklich schon fast ne Doktorarbeit), da dass OE sich fast alle Tools selbst kompiliert die es braucht. Ich werde die Tage mal den Quellcode zusammenpacken mit den kompletten configure Dateien, so dass es auf dem OE problemlos kompilierbar ist. Wenn du in der zwischenzeit dir das aktuelle Makefile von tmbinc schnappst und ein OE aufsetzt, dann kannst du schneller loslegen als du denkst und du wirst merken wie cool das OE als Crosscompile Umgebung wirklich ist.



    --------------------
    EDIT


    Habs gerade kurz getestet, der einzige Fehler im Code ist das fehlende "Gänsefüsschen", ansonsten passt das. Ich habs mal neu gepackt und hängs hier nochmal an. Hab ein einfaches Makefile.am und configure.ac dazugepackt. Sowie die Datei acinclude.m4 , die einfach aus dem Enigma2 Paket übernommen wurde und die M4 Macros deifiniert. Wenn man ein laufendes OE hat, am besten die devshell beutzen, die zum "basteln" am besten geeignet ist. wer die devshell nicht hat, geht einfach ins build Verzeichnis und macht ein bitbake devshell:


    Code
    cd oe7025/build
    . env.source
    bitbake devshell


    Danach findet man die devshell unter build/tmp/deploy/addons/mipsel-linux-opendreambox-dm7025-devshell
    und kann sie direkt starten. Danch geht man in das Verzeichnis in das man den Tarball hier entpackt hat und macht ein


    Code
    autotools_do_configure


    Dabei werden die ganzen autotools abgearbeitet, ein configure Script erstellt, ein Makefile generiert, etc. Danach macht man dann einfach ein


    Code
    make


    in dem Verzeichnis und schon hat man eine auf der 7025 ausführbare Datei namens "fbtext" die auch gegen die im OE (Image) vorhandene libfreetype gelinkt ist. Thats it.

  • DANKE,


    Ich denke das wird jetzt ein langes Wochenende werden bis ich das alles aufgesetzt habe, weil den Linux Upgrade will ich trotzdem vorher machen - der Debian Download läuft schon, aber wird erst morgen fertig sein - 8GB+ für 2 DVDs ist schon heftig, aber was solls.


    Mit den fertigen buildfiles von dir wird es dann wirklich 'piece of cake' wie die Amis sagen würden.


    Und sobald ich es am Laufen habe baue ich halt mehrere Rechtecke ein die die Imagenamen vom Multiboot beinhalten und zwischen denem man Umschalten kann (=Farbwechsel vom Hintergrund), ich denke also schon das ich mein Versprechen halten kann das in 1-2 Wochen gutemines bootmanager wirklich so ist das ich drüber nachdenken kann wie ich mit dem OE einen minikernel baue der wenigstens das FB device und das Input device unterstützzt damit dann das Programm auch kurz nach dem booten läuft.


    Nochmals Vielen Dank !


    LG
    gutemine

    Einmal editiert, zuletzt von Lost in Translation ()

  • Hi !


    Kurzer update ...


    Jetzt gehts endlich los !


    Nachdem ich beide Debian DVDs endlich hatte hat sich gezeigt, dass die Debian Installation mit meinem SATA Controller im PC nicht klarkommt.


    Sch*e !


    Also auch noch die aktuelle Fedora Core 5 DVD gesaugt und jetzt gehts.


    Das erste mal make für das OE hat zwar fast einen Tag gedauert bis alles runtergeladen war und das openembedded directory ist jetzt 4.8 GB gross - ist das korrekt so ?


    Ausserdem hatte ich es zuerst mit dem aktuellen monotone 3.0
    versucht was keine gute Idee war - erst downgrade auf 28 hat geholfen. Und das texi2html musste ich noch extra runterladen sowie den psyco JIT compiler, dann war das make endlich glücklich.


    make image ist dann auch durchgelaufen und hat ein aktuelles nfi ausgespuckt !


    Also abgesehen davon, dass ich dabei von meinem ISP ein nettes Mail bekommen habe das ich die 10GB Downloadvolumen für dieses Monat überschritten habe und gefälligst den Unlimited Zugang nehmen sollte ist damit alles gutgegangen, auch wenn es mehrere Anläuft gebraucht hat.


    Mal sehen was ich jetzt mit Euren Beispielen so zaubern kann ...


    LG
    gutemine

    3 Mal editiert, zuletzt von Lost in Translation ()

  • Hi !


    Es war ein interessantes aber Ergebnisreiches Wochenende !


    Danke nochmals an alle die geholfen haben !


    Damit haben wir jetzt einen Bootmanager oder besser Bootimageselektor für die DM7025 der nur das FAT des /media/mb sehen muss und das Framebuffer und Input device damit er funktioniert.


    Und mit den neuen OE 1.4 basierenden Images und thowi's multiboot 7.2 geht es auch schon recht flott - nach ca. 20-30 Sekunden kommt schon die Imageauswahl
    des Bootmanagers.


    PS: Nachdem das OE jetzt endlich flutscht kann ich endlich am Zen Webbrowser weiterportieren. Mit dem Compilieren bin ich fast durch, jetzt wird es richtig spannend ob er auch funktionieren wird !


    LG
    gutemine



    **********************************************
    Bootmanger V3.0 by gutemine
    **********************************************


    Are you impatient to wait until your image is
    booted to choose another image in thowi's
    multiboot with the menu interface ?


    Are you impatient to wait for Flashwizzard
    support on the 7025 ?


    Well, then gutemine's bootmanager is
    wort a try !!!


    If you have installed already thowi's
    multiboot of a version greater then 6.0,
    then simply unpack the
    bootmanager kit, either with manual
    install in Blue Pannel or in telnet:


    cd /
    bunzip2 /var/tmp/bootmanager30.tar.bz2
    tar -xvf /var/tmp/bootmanager30.tar.bz2


    Then you have to be booted from Flash
    (multiboot.sh boot 0) to enable the bootmanager
    in telnet:


    cd /media/mb/bootmanager
    install.sh


    Do this also if you have installed an older
    Version of gutemine's bootmanager !


    Or if you have multiboot Version 7.2 you can
    also enable the bootmanager from multiboot
    install options - Thank You thowi !


    That's it - simply reboot and watch the boot
    screen - after about 30 seconds it gets interesting !


    You can choose to boot from Flash and now up to
    all 12 Images that thowi's Multiboot supports.


    Simply choose with your remote control
    UP/DOWN keys and then press OK - if you simply
    want to continue booting press OK without
    choosing another image (because booted image is always
    the default), or press EXIT.


    Now you can also choose the partitions
    for booting by pressing the numbers (0..9)
    and the colour buttons directly.


    If you press LEFT you will move to the first
    entry of the image list, with RIGHt to the last one.


    But hurry to choose another image for booting
    and OK to confirm, because timeout for the
    bootmanager is 20 secs, after this
    the image continues booting !


    The selected image will be shown in yellow letters,
    as soon as you press OK it will be shown in green
    letters and the booting of this image takes place.


    If you try to select an empty Image for booting
    the boot will simply continue with the currently
    booted image.


    If you want to remove gutemine's bootmanager
    simply boot from Flash again and type
    in telnet:


    cd /media/mb/bootmanager
    uninstall.sh


    The binaries are not removed by uninstall.sh,
    for doing this simply remove the bootmanager
    subdirectory of /media/mb and all it's files.


    PS: gutemine's bootmanager is not doing
    any harm to your multiboot environment,
    it is simply an addon offering extra
    functionality. All other multiboot
    functionality (including boot selection
    from addon menu) continues to work as usual !


    bye


    gutemine

  • Hello,


    with current try i have following problem:



    Can anyone help me with that ?


  • Error like:




    i have fixed:






    better look:


    http://pastebin.com/8UNGT0Ga



    Here is fixed code for Freetyp > 2.3




    when i type init 4 in telnet and then run this...


    I see nothink on TV :frowning_face: :frowning_face:



    Can anyone help ?