探査の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のを終了
Unix系システムでは、topを使用してシステムリソース、プロセス、メモリ使用量などの情報を表示することができます。ネットワークの状態を表示するには、netstatやnmapなどのツールを使用できます
STM32F103VCT6は、2つの12ビットDACが付属して、DACの変換速度が発見されていない、一部の人はそれが1USで、インターネットは周波数1MHzのだと言います。 72MHZの動作周波数1.
mysqlのデフォルトのエンコーディング形式を表示 “ character%&rdquo ;;のような変数を表示示す:reality-bash:show:コマンドが見つからないログイン結果
この期間win8.1のMac OS X 10.9マーベリックス2つのオペレーティングシステムほぼ同時にリリース、実際には、Ubuntu 13.10もあります。さて、私はMacを買うお金がない貧しい人