Linuxドライバ開発のubuntuでのドライバコンパイル
2626 ワード
Linuxドライバ開発のubuntuでのドライバコンパイル
Linuxの駆動開発もずっと道中で、以前はずっと単板の上で実験を行って、今日ubuntuの下で1つの簡単な駆動をコンパイルすることを試みて、いくつかの駆動実験は自然にubuntuの上で行うことができて、同時に学習コストを減らすことができて、1台のPCだけでいいです.Linuxドライバは自然にカーネルバージョンと密接に関連しており、現在使用されているカーネルバージョンを次のコマンドで表示できます.
私はubuntu 12.04を使用しています.カーネルバージョンは3.8.0-29-genericです.また、cdから/usr/srcディレクトリの下で確認することもできます./usr/srcディレクトリの下にlinux-headers-3.8..0-29-genericのフォルダがあり、名前の意味からカーネル関連プログラムをコンパイルするためにヘッダファイルを提供する場所であることがわかります.Googleではubuntuのドライバをコンパイルするにはカーネルをコンパイルする必要があるとよく言われていますが、その後、あなたが自機のためにコンパイル駆動している限り、このステップは必要ではありません.ubuntuのインストール時に自然カーネルをコンパイルした場合、/usr/srcディレクトリでも見ました.だから以下は直接駆動の作成を行うことができて、ここでまず最も簡単な駆動“hello world”に来ます.
次に、ドライバをコンパイルするにはMakefileが必要です.
準備が整う前にmakeを実行するだけで目的の.koファイルを得ることができます.insmodコマンドでシステムにドライバをインストールし、lsmodコマンドでインストールしたドライバを確認し、rmmodコマンドでドライバをアンインストールすることができます.奇妙なドライバで手配された印刷情報はどこへ行きますか.カーネルログに属してシステムログファイルに格納されていたのです.このファイル/var/log/syslogを表示することで、私たちが手配した印刷情報を以下のように見ることができます.
これでubuntuでのドライバコンパイル作業がスムーズに進み、次は思う存分発揮する時です.
Linuxの駆動開発もずっと道中で、以前はずっと単板の上で実験を行って、今日ubuntuの下で1つの簡単な駆動をコンパイルすることを試みて、いくつかの駆動実験は自然にubuntuの上で行うことができて、同時に学習コストを減らすことができて、1台のPCだけでいいです.Linuxドライバは自然にカーネルバージョンと密接に関連しており、現在使用されているカーネルバージョンを次のコマンドで表示できます.
uneme -r
私はubuntu 12.04を使用しています.カーネルバージョンは3.8.0-29-genericです.また、cdから/usr/srcディレクトリの下で確認することもできます./usr/srcディレクトリの下にlinux-headers-3.8..0-29-genericのフォルダがあり、名前の意味からカーネル関連プログラムをコンパイルするためにヘッダファイルを提供する場所であることがわかります.Googleではubuntuのドライバをコンパイルするにはカーネルをコンパイルする必要があるとよく言われていますが、その後、あなたが自機のためにコンパイル駆動している限り、このステップは必要ではありません.ubuntuのインストール時に自然カーネルをコンパイルした場合、/usr/srcディレクトリでも見ました.だから以下は直接駆動の作成を行うことができて、ここでまず最も簡単な駆動“hello world”に来ます.
/* hello.c */
#include
#include
MODULE_LICENSE("leo BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world
");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, Hello world
");
}
module_init(hello_init);
module_exit(hello_exit);
次に、ドライバをコンパイルするにはMakefileが必要です.
obj-m += hello.o
CURRENT_PATH:=$(shell pwd)
LINUX_KERNEL_PATH:=/lib/modules/$(shell uname -r)/build
all:
$(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
clean:
rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions
準備が整う前にmakeを実行するだけで目的の.koファイルを得ることができます.insmodコマンドでシステムにドライバをインストールし、lsmodコマンドでインストールしたドライバを確認し、rmmodコマンドでドライバをアンインストールすることができます.奇妙なドライバで手配された印刷情報はどこへ行きますか.カーネルログに属してシステムログファイルに格納されていたのです.このファイル/var/log/syslogを表示することで、私たちが手配した印刷情報を以下のように見ることができます.
cat /var/log/syslog | grep Hello
これでubuntuでのドライバコンパイル作業がスムーズに進み、次は思う存分発揮する時です.