Der Linux-Weg über die GPIO-Zeichengeräte /dev/gpiochipN und die v2-ioctl-Schnittstelle. Anders als der MMIO-Zugriff ist er nicht an den Raspberry Pi gebunden, läuft mit gewöhnlichen Gruppenrechten und kann etwas, das MMIO nicht kann: mehrere Leitungen in einem einzigen Aufruf setzen oder lesen, und auf Flanken warten, ohne zu pollen.
Eine angeforderte Leitungsgruppe ist ein Dateideskriptor. Solange er offen ist, gehört die Leitung diesem Prozess — der Kernel verhindert, dass ein zweites Programm dazwischenfunkt, und trägt das Consumer-Label in gpioinfo ein. Freigegeben wird mit GpioReleaseLine.
Maske und Bits bei GpioSetLineValues/GpioGetLineValues beziehen sich auf die Position innerhalb der angeforderten Gruppe, nicht auf die Pin-Nummer: Bit 0 ist die erste angeforderte Leitung.
std.hardware.gpio — Übersicht · GPIO-Guide · Standard Library
| Signatur |
|---|
GpioGetChipInfo(chip_path: pchar): int64 |
GpioChipInfoFree(info: int64) |
GpioChipInfoLines(info: int64): int64 |
GpioRequestLines(chip_path: pchar, pins_ptr: int64, num_lines: int64, flags: int64, consumer: pchar): int64 |
GpioSetLineValues(line_fd: int64, mask: int64, bits: int64): int64 |
GpioGetLineValues(line_fd: int64, mask: int64, bits_out: int64): int64 |
GpioReleaseLine(line_fd: int64) |
| Konstante | Wert | Bedeutung |
|---|---|---|
GPIO_MAX_NAME_SIZE | 32 | – |
GPIO_V2_LINES_MAX | 64 | – |
GPIO_V2_LINE_NUM_ATTRS_MAX | 10 | – |
GPIO_V2_LINE_FLAG_USED | 1 | Bit 0 |
GPIO_V2_LINE_FLAG_ACTIVE_LOW | 2 | Bit 1 |
GPIO_V2_LINE_FLAG_INPUT | 4 | Bit 2 |
GPIO_V2_LINE_FLAG_OUTPUT | 8 | Bit 3 |
GPIO_V2_LINE_FLAG_EDGE_RISING | 16 | Bit 4 |
GPIO_V2_LINE_FLAG_EDGE_FALLING | 32 | Bit 5 |
GPIO_V2_LINE_FLAG_OPEN_DRAIN | 64 | Bit 6 |
GPIO_V2_LINE_FLAG_OPEN_SOURCE | 128 | Bit 7 |
GPIO_V2_LINE_FLAG_BIAS_PULL_UP | 256 | Bit 8 |
GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN | 512 | Bit 9 |
GPIO_V2_LINE_FLAG_BIAS_DISABLED | 1024 | Bit 10 |
…sowie 33 weitere Konstanten in der Quelldatei std/hardware/gpio_ioctl.lyx.
Quelle: std/hardware/gpio_ioctl.lyx · geprüft mit lyxc 1.0.21A · Stand 2026-08-12