简单的Linux驱动程序以及如何加载/卸载驱动
Posted gotwindy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的Linux驱动程序以及如何加载/卸载驱动相关的知识,希望对你有一定的参考价值。
今天记录一下简单的Linux驱动程序怎么写以及如何加载/卸载驱动
以hello.c为例:
hello.c
#ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # define MODULE #endif #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) printk(KERN_ALERT "HELLO WORLD\\n"); return 0; static void hello_exit(void) printk(KERN_ALERT "GOODBYE CRUEL WORLD\\n"); module_init(hello_init); module_exit(hello_exit); /* 3.5.0-23-generic make -C /lib/modules/3.5.0-23-generic/build M=`pwd` modules */
用Makefile来编译:
Makefile
obj-m := hello.o all : $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
以下终端是编译命令,下图所示编译成功:
加载和移除驱动:
sudo insmod ./hello.ko sudo rmmod hello
查看日志
tail /var/log/kern.log
参考博客https://www.cnblogs.com/QuLory/archive/2012/10/23/2736339.html
以上是关于简单的Linux驱动程序以及如何加载/卸载驱动的主要内容,如果未能解决你的问题,请参考以下文章
2019-2020-1 20175311 20175324 20175330 实验四 外设驱动程序设计
2019-2020-1 20175205 20175234 20175217 实验四 外设驱动程序设计