第六章

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驱动