qshinoの日記

Powershell関係と徒然なこと

Linux device driver

linux driver tutorial

非常に分かりやすいpi用device driver開発チュートリアルがあったので、参考に。

環境準備

sudo apt-get install raspberrypi-kernel-headers

上記により、下記にヘッダーが、 /usr/src/linux-headers-4.9.41-v7+

シンボリックリンクが下記に作られる。 lib/modules/4.9.41-v7+/build

Makefile

先にMakefile。obj-m に指定しているのが、作成されるtest.koの元になるオブジェクトファイル。

obj-m := test.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean

最低限のドライバ

test.c

#include <linux/module.h>

static int test_init(void)
{
    printk("test init¥n");
    return 0;
}

static void test_exit(void)
{
    printk("test exit¥n");
}

module_init(test_init);
module_exit(test_exit);

動作確認

make
sudo insmod test.ko
sudo rmmod test.ko
dmesg

[ 5456.268241] test init
[ 5459.046564] test exit

ref

https://qiita.com/iwatake2222/items/580ec7db2e88beeac3de