HAL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HAL相关的知识,希望对你有一定的参考价值。

在传统的linux系统中linux驱动一般有两种不同类型的代码:访问硬件寄存器的代码和业务逻辑代码,对于访问硬件寄存器的代码,并没有什么秘密可言,因为这些都是调用的linux内核的标准函数进行的标准操作,而linux驱动的业务逻辑部分对于有些企业或者个人并不想将源代码公开。

统一硬件的调用接口。由于HAL有标准的的调用接口,所以可以利用HAL屏蔽LINUX驱动复杂,不同意的接口

解决了GPL版权问题。由于linux内核基于GPL协议,而android基于2.0协议。所以google问了个穿越,将原文位于linux驱动中的敏感代码上移了一个层次。这样名改代码就拜托了GPL协议的束缚,蜂鸣器是以高低电压的变频以及占空比的输出来控制蜂鸣器的声音变化,然后我们需要做的是使用代码来实现蜂鸣器的声音变化。在代码中需要引用PWM的驱动以及按键的使用。

如果linux驱动只有一个源代码文件,obj-m变量的数值可以和源代码同名,例如,源代码文件为main.c,obj-m数值为main.o。如果linux驱动包含多个文件,就需要使用module-y来制定所有的目标文件,而不能只有指定被引用的文件。

Linux驱动的代码重用有很多方法,可以采用标准的C语言的方式。

以上是关于HAL的主要内容,如果未能解决你的问题,请参考以下文章

Android HAL

如何重置 STM32 HAL UART 驱动程序 (HAL) 状态?

零基础上手HAL库之—为什么要选择HAL库

01 Provider HAL and Device HAL

hal体系结构与设计思想

硬件抽象层:HAL