在编译第一个驱动之前,需要把基本的环境准备好,可以参照这两篇文章:
https://wlink.blog.csdn.net/article/details/128590747
https://wlink.blog.csdn.net/article/details/128591216
我们之前写过一个基于ubuntu最基本的字符设备驱动,参照文章:
https://wlink.blog.csdn.net/article/details/128505550
所以本节我们直接来用一下第一个最简单的字符设备驱动来验证一下我们的环境准备的是否正常
我们直接上代码:
hello_driver.c
#include <linux/module.h>
static int __init hello_driver_init(void)
{
printk("hello_driver_init\r\n");
return 0;
}
static void __exit hello_driver_cleanup(void)
{
printk("hello_driver_cleanup\r\n");
}
module_init(hello_driver_init);
module_exit(hello_driver_cleanup);
MODULE_LICENSE("GPL");
Makefile
KERNELDIR := /home/zhongjun/project/board/yuanzi/imx6ull/nfs/kernel
CURRENT_PATH := $(shell pwd)
obj-m := hello_driver.o
build: kernel_modules
kernel_modules:
$(MAKE) -C $(KERNELDIR) $(KBUILD_CFLAGS) M=$(CURRENT_PATH) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
其中KERNELDIR是我们编译过Kernel的路径
insmod hello_driver.ko
其中hello_driver_init就是我们printk打印的log
我们也可以通过dmesg来查看log
lsmod
rmmod