在Linux中,HAL提供硬件抽象,设备驱动程序也提供硬件抽象。你能否澄清一下两者之间的区别?
答案 0 :(得分:3)
设备驱动程序与特定缓冲区中的特定设备通信并控制标志块位置。硬件抽象层抽象出特定设备如何工作的细节。例如,USB鼠标的驱动程序与PS2鼠标的驱动程序非常不同,但在HAL层,它们都是鼠标,可以互换处理。
答案 1 :(得分:1)
主要区别在于它们提供的抽象。 HAL抽象处理器,设备驱动程序抽象不同的设备。所以从某种意义上说,HAL是处理器的“设备”驱动程序或PC中的主板。
答案 2 :(得分:1)
我想说HAL使用设备驱动程序提供硬件抽象。从某个角度来看,没有驱动程序就没有设备可以工作。 HAL领先一步,为应用程序提供统一(或“更简单”)的API。
您可以绕过HAL并直接与设备驱动程序通信,但是您无法绕过设备驱动程序并直接与硬件对话(这最后一句话通常或多或少有效,具体取决于操作系统和环境)。
答案 3 :(得分:0)
过去,每个编写应用程序的程序员还为他们想要支持的各种硬件编写驱动程序。因此,如果您有开发需要使用网络功能的应用程序的想法,您还需要知道如何为网卡编写硬件驱动程序。
然后是 HAL。
因此,不是让您的软件和操作系统直接接触硬件,而是在两者之间有一个称为 HAL 的层。 HAL 位于操作系统层之下或内部。
现在没有人被允许访问硬件,除非他们通过硬件抽象层(HAL)来访问。只允许 HAL 访问硬件。
现在这是标准的东西。开发人员所要做的就是让游戏/应用程序与 HAL 一起工作。
现在我们有了驱动程序。驱动程序告诉 HAL 如何访问实际硬件。
因此,无论制造声卡的人是谁,他们只需要创建一个驱动程序,告诉 HAL 如何访问该声卡。
总的来说,我们的软件与 HAL 交互,HAL 使用驱动程序与硬件交互。我们告诉 HAL 如何使用驱动程序访问该声卡或网卡等。