2017-03-28 2 views
1

Ich wurde gebeten, einen Ring Oscillator in Linux aufzurufen. Zu Beginn habe ich versucht, die Kontroll- und Statusregister (interessante Bits) direkt zu lesen, und ich kann auf solche mit devmem zugreifen (unter Verwendung von physikalischen Adressen der Register). Es gibt zwei Ring Oscillator-Module 0 und 1. Jeder besteht aus 4 Ring-Oszillatoren. Die Ausgabe von Modul 0 speist einen Zufallszahlengenerator. Modul 1 wird für die Prozessüberwachung verwendet - dazu gibt es noch nicht viele Informationen. Jedes Modul hat separate Register für Steuerung, Status usw. An jedem Ringoszillator ist ein Frequenzzähler angebracht und ich kann die Frequenzzählung aus dem Zählregister des Frequenzzählers lesen, wenn die Steuerregister der Ringoszillatoren entsprechend eingestellt sind.Ring Oscillator Device Driver

Jetzt muss ich einen Gerätetreiber für den Ring Oscillator für den Bring-up-Zweck schreiben. Was mir nicht ganz klar ist, ist, ob ich in der dts-Datei versuchen soll, den Ringoszillator als Taktquelle darzustellen oder ihn als Plattformgerät zu behandeln. Konnte nicht viele Informationen darüber finden, wie Linux einen Ringoszillator handhabt. Sollte ich nach der Geräteadresse des Ringoszillators suchen und versuchen, ihn wie jeden anderen Plattformperipheriegeräteintrag in der dts-Datei hinzuzufügen. In diesem kann ich es als ein Plattformgerät in der Treiberdatei registrieren und seine Register von der Prüffunktion steuern. Oder sollte ich es als eine Taktquelle behandeln? Aus der verfügbaren Dokumentation kann ich jedoch nicht erkennen, dass sie als Taktquelle für andere Peripheriegeräte verwendet wird. Kann jemand bitte etwas Licht darauf werfen? Jede Hilfe wird sehr geschätzt.

Danke.

Grüße

Vivek

Antwort

0

ich den Ringoszillator als Plattform Treiber implmented haben. Die dts/DTSI Änderungen sind wie folgt:

DTSI:

ring_osc: [email protected] { 
    compatible = "abc,abc-ring"; 
    reg = <0xF00xxxxx 0x14>; 
    status = "disabled"; 
}; 

dts:

&ring_osc { 
    status = "okay"; 
}; 

Der Fahrer habe ich einfach geschrieben haben, konfiguriert den Oszillator es Konfigurationsregister verwendet wird. Stellt auch eine sysfs-Schnittstelle zur Verfügung, um die Periodenwerte für den Frequenzzähler, der an ihm angebracht ist, einzustellen und die Frequenzzählung vom Frequenzzähler zurückzulesen.