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)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/157425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SPASS-指数平滑法

基本概念及统计原理 基本概念 指数平滑法的思想来源于对移动平均预测法的改进。指数平滑法的思想是以无穷大为宽度,各历史值的权重随时间的推移呈指数衰减,这样就解决了移动平均的两个难题。 统计原理 简单模型 Holt线性趋势模型 案例 为了研究上海市…

数据结构(c语言版) 树的遍历

作业要求 以如下图为例,完成树的遍历: 1、利用孩子兄弟表示法的存储结构 2、利用先根序列创建树 3、先根遍历树 4、后根遍历树 思考 预期的结果应该为: 1、先根创建树时需要输入的数据为: A B E 0 F 0 0 C 0 D G 0 0 0 0 2、…

七、HDFS文件系统的存储原理

1、总结 之所以把总结放在文件开头,是为了让读者对这篇文章有更好的理解,(其实是因为我比较懒……) 对于整个HDFS文件系统的存储原理,我们可以总结为一句话,那就是: 分块备份 2、存储结构和问题…

使用Navicat将SQL server数据库导入mysql数据库

使用Navicat将SQL server数据库导入mysql数据库 1、使用Navicat Premium打开MySql数据库,然后新建一个数据库名(该数据库名称为需要从SqlServer数据库导过来的名称,mysql只有小写,不影响) 比如需要将SqlServer数据库…

计数排序+桶排序 详讲(思路+图解+代码详解)

文章目录 计数排序和桶排序一、计数排序概念:写法一:写法二: 二、桶排序概念代码 计数排序和桶排序 一、计数排序 时间复杂度:空间复杂度:稳定性:稳定 概念: 非基于比较的排序 计数排序又称为…

PACS系统源码,WORKLIST数字化工作流程,影像数字化存储,电子报告书写、胶片打印

PACS系统源码 可与医院HIS、LIS无缝连接 PACS系统以实现医学影像数字化存储、诊断为核心任务,从医学影像设备(如CT、CR、DR、MR、DSA、RF等)获取影像,集中存储、综合管理医学影像及病人相关信息,建立数字化工作流程。 …

文章系列2:Unraveling the functional dark matter through global metagenomics

这篇文章发布于2023年10月nature。通讯作者是来自于 DOE Joint Genome Institute, Lawrence Berkeley National Laboratory, Berkeley, CA, USA. 背景介绍&目标 作者首先背景介绍了两种主流宏基因组分析方法,包括reads-based reference mapping(eg…

chromium114添加新的语言国际化支持

一、需求说明 需要chromium114支持新语言体系,例如藏语,蒙古语,苗语等 二、操作步骤 1. build/config/locales.gni修改 在all_chrome_locales变量中添加新的语种标识,如下图。 2. 添加编译文件,告诉浏览器在编译时需要加载和输出那些文件 尝试编译出现错误一提示。需要…

读像火箭科学家一样思考笔记05_思想实验

1. 思想实验室 1.1. 思想实验至少可以追溯到古希腊时期 1.1.1. 从那时起,它们就跨越各个学科,在哲学、物理学、生物学、经济学等领域取得重大突破 1.1.2. 它们为火箭提供动力,推翻政府,发展进化生物学,解开宇宙的奥…

优秀智慧园区案例 - 三亚市崖州湾科技城智慧园区,先进智慧园区建设方案经验

一、项目背景 三亚崖州湾科技城作为海南自贸港建设的重点园区,是重点推进的海南自贸港先导项目之一。崖州湾科技城全力抢抓有利时机,进一步拓宽发展思路,持续深化体制机制创新,牢牢把握“打造产学研城深度融合的聚集地”这一核心…

问题:vue2+elementui,tabs切换显示表格并设置表格选中行高亮失败

错误示范: 1.直接setCurrentRow失败(this.currentRow是之前保存的表格当前选中行的数据) this.$refs.table.setCurrentRow(this.currentRow);2.以为是表格没生成就执行了setCurrentRow导致设置不成功,所以使用了this.$nextTick&…

同为科技(TOWE)桌面PDU插排:一款可以DIY定制的“超级插座”

当今社会,各种电子产品和家用电器已成为人们日常生活中不可或缺的一部分,在带给人们便利的同时,也使得电力使用变得更加频繁和重要。然而,当前市面上很多普通插座由于功能单一、材质粗劣、插口数量受限、充电速度过慢、插头间互相…

人机交互——机器人形态

1.聊天机器人 2.任务型机器人 3.面向FAQ的问答机器人 4.面向KB的问答机器人

seismicunix基础-声波波动方程推导

seismicunix基础-声波波动方程推导 接触波动方程的研究人员都绕不开这个公式,这是在一维状态下波动方程 但是对于这个方程是怎样来的很少有人能说清楚,其中涉及到牛顿第二运动定律,物体的加速度与受到的力有关。 假设一维弦是大量紧密连接的质…

智能座舱架构与芯片- (9) 音频篇 上

一、音频总线 音频是智能座舱的核心功能,涵盖车载音响、语音识别、e-Call、消噪及回声消除等应用,随着汽车智能网联化的发展,对音频的开发要求也越来越高。传统的车载音频系统采用模拟并行音频信号传输方式,难以在功能增加与整车…

solr 查询以特殊符号拼接Id成的字段

查询tags字段中包含一个或者多个属性id的数据 查询tags中包含:1或者33的数据 注意:tags分词后

Linux socket编程(5):三次握手和四次挥手分析和SIGPIPE信号的处理

在我之前写的Wireshark抓包:理解TCP三次握手和四次挥手过程中,通过抓包分析了TCP传输的三次握手和四次挥手的过程。在这一节中,将分析在Linux中的三次握手和四次挥手的状态和过程,另外还有一个在我们编程过程中值得注意的SIGPIPE信…

JAVAEE---多线程

内核 内核时操作系统的核心 操作系统有内核态和用户态,像我们平时所用到的qq音乐,微信等都属于用户态执行的程序。那么qq音乐播放音乐需要用到扬声器,扬声器的操作就是在内核空间进行操作,用户态不能对其进行操作。 操作系统 …

Macs Fan Control Pro:掌握您的Mac风扇,提升散热效率

在Mac的世界里,每一个细节都显得格外重要。而其中,风扇的控制与调节则显得尤为重要。然而,原生的Mac系统并不提供直观的风扇控制工具,这使得许多Mac用户在处理高负荷任务时,风扇无法有效地进行散热,导致机器…

Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)

这篇文章主要介绍了PythonSelenium定位不到元素常见原因及解决办法(报:NoSuchElementException),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 在做web应用的自动…