当我们已经在硬件中安装固件时,为什么我们需要设备驱动程序?

时间:2015-12-24 08:21:08

标签: c linux linux-device-driver

例如,对于连接到linux机器的SD卡,我们有一个在SD卡上运行的固件,我们有一个主机控制器,它也运行固件(我的理解),那么为什么我们需要一个完整的SD设备驱动程序什么时候我们可以简单地向SD主机控制器发送命令来进行操作?

4 个答案:

答案 0 :(得分:1)

答案

固件是在设备上运行的软件。 设备驱动程序也称为软件驱动程序,它是告诉操作系统如何与设备通信的软件。并非所有设备都有固件。包含固件的设备的典型示例是嵌入式系统,如交通信号灯,家用电器,数字手表,计算机,计算机外围设备,移动电话和数码相机。这些设备中包含的固件提供了控制程序。设备

答案 1 :(得分:1)

应用程序(雇主),设备(员工)和设备驱动程序(翻译者)的类比。希望这澄清一下!

想象一下这样一家公司,雇主会说英语,而员工会用自己的语言说英语单词。现在,如果雇主想明确指导工作和任务,除非理解点点滴滴,否则他可能不会这样做。节省时间的方法是聘请翻译。

此外,固件仅在具有处理器的设备上才有意义。例如:RFID卡没有固件,但RFID读卡器确实如此。

答案 2 :(得分:1)

  

...那么为什么我们需要一个完整的SD设备驱动程序呢?   只需将命令发送到SD主机控制器即可进行操作?

对于不同类型的SD卡,一些实现会有所不同。 您无法为每个制造商/供应商的SD卡发送不同的命令集。

不同的操作系统会将不同的API集导出到用户。所以应该有某种子系统和设备特定的抽象层。由这样的设备驱动程序处理。

答案 3 :(得分:0)

据我所知,我们出于历史原因使用设备驱动程序。

早期,设备没有固件。要使用该设备,对设备的命令必须是原始的。也就是说,在非常低的抽象级别,如果使用任何抽象的话。

但是操作系统和计算机设备之间的接口仍然是抽象的,尽管抽象级别低于应用程序接口(API)。因此,需要使用代码片段将来自操作系统的低级但仍然是抽象的命令转换为更原始的,特定于设备的级别。

在早期的计算机中,将命令转换为设备所需的代码片段必须在主机的处理器上运行。这是唯一可用的平台。设备驱动程序是这些代码片段。驱动程序必须为每个设备编写,并安装在主机上。

现在,任何设备都可以使用固件或其他方法,使用板载功能轻松构建,以处理这些低级但仍然是抽象的命令。因此不再需要设备驱动程序。实际上,无论如何,许多鼠标和键盘驱动程序都是通用的。但考虑到所有使用的硬件,取消设备驱动程序将很困难。所以我相信他们会待在这里。

我现在还不确定我们是否会因为摆脱设备驱动程序而受益匪浅。设备驱动程序很烦人,我浪费了很多时间来寻找,安装和撕毁我的头发,关于司机。此外,当没有找到能够在新操作系统上运行的驱动程序时,必须将完美的硬件丢弃。

但任何替代解决方案都有其自身的问题。

相关问题