首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >O.S.或高级抽象层是如何使用设备驱动程序获得硬件知识的?

O.S.或高级抽象层是如何使用设备驱动程序获得硬件知识的?
EN

Stack Overflow用户
提问于 2014-11-11 08:36:48
回答 1查看 126关注 0票数 0

在阅读有关硬件/设备独立性的文章时,维基百科(computing)的这条声明指出:

应用软件不需要了解使用它的硬件的任何信息。相反,它通过标准化的抽象层发现硬件的功能,然后使用抽象的命令来控制硬件。

我想知道BIOS例程/设备驱动程序/HAL/OS与设备控制器之间关于发现硬件功能的低级交互。

请帮助我理解这些实体之间的通信发生,这有助于硬件独立。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-11 09:04:15

通常,硬件设备通过某种标准总线连接到主控制器。例如- PCI,PEX,USB。

总线控制器将为总线上的每个连接设备分配设备#、总线#、函数#等。

现代总线控制器要么为主控制器提供执行扫描的能力,要么在设备热插拔到总线时发送事件。

根据每个已发现的设备,可以使用总线控制器标准命令(如设备的读/写寄存器、设备ID、总线号等)询问设备的详细信息,如:

  • 制造商ID
  • 设备ID
  • 类(控制器/网络设备/人机界面/成像设备/等等)

在每种总线类型中,所有这些细节都必须以相同的方式提供给每个连接的HW设备,从而使操作系统能够使用抽象层。

一旦设备被发现和识别,操作系统将调用所有特定的总线注册设备驱动程序的探测函数,该功能使用上述细节来决定是否能够处理它。当设备驱动程序探测成功时,将分配驱动程序的一个实例,并可由需要访问HW的应用程序直接使用。

例如: USB连接到USB端口。事件由USB总线控制器发送到主CPU。CPU将使用标准USB总线控制器功能来学习制造商&设备ID/s、设备类、功能等,并调用所有已注册的USB设备驱动程序探测函数。

如果安装(注册)适当的设备驱动程序,它将成功地创建设备的一个实例,视频应用程序(如skype)可以通过驱动程序SW提供的DLL直接使用它。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26860695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档