2

カーネルに含まれる新しいデバイスのクロックを構成しようとしていました。デバイスが既に含まれている古いバージョンのカーネルがあります。

そこで、クロックのカーネルに同様の変更を加えようとしました。しかし、古いバージョンのカーネルには、ほぼすべてのデバイスのクロックを設定するための C ファイルがありましたが、新しいカーネルには同様のファイルが見つかりませんでした。

調査の結果、新しいバージョンのカーネルでは、クロックを構成するためのパラメーターがデバイス ツリーを介してカーネルに渡されることがわかりました。そこで、新しいデバイスのクロックを含めるように DT を変更しようとしましたが、完全には成功しませんでした。だから私の質問は:

1) カーネルが特定のデバイスのクロックを構成するためのパラメーターとレジスタ アドレスを取得する方法

2) カーネルまたはドライバーでこの情報 (レジスター加算器など) にアクセスできますか?

3)ドライバまたはカーネルで直接レジスタを使用してクロックを設定する方法はありますか(周波数など)

4

1 に答える 1

1

デバイス ツリー ファイルでは、デバイスのクロック周波数を指定できます。たとえば、シリアル ポート (UART) のクロック周波数が「クロック周波数 = <3686400>;」に設定されているデバイス ツリーを考えてみましょう。カーネルがパラメーターを取得する方法に関する質問の次の部分に関する限り、ドライバーがAPI「of_get_property」を使用してデバイスツリーからデータを取得するのは簡単です。例として、legacy_serial.c ファイルを参照してください。上記の例については、「Documentation/devicetree/bindings/serial」も参照してください。

于 2014-12-02T15:18:13.997 に答える