当阅读有关硬件/设备独立性的内容时,维基百科(http://en.wikipedia.org/wiki/Device_independence#Desktop_computing)的声明指出:
应用程序软件不需要知道有关使用它的硬件的任何信息。相反,它通过标准化的抽象层发现硬件的功能,然后使用抽象的命令来控制硬件。
我想了解BIOS例程/设备驱动程序/ HAL / OS与设备控制器之间关于发现硬件功能的较低级别交互。
请帮助我理解这些实体之间的通信,这有助于硬件独立性。
答案 0 :(得分:1)
硬件设备通常通过某种标准总线连接到主控制器。 例如 - PCI,PEX,USB。
总线上的每个连接设备将由总线控制器分配设备#,总线#,功能#等。
现代总线控制器为主控制器提供执行扫描的能力,或者在设备热插入总线时发送事件。
根据每个发现的设备,可以使用总线控制器标准命令(例如设备的读/写寄存器,设备ID,总线编号等)来询问设备,以获取以下详细信息:
对于每个总线类型,所有这些细节必须以相同的方式为每个连接的HW设备提供,从而使操作系统能够使用抽象层。
一旦设备被发现并识别,操作系统将调用所有特定的总线注册设备驱动程序的探测功能,该功能使用上述细节来决定是否可以处理它。 当设备驱动程序探测成功时,将分配驱动程序的实例,并且可以由需要访问HW的应用程序直接使用。
例如: USB PC CAM连接到USB端口。 USB总线控制器将事件发送到主CPU。 CPU将使用标准USB总线控制器功能来学习制造商和产品。设备ID,设备类,功能等,并将调用所有USB注册设备驱动程序探测功能。
如果安装(注册)了适当的设备驱动程序,它将成功创建设备实例,视频应用程序(如skype)可以通过驱动程序SW提供的DLL直接使用它。
希望这有帮助。