std.hardware.gpio_barriers

Zwei Speicherbarrieren für ARM64 — der Teil des GPIO-Zugriffs, den man am leichtesten vergisst und der die schwersten Fehler verursacht.

GpioMemBarrier setzt ein DMB SY: alle vorherigen Speicherzugriffe sind abgeschlossen, bevor die folgenden beginnen. Ohne diese Barriere darf die CPU Schreibzugriffe auf verschiedene Peripherieadressen umordnen — ein Pin wird dann in der falschen Reihenfolge geschaltet, und das Ergebnis hängt von Takt und Cache-Zustand ab.

GpioInstBarrier setzt ein ISB SY und verwirft die Befehlspipeline. Nötig, nachdem sich die Bedeutung von Speicher geändert hat — etwa direkt nach dem Einblenden des Peripheriebereichs.

Faustregel aus dem BCM2711-Handbuch: eine Barriere vor dem ersten und nach dem letzten Zugriff auf einen Peripherieblock.

std.hardware.gpio — Übersicht · GPIO-Guide · Standard Library


Schnittstelle

Signatur
GpioMemBarrier()
GpioInstBarrier()

Quelle: std/hardware/gpio_barriers.lyx · geprüft mit lyxc 1.0.21A · Stand 2026-08-12