keropoの備忘録

しらべたことをメモるブログ

Linuxデバイスドライバ基礎①

ロスコンパイラでデバイスドライバをビルドする時のサンプルMakefileとスケルト
まあ、簡単なので、特に説明なしです。

Makefile

KERNEL_SRC=${カーネルソースフォルダ}

obj-m := hogehoge.o
CROSS_COMPILE=arm-unknown-gnueabi-  ※クロスコンパイラのプレフィックス
ARCH=arm  ※アーキテクチャ

MAKE_CMD=$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)

all:
    $(MAKE_CMD) -C $(KERNEL_SRC) -M $(PWD) modules

clean:
    $(MAKE_CMD) -C $(KERNEL_SRC) -M $(PWD) clean

hogehoge.c

#include <linux/module.h>
#include <linux/init.h>

static init __init hoge_init(void)
{
    printk("hello hoge_init\n");

    return 0;
}

static void __exit hoge_exit(void)
{
    printk("hoge goodby\n");
}

module_init(hoge_init);
module_exit(hoge_exit);

MODULE_AUTHOR("keropo");
MODULE_DESCRIPTION("hogehoge");
MOUDLE_LICENSE("GPL");

ロードとリムーブ

  ドライバをカーネルにロード
  #insmod hoge.ko

 ドライバをカーネルからリムーブ
  #rmmod hoge