HAL层简介

          刚刚看了HAL层驱动API函数,没有全部看完,本文主要是谈谈HAL的作用。

        所谓HAL层,Hardware Abstract Layer,即硬件抽象层。硬件抽象层主要是干嘛的呢?

        HAL在windowsNT中就曾经提出来过,主要是用于处理不同平台之间的移植兼容性的问题。如下一段话是百度百科的内容:

HAL的作用是将操作系统的其余部分表示为抽象的硬件设备,特别是去除了真正硬件所富含的瑕疵和特质。这些设备表现为操作系统的其它部分和设备可以使用的独立于机器的服务的形式(函数调用和宏)。通过使用HAL服务和间接硬件寻址,当移植到新的硬件上时,驱动程序和核心只需做很少的改动。移植HAL本市是直接的,因为所有的机器相关代码都集中在一个地方,并且移植的目标是充分定义的,即实现所有的HAL服务。

       感兴趣的读者可以看百度百科,了解更为详细的信息。

如下为document中定义的内容:

This document describes the application programming interface for HAL Drivers. The  API  provides

application the interface to access timers, GPIO, UART and ADC. This is a platform independent API that

provides a superset of features for each service. Not all features will be available for all platforms.

 

        在zstack中,HAL具有与windows相似的功能,,它提供了一种接口来访问定时器,GPIO,UART,ADC。这些接口都通过相应的函数进行实现。此外,我们还应注意到在OSAL中系统也可以调用相应的函数来访问这些资源,例如定时器。那么HAL中调用和OSAL中的调用有何区别呢?

       在OSAL中,任何的资源调用都是通过一个task来调用的,或者说是某一个task在使用这个资源,例如定时器,而每一个任务都有自己的查询时间,就是轮询时间,过了这个时间就会被系统强制挂起,而这些资源可能在下一个task中使用。简单的说:某一个任务中资源,例如ADC,可能被系统打断而暂时不执行。

      在HAL中,任何函数的调用都是通过阻塞的形式来实现的,或者说任何一个函数都是一个阻塞函数。什么事阻塞呢,阻塞就是独占,一个函数为执行完毕不会释放CPU的。假设一个函数为阻塞函数,那么这个函数就会在其调用期间独占CPU直到执行完毕为止。

       所以这样看来,HAL的优先级比OSAL还是要高一些,它是不会理会系统的。

转载于:https://www.cnblogs.com/farbeyond/p/5204608.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值