通过对这一章的学习,我学会了一个完整的Linux驱动:统计单词数的word_count驱动,并学会了如同使用不同的方法来测试Linux驱动,也对Linux的驱动开发过程有了更深刻的了解。
一、编写Linux驱动程序的步骤
1.建立Linux驱动骨架
Module_init处理驱动初始化,module_exit处理驱动退出
2.注册和注销设备文件
Misc_register函数创建和misc_deregister移除设备文件
3.指定与驱动相关的信息
4.指定回调函数
5.编写业务逻辑
6.编写makefile文件
7.编译Linux驱动程序
8.安装和卸载Linux驱动
二.Linux驱动:统计单词个数
1.开始前的准备工作
(1)建立存放Linux驱动程序的目录
mkdir –p /root/drivers/ch06/word_count
cd /root/drivers/ch06/word_count
(2)建立驱动源代码文件
echo ‘’>word_count.c
(3)编写makefile文件
Echo ‘obj-m := word_count.o’> Makefile (obj-m表示将Linux驱动作为模块编译,obj-y表示编译进Linux内核)
当Linux驱动依赖其它程序则需要这样编写makefile文件
Obj-m:=word_count.o
Word_count-y :=process.o data.o
2.编写Linux驱动程序的骨架(初始化和退出驱动)
Printk函数,在Linux程序中出现,该函数用于输出显示日志信息
测试编译Linux驱动源代码
make –C /usr/src/linux-headers-3.0.0-15-generic M=/root/driver/ch06/word_count
安装Linux驱动
insmod word_ount.ko
查看word_count是否安装成功
lsmod | grep word_count
卸载Linux驱动
rmmod word-count
查看Linux驱动输出的日志信息
dmessg |grep word_count | tail –n 2 或者cat /var/log/syslog | grep word_count | tail –n 2
3.开源协议、GPL协议、LGPL协议、BSD协议、Apachelicence2.0协议、MIT协议
4、注册和注销设备
extern int misc_register(struct miscdevice * misc)
extern int misc_deregister(struct miscdevice * misc)
还需要修改word_count.c文件中的word_count_init和word_count_exit这两个函数
设备文件由主设备号和次设备号来标记的。主设备号统一都设置为10,是Linux系统中拥有共同特性的简单字符设备,称为misc设备,当成功注册了设备文件,misc_register函数返回非0的整数,失败返回0.
insmod word_count.ko
rmmod word_count
ls –a /dev
ls –l /dev