【问题标题】:Clarification on Hardware abstraction layer硬件抽象层说明
【发布时间】:2017-03-29 05:04:47
【问题描述】:

在阅读Embedded Linux System Design and Development时,我发现了以下文字

所以当我们谈论 MIPS HAL 这意味着对 MIPS 处理器和内置板的支持 与 MIPS 处理器。当我们谈论 BSP 时,我们指的是软件 没有处理器支持软件,只有附加的 支持板的软件。 HAL可以理解为超集 所有受支持的 BSP,它还包括特定于处理器的 软件。

硬件抽象层到底是什么(用 Linux 来说)?这在某种程度上与 BSP 有关吗?据我了解,BSP 是板特定代码,例如引导加载程序、内核内核、外围设备的特定驱动程序等。HAL 是如何作为 BSP 的超集出现的?

【问题讨论】:

  • Linux 没有真正的 HAL。几十年来一直在讨论这个概念是否有用。也许你最好问问作者他们的意思。

标签: linux linux-kernel embedded hal bsp


【解决方案1】:

我不认为 HAL 是 Linux 特定的概念,即它不是子系统或适当的代码逻辑分组。作者引入它可能是为了帮助解释其他概念。在某种程度上,操作系统内核可以被描述为 HAL,因为它们抽象出硬件,为用户空间提供统一的接口。所以确切的答案只能在本书的上下文中。

在基于裸机/RTOS 的嵌入式系统中,HAL 层(如果存在)将位于驱动程序之上,以便为更高层提供相同的 API,即使在底层驱动程序或物理组件(如外围设备或连接微控制器的总线到外围)改变。它不同于在 HAL 变得有用之前运行的开发板启动代码或引导加载程序。

希望能解决您的问题。

【讨论】:

  • 微控制器是否有 MMU 为什么重要?我认为您的意思是裸机或 RTOS 应用程序。
  • @Lundin 是正确的。通常具有 MMU 的处理器往往具有更先进/更复杂的设置,我想排除它们。但是裸机或 RTOS 更好地传达了这一点。如果你喜欢,请编辑。
  • MCU 通常没有 HAL。那只会增加无用的膨胀。实际上,让管理人员敦促他们的开发人员使用这些设备是一种营销手段(例如 ST),因为它允许“可移植代码和更快的开发”。在这些平台上两者都是无稽之谈。
  • @Olaf 我从来没有说过他们通常有。我只是在 MCU 的上下文中解释了这个概念,以给出一个具体的例子。它是否有用是一个争论的问题,我同意它可能只是作为潜在错误的额外层。但这与 HAL 是什么无关,这是 OP 的问题。
  • 你应该改写你的第二段。正如它现在所读的那样,您必须在 MCU 上使用 HAL。这不仅仅是潜在的错误,而且它没有兑现可移植性的承诺。无论如何,我的意思不是讨论,而是你的文字所暗示的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 2016-07-04
  • 2013-01-23
  • 2010-09-30
相关资源
最近更新 更多