B.Linux

灵魂构造师

导航

linux驱动动态与静态加载

在Linux中驱动的加载方式有动态加载和静态加载。
动态加载,即驱动不添加到内核中,在内核启动完成后,仅在用到这一驱动时才会进行加载
静态加载,驱动编译进内核中,随内核的启动而完成驱动的加载。
添加字符驱动代码到内核的方式:
1、在Linux-3.0.8/drivers/char/Kconfig中为charDev添加一个config条目,比如config TEST_CHAR
2、修改Linux-3.0.8/drivers/char/Makefile,添加如下代码:obj-$(CONFIG_TEST_CHAR)+=charDev.o
3、把charDev.c拷到Linux-3.0.8/drivers/char下
4、make menuconfig,选中CONFIG_TEST_CHAR项目,设定为【M】或者【Y】
5、重新编译即可(设定为M:编译后得到的为动态加载模块*.ko;设定为Y:编译到内核中)

驱动动态加载过程:(以字符按键驱动为例:charButtons.ko,dev_t = 232 0 name= "buttons")

1、编辑并编译应用程序:buttons.c (gcc -c buttons.c -o buttons

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <unistd.h>
 4 #include <sys/ioctl.h>
 5 #include <sys/types.h>
 6 #include <sys/stat.h>
 7 #include <fcntl.h>
 8 
 9 int main(int argc, char **argv)
10 {
11     int on;
12     int led_no;
13     int fd;
14 
15 
16     fd = open("/dev/buttons", 0);
17     if (fd < 0) {
18         perror("open device buttons");
19         exit(1);
20     }
21 
22     close(fd);
23 
24     return 0;
25 }

2、创建设备节点:mknod /dev/buttons c 232 0  删除设备节点:rm /dev/buttons
3、加载/移除驱动模块:insmod/rmmod charButtons.ko
4、执行应用程序:./buttons即可调用按键驱动

posted on 2019-04-13 16:40  B.Linux  阅读(2516)  评论(0编辑  收藏  举报