| | | | | | | [文章信息] | | | 作者: | 鲁锋 | | 时间: | 2004-11-10 | | 出处: | 天极网 | | 责任编辑: | 方舟 | |
| [文章导读] | | | 本文详细地介绍如何Linux系统的硬件驱动程序的编写原理,指出哪些内核例程将会被调用、如何初始化驱动程序及如何分配内存等等 | |
| |
|
| | | |
|
|
|
|
|
设备驱动程序是一组由内核中的相关子例程和数据组成的I/O设备软件接口。每当内核意识到要对某个设备进行特殊的操作时,它就调用相应的驱动例程。这就使得控制从用户进程转移到了驱动例程,当驱动例程完成后,控制又被返回至用户进程。图5就显示了以上的过程。
图5 设备驱动程序的作用
每个设备驱动程序都具有以下几个特性:
l 具有一整套的和硬件设备通讯的例程,并且提供给操作系统一套标准的软件接口;
l 具有一个可以被操作系统动态地调用和移除的自包含组件;
l 可以控制和管理用户程序和物理设备之间的数据流。
接下来我们来了解一下字符设备和块设备,它们是Linux系统中两种主要的外围设备。我们常见的磁盘是块设备,而终端和打印机是字符设备。块设备被用户程序通过系统缓冲来访问。特别是系统内存分配和管理进程就没有必要来充当从外设读写的数据传输者了。正好与之相反的是,字符设备直接与用户程序进行通讯,而且两者似乎没有缓冲区。Linux的传输控制机制会根据用户程序的需要来正确地操纵内存和磁盘等外设来取得数据。在Linux系统中字符设备驱动器被保存为/usr/src/linux/drivers/char目录中。下面我们重点介绍字符设备驱动程序的开发方法。
|
|
|
|
|
|
|
|
|