Defekt durch ein fehlerhaft geladenes device tree overlay (rpi-display-overlay.dtb)?

  • Hallo,

    ich bin neu in diesem Forum und das ist mein erster Beitrag hier. Ein Hallo erst mal an alle ...

    Meine Hardware:
    Raspberry PI 1 B+
    Watterott RPI-Touch-Display B+ 2.8" -> klick

    Meine Software:
    Raspbian Wheezy 2015-05-05 + rpi-display -> klick


    Ausgangssituation:
    Das Touch-Display hat zu beginn wunderbar an meinem Pi funktioniert. Über GPIO18 wird die Hintergrundbeleuchtung des Displays gesteuert. Das passte mir so aber nicht, da ich den Pin schon für was anderes benötige. Watterott hat am Display bereits eine Möglichkeit vorgesehen die Hintergrundbeleuchtung über einen Jumper auf GPIO12 zu legen.
    Das hab ich getan und alles war noch gut so weit, das Display lies sich nun über GPIO12 EIN/AUS schalten.

    Nun wollte ich auch noch das Device Tree Overlay unter /boot/overlays/ entsprechend anpassen. Mit dem "Device Tree Compiler" habe ich aus der Datei "rpi-display-overlay.dtb" den Sourcecode generiert und diesen so angepasst das er die Hintergrundbeleuchtung auf GPIO12 legt. Dabei hab ich einen Fehler gemacht ...
    Diese Fehlerhafte .dtb Datei wurde beim nächsten Neustart des PI geladen (in der config.txt war

    Code
    dtoverlay=rpi-display

    eingetragen)

    Problem:
    Seit ich versucht habe diese fehlerhafte .dtb Datei zu laden fährt der PI nicht mehr hoch wenn ich in der config.txt

    Code
    dtoverlay=rpi-display

    hinzufüge, obwohl ich in der Zwischenzeit die fehlerhafte Datei gegen das zuvor funktionierende Original ausgetauscht habe. Auch ein komplett neues erstellen der der SD-Karte mit dem Raspbian-Image hat daran nichts geändert.
    Beim booten bekommen ich nur diese Ausgabe und bleibt alles stehen ...

    Lösche ich den Eintrag

    Code
    dtoverlay=rpi-display

    aus der config.txt färht der die PI wieder normal hoch.

    Meine Frage nun, bekomme ich das irgendwie wieder hin, das ich ein neues Device Tree Overlay für das Display laden kann oder habe ich was irreparabel zerstört :huh:

    Hoffe jemand kann mir hierbei weiterhelfen ...

    Beste Grüße
    Beluga

  • Defekt durch ein fehlerhaft geladenes device tree overlay (rpi-display-overlay.dtb)?? Schau mal ob du hier fündig wirst!

  • Moin,
    erstmal: Herzlich Willkommen im Forum!!

    Du hast dir eine *.dtb erzeugt, die fehlerhaft war. Nach Löschen der Einstellung in der /boot/config.txt startet der Raspberry wieder richtig.
    Du schreibst, das du mittlerweise eine richte *.dtb hast. Hast du sie auch mit den dtc wieder "installiert?? Nicht das, wenn eingeschaltet, die alte Datei geladen wird.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

    Einmal editiert, zuletzt von Bernd666 (6. September 2016 um 23:43)

  • Guten Morgen,

    danke für deine schnelle Antwort Bernd.

    Ich habe mir den Device-Tree-Compiler auf meinem PI installiert und damit den Sourcecode der ausführbaren Datei "rpi-display-overlay.dtb" die unter /boot/overlay/ zu finden ist, erstellt.
    Der Compiler hat dann eine *.dts Datei erzeugt, die den Editierbaren Code enthält.
    Beim anpassen der GPIO pins habe ich dummerweise nicht bemerkt, das ich hier die Hex-Werte angeben muss und nicht die Dezimal-Werte.
    Der Compiler hat die Datei aber ohne mekern wieder zurück in eine *.dtb Datei compiliert.
    Diese Datei hab ich geladen ...

    Ich hab danach Raspian komplett neu Installiert --> meine falsche *.dtb sollte schon lange für den PI nicht mehr verfügbar sein ...

    Ja das stimmt wenn ich die Einstellungen lösche in der /boot/config.txt dann fährt der PI auch wieder hoch. Nur kann ich jetzt das zuvor einwandfrei Funktionierende "rpi-display-overlay.dtb" nicht mehr Laden.
    Sobald ich das versuche geht nichts mehr ...
    Kann es sein, dass das Fehlerhafte *.dtb irgenwie im PI geladen ist und ein neues Laden eines Overlays blockiert ?

    Vielen Dank

    Grüße
    Beluga

  • Moin Beluga!
    Wenn du dir eine neue SD-Karte gemacht hast, dann sind alle vorherigen Daten weg.

    Du hast dir wieder ein Original Raspbian nach Watterott erstellt?

    Geht den das Display wieder mit dem Pin12 oder geht das Display überhaupt nicht mehr?

    Oder einfach gesagt. Hast du es mal mit der originale DTS getestet??

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

    Einmal editiert, zuletzt von Bernd666 (7. September 2016 um 23:28)

  • Guten Abend,

    Ich konnte das Problem nun Lösen ...
    Das Display Fuktioniert nun wieder an meinen Pi und das mit GPIO12 als Hintergrundbeleuchtung ... :thumbs1:


    Anscheinend erwartet das Raspian von Watterott beim Laden des Device Tree Overlays (rpi-display-overlay.dtb) ein richtig (so wie in dem *.dtb File definiertes) angeschlossenes Display, sonst fährt es nicht mehr hoch ... wie bei mir der Fall war !

    Nochmal in der Kurzfassung:

    • Versuch: Fehlerhaftes *.dtb File, da von mir blöderweise Falsch umgeschrieben wurde
    • Versuch : Altes *.dtb FIle wieder geladen --> Funktioniert NICHT mehr, weil das Overlay nicht mehr zu Hardwarekonfig meines Displays gepasst hat (Hintergrundbeleuchtung wurde ja Hardwarmäßig auf GPIO12 gelegt) ===> Pi fährt beim booten nicht mehr hoch
    • "rpi-display-overlay.dtb" so manipuliert das es zum Hardwareaufbau des Dispalys passt ==> BAAMM und es ging alles wieder !!!

    Danke DG8BR für deine Hilfe :danke_ATDE: :danke_ATDE: :danke_ATDE:


    Anhang:
    -----------------------------------------
    Hier das bei mit nun funktionierende Overlay, passend zum Display (Watterott RPI-Touch-Display B+ 2.8" -> klick) um es mit GPIO12 zu betreiben

    Code
    /dts-v1/;[/color]/ {       compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";       fragment@0 {               target = <0xdeadbeef>;               __overlay__ {                       status = "okay";                       spidev@0 {                               status = "disabled";                       };                       spidev@1 {                               status = "disabled";                       };               };       };       fragment@1 {               target = <0xdeadbeef>;               __overlay__ {                       rpi_display_pins {                               brcm,pins = <0xC 0x17 0x18 0x19>;                               brcm,function = <0x1 0x1 0x1 0x0>;                               brcm,pull = <0x0 0x0 0x0 0x2>;                               linux,phandle = <0x1>;                               phandle = <0x1>;                       };               };       };       fragment@2 {               target = <0xdeadbeef>;               __overlay__ {                       #address-cells = <0x1>;                       #size-cells = <0x0>;                       rpi-display@0 {                               compatible = "ilitek,ili9341";                               reg = <0x0>;                               pinctrl-names = "default";                               pinctrl-0 = <0x1>;                       };               };       };       fragment@2 {               target = <0xdeadbeef>;               __overlay__ {                       #address-cells = <0x1>;                       #size-cells = <0x0>;                       rpi-display@0 {                               compatible = "ilitek,ili9341";                               reg = <0x0>;                               pinctrl-names = "default";                               pinctrl-0 = <0x1>;                               spi-max-frequency = <0x1e84800>;                               rotate = <0x10e>;                               bgr;                               fps = <0x1e>;                               buswidth = <0x8>;                               reset-gpios = <0xdeadbeef 0x17 0x0>;                               dc-gpios = <0xdeadbeef 0x18 0x0>;                               led-gpios = <0xdeadbeef 0xC 0x1>;                               debug = <0x0>;                               linux,phandle = <0x2>;                               phandle = <0x2>;                       };                       rpi-display-ts@1 {                               compatible = "ti,ads7846";                               reg = <0x1>;                               spi-max-frequency = <0x1e8480>;                               interrupts = <0x19 0x2>;                               interrupt-parent = <0xdeadbeef>;                               pendown-gpio = <0xdeadbeef 0x19 0x0>;                               ti,x-plate-ohms = [00 3c];                               ti,pressure-max = [00 ff];                               linux,phandle = <0x3>;                               phandle = <0x3>;                       };               };       };       __overrides__ {               speed = <0x2 0x7370692d 0x6d61782d 0x66726571 0x75656e63 0x793a3000>;               rotate = [00 00 00 02 72 6f 74 61 74 65 3a 30 00];               fps = [00 00 00 02 66 70 73 3a 30 00];               debug = <0x2 0x64656275 0x673a3000>;               xohms = [00 00 00 03 74 69 2c 78 2d 70 6c 61 74 65 2d 6f 68 6d 73 3b 30 00];       };       __symbols__ {               rpi_display_pins = "/fragment@1/__overlay__/rpi_display_pins";               rpidisplay = "/fragment@2/__overlay__/rpi-display@0";               rpidisplay_ts = "/fragment@2/__overlay__/rpi-display-ts@1";       };       __fixups__ {               spi0 = "/fragment@0:target:0", "/fragment@2:target:0";               gpio = "/fragment@1:target:0", "/fragment@2/__overlay__/rpi-display@0:reset-gpios:0", "/fragment@2/__overlay__/rpi-display@0:dc-gpios:$       };       __local_fixups__ {               fixup = "/fragment@2/__overlay__/rpi-display@0:pinctrl-0:0", "/__overrides__:speed:0", "/__overrides__:rotate:0", "/__overrides__:fps:$       };};[color=#3d3d3d]

    [/color]

  • Moin Beluga,
    das freut mich das du dein Problem lösen konntest.
    Danke auch dafür das du dir *.dtb zu Verfügung gestellt hast.

    Bitte nun noch dein Thema als erledigt kennzeichnen!

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!