Banana Pi GPIO nutzen

Feb 22, 2020 36 Replies

Hallo,



ich dachte mir die ganze Zeit, was ich mit einem Arduino machen kann, kann ich mit dem Banana Pi, der sowieso seine Kreise dreht, auch machen: Der hat ein Multitasking-OS und kann IPv6, das ist viel


Aber, so richtig mit "GPIO" beschriftete Pins hat der gar nicht.



formatting link
zeigt die Belegung von CON3, da gibt es SPI, verschiedene UARTs, PWM und CAN, aber nix, was


formatting link
sagt, dass man die GPIO-Pins heutzutage mit der libgpio und gpiod anspricht. Beide Pakete gibt es unter Debian, und sie scheinen auch zu funktionieren:



|1 [3/4578]mh@lapis:~ $ sudo gpiodetect |gpiochip0 [1c20800.pinctrl] (288 lines) |gpiochip1 [cp210x] (4 lines) |gpiochip2 [cp210x] (4 lines) |gpiochip3 [ftdi-cbus] (4 lines) |gpiochip4 [cp210x] (4 lines) |[4/4579]mh@lapis:~ $ sudo gpiofind gpiochip0 |1 [5/4580]mh@lapis:~ $ sudo gpioinfo |gpiochip0 - 288 lines: | line 0: "ERXD3" unused input active-high | line 1: "ERXD2" unused input active-high | line 2: "ERXD1" unused input active-high | line 3: "ERXD0" unused input active-high | line 4: "ETXD3" unused input active-high | line 5: "ETXD2" unused input active-high | line 6: "ETXD1" unused input active-high | line 7: "ETXD0" unused input active-high | line 8: "ERXCK" unused input active-high | line 9: "ERXERR" unused input active-high | line 10: "ERXDV" unused input active-high | line 11: "EMDC" unused input active-high | line 12: "EMDIO" unused input active-high | line 13: "ETXEN" unused input active-high | line 14: "ETXCK" unused input active-high | line 15: "ECRS" unused input active-high | line 16: "ECOL" unused input active-high | line 17: "ETXERR" unused input active-high | line 18: unnamed unused input active-high | line 19: unnamed unused input active-high | line 20: unnamed unused input active-high | line 21: unnamed unused input active-high | line 22: unnamed unused input active-high | line 23: unnamed unused input active-high | line 24: unnamed unused input active-high | line 25: unnamed unused input active-high | line 26: unnamed unused input active-high | line 27: unnamed unused input active-high | line 28: unnamed unused input active-high | line 29: unnamed unused input active-high | line 30: unnamed unused input active-high | line 31: unnamed unused input active-high | line 32: "PMU-SCK" unused input active-high | line 33: "PMU-SDA" unused input active-high | line 34: unnamed unused input active-high | line 35: unnamed unused input active-high | line 36: unnamed unused input active-high | line 37: unnamed unused input active-high | line 38: unnamed unused input active-high | line 39: unnamed unused input active-high | line 40: unnamed unused input active-high | line 41: "USB0-DRV" "usb0-vbus" output active-high [used] | line 42: unnamed unused input active-high | line 43: unnamed unused input active-high | line 44: unnamed unused input active-high | line 45: unnamed unused input active-high | line 46: unnamed unused input active-high | line 47: unnamed unused input active-high | line 48: unnamed unused input active-high | line 49: unnamed unused input active-high | line 50: unnamed unused input active-high | line 51: unnamed unused input active-high | line 52: "SCL" unused input active-high | line 53: "SDA" unused input active-high | line 54: unnamed unused input active-high | line 55: unnamed unused input active-high | line 56: unnamed unused input active-high | line 57: unnamed unused input active-high | line 58: unnamed unused input active-high | line 59: unnamed unused input active-high | line 60: unnamed unused input active-high | line 61: unnamed unused input active-high | line 62: unnamed unused input active-high | line 63: unnamed unused input active-high | line 64: unnamed unused input active-high | line 65: unnamed unused input active-high | line 66: unnamed unused input active-high | line 67: unnamed unused input active-high | line 68: unnamed unused input active-high | line 69: unnamed unused input active-high | line 70: unnamed unused input active-high | line 71: unnamed unused input active-high | line 72: unnamed unused input active-high | line 73: unnamed unused input active-high | line 74: unnamed unused input active-high | line 75: unnamed unused input active-high | line 76: unnamed unused input active-high | line 77: unnamed unused input active-high | line 78: unnamed unused input active-high | line 79: unnamed unused input active-high | line 80: unnamed unused input active-high | line 81: unnamed unused input active-high | line 82: unnamed unused input active-high | line 83: unnamed unused input active-high | line 84: unnamed unused input active-high | line 85: unnamed unused input active-high | line 86: unnamed unused input active-high | line 87: unnamed unused input active-high | line 88: unnamed unused input active-high | line 89: unnamed unused input active-high | line 90: unnamed unused input active-high | line 91: unnamed unused input active-high | line 92: unnamed unused input active-high | line 93: unnamed unused input active-high | line 94: unnamed unused input active-high | line 95: unnamed unused input active-high | line 96: unnamed unused input active-high | line 97: unnamed unused input active-high | line 98: unnamed unused input active-high | line 99: unnamed unused input active-high | line 100: unnamed unused input active-high | line 101: unnamed unused input active-high | line 102: unnamed unused input active-high | line 103: unnamed unused input active-high | line 104: unnamed unused input active-high | line 105: unnamed unused input active-high | line 106: unnamed unused input active-high | line 107: unnamed unused input active-high | line 108: unnamed unused input active-high | line 109: unnamed unused input active-high | line 110: unnamed unused input active-high | line 111: unnamed unused input active-high | line 112: unnamed unused input active-high | line 113: unnamed unused input active-high | line 114: unnamed unused input active-high | line 115: unnamed unused input active-high | line 116: unnamed unused input active-high | line 117: unnamed unused input active-high | line 118: unnamed unused input active-high | line 119: unnamed unused input active-high | line 120: unnamed unused input active-high | line 121: unnamed unused input active-high | line 122: unnamed unused input active-high | line 123: unnamed unused input active-high | line 124: unnamed unused input active-high | line 125: unnamed unused input active-high | line 126: unnamed unused input active-high | line 127: unnamed unused input active-high | line 128: unnamed unused input active-high | line 129: unnamed unused input active-high | line 130: unnamed unused input active-high | line 131: unnamed unused input active-high | line 132: unnamed unused input active-high | line 133: unnamed unused input active-high | line 134: unnamed unused input active-high | line 135: unnamed unused input active-high | line 136: unnamed unused input active-high | line 137: unnamed unused input active-high | line 138: unnamed unused input active-high | line 139: unnamed unused input active-high | line 140: unnamed unused input active-high | line 141: unnamed unused input active-high | line 142: unnamed unused input active-high | line 143: unnamed unused input active-high | line 144: unnamed unused input active-high | line 145: unnamed unused input active-high | line 146: unnamed unused input active-high | line 147: unnamed unused input active-high | line 148: unnamed unused input active-high | line 149: unnamed unused input active-high | line 150: unnamed unused input active-high | line 151: unnamed unused input active-high | line 152: unnamed unused input active-high | line 153: unnamed unused input active-high | line 154: unnamed unused input active-high | line 155: unnamed unused input active-high | line 156: unnamed unused input active-high | line 157: unnamed unused input active-high | line 158: unnamed unused input active-high | line 159: unnamed unused input active-high | line 160: "SD0-D1" unused input active-high | line 161: "SD0-D0" unused input active-high | line 162: "SD0-CLK" unused input active-high | line 163: "SD0-CMD" unused input active-high | line 164: "SD0-D3" unused input active-high | line 165: "SD0-D2" unused input active-high | line 166: unnamed unused input active-high | line 167: unnamed unused input active-high | line 168: unnamed unused input active-high | line 169: unnamed unused input active-high | line 170: unnamed unused input active-high | line 171: unnamed unused input active-high | line 172: unnamed unused input active-high | line 173: unnamed unused input active-high | line 174: unnamed unused input active-high | line 175: unnamed unused input active-high | line 176: unnamed unused input active-high | line 177: unnamed unused input active-high | line 178: unnamed unused input active-high | line 179: unnamed unused input active-high | line 180: unnamed unused input active-high | line 181: unnamed unused input active-high | line 182: unnamed unused input active-high | line 183: unnamed unused input active-high | line 184: unnamed unused input active-high | line 185: unnamed unused input active-high | line 186: unnamed unused input active-high | line 187: unnamed unused input active-high | line 188: unnamed unused input active-high | line 189: unnamed unused input active-high | line 190: unnamed unused input active-high | line 191: unnamed unused input active-high | line 192: unnamed unused input active-high | line 193: unnamed unused input active-high | line 194: unnamed unused input active-high | line 195: unnamed unused input active-high | line 196: unnamed unused input active-high | line 197: unnamed unused input active-high | line 198: unnamed unused input active-high | line 199: unnamed unused input active-high | line 200: unnamed unused input active-high | line 201: unnamed unused input active-high | line 202: unnamed unused input active-high | line 203: unnamed unused input active-high | line 204: unnamed unused input active-high | line 205: unnamed unused input active-high | line 206: unnamed unused input active-high | line 207: unnamed unused input active-high | line 208: unnamed unused input active-high | line 209: unnamed unused input active-high | line 210: unnamed unused input active-high | line 211: unnamed unused input active-high | line 212: unnamed unused input active-high | line 213: unnamed unused input active-high | line 214: unnamed unused input active-high | line 215: unnamed unused input active-high | line 216: unnamed unused input active-high | line 217: unnamed unused input active-high | line 218: unnamed unused input active-high | line 219: unnamed unused input active-high | line 220: unnamed unused input active-high | line 221: unnamed unused input active-high | line 222: unnamed unused input active-high | line 223: unnamed unused input active-high | line 224: "TXD0" unused input active-high | line 225: "RXD0" unused input active-high | line 226: "IO-1" unused input active-high | line 227: "PH3" "usb2-vbus" output active-high [used] | line 228: "USB0-IDDET" "usb0_id_det" input active-high [used] | line 229: "PH5" unused input active-high | line 230: unnamed "usb1-vbus" output active-high [used] | line 231: unnamed unused input active-high | line 232: unnamed unused input active-high | line 233: unnamed unused input active-high | line 234: "SD0-DET" "cd" input active-low [used] | line 235: unnamed unused input active-high | line 236: unnamed unused input active-high | line 237: unnamed unused input active-high | line 238: unnamed unused input active-high | line 239: unnamed unused input active-high | line 240: unnamed unused input active-high | line 241: unnamed unused input active-high | line 242: unnamed unused input active-high | line 243: unnamed unused input active-high | line 244: "IO-4" unused input active-high | line 245: "IO-5" unused input active-high | line 246: unnamed unused input active-high | line 247: "EMAC-PWR-EN" "gmac-3v3" output active-high [used] | line 248: "LED1" "bananapi:green:usr" output active-high [used] | line 249: unnamed unused input active-high | line 250: unnamed unused input active-high | line 251: unnamed unused input active-high | line 252: unnamed unused input active-high | line 253: unnamed unused input active-high | line 254: unnamed unused input active-high | line 255: unnamed unused input active-high | line 256: unnamed unused input active-high | line 257: unnamed unused input active-high | line 258: unnamed unused input active-high | line 259: "IO-GCLK" unused input active-high | line 260: unnamed unused input active-high | line 261: unnamed unused input active-high | line 262: unnamed unused input active-high | line 263: unnamed unused input active-high | line 264: unnamed unused input active-high | line 265: unnamed unused input active-high | line 266: "SPI-CE0" unused input active-high | line 267: "SPI-CLK" unused input active-high | line 268: "SPI-MOSI" unused input active-high | line 269: "SPI-MISO" unused input active-high | line 270: "SPI-CE1" unused input active-high | line 271: unnamed unused input active-high | line 272: "IO-6" unused input active-high | line 273: "IO-3" unused input active-high | line 274: "IO-2" unused input active-high | line 275: "IO-0" unused input active-high | line 276: unnamed unused input active-high | line 277: unnamed unused input active-high | line 278: unnamed unused input active-high | line 279: unnamed unused input active-high | line 280: unnamed unused input active-high | line 281: unnamed unused input active-high | line 282: unnamed unused input active-high | line 283: unnamed unused input active-high | line 284: unnamed unused input active-high | line 285: unnamed unused input active-high | line 286: unnamed unused input active-high | line 287: unnamed unused input active-high |gpiochip1 - 4 lines: | line 0: unnamed unused input active-high | line 1: unnamed unused input active-high | line 2: unnamed unused output active-high | line 3: unnamed unused input active-high |gpiochip2 - 4 lines: | line 0: unnamed unused input active-high | line 1: unnamed unused input active-high | line 2: unnamed unused output active-high | line 3: unnamed unused input active-high |gpiochip3 - 4 lines: | line 0: unnamed unused input active-high | line 1: unnamed unused input active-high | line 2: unnamed unused input active-high | line 3: unnamed unused input active-high |gpiochip4 - 4 lines: | line 0: unnamed unused input active-high | line 1: unnamed unused input active-high | line 2: unnamed unused output active-high | line 3: unnamed unused input active-high |[6/4581]mh@lapis:~ $


