Android深度探索HAL与驱动开发-——第9章

第九章:
  只要讲的是硬件抽象层HAL,HAL是建立在Linux驱动上的一套程序库。HAL不是Linux内核的一部分而是位于Android的系统运行库层。首先讲的是要加入HAL的好处。包括:统一硬件的调用借口、解决GPL版权问题、针对一些特殊的要求。HAL架构的基本原理是在Android系统中使用程序库调用位于内核空间的Linux驱动,然后Android应用程序可通过NDK程序访问HAL中的程序库,或直接在Android应用程序中访问HAL中的程序库。android HAL的源代码存储的位置并不固定,一般会存储在android源代码目录中等。最终编译成的.so文件主要放在Android系统的/system/lib/hw目录。
  编写支持HAL的Linux驱动程序一般步骤为:第一步:编写linux驱动,在为Linux驱动添加HAL保护敏感数据时,Linux代码需要简洁将业务逻辑放到HAL Library中。第二步:编写HAL Library,它是普通的Linux Library文件,Service Library通过在接口中定义的ID定位HAL。第三步:编写Service Library。ServiceManager调用Service Library,APK程序调用ServiceManger类访问Service Library。在编写Linux驱动以及与驱动相关的程序过程中应分段测试每一部分程序。
  编写HAL模块步骤和原理:第一步:定义结构体和宏,第二步:编写HAL模块open函数,第三步:定义hw_module_methods_t结构体变量,第四步:定义HAL_MODULE_INFO_SYM变量,第五步:编写HAL模块close函数,第六步:编写控制LED函数。

时间: 2024-10-13 00:25:37

Android深度探索HAL与驱动开发-——第9章的相关文章

Android深度探索HAL与驱动开发 第四章

Android深度探索HAL与驱动开发 第四章 源代码的下载和编译 读书笔记 一.下载编译和测试Android源代码 1.配置Android源代码下载环境 创建一个用于存放下载脚本文件的目录(可将该文件放到任何一个目录在这里使用-/bin) # mkdir ~/bin # PATH=~/bin:$PATH 2.下载repo脚本文件(用于下载Android源代码) # curl htttps://dl-ssl.google.com/dl/googlesource/git-repo/repo> ~/

Android深度探索HAL与驱动开发 第三章

Android深度探索HAL与驱动开发 第三章 Git使用入门 读书笔记 Git是对源代码进行管理的软件. 一.安装Git # apt-get install git # apt-get install git-doc git-emall git-gui gitk 用以下命令控制Git: # apt-get install git-core # apt-get install git-doc git-svn git-email git-gui gitk 二.查看Git文档 查看git-check

Android深度探索HAL与驱动开发 第四章 源代码下载和编译

前面说过Android移植主要就是Linux内核的移植,而Linux内核移植主要是Linux驱动的移植,所以为了开发和测试Linux驱动,有必要学习在Ubuntu Linux下如何搭建两套开发环境:Android应用程序开发环境和Linux内核开发环境.Linux内核开发环境的搭建是重点中的重点.下面根据书上的内容和网上的资料写出了步骤: (1)配置Android源代码下载环境: (2)Android源代码目录分别存放了Android源代码的不同子项目 (3)下载Android源代码中的一部分两

Android深度探索HAL与驱动开发 第三章 Git入门

Git功能十分复杂,简单来说它使你的开发更为快捷和可控,尤其是在开源项目上展现的友好的交互和回馈. 熟悉一些git指令操作对开发者的帮助可以避免开发者受到一些外在因素打断开发进度,甚至延误项目的check日期.提交指定代码库需要RSA身份验证,而且需要公钥确定设备能够提交管理代码库. 如果源代码是最能体现软件作者的真正思路的.就像学习Linux内核开发,值找基本所谓的“权威”书籍来看,并不能真正体会Linux内核的核心设计理念.以Andorid源代码的解析和编译测试为基础的驱动开发.要使用内嵌在

Android深度探索--HAL与驱动开发----第五章读书笔记

第五章主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器它是基于ARMI1内核,广泛应用于移动电话和通用处理等领域. 开发板从技术上说与我们经常用的手机类似, 也包含显示屏. 键盘. Wi-Fi. 蓝牙等模块(可 能有的是选配〉.但与手机不同的是在开发板上安装嵌入式系统要比手机容易得多.而且一般开发 扳都有很多扩展的端口,可以很容易开发定制的硬件, 并与开发板链接.因此,开发板相对于孚机 来说,更适合对程序进行测试,尤其适合对底层的 L

Android深度探索HAL与驱动开发 第五章

第五章 本章学习了搭建S3C6410开发板的测试环境,其中S3C6410开发板是三星推出的一种低功耗,高性价比的RISC处理器,应用广泛,并为2.5G和3G通信服务提供了优化的 硬件性能,内置强大硬件加速其,满足高端服务通信中的数据宽带要求. 搭建开发板的测试环境首先要安装串口调试工具(minicom),因为开发linux驱动程序与android应用程序不同,无法在eclpse上开发.安装minicom步骤如下: 1.检测当前系统是否支持usb转串口 2.安装minicom #apt—git i

Android深度探索HAL与驱动开发 第六章

第六章 本章是android底层开发的第一个章节,本章是第一个linux驱动程序,统计单词个数. 本章作为实战第一章,首先要做的就是了解linux驱动到底是个什么东西,首先了解linux驱动的工作方式,linux系统将每一个驱动都映射成一个文件,保存在/dev中,再使用c语言函数ioctl向驱动的设备文件发送打印命令.编写linux驱动程序,需要接受被写入的数据,并将它们通过pc的并口.usb等端口发送给打印机, 需要linux响应应用程序传过来的数据. 然后编写linux驱动程序的步骤,步骤如

Android深度探索--HAL与驱动开发----第四章读书笔记

1. 下载.编译.测试源代码 创建存放下载文件的目录(repo) 下载repo脚本文件 创建用于存放源代码的目录 开始下载源代码. 2. 源代码目录含义摘要 Abi 应用程序二进制接口 Device 于设备相关的代码 External 宽展工具源代码 Ndk NDK相关的源代码 Sdk SDK如ddms.draw9patch.sdkmannager. System Android的基本系统 3. 下载源代码中的一部分 使用repo sync命令 使用git clone命令 4. linux内核目

Android深度探索HAL与驱动开发-——第8章

第8章: 本章主要讲了蜂鸣器的实现原理,实现完整的蜂鸣器驱动.主要用到的是pwm驱动,pwm由多个文件组成.             首要介绍的是Linux驱动代码的重用.编译是由多个文件组成的Linux驱动.两个完整的linux驱动是word_count和led驱动,都是由一个源代码文件组成(.c).但对于复杂的linux驱动需要使用多个源代码文件存放不同功能代码,最终生成ko文件或linux内核.    接着是Linux驱动模块依赖.代码重用分为静态和动态,在该节中介绍了模块依赖即为导出符号