カーネルはドライバやデバイスツリーとどのようにやり取りしますか?

カーネルはドライバやデバイスツリーとどのようにやり取りしますか?

ボード上で動作する組み込みLinuxシステムがあります。デバイスツリーにuartデバイスとそのデバイスのドライバがあります。この場合、起動後に/dev/フォルダに/dev/ttymxc0 "ファイル"を表示できます。他の目的でUARTを使用する必要があるため、デバイスツリーでそのセクションをコメントアウトし、ファイルが/dev/フォルダになくなったことがわかります(今すぐボードと対話するためにsshを使用します)。

これで(他の理由で)カーネルに組み込まれたUART用の新しいシンプルなドライバを作成する必要があり、UARTと対話するためにレジスタに書き込む予定です。私の計画は、ユーザー空間でioctl()およびread()関数を介してUARTと対話できるようにドライバを開発することです。

しかし、何をすべきか、どのように始めるべきかはよくわかりません。デバイスファイルを生成するためにmknodeを参照または呼び出すドライバのどこにも見つからないため、カーネルがデバイスツリーを見た後に何らかの形でファイルを生成することが疑われます。問題は、ソースソースコードのデバイスツリーまたはドライバコードに「ttymxc0」への言及が見つからないことです。

ドライバーが何であるかはわかりませんが、実際にしなければならない。私は多くを読んで、これがカーネルとハードウェアの相互作用を案内することを知っています。私はこのサイトで多くの質問を読んでいますが、まだすべてがどのようにつながり、対話し、合計されるのかわかりません。実際に

長すぎます。:ioctlや読み取りなどの関数を使用してユーザー空間で対話できるようにUART用の単純なドライバを作成したいのですが、ドライバコードに何を含める必要があるのか​​、カーネルやデバイスツリーとどのようにやり取りするのかわかりません。 /dev/にデバイスファイルを生成するためにmknodeを呼び出す方法は?

ベストアンサー1

おすすめ記事