设备驱动程序是用于控制器还是设备?

设备驱动程序是用于控制器还是设备?

请帮助我理清对此的理解:

据我所知,主板包含预装的设备控制器。控制器是负责与设备本身通信的芯片。例如,有屏幕控制器、键盘控制器、鼠标控制器等。

我在一本关于操作系统的书中看到了这样一段话:

与控制器对话、向其发出命令并接受响应的软件称为设备驱动程序。每个控制器制造商都必须为其支持的每个操作系统提供驱动程序。

因此,驱动程序似乎是与控制器。如果控制器确实是主板上的一个硬件,那么看起来,我只需要一个驱动程序来与它通信,无论实际连接到它的设备是什么。作者说你需要为每个设备使用不同的驱动程序,这支持了这一点控制器,不是每个设备,那么为什么当你购买新的打印机或东西时,你需要为其安装驱动程序?

答案1

设备驱动程序是用于控制器还是设备?

可以是两者或其中之一。取决于实际硬件接口与 CPU(或系统/外设总线)的关系、软件接口以及需要软件控制的内容。

有些设备有一个简单的硬件接口,可以直接连接到系统(或外围设备)总线,例如 UART。此类设备不需要控制器。因此,操作系统会有一个与该 UART 设备交互的(设备)驱动程序。

有些设备具有更复杂的硬件接口,无法直接连接到系统(或外围设备)总线。较旧的设备(如 ST506 硬盘驱动器和软盘驱动器)模拟信号需要控制器而不是直接连接。多媒体存储卡(例如 MMC 和 SD 卡)需要控制器才能与计算机连接(尽管 PC 通常也使用 USB)。因此,操作系统将有一个与该设备的控制器交互的驱动程序,并且可能有一个该设备的驱动程序。

某些设备具有硬件接口,即扩展总线或链路,例如 SATA、USB、HDMI 和 I2C。接口控制器将直接连接到 CPU 的系统(或外围设备)总线。因此,操作系统将有一个与该控制器交互的驱动程序,并且可能有一个用于设备的驱动程序。

... 当您购买新打印机或其他东西时,您需要为其安装驱动程序吗?

这只是一个标准化问题,以及操作系统(或您)想要/需要多少软件控制。SSD 和 HDD 符合 SATA 规范,因此操作系统只有一个驱动程序用于所有 SATA 驱动器。打印机确实符合 USB 或 IEEE-1284 或 Postscript 或 PCL 等标准,但在纸张处理和多功能能力方面没有标准。因此需要特定于打印机的驱动程序。

顺便说一句,在从事软件/内核开发多年/几十年后,我不记得听过这句话“控制器驱动程序”。而是会提及特定的控制器,例如“DMAC 驱动程序”或“EMAC 驱动程序”。在 SW 中,控制器也是一种设备。SunOS/Solaris 有“nexus 设备”,Linux 有“平台设备”,指的是已连接其他设备的设备(例如控制器),即设备树或层次结构。


总之,对于连接到(本地或集成/内置)计算机的每种类型的设备(包括控制器),如果该设备具有 CPU 可以写入的可访问控制寄存器和/或 CPU 可以读取的状态寄存器,则操作系统将具有代码(即驱动程序)以访问、控制和维护该设备的状态。操作系统还将具有伪设备的驱动程序,以便维护通过其控制器间接访问的设备或媒体(例如 SD 卡)的状态机。

相关内容