std.hardware.gpio_ioctl

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


Schnittstelle

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