bugmenot3
Posts: 39
Joined: Wed Aug 15, 2012 12:27 pm
Contact: Website

GPIO Pins beim Booten

Tue Jun 11, 2013 8:11 am

Hallo Leute,

ich arbeite an einem Projekt, bei dem es kritisch ist, dass die GPIO-Pins des Raspberrys beim Hochfahren nicht aktiviert werden.
Wie ich in einem anderen Forum (http://www.raspberrypi.org/phpBB3/viewt ... 44&t=35321) erfahren habe, hängt das Verhalten der Pins von Kernelversion, Hardware und den geladenen Modulen ab.
Gibt es irgendeine Möglichkeit sicherzustellen, dass die verwendeten Pins beim Booten nicht auf high gesetzt werden?
Wäre es mit einem I2C Erweiterungsmodul (zB MCP23008) möglich dies sicherzustellen?

Danke schonmal für Eure Antworten

User avatar
mline
Posts: 1367
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: GPIO Pins beim Booten

Tue Jun 11, 2013 7:07 pm

Das stimmt nicht ganz. Sofern nicht mit Doppelfunktionen belegt (SPI, I2C, UART) oder defekt, sind die Pins immer INPUT und LOW. Das ist ein Sicherheitsmerkmal aller Mikrocontroller und CPUs. Die Idee dahinter ist das der Controller beim Einschalten noch nicht weiß was an ihm drann hängt. Wäre zum Beispiel ein Motortreiber drann der einen 10kW Motor antreibt würde ein HIGH Pegel für ziemlichen Wirbel sorgen :lol:
Also kannst du davon ausgehen das die GPIOs (nicht SPI, I2C, UART) auf jeden Fall LOW sind.

Falls es aber um Anwendungen bei denen Menschen verletzt werden können würde ich mich selbst dann nicht darauf verlassen. In dem Fall ist eine extra Resetschaltung notwendig die im Fehlerfall alles zurücksetzt. Außerdem ist dann auch ein Not-Aus-Schalter Pflicht.
<~~>

bugmenot3
Posts: 39
Joined: Wed Aug 15, 2012 12:27 pm
Contact: Website

Re: GPIO Pins beim Booten

Tue Jun 11, 2013 7:28 pm

danke, das hilft mir weiter.
Menschenleben sind nicht gefährdet durch meine Schaltung. Aber die Schaltung ist darauf ausgelegt, dass tatsächlich nur genau einmal ein High auf einem Pin sein darf, sozusagen eine Einwegmaschine.

Es stimmt also nicht, dass bei aktivierten I2C-Modul beim Booten die Pins die Reihenfolge Input (pull high) -> Output (Driven LOW) -> ALT0 (Pull high) durchlaufen?
Das Betriebssystem macht mir hier ganz sicher keinen Strich durch die Rechnung?

User avatar
mline
Posts: 1367
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: GPIO Pins beim Booten

Tue Jun 11, 2013 7:42 pm

bugmenot3 wrote:Es stimmt also nicht, dass bei aktivierten I2C-Modul beim Booten die Pins die Reihenfolge Input (pull high) -> Output (Driven LOW) -> ALT0 (Pull high) durchlaufen?
Das Betriebssystem macht mir hier ganz sicher keinen Strich durch die Rechnung?
Doch bei den Pins 0, 1, 14 und 15 passiert genau das. Ebenso bei den SPI Pins falls das SPI Modul geladen wird.
Bei I2C liegts sogar daran das 2 Widerstände die Pins auf HIGH ziehen. UART ist deswegen undefiniert weil im "Auslieferzustand" der meisten Betriebssysteme UART für die TTY-Konsole verwendet wird. Diese kann man jedoch deaktivieren.

Also wenn du sicher sein willst nimm am besten einen der nicht mit Funktionen belegten Pins.
<~~>

bugmenot3
Posts: 39
Joined: Wed Aug 15, 2012 12:27 pm
Contact: Website

Re: GPIO Pins beim Booten

Tue Jun 11, 2013 7:47 pm

Das macht meine Schaltung gleich ein ganzes Stück einfacher und klingt auch logisch.

Danke nochmal!

mmi
Posts: 85
Joined: Sun Feb 24, 2013 3:53 am
Location: Bavaria-Germany

Re: GPIO Pins beim Booten

Wed Jun 12, 2013 1:01 am

bugmenot3 wrote: Wäre es mit einem I2C Erweiterungsmodul (zB MCP23008) möglich dies sicherzustellen?
Ich weiß es nicht, gehe aber davon aus, daß sich diese Bauteile ebenso verhalten, also nach dem Einschalten die Ausgänge immer low sind?? Oder können sie (ohne pulldown) auch undefiniert sein?

Wie mline schon deutlich bemerkt hat, verlassen kann man sich darauf nicht. Aber wenn der zu erwartende Schaden sich in Grenzen hält und vor allem ungefährlich ist - warum nicht? ;)

