Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxカーネルにドライバを追加する方法

Linuxカーネルにドライバを追加する方法

  
I.概要:
Linuxカーネルにプログラムを追加するには、3つの作業が必要です。
1. Linuxカーネルのソースコードの対応するディレクトリにソースコードをコピーする。
2.ディレクトリのKconfigファイルに、プロジェクトのコンパイル設定オプションに対応する新しいソースコードを追加します。3.ディレクトリのMakefileに新しいソースコードのコンパイルエントリを追加します。ドライバコードusbtmc(フォルダ)は/usr/src/linux2.6.32/drivers/charに割り当てられています。
まず、カーネルソースツリーのどこにモジュールがあるべきかを知る必要があります。
1>デバイスドライバは、カーネルソースツリーのdriver /サブディレクトリのサブディレクトリに格納されており、その中には、デバイスドライバファイルがカテゴリとタイプに従って整理されています。
a。文字型デバイスはdrivers /char /ディレクトリにあります。
b。ブロック型デバイスはdrivers /block /ディレクトリにあります。
c.USBデバイスはdrivers /usb /ディレクトリにあります。
注:
(1)USBデバイスもキャラクタ型デバイスであり、drivers /usb /ディレクトリに保存することもできます。
(2)たとえば、ドライバusbtmcをdrivers /char /ディレクトリに格納した後、そのディレクトリには多数のCソースファイルとその他多数のディレクトリがあることに注意してください。 1つか2つのソースファイル用のすべてのデバイスドライバをこのディレクトリに直接配置できますが、ドライバに多数のソースファイルとその他の補助ファイルが含まれている場合は、新しいサブディレクトリを作成できます。
ここでは、usbtmcディレクトリをdrivers /charディレクトリの下に置きます。2. charディレクトリの下のKconfigとMakefileを変更します。<1>(1)Kconfigを変更します。sudo gedit Kconfig次の文を追加します。
source" drivers /char /usbtmc /Kconfig>これは、usbtmcディレクトリの下のKconfigがcharディレクトリの下のKconfigにマウントされていることを意味します(このレイヤのKconfigファイルを機能させるには、親ディレクトリのKconfigファイルを変更する必要があります)。 、ソースステートメントに参加します。)1>ドライバの場合、Kconfigは通常ソースコードと同じディレクトリにあります。
2>新しいディレクトリを作成し、そのディレクトリにKconfigファイルを存在させる場合は、既存のKconfigファイルにインポートする必要があります。上記の
ステートメントを使用する必要があります。 drivers /charディレクトリのKconfigにマウントされています。
(2)Makefileの変更

obj - $(CONFIG_USBTMC)+ = usbtmc /この行のコンパイル命令は、モジュールをコンパイルするときにusbtmc /サブディレクトリに入るようにモジュールビルドシステムに指示します。現時点でのドライバのコンパイルは特別な設定CONFIG_USBTMC設定オプションに依存します。
3. KconfigとMakefileを独自のドライバフォルダに追加します<1>(1)Kconfigの変更
新しいKconfigの作成次の単語を追加します。 menu" USBTMC"コメント" USBTMC Driver> USBTMCtristate" USBTMC" defaultnhelpここでYと言うと、usbtmcとコンピュータインタフェースのサポートがカーネルに組み込まれ、デバイスノードを介してアクセスできるようになりますまた、Mとここで言うとドライバはusbtmc.koという名前のモジュールとして構築されます。 .endmenuが正しく設定された後、ソースコードの下でsudo make menuconfigを実行した後、Linuxカーネル設定グラフィカルインターフェースのデバイスドライバの下の文字devcieを選択すると、新しく追加されたUSBTCMメニューが表示されます。
(2) Makefileの変更
新しいMakefileを作成し、以下の単語を追加する。obj - $(CONFIG_USBTMC)+ = usbtmc.oこの時点で、ビルドシステムはusbtmc /ディレクトリに移動し、usbtmc.cをusbtmcにコンパイルします。 .ko module
注:
複数のドライバソースファイルが存在する可能性がある場合は、次のようにMakefileを変更できます。
obj - $(CO NFIG_USBTMC)+ = usbtmc.ousbtmc-objs:= usbtmc-main.o usbtmc-usb1.oこの時点で、usbtmc-main.cとusbtmc-usb1.cがコンパイルされ、usbtmc.koのブロックに接続されています。
4.さて、これでmenuconfigからlinuxカーネルディレクトリに入り、USBTMCオプションを見つけることができます(USBTMCはDevice_Driversの下のキャラクタデバイスにあります)。終了してカーネルをコンパイルすれば完了です。
5.削除:
削除もとても簡単です。最初にdrivers /charディレクトリにある自分のドライバフォルダを削除してください。次に、MakefileとKconfigの前に追加されているものを削除すれば完了です。


Copyright © Windowsの知識 All Rights Reserved