第九章 硬件抽象层:HAL 心得笔记
1.HAL(Handerware Abstraction Layer,硬件抽象层)是建立在linux程序上的一套程序库,这套程序库并不属于内核,而是属于内核之上的应用层。
2.要在Android中加入HAL的原因:在linux驱动中一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑代码。对于访问硬件寄存器的代码而言,并没有秘密,这都是调用linux内核的标准函数进行的标准操作。
3.Google为android加入HAL其主要目的在于:
统一硬件的调用接口;
解决了GPL版权问题;
针对一些特殊要求。
4.andriod HAL架构
在Andriod系统中使用程序库,条用位于内核空间的Linux驱动,然后Andriod应用程序。
HAL的基本原理是在android系统中使用程序库调用内核空间的linux驱动。
5. 为LED增加HAL:将所有业务逻辑从LED驱动移植到HAL模块,而LED驱动模块只保留读写寄存器的工程能。加入HAL会使组成linux驱动的一整套library更加独立,更加容易维护。
6.编写一款支持HAL的LINUX程序驱动程序的步骤:
1>Linux驱动程序;
2>编写HAL Library;
3>编写Service Library。
7.编写HAL模块的步骤和原理:
1>定义结构体和宏
3个重要的结构体hw_module_t、hw_device_t、hw_module_methods_t
2>编写HAL模块的open函数
Open函数是HAL模块的入口点。初始化hw_device_t的子结构体;打开设备文件;初 始化寄存器
3>定义hw_module_methods_t结构体变量
HAL模块需要hw_module_methods_t结构体的open函数指针变量指定open入口函 数
4>定义HAL_MODULE_INFO_SYM变量
id表示HAL模块中Android系统中的标识。通过id找到并装载HAL模块。
methods变量需要指向第3步定义的hw_module_methods_t结构体的地址,当调用者通过id找到并装载HAL模块后,就会通过methods变量找到hw_module_methods_t结构体,并调用hw_module_methods_t.open函数。
5>编写HAL模块的close函数
当HAL模块被卸载后会调用close函数
6>编写控制LED的函数
根据设备类型和功能的不同,编写相应的函数
转载于:https://www.cnblogs.com/bigcrazy/p/5651713.html
第九章 硬件抽象层:HAL 心得笔记相关推荐
- 《C++Primer》第九章-顺序容器-学习笔记(1)-顺序容器定义与操作
<C++Primer>第九章-顺序容器-学习笔记(1) 文章目录 <C++Primer>第九章-顺序容器-学习笔记(1) 摘要 顺序容器的定义 容器元素的初始化 将一个容器初始 ...
- 第九章 时序数据-学习笔记+练习题
第九章 时序数据 # 导入需要的模块 import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotli ...
- 第九章 硬件抽象层:HAL
为什么要在Android中加入HAL Goggle为Android 加入HAL主要有如下目的: 统一硬件的调用接口.由于HAL有标准的调用接口,所以可以利用HAL屏蔽Linux驱动复杂.不统一的接口. ...
- 计算机系统导论第九章,计算机系统导论 -- 读书笔记 -- 第三章 程序的机器级表示 (持续更新)...
计算机系统导论 -- 读书笔记 -- 第三章 程序的机器级表示 (持续更新) 第三章 程序的机器级表示 3.1 历史观点 3.2 程序编码 1. 命令行 (1)编译 Linux> gcc -Og ...
- 专升本高数——第九章 无穷级数【学习笔记】
参考相关公式请进入:专升本高数--常用公式总结大全[补充扩展] https://blog.csdn.net/liu17234050/article/details/104439092 全部知识点请进入 ...
- vim实用技巧-笔记(第九章)
vim实用技巧-笔记(第九章) 前言 我记得很早以前我就说过了,我是一个菜鸟,我写博客的主要目的不是为了别人,更多的是为了记录自己的成长过程.如果阁下认为我的行为是在划水的话,那我也不妨大方地承认. ...
- 《Go语言圣经》学习笔记 第九章 基于共享变量的并发
<Go语言圣经>学习笔记 第九章 基于共享变量的并发 目录 竞争条件 sync.Mutex互斥锁 syn.RWMutex读写锁 内存同步 syn.Once初始化 竞争条件检测 示例:并发的 ...
- 高等数学笔记-苏德矿-第九章-重积分(Ⅱ)-三重积分
高等数学笔记-苏德矿 第九章-重积分(Ⅱ)-三重积分 第三节 三重积分的概念和性质 一.三重积分的典例 01 一些基本概念 (1) 立体的体密度 (2) 求立体V的质量 设有界闭区域立体 VVV 的密 ...
- 高等数学笔记-乐经良老师-第九章-重积分
高等数学笔记-乐经良老师 第九章 重积分 第一节 二重积分的概念和性质 一.典型例子 01 平面薄板的质量 平面薄板位于 x y xy xy 平面区域 D D D,其面密度为 μ ( x , y ) ...
最新文章
- mysql 客户无感知迁移_亿级账户数据迁移,不用数据库工具还能怎么搞?
- 潘石屹 python 知乎_如何看待地产大佬潘石屹微博宣布学习python这件事?对我们有什么启发?...
- 剑指offer:旋转数组的最小数字
- 使用Mybatis的Generator可能导致的一个错误
- mysql 外键和事务_Mysql (五)事务和外键
- 开发一个大型后台管理系统,真的需要用前后端分离的技术方案吗?
- react16-reactDom.render流程分析
- TCP/IP三次握手四次挥手
- 雨流计数法的matlab实现,采用三点法与四点法
- 三峡大学学生选课系统_201014119_赵敏_三峡大学学生选课系统.doc
- 文件md5怎么会变化
- java求面积_Java计算几何图形的面积
- noi国家集训队论文分类
- java 二十四节气源码
- OSG OIT 顺序无关透明绘制(PPLL_OIT, WB_OIT) 实现及注意事项
- Blender基础:从程序员的角度理解顶点组(Vertex Group)和权重(Weight)
- Linux查看进程运行的完整路径方法
- git基础之切换分支
- 罗伯塔·威廉姆斯(roberta williams)是世界上第一位图形计算机游戏设计师,但她以...
- mk突变点检测_气候突变检测