加入内核源码树外
① 建立两个文件scull.c,scull.h,以及Makefile文件
Makefile文件
② 用make进行编译,生成scull.ko驱动程序模块
③ 把scull.ko模块加载到内核,并且查看scull.ko驱动
④ 查看当前设备使用的主设备号,主设备号为260
⑤ 首先应该在/dev/目录下创建与该驱动程序相对应的文件节点,查看创建好的驱动程序节点文件并修改scull的权限。
⑥ 编写test.c程序,来对驱动程序进行测试。编译并执行该程序
移除驱动模块
加入内核源码树里面
① 把驱动程序(模块程序)拷贝到内核源码树根目录下/drivers/char下
② 编译配置文件Kconfig,加入驱动选项,使之在make menuconfig的时候出现改模块选项
③ 在内核根目录下执行make menuconfig
④ 没有安装curses库,安装。
⑤ 在内核根目录下执行make menuconfig,找到驱动模块,设置启动为M
⑥ 在模块文件所在目录的Makefile中加入要编译的驱动模块文件
⑦ 在源代码根目录linux下,执行make bzImage后执行make modules
⑧ 在char目录下查看得知device1.ko已经存在
⑨ 用lsmod指令安装模块文件,再对驱动程序进行测试。编译并执行该程序
代码:
1 #ifndef _MEMDEV_H_ 2 #define _MEMDEV_H_ 3 4 #ifndef MEMDEV_MAJOR 5 #define MEMDEV_MAJOR 260 /*预设的mem的主设备号*/ 6 #endif 7 8 #ifndef MEMDEV_NR_DEVS 9 #define MEMDEV_NR_DEVS 2 /*设备数*/ 10 #endif 11 12 #ifndef MEMDEV_SIZE 13 #define MEMDEV_SIZE 4096 14 #endif 15 16 /*mem设备描述结构体*/ 17 struct mem_dev 18 { 19 char *data; 20 unsigned long size; 21 }; 22 23 #endif /* _MEMDEV_H_ */