在Linux中,HAL提供硬件抽象,而设备驱动程序也提供硬件抽象。你能否澄清一下两者之间的区别?
设备驱动程序与特定缓冲区中的特定设备通信并控制标志块位置。硬件抽象层抽象出特定设备如何工作的细节。例如,USB鼠标的驱动程序与PS2鼠标的驱动程序非常不同,但在HAL层,它们都是鼠标,可以互换处理。
主要区别在于它们为抽象提供了什么。 HAL抽象处理器,设备驱动程序抽象不同的设备。所以从某种意义上说,HAL是处理器的“设备”驱动程序或PC中的主板。
我会说HAL使用设备驱动程序提供硬件抽象。从某个角度来看,没有驱动程序就没有设备可以工作。 HAL领先一步,为应用程序提供统一(或“更简单”)的API。
您可以绕过HAL并直接与设备驱动程序通信,但是您无法绕过设备驱动程序并直接与硬件通信(这最后一句话通常或多或少都有效,具体取决于操作系统和环境)。