关键词:
第九章------HAL
HAL是建立在Linux驱动之上的的程序库,他是一个应用层,它的作用保护内部私有。有一种是位于Android层次的系统运行库层,Linux中只保留与寄存器相互的代码,通过HAL进行数据的传递。
为Android加入HAL的主要目的是:
统一硬件的调用接口。
解决GPL版权问题。
资源等特殊要求。
这个是新版的Android HAL架构,与原来的区别增加了新的代码入口。他只需要用ID来定位,用Service程序库。
在LED实验中可以加入HAL,他不需要关心他们之间的交互方式,像普通的API就可以交互,将所有的逻辑从LED驱动移动到HAL模块,而先前的LED驱动只保留读写寄存器的功能。
编写一款支持HAL的Linux驱动程序的步骤:
- 编写Linux驱动
- 编写HAL Library
- 编写Service Library
新改进了以后的LED的build.sh的脚本可以支持多个设备,处理多个设备,而不需要每一次都去关闭Android模拟器。
在测试读写寄存器时,因为是LED接受的不是字符串,而是字节类型的数据,因此以字节形式输入在进行测试即可。
编写调用LED驱动的HAL模块
HAL规定不能直接使用hw_module_t结构体,因此在外部还要加一层结构体,要使用led函数指针,定义打开和关闭的指针。设置文件的句柄,控制LED开关的通用函数,根据它的开关输出响应的日志信息,存储发送被设置文件或者从设备接收的数据,设置第一个字节为读取GPMDAT寄存器数据的状态,读取数据,保留有关数据。使用switch…case语句调用led;打开指定的led,led_off控制led,关闭设备函数;在初始化寄存器,打开设备为其分配内存空间,先清零,在设置。
总结它的原理和步骤:
- 定义结构体和宏定义
- 编写HAL模块的open函数
- 定义he_module_methods结构体变量
- 定义HAL_MODULE_INFO_SYM变量
- 编写HAL模块的close函数
- 编写控制LED的函数
在Android系统中使用Linux驱动有两种方式:传统方式直接与Linux驱动交互,例如读取文件;还有就是HAL:本质上就是通过Linux共享库(.so)与Linux驱动交互,然后再访问Linux共享库。
第九章
第九章HAL(HardwareAbstractionLayer,硬件抽象层)是建立在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。统一硬件的调用接口。由于HAL有标准的调用接口,所以可以利用HAL屏蔽Linux驱动... 查看详情
第九章虚拟内存(virtualmemory)
#Wed31Jan00:36:01GMT2018第九章虚拟内存(VirtualMemory)9.3VMasatoolforcachingvirtualpages(VPs).phsicalpagesarealsoreferredtoaspageframes(页帧) thesetofVPsisinto3subsets: +Unallocated.theydon‘thaveanydataassociat 查看详情
html第九章
一.CSS3变形transform 1.平移:translate(x,y) translateX(x) translateY(y) 注意:如果想只向X轴平移那么可以translateX,如果想只向X轴平移那么可以translateY,X和Y不能共存。如果想向两个方向平移,那么使用translate y轴 ^ - | ... 查看详情
第九章:io流
第九章:IO流 File类java.io.File类:表示文件或目录。常用方法:getName()getPath()getAbsolutePath()length()isFile()isDirectory()listFiles()mkdir()/mkdirs()createNewFile().... 流的原理和分类 按照方向分:输入流和输出流 按照读写单位:字节流和字符流 按照功... 查看详情
第九章
一.项目前期1.软件分析①.组织分析毕业论文管理的有关组织结构2.业务分析 粗略设计1、系统体系结构2、网络硬件3、软件构成毕业论文管理系统的功能结构图: 查看详情
第九章随笔
第九章:一、Google为android加入HAL主要有如下目的: 1、统一硬件的调用接口,HAL有标准的调用接口,屏蔽Linux繁杂接口; 2、解决GPL版本问题; 3、对于有些硬件,可能需要... 查看详情
deeplearning第九章卷积神经网络
第九章
第九章------HAL HAL是建立在Linux驱动之上的的程序库,他是一个应用层,它的作用保护内部私有。有一种是位于Android层次的系统运行库层,Linux中只保留与寄存器相互的代码,通过HAL进行数据的传递。为Android加入HAL的主要目的... 查看详情
第九章词典(d2)散列:排解冲突
第九章项目经理
第九章项目经理9.1PM是啥1、ProductManager:产品经理——正确的做产品。2、ProjectManager:项目经理——正确的做流程。3、ProgramManager:微软的职位名称。 9.2微软PM的来历MP(MasterProgrammer)和SP(SlaveProgrammer) 9.3PM做开发和测... 查看详情
jquery第九章工具方法
$.type() $.isArray() $.isFunction() $.isWindow()... $.trim() $.proxy() $.noConflict() $.each() $.map() $.parseJSON() $.makeArray() -------------------------------------------------- 查看详情
第九章
第九章介绍了硬件抽象层:HAL是建立在Linux驱动之上的一套程序库,这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口。二,解决了G... 查看详情
第九章:循环结构进阶
第九章:循环结构进阶二重循环结构概念二重循环就是一个循环体内包含了另一个完整的循环结构。语法while与while循环嵌套while(循环条件1){ 循环操作1 whi... 查看详情
第九章包(代码片段)
目录第九章、包一、什么是包二、为什么要有包三、如何用包四、注意事项第九章、包一、什么是包包就是模块的一种形式,包的本质就是含有.py文件的文件夹,还有__init__文件,必须有这个文件,否则就是普通的文件夹二、为... 查看详情
第九章
如何在网页中实现动画效果动态图片flashjavascriptcss3变形是一些效果的集合如平移旋转缩放倾斜效果每个效果都可以称为变形(transfrom)它们可以分别操控元素发生平移、旋转、缩放、倾斜等变换语法transform:[transfrom-function]*;变... 查看详情
作业第九章
<<<第九单元练习>>>1.在desktop主机中建立用户westos,并设定其密码为westoslinuxuseraddwestospasswdwestos输入两次westoslinux2.配置desktop中的sshd服务要求如下:*)设定sshd服务只允许westos用户可以被访问使用*)创建westos用户的key... 查看详情
第九章实验
1.补全程序t1.asm,完成在屏幕上输出内存单元中的十进制两位数。 2.补全程序t2.asm,完成在屏幕上输出data段定义的5个十进制两位数,数据和数据之间以空格间隔。3.教材实验9 查看详情
第九章常用模块(代码片段)
第九章常用模块1.模块介绍 什么是模块: 模块就是我们通常说的py文件(因此写pyt 查看详情