嵌入式基础– API’s vs HAL’s

微控制器已经达到了成本和功能的观点,许多应用程序的开发人员不再需要编写严格的裸机代码。相反,开发人员可以在更高级别上编写代码,类似于PC上的应用程序开发人员编写其代码的方式。为此,嵌入式软件开发人员可以使用两种不同的机制:API’s and HAL’s.

HAL是硬件抽象层,它定义了一组与硬件交互的例程,协议和工具。 HAL专注于创建抽象的高级功能,这些功能可用于使硬件执行某些操作,而不必了解硬件的运行方式。对于使用多个微控制器硬件并需要将应用程序从一个平台移植到另一个平台的开发人员而言,这可能非常方便。 HAL也是允许工程师使用’底层硬件的专家仍然可以编写有用的应用程序代码,而无需掌握具体细节。

API是一个应用程序编程接口,它定义了一组用于创建应用程序的例程,协议和工具。 API定义了组件及其输入和输出的行为和功能的高级接口。应该创建一个API,使其通用且独立于实现。这允许将API用于多个应用程序,而仅更改API的实现,而不更改常规接口或行为。

下面的图1显示了对于设计嵌入式软件的开发人员来说,典型的软件堆栈可能是什么样子。

API-HAL层

图1–嵌入式软件堆栈

蜜蜂’ and HALs’紧密相关,但是在软件开发中具有两个不同的功能。 HAL位于底层驱动程序之间,并为通用软件堆栈(如RTOS)和中间件组件(如USB,以太网和文件系统)提供通用接口。 HAL可以充当包装程序,以在现有驱动程序和更高级别的代码之间提供通用接口,也可以作为驱动程序接口本身存在。 API’用作帮助高级开发人员快速生成应用程序代码的工具包。它提供了公共接口代码,用于控制系统的实时行为和访问诸如串行通信和文件访问之类的公共组件。

将这两个概念分开并使用分层的软件体系结构可以大大提高嵌入式软件的可重用性。想象一下,能够交换HAL之下的每一层,并用新的硬件和驱动程序替换它。这是升级现有硬件时可能发生的情况的完美示例。无需从头开始,只需更新HAL下的代码即可。删除HAL上方的代码也有同样的想法。相同的硬件,新的应用程序。结果是,由于继承,开发周期缩短,代码重用增加且健壮性增强。

One thought 上 “Embedded Basics – API’s vs HAL’s”

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.