Ubuntu驱动demo
2018-07-10 本文已影响0人
王振
- 查看系统版本号:
evidence@evidence-VirtualBox:~/DriverTest$ uname -r
3.2.0-64-generic-pae
-
编写Hello World模块
#include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hellodriver_init(void) { printk(KERN_ALERT "hellodriver.driver world \n"); return 0; } static void hellodriver_exit(void) { printk(KERN_ALERT "Goodbye,hellodriver"); } module_init(hellodriver_init); module_exit(hellodriver_exit);
-
编写Makefile文件
obj-m := hellodriver.o KERNELDIR := /lib/modules/3.2.0-64-generic-pae/build/ PWD := $(shell pwd) modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules modules_install: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
-
编译
evidence@evidence-VirtualBox:~/DriverTest$ cd /home/evidence/DriverTest evidence@evidence-VirtualBox:~/DriverTest$ make
编译结果如下:
evidence@evidence-VirtualBox:~/DriverTest$ ls -la
total 100
drwxrwxr-x 3 evidence evidence 4096 May 27 03:03 .
drwxr-xr-x 28 evidence evidence 4096 May 27 02:50 ..
-rw-rw-r-- 1 evidence evidence 377 May 27 02:56 hellodriver.c
-rw-rw-r-- 1 evidence evidence 2602 May 27 03:03 hellodriver.ko
-rw-rw-r-- 1 evidence evidence 279 May 27 03:03 .hellodriver.ko.cmd
-rw-rw-r-- 1 evidence evidence 690 May 27 03:03 hellodriver.mod.c
-rw-rw-r-- 1 evidence evidence 1832 May 27 03:03 hellodriver.mod.o
-rw-rw-r-- 1 evidence evidence 26346 May 27 03:03 .hellodriver.mod.o.cmd
-rw-rw-r-- 1 evidence evidence 1932 May 27 03:03 hellodriver.o
-rw-rw-r-- 1 evidence evidence 26243 May 27 03:03 .hellodriver.o.cmd
-rw-rw-r-- 1 evidence evidence 224 May 27 04:11 Makefile
-rw-rw-r-- 1 evidence evidence 48 May 27 03:03 modules.order
-rw-rw-r-- 1 evidence evidence 0 May 27 03:03 Module.symvers
drwxrwxr-x 2 evidence evidence 4096 May 27 03:03 .tmp_versions
-
安装
evidence@evidence-VirtualBox:~/DriverTest$ sudo insmod ./hellodriver.ko evidence@evidence-VirtualBox:~/DriverTest$ sudo dmesg -c <1>[128873.191644] hellodriver.driver world evidence@evidence-VirtualBox:~/DriverTest$ tree -a /sys/module/hellodriver/ /sys/module/hellodriver/ ├── holders ├── initstate ├── notes │ └── .note.gnu.build-id ├── refcnt ├── sections │ ├── .gnu.linkonce.this_module │ ├── __mcount_loc │ ├── .note.gnu.build-id │ ├── .rodata.str1.1 │ ├── .strtab │ ├── .symtab │ └── .text ├── srcversion └── uevent 3 directories, 12 files evidence@evidence-VirtualBox:~/DriverTest$ sudo rmmod hellodriver evidence@evidence-VirtualBox:~/DriverTest$ sudo dmesg -c [128887.792820] Goodbye,hellodriver evidence@evidence-VirtualBox:~/DriverTest$