Ich gehe mal davon aus, dass gpiochip0 der auf dem Board (im SOC?) befindliche GPIO-Controller ist, die anderen gpiochips sehen mir von


Raspberry-Pi-Doku verwenden oder gibt es signifikante Unterschiede zum Banana Pi?


Pullup-Widerstand versehen und dann mit einem Optokoppler gegen Masse ziehen kann. Ich vermute, dass man fast jeden Pin aus seiner dokumentierten Funktion rausnehmen und zum "normalen" GPIO machen kann, aber wie?



Hat jemand schonmal die GPIO-Pins eines Banana Pi verwendet?



Leider stirbt die Plattform ja langsam aus :-(


Marc


-------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Mannheim, Germany | Beginning of Wisdom " | Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

Die Pins sollten (*) kompatibel zu denen eines Raspberry Pi sein, die

formatting link

(*) Ich habe einen Bananapi Router an dessen GPIOs ich ein paar Teile (u.a. Optokoppler um meine zwei NAS ein zu schalten und ein SSR um ein Fax-Modem ein zu schalten) betreibe. Dort ist es auch kompatibel.

Josef

Nicht.

Raspberry (und/oder Banana) und Arduino haben deutlich unterschiedliche

definitiv schneller. Ist eben ein Mikrocontroller. Der Arduino hat auch "echte" Interrupts und erlaubt Zeitmessungen bis runter in den Nanosekundenbereich.

Man kann die GPIOs gut nutzen wenn man z.B. einen Raspberry in eine

vom Raspberry.

Es gibt Unterschiede. Im Zweifelsfall die Pinouts nebeneinander legen.

Ich halte das mittlerweile so, dass ich alles, was nicht "Raspberry"

auf dem Papier bessere Daten haben. Bringt aber nichts wenn die Community drum rum zu klein ist.

Manuel

Der Banana Pi war 2015 super, wenn man ein kleines Serverchen haben

angebundenes Ethernet, nicht so eine USB-Bastelei.

Gibt es in der Raspberry-Welt bis heute nicht, und ich bin zu faul,

Pakete bauen muss.

Aber das geht alles an der Frage vorbei.

Marc

-------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Mannheim, Germany | Beginning of Wisdom " | Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

formatting link

Raspberry Pi 4. Vollwertiges Gigabit Ethernet das nicht mehr am USB

Zumindest ich bevorzuge USB 3.0 vor SATA, denn so kann man die Platte

Clients.

Manuel

Pi, also eine neue Architektur die mit Paketen bespielt werden will.

Ich habe das USB vom Raspi 4 noch nicht ausprobiert, aber am Desktop funktioniert eSATA um einiges flauschiger als USB3, insbesondere ist

bei USB 3 eher ein Gebirge ist.

Marc

-------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Mannheim, Germany | Beginning of Wisdom " | Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

Nachwelt (und freue mich auf Eure Kommentare).

Schritt 1: Wir bauen uns ein "known good" Referenzsystem um die elektronischen Schaltungen zu validieren. Schrank auf, Raspi raus, aktuelles Raspian installiert, Doku gelesen,

die beiden LED-Blink- und Schalter-Abfrage-Programme ausprobiert und Funktion verifiziert.

Schritt 2: gpiozero auf dem Banana Pi installiert, nach Aufruf von "pinout" festgestellt, dass das eine Raspberry-Pi-spezifische Software zu sein scheint, mit dem LED-Blink-Programm verifiziert. Geflucht. Kaffee getrunken.

Schritt 3: Raspbian mit gpiod ausprobiert, verstanden wie gpioset und gpioget funktioniert. LED-Blink und Schalter-Abfrage-Programm als Shellscript implementiert.

Schritt 4: Nach einer Dokumentation des Pinout des Banana Pi gesucht, auf dem sich die Namen der Pins mit der Ausgabe von gpioinfo deckt. Mit

formatting link
gefunden.

Schritt 5: Entschieden, die "speziell" gelabelten Pins links liegen zu

Schritt 6: LED-Blink-Programm (auf GPIO6): |while true; do gpioset --mode=time --sec=1 gpiochip0 272=1; gpioset --mode=time --sec=1 gpiochip0 272=0; done

das Geraffel mit --mode und --sec.

Schritt 7: Schalter-Abfrage-Programm (wiederum GPIO6): |while sleep 1; do gpioget gpiochip0 272; done Pull-Up-Widerstand 47 kOhm, Schalter gegen Masse. Funktioniert.

So kann ich arbeiten. Wenn ich lustig bin mach ich eine udev-Regel die

heute reicht mit das jetzt erstmal.

Marc

-------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Mannheim, Germany | Beginning of Wisdom " | Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

hrend sie

N (Kabel, nicht W) ewig dauern, kopiere ich an einem Rechner von einer externen Platte an USB zu einer genauso angeschlossenen anderen. Das

/ \ Mail | -- No unannounced, large, binary attachments, please! --

Du kannst mir glauben dass ich in der Lage bin, Hardwareperformance zu bewerten.

-------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Mannheim, Germany | Beginning of Wisdom " | Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

Hi Manuel,

nicht zwingend.

Welchen Arduino mit GHz Prozessor meinst Du jetzt genau?

Wenn Du UNO, Nano und Konsorten meinst, da ist mit 16 MHz kein ns

Ich hab mal gelesen, dass die OrangePi-Szene vor allem stolz darauf ist,

Projekte, abseits des Kostenvorteils nicht unrelevant ist.

Marte

Hi Marc,

Doch, das sei doch der entscheidende Unterschied beim RasPi4

Marte

SATA?

Marc

-------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Mannheim, Germany | Beginning of Wisdom " | Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

USB3, zwei Ports, und sauber angebundenes Ethernet. Da wirst du dich

Gerrit

Marc

-------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Mannheim, Germany | Beginning of Wisdom " | Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

Hi Marc,

Banana Pi von 2015 wirklich auf seinem SATA mehr Datendurchsatz schafft,

Ansonsten ist und bleibt es so, dass die Teile stromsparende Minimalmaschinchen sind und keine Rennschweine.

Marte

Am 24.02.2020 um 10:46 schrieb Marte Schwarz:

nachliefern.

Ja, man kann nicht alles haben. Aber als Fileserver schafft der Pi4 wohl

auslasten.

Wem das nicht reicht, der muss eben andere Hardware nehmen. Kostet dann auch einen Tick mehr.

Wenn die USB3-Performance nicht passt, vielleicht das hier mal probieren:

formatting link

Gerrit

Die Anleitung ist in der Tat sehr empfehlenswert.

Beim Bekannten bei dem ich den Server auf Raspi 4 Basis gebaut habe,

Das geht bei einem Server (also 24/7) dann soweit bis der Kernel die Platte irgendwann readonly mountet und dann war's das mit Schreiben.

Ich bin froh statt SATA zwei USB 3.0 zu haben. SATA stirbt so langsam eh

gehen auch LAN-Karten dran was am SATA nicht geht.

Manuel

Die Schranktuer nicht wieder zugemacht? Oh-oh ... :-)

Kommt mir vom Pogoplug her bekannt vor, auch wenn ich da keinen Kaffee getrunken habe.

Davon verstehe ich zuwenig, aber bei uC setzen wir solche Ports meist auf Interrupt, sodass sofort angezeigt wird, wenn sich der Status eines Ports geaendert hat.

[...]
Gruesse, Joerg http://www.analogconsultants.com/

Selbst mein alter Pogoplug Mobile kommt ueber die Strecke USB3.0 -> LAN auf 0-40MB/sec und der ist aus dem Jahr 2011.

Das Dingen hat auch einen nichtbestueckten SATA Landeplatz auf der Leiterplatte, der nochmal 20-30% mehr bringen soll. Aber wozu?

Ich frage mich immer, warum man noch mehr braucht. Selbst bei einer Grossfamilie mit 5-6 Fernsehern koennte man das nicht an den Poller bringen. Ich habe seit gut einem Jahr 75Mbit/sec Internet, der langsamste angebotene Tarif. Es ist ja ganz toll, wenn irgendein Major Update beinahe durchblitzt, aber notwendig ist das nicht.

[...]
Gruesse, Joerg http://www.analogconsultants.com/

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required