質問

私は、Linuxのデバイスドライバprogrammringにかなり新しいですが、デバッグ目的のために、私は直接ファイルへのデータの流れを書きたいと思います。それとも私は違った質問をAKSする必要があります:

Iは、システム・オン・チップ、1つのモジュールは、データストリームを提供しています。モジュールは、書き込みアドレスとinitlizedする必要があります。代わりに、メモリにデータを書き込むのは、私は、ファイルにそのアドレスにデータ・ストリームをリダイレクトしたいと思います。 kernelspace内のファイルへの書き込みは推奨されませんので、これはまた、ユーザ空間を介して行うことができます。

誰かがこれを行う方法を大まかにスケッチすることはできますか?

おかげで、ステファン

役に立ちましたか?

解決

あなたの質問から、私はこれはメモリバッファに直接書き込むハードウェアモジュールであると仮定します。あなたは、常にファイルへの途中の中間メモリバッファが必要になりますが、あなたのデバイスドライバでこれを管理するためのいくつかの方法があります。

最も単純な場合は、読み出し動作を介してユーザ空間にデータを返す文字デバイスドライバを実装することです。ファイルへの書き込みをお使いのユーザ空間アプリケーションは、catのような単純なことができます。あなたのモジュールは、あなたのドライバによって割り当てられたメモリバッファに書き込まれます、とread方法は、ユーザ空間のバッファにこのバッファからデータをコピーします。これは、カーネルのドキュメントにと Linuxデバイスドライバの(LDD)にDMA-Mapping.txtで覆われている。

データレートが(高いが、デバイスの性能に比べてです)が高い場合は、

、あなたはメモリにreadリクエストのページをロックより高度な読み出し動作を、検討する必要があります、そしてモジュールが書き込み直接それらのページへ。これは、より複雑であり、この領域にLDDのドキュメントはかなり古いです。私はこれを理解するために、カーネル内のビデオキャプチャドライバのソースを勉強お勧めする。

あなたのドライバが実行する通信のより多くの種類を持っている場合は、

、あなたが使用することをお勧めします<のhref =「http://www.linuxfoundation.org/collaborate/workgroups/networking/generic_netlink_howto#Sending_Messages」のrel = "nofollowをnoreferrer 「>するNetlinkはします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top