Android HAL学习 及 与BSP的区别

Android HAL学习 及 与BSP的区别

参考链接:

1、https://www.cnblogs.com/looner/articles/11579335.html

2、https://blog.csdn.net/leesan0802/article/details/124087630

3、https://zhuanlan.zhihu.com/p/336531442

在HAL的学习之前,我们来先了解一下Android的目录结构吧。

可以看到HAL位于库层和Linux内核层之间,那么在三个问题中开始本模块的学习吧。

1、HAL是什么

(1)HAL的全拼是hardware abstraction library,即硬件抽象层

(2)层次方面,是处于库层和Linux内核层之间

2、为什么需要HAL层

(1)并不是所有的硬件设备都有标准的Linux kernel接口

(2)HAL层的存在可以规避GPL协议,保护芯片厂商的利益

(3)针对某些硬件,Android有一些特殊的需求

3、HAL层怎么实现

旧架构的思想:让JNI部分以直接函数的形式调用HAL module

问题:会出现代码重如入的现象

新的HAL架构:同样是以.so的形式存在,但是将.so隐藏起来了(解决了代码重入的现象)

通过前面的介绍,大家应该对于HAL层有了基本的了解,接下来就来实现一下HAL层代码的编写。

1、定义描述HAL层的结构体

结构体元素:

①ID(根据ID找到对应模块)

②methods(操作方法)

2、上层调用的实现原理:

上层通过ID,得到包含调用信息结构体的地址,然后根据偏移就可以找到封装完成的、需要调用的函数指针,以此实现库层到底层(HAL层会封装内核信息的接口)的调用

嵌入式中BSP的概念是什么

BSP定义

硬件层(linux驱动层)与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP),

它将系统上层软件与底层硬件(linux驱动层)分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据 BSP 层提供的接口即可进行开发。

中间层:硬件层与软件层之间称为中间层,可以称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP)。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a1809032425

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值