GPIO Setup konflikt beim Start

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Moin moin allerseits,

    habe schon viel bei euch mit gelesen, nun ist es aber so weit, dass ich ein paar Fragen habe und hoffe das mir jemand helfen kann. :helpnew:

    Beim starten kann man ja durch "/etc/rc.local" eine bash-Datei mit ausführen lassen.
    Dies wird auch für die GPIO's gemacht, damit ich diese über PHP ansteuern kann.

    Da ich aber nun nicht mehr nur das Model B besitze, sonder auch B+ kommt es zu Problemen. Genutzt wird die selbe SD-Kart.

    Hier der passende Code:


    Das Problem ist, dass beide PI's sich aufhängen sobald das Script geladen wird, da beide (unterschiedliche) GPIO's bereitstellen wollen, die es nicht gibt.

    Version B+ dürfte z.B. nicht die P5 Header bereitstellen.
    Version B dürfte alle neuen (vom B+) nicht aufsetzen.

    Um zur Frage zurück zu kehren, ist es möglich eine Version abfrage des Boards zu machen, um dann nur die passenden GPIO's bereit zu stellen?

    Code
    cat /proc/cpuinfo


    Man kann bestimmt über die "cpuinfo" eine Abfrage basteln. Kann mir dabei jemand helfen?

    Code
    Version b     
    000d
    
    
    Version b+
    0010

    Danke für die Hilfe,
    Fabian

  • Hallo Fabian,

    in meiner GPIO-Library (in Icon prorammiert) habe ich die von Dir angegebene Datei

    Code
    cat /proc/cpuinfo

    ausgewertet. Leider bin ich Hunderte von Kilometern vom Raspberry Pi entfernt, um Dir mehr dazu zusagen.

    Jedenfalls kannst Du in Abhängigkeit der angetroffenen Version die physikalisch vorhandenen GPIO-Ports in einer Liste zuweisen. Nur die in dieser Liste enthaltenen GPIO-Ports werden dann auch gesetzt.

    Wenn Du mehr dazu wissen willst, such in diesem Forum mal nach Icon 12. Du findest dann einen Beitrag von mir (Icon-Tutorial, Teil 12 Bibliotheken). Dort ist der Quellcode meiner GPIO-Library enthalten. Dort findest Du mehr Infos dazu.

    Beste Grüsse

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hi,

    ich glaub auch, dass es schwierig sein dürfte, B und B+ zu unterscheiden.
    Lediglich die wiringPi Lib hat meines Wissens so eine Board-Abfrage zur Unterscheidung A und B ...

    Aber noch was: welche Kommandos aus Deinem bash-script dürften denn konkret nicht auf einem B Modell funktionieren (was anderes habe ich nicht zum ausprobieren)?

    Also:
    echo "??" > /sys/class/gpio/export ...

    Ich kann es mir irgendwie nicht so rect vorstellen, dass sich der RPi da aufhängt.

    cheers,
    -ds-

  • Hallo,

    ich habe gerade im Internet gefunden, dass das Modell unter cpuinfo 0010 (Modell B - 000d oder 000e oder 000f) ausgibt. Dann könnte man das ganze doch in eine Abfrage packen (if-Abfragen funkt. ja in bash) und dann je nach Modell nur die PINs initialisieren, die es auf dem Board auch gibt ?

    Gruß
    Matze208

  • Es gibt auch B+ die 000e ausgeben.

    Was mir dazu einfällt wäre mit try zu versuchen die GPIOs zu initialisieren und dann durch das Errorhandling zu analysieren, um welchen RasPi es sich handelt. Evtl geht da auch was über die beiden für den Idenzifizierungschip reservierten GPIOs Pins.

  • dreamshader, dbv
    Auf jedenfall hängt es nicht mit den Rechten der Datei selbst zusammen. Nehme ich nur Gpios rein, die beide Boards haben, funktioniert es einwandfrei.

    Andreas
    Versuche heute Abend mal deinen Vorschlag, das Schwimmbad hat bei dem Wetter aber Vorrang ;)

  • Ich denke mal, der Ablauf sollte so sein:

    Die zusätzlichen GPIOs beim B+ muß die Firmware (/boot/start.elf) erkennen. Nur dann erkennt sie auch der Kernel - vorausgesetzt, das gpio Modul kann das schon.

    Voraussetzung wäre jedenfalls, jeweils die aktuellste Version zu verwenden.

    Ob es sich um die B+ Version handelt, kann man dann auch leicht im Verzeichnis '/sys/class/gpio/' feststellen, da müssen die "neuen" gpios auftauchen.

    Gruß, mmi

    P.S.: Wenn der Pi abstürzt, obwohl man in "sys/class/gpio" die neuen gpios ansprechen kann, dann ist das Kernelmodul noch fehlerhaft und man kann nur eine neue Version abwarten.

  • Melde mich zurück aus dem Schwimmbad :daumendreh2:

    Falls jemand das Icon-Tutorial, Teil 12 Bibliotheken von Andreas sucht, hier. :danke_ATDE:
    Lese noch quer.

    Kann jemand von meinem ersten Post den Code ausprobieren und den absturz reproduzieren?
    PS: Denkt daran, dass die Datei nachher von einem anderen ext-Format lesenden Geräts gelöscht/geändert werden muss.

    Einmal editiert, zuletzt von Jutika (23. Juli 2014 um 19:26)

Jetzt mitmachen!

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