私はLinuxカーネル4.13.x用のイーサネットドライバをBanana Pi M2 ultra用に書こうとしています。 Linuxカーネルインフラストラクチャでは、以前はいわゆる「デバイスツリー」(DT)が導入されました。 私はデバイスドライバを書いている間にDTを使った経験はあまりありません。そのために、 いくつか質問があります。バナナパイとデバイスツリーのLinuxデバイスドライバ
私が知る限り、バナナパイシステムの場合、所定の 周辺デバイスに対していくつかのクロックソースを提供する必要があります。このような時計を提供するのは、バナナパイのCCUの機能です。 CCUは、Linuxカーネルの一部のアドレスで利用可能なメモリ リソースです。私は がCCUからいくつかのクロックを必要とするイーサネット用のドライバを書いています。
CCUの物理アドレスは、ioremap()または同様の機能を使って仮想アドレスにマップする必要があることは知っています。
私の質問は、どのように私のイーサネットドライバでCCUの仮想アドレスを取得できますか? デバイスツリー経由で行うことはできますか?はいの場合 - これを行う方法?あるいは、この仮想アドレスは別の方法で取得できますか?
私はそれがDTかいくつかの手続きまたはグローバルポインタ経由で(virtアドレスを取得して)行われているかどうか分かりません。
アイデアや提案はありますか?
ドライバはCCUの仮想アドレスを取得してはいけません。カーネルは、ドライバがそのようなアドレスやデータを共有しないように、データカプセル化などのオブジェクト指向技術を使用します。ドライバが必要なクロックを取得または有効にするために呼び出すことができる関数がいくつかあります。 – sawdust