一般的な観点から、ユーザー空間からプラットフォーム デバイスにアクセスする方法を見つけようとしています。具体的に言うと、デバイス ツリーに追加した EMIF コントローラーと SoC があり、事前に作成された EMIF プラットフォーム デバイス ドライバーに正しくバインドされていると思います。現在、ユーザー空間アプリケーションからこの EMIF デバイスにアクセスする方法を見つけようとしています。この問題に何らかの関連があると思われるいくつかの異なるトピックに出くわしましたが、それらがどのように関連しているかはよくわかりません.
1) 私が読んだように、ほとんどの I/O は によって作成されたデバイス ノードを使用して行われているようですがmknod()
、このデバイスにアクセスするにはデバイス ノードを作成する必要がありますか?
2)ユーザー空間とプラットフォームデバイスドライバーの両方とインターフェースし、それを仲介として使用できるカーネルモジュール(キャラクター?、ブロック?)の作成について話しているスレッドをいくつか読みました。
mmap()
3) を使用して、プラットフォーム デバイスのメモリを仮想メモリ空間にマップする可能性について読みました。これは可能ですか?
4) EMIF ドライバーがインスタンス化されると、関数が呼び出されるprobe()
ようです。ユーザースペース アプリケーションがドライバーで呼び出す関数は何ですか?