2017-03-28 6 views
1

私はLinuxでリングオシレータを起動するように求められました。まず、コントロールとステータスレジスタ(面白いビット)を直接読み込み、devmem(レジスタの物理アドレスを使って)にアクセスできます。リング発振器モジュール0と1の2つがあります。各モジュールは4つのリング発振器で構成されています。モジュール0の出力は乱数ジェネレータに供給されます。モジュール1はプロセス監視に使用されていますが、これに関する情報はあまりありません。各モジュールには、制御、ステータスなどのためのレジスタが別々に用意されています。各リングオシレータには周波数カウンタが付いています。リングオシレータの制御レジスタを適切に設定すると、周波数カウンタのカウントレジスタから周波数カウントを読み取ることができます。リングオシレータデバイスドライバ

今、私はリングオシレータのデバイスドライバを作成して起動する必要があります。私がはっきりしていないのは、dtsファイルで、リングオシレータをクロックソースとして表現するか、それをプラットフォームデバイスとして扱うべきかどうかです。 Linuxがリングオシレータをどのように処理するかに関する多くの情報を把握できませんでした。 Ring Oscillatorのデバイスアドレスを探して、それをdtsファイル内の他のプラットフォーム周辺デバイスエントリとして追加する必要があります。ドライバファイルにプラットフォームデバイスとして登録し、プローブ機能からレジスタを制御することができます。それともクロックソースとして扱うべきですか?しかし、入手可能なドキュメントからは、他の周辺機器のクロックソースとして使用されていることはわかりません。誰もこれでいくつかの光を投げることができますか?どんな助力も高く評価されます。

ありがとうございました。

よろしく

のVivek

答えて

0

私は、プラットフォームドライバとしてリング発振器をimplmentedています。 DTS/DTSIの変更は以下の通りです:

DTSI:

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

DTS:私が書いた

&ring_osc { 
    status = "okay"; 
}; 

ドライバは、単にそれがコンフィギュレーション・レジスタです用いた発振器を構成します。また、接続されている周波数カウンタの周期値を設定し、周波数カウンタから周波数カウントを読み戻すsysfsインタフェースを提供します。