Periodischer Timer (64Hz) mit ARM-Prozessor und (embedded) Linux

Ich möchte eine Funktion 64 Mal pro Sekunde mit einem ARM-Prozessor aufrufen, auf dem Linux ausgeführt wird. (Beispiel: Rasberry Pi oder Freescale i.mx6).

Idealerweise möchte ich nicht zu viel Jitter. Ich möchte regelmäßig eine Aufgabe ausführen ... (z. B.: Scannen eines Geräts)

Wenn möglich, möchte ich einen Hardware-Interrupt, der 64 Mal pro Sekunde aufgerufen wird.

Mit "Standard-PC-Hardware (x86)" war es möglich, IRQ8 von der RTC (Uhr) zu verwenden, um dieses Verhalten zu erreichen.

Was ist das Äquivalent zur ARM-Prozessorarchitektur?

Referenz 1 , siehe Abschnitt „Alte „RTC-Klasse“-Treiber“

Referenz 2

Linux hatte früher einen "Tick" auf Systemebene bei 10 ms, der auf 1 ms geändert werden konnte. Forschung auf diesem Gebiet.

Antworten (2)

Ich würde denken, dass ein Watchdog-Timer in dieser Situation funktionieren würde. Wenn der Timer 0 erreicht oder überläuft (es hängt davon ab, ob er abwärts oder aufwärts zählt), löst der Prozessor einen Interrupt aus. Wenn Sie den Timer richtig konfigurieren, kann er möglicherweise bei 64 Hz triggern, aber das hängt von den Pre- und Postscalern ab. Es sieht so aus, als hätte der ARM-Prozessor solche Fähigkeiten .

Ich sehe, dass der i.mx 6 einen EPIT-Timer (Enhanced Periodic Interrupt Timer) hat. Wäre es möglich, diesen Timer vom Linux-Betriebssystem aus zu verwenden? Wie verwende ich einen solchen Timer unter Linux? (Ist es ein Treiber?) Ich komme aus der Welt der Mikrocontroller und bin mir nicht sicher, wie ich diese Aufgabe unter Linux ausführen soll. Können Sie mir eine Dokumentation / ein Buch über Timer und Linux zeigen?

Sie könnten immer einen Echtzeit-Thread erstellen (vorausgesetzt, Ihr Kernel wurde mit Echtzeitunterstützung kompiliert) und eine Endlosschleife haben, die Nanosleep verwendet, um die gewünschte Abtastfrequenz von 64 Hz zu erhalten.

Wie streng ist Ihre Jitter-Anforderung genau?