Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> 構築するためにLinuxのデバイスドライバの開発環境

構築するためにLinuxのデバイスドライバの開発環境

  
 

探査の2週間後、最終的にはLinuxのデバイスドライバの開発に持っていた予備的な理解、彼らの将来のお問い合わせを容易にするために、Linuxのデバイスドライバの開発環境であるために、ビルドの次の要約、だけでなく、仲間の初心者を与えます少しの援助。

新規のLinuxへのデバイスドライバ、初心者には、多くの場合、ドライバをコンパイルする方法を理解し、ましてやカーネルや負荷テストにコンパイルされません。通常、インターネット上では見たことのない最も単純なHelloWorldのドライバを見つけ、その後、厳密にオンラインコンパイラに従いステップと、あまりにも、と多くのミスを取得するには、エラーメッセージに従って問題を解決するどころか、多くのここの人々は、ダウンを作る方法がわかりません。十日前、私はまた、長い時間のために、ここで立ち往生し、今はなぜダウンし、いくつかの仲間の人の少しの助けを知っています。

基本的なLinuxのデバイスドライバの開発環境は、ホストとターゲットマシンのコンポーネントで構成され、ホストドライブは、ホストにドライブホストを実行するために使用されるホスト、ターゲットとテスト機器の開発のために使用されています開発ツール(GCC、GDB、作る、など)およびLinuxのソースコード(バージョンは、ターゲットマシン上のLinuxカーネルに対応)、そして限りすることができますようにLinuxを実行しているターゲットマシンの必要性について。

(a)は、一般的なLinuxのデバイスドライバの開発:手順が異なるので、以下を構築し、コンパイルするドライバー環境を伝えるために、別の設定どちらの場合も、通常のLinuxデバイスドライバの開発や組込みLinuxドライバ開発に分かれています

通常のLinux組み込みLinux、すなわち、コンパイラの開発は、マシンにマシンにロードされ、ホストとターゲットの開発がホストすることが可能な、(一般uClinuxを指す)は、主に区別しました実行(Linuxデバイスドライバは、カーネルに直接コンパイルすることができますが、開発作業、動的にロードされるの一般的な方法を容易にするために)二つのホスト場合は、当然のことながら、またのホスト上のLinuxのソースコードを確実にするために、そして、二つのホストもバージョン番号は、ターゲットマシンのLinuxカーネルバージョンと一致しています。一般的なLinuxのデバイスドライバの開発ステップ次のとおりです。

と(Linuxカーネルのバージョンとターゲットのバージョン番号の要件に合致)元ホストにインストールされているLinuxの開発ツールをダウンロードしてください。これらのツールはredhatのかFCにデフォルトでインストールされているなどのgcc、gdbの、作る、ですが、DebianやUbuntuのでは、次のコマンドを使用してインストールすることができます開発ツール:ビルドessentiallinuxのソースコードをインストールapt-getのは、いくつかの方法で得ることができます:www.kernel.orgダウンロードパッケージ管理ツールでソースに直接行く、DebianとUbuntuのでは、次のコマンドを経由してダウンロードすることができ、のlinux-ソース - (バージョン番号)をインストールapt-getは、は/usr /srcにあるファイルをダウンロードした後ディレクトリ、

は、Linux-ソース - (バージョン番号)ディレクトリに、以下のいくつかのコマンドを実行し、ソースは/usr /src /ディレクトリを抽出するために、後にディレクトリを解凍することができます。:>

簡単のhello.cにLinuxドライバを書き込み、次のように、例えば、hello.cの読み取り

静的INT hello_init(ボイド){のprintk(KERN_ALERT"のHello World linux_driver_moduleする\\ n"); 0を返す;}

静的ボイドhello_exit(ボイド){のprintk(KERN_ALERT" Goodbeyのlinux_driver_moduleする\\ n"。 );}

M odule_init(hello_init); module_exit(hello_exit); MODULE_LICENSE(" GPL"); MODULE_AUTHOR(" LPJ");

Makefileを書き、パラメータの変更は、実際の状況に応じた、以下のような1つの例である:#サンプルドライバmoduleobj-M:= hello.oKDIR = /usr/src/linux-source-2.6.24/

すべての:$(MAKE)-C $(KDIR)M = $(PWD)

.PHONY:cleancleanます。rm -f * .mod.c * .mod.o *の.ko * .oの* .tmp_versions

ディレクトリでmakeコンパイル、hello.cのと実行のMakefile 、コンパイル済みのカタログ生成hello.koファイルが現在ロードされ、テストすることができます達成するためにinsmodまたはmodprobeコマンドを使用してロードされ、コードの以下の電流経路に実行されるように:こんにちはのmodprobeまたはinsmodのhello.ko注、カーネルがロードされている場合、仮想端末猫の/proc /kmsgには、印刷のために必要とされたであろう:あなたは、次の方法でカーネル情報を表示できるように、カーネルは仮想端末への情報の出力を印刷しませんが、出力は/procの/kmsgファイルので、私たちは、カーネルの印刷情報は表示されませんCtrl + Cキーまたは手動でのdmesg dmesgのを終了

Copyright © Windowsの知識 All Rights Reserved