Gruß, mmi

NetSecond
Posts: 96
Joined: Wed Mar 13, 2013 12:14 am
Location: Germany

Re: GPIO Pins beim Booten

Thu Jun 13, 2013 7:12 pm

Warum nicht die Outputs verzögern ??

Also quasi ne Schaltung zwischen Ausgänge und anzusteuernden Gerät, die die Leitungen solange trennt, bis der PI komplett hochgefahren ist. Entweder zeitverzögert oder dem PI im "Autostart" den Befehl mitgeben, dass er die Leitungen erst frei schalten soll, wenn er fertig geladen hat.

Ich hoffe. man versteht, was ich meine.
Gruß / Regards
NetSecond

mmi
Posts: 85
Joined: Sun Feb 24, 2013 3:53 am
Location: Bavaria-Germany

Re: GPIO Pins beim Booten

Thu Jun 13, 2013 8:03 pm

NetSecond wrote:... oder dem PI im "Autostart" den Befehl mitgeben, dass er die Leitungen erst frei schalten soll, wenn er fertig geladen hat.
Es geht ja um den Grundzustand direkt beim Einschalten, da wurde die Firmware und erst recht Linux noch gar nicht gestartet.

NetSecond
Posts: 96
Joined: Wed Mar 13, 2013 12:14 am
Location: Germany

Re: GPIO Pins beim Booten

Thu Jun 13, 2013 8:07 pm

Ok, also hab ich mich doch nicht verständlich oder vollständig ausgedrückt.

Generell hängt am PI ne Schaltung, die die Outputs erst mal elektrisch trennt. Der PI bootet hoch und sagt der Schaltung "juhu, ich bin da". Dann erst verbindet die externe Schaltung die Leitungen wieder.

Grob beschrieben.
Gruß / Regards
NetSecond

mmi
Posts: 85
Joined: Sun Feb 24, 2013 3:53 am
Location: Bavaria-Germany

Re: GPIO Pins beim Booten

Fri Jun 14, 2013 1:36 am

Ok, da haben haben wir etwas aneinander vorbeigeredet. ;)

Daß es eine mehr oder weniger aufwändige Lösung mit zusätzlichen Bauteilen gibt, ist mir klar.

Häufig hat man aber eine "ungefährliche" Beschaltung, wo es nerven kann, wenn fast bis zum Abschluß des Bootvorgangs ein undefinierter Zustand auftritt. Daß beim RPi dem nicht so ist, hat mline oben schon angesprochen. Mich hat ergänzend interessiert, ob sich z.B. ein GPIO-Erweiterungs-IC ebenso verhält (ich werd's demnächst aber ausprobieren).

Noch ein Beispiel:
Hat man einen Buzzer am GPIO, wäre es nervig, wenn er während des Hochfahrens piepst (kaputt geht deswegen ja nichts).
Da rentiert es sich aber auch nicht, Zusatzaufwand zu betreiben.

Gruß, mmi

NetSecond
Posts: 96
Joined: Wed Mar 13, 2013 12:14 am
Location: Germany

Re: GPIO Pins beim Booten

Fri Jun 14, 2013 7:10 am

"Aufwand" ist "relativ" ....

Häng halt vom Projekt ab und der Sicherheit ab.

Aber ich gehe doch ebenfalls davon aus, dass derartige Ein/Ausgänge auf Low bleiben sollten, sofern sie nicht angesprochen werden.
Gruß / Regards
NetSecond

Return to “Deutsch”