#author("2019-12-26T09:17:12+09:00","default:honma","honma")
#author("2021-09-24T17:12:39+09:00","default:honma","honma")
* Linuxデバイスドライバ開発 はじめの一歩 [#ya31929d]

#seo(description,Linuxのデバイスドライバの書き方をメモ)
#seo(keywords,Linux, Device Driver)

何もしないデバイスドライバを書いてみる。~
ソースファイル名は skel_drv.c

#highlight(c){{
#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("GPL v2");

static int skel_init(void)
{
	pr_info("%s\n", __FUNCTION__);
	return 0;
}

static void skel_exit(void)
{
	pr_info("%s\n", __FUNCTION__);
}

module_init(skel_init);
module_exit(skel_exit);
}}
#highlight(end)

Makefileはシンプルに1行だけ
 obj-m := skel_drv.o

Makeの仕方は
 $ make -C /lib/modules/`uname -r`/build M=`pwd` modules

クリーンする方法は
 $ make -C /lib/modules/`uname -r`/build M=`pwd` modules clean

デバイス出来上がったデバイスドライバのロードは
 $ sudo insmod skel_drv.ko

アンロードは
 $ sudo rmmod skel_drv

実行確認
 $ dmesg | tail
  :
 [472924.981255] skel_drv: loading out-of-tree module taints kernel.
 [472924.984092] skel_drv: module verification failed: signature and/or required key missing - tainting kernel
 [472925.004224] skel_init
 [472936.566017] skel_exit

これだけで、デバイスドライバを作った気になれる。

#ref(skel_drv_part1.tgz,,ソースコード ダウンロード)

#br
#include(Linuxデバイスドライバ開発,notitle)

#br
#htmlinsert(amazon_book.html);

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS