第六章
1.Linux系统将每一个驱动都映射成 个文件.这些文件称为设备文件或驱动文件,都保存在/dev目录中
2.编写 Linux 驱动最重要的一步就是编写回调函数 , 否则与设备文件交互 的数据将无法得到处理
3.编写linux驱动程序的步骤
(1)建立 Linux驱动骨架。Linux 内核在使用驱动时首先需要装载驱动 ,在装载过程中需要进行一些初始化工 作 ,在 Linux 驱动程序 中需要提供两个函数来分别址理驱动初始化和退出的工作@ 这两个函数分别 用 modu te_init和 moduie_exit 去指定
(2)注册和注销设备文件.建立设备 文件的 工作一般在第 l 步编写的处理 Linux 初始化工作的面数中完成。删除设备文件一般在第一步 编写的处理 Linux 退出工作的函数中完成。可以分别使用 misc_register 和 misc_deregister 函数创建 和移除设备文件。
(3)指定与驱动相关的信息
(4)指定回调函数。一个驱动程序并不一定要指定所有的困调函数.回调函数
会通过相关机制进行注册。
(5)编写业务逻辑。这是核心部分。业务 逻辑可能由多个函数、多个文件甚至是个 Linux 驱动模块组成。
(6)编写makefile文件
(7)编译 Linux 驱动程序
(8)安装和卸载 Linu x 驱动。如果将 Linux 驱动编译进内核,只要 Linux 使用该内核,驱动程序就会自动装载
4.安装 Linux驱动:
# insmod word_count.ko
查看 word_count 是否成功安装
# lsmod | grep word_count
卸载 Linux 驱动
# rmmod word_count
查看由 Linux 驱动输出的日志信息
# dmesg |grep word_count |tail -n 2
5.注册和注销设备文件
为 word_count 驱动建立一个设备文件,该设备文件的名称是 wordcount ,位于/dev 目录 中。
extern int misc_register(struct miscdevice * misc);
extern int misc_deregister(struct miscdevice *misc) ;
6.设备文件由主设备号和次设备号描述。miscdevice.narne 变量的值就是设备文件的名称。
如果成功注册了设备文件, misc _ _register 函数返回非 0 的整梦,如果注册设备文件失败,返回 0。
7.指定回调函数(关键)。
8.使用 depmod 和 modprobe 命令需要注意如下几点
depmod命令必须使用Linux 驱动模块的绝对路径
depmod 命令会将内核模块的依赖信息写入当前正在使用的内核的 modules.dep 文件。modprobe 命令只需使用驱动名称即可,
9.使用多种方式测试linux驱动
(1)使用Ubuntu linux测试LINUX驱动,不能使用CAT命令测试驱动程序
# sh build.sh
# echo ‘I love you '
#dmesg
10.使用 eclipse 开发 Linux驱动程序的步骤
(1)建立C工程
(2)建立C源代码文件连接
(3)设置include路径
(4)编译linux驱动
测试linux驱动
(1)导入 test_word_ count.c 文件
(2)设置include路径
(3)建立Target
(4)build工程
(5)运行测试程序
刚看到题目的时候感觉想的有点简单了,统计单词数,它不是真的统计单词数,他其实是一个完整的linux驱动。书里说可以让没有学习过linux的开发人员了解这些东西,其实我觉得理解了是一种,但是我们得结合自己实验一起来学习新东西。书中还介绍了怎样使用不同的方法来测试linux驱动