Android深度探索(卷1)HAL与驱动开发第九章读书笔记

本章主要讲硬件抽象层:HAL.HAL 是建立在linux 驱动之上的一套程序库,Google为Android加入HAL主要如下的目的。

1.统一硬件的调用接口

2.解决了GPI版权的问题

3.针对一些特殊的要求

在LED的驱动中,我们加入HAL使用程序不需要关心Linux驱动和设备文件的交互方式。编写一款支持HAL的linux驱动程序的步骤:

第一步:编写linux驱动

第二步:编写 HAL Library

第三步:编写Service library

编写HAL模块的步骤和原理如下:

第一步:定义结构体和宏

描述HAL模块的hw-module-t结构体

描述HAL设备的HW-device-t结构体

描述模块入口函数的hw-module-methods-t结构体

第二步:编写HAL模块的open函数

第三步:定义hw-module-methods-t结构体变量

第四步:定义HAL-module-info-sym变量

第五步:编写HAL模块的close函数

第六步:编写控制LED的函数

在Android系统中使用Linux驱动由两种方式。一种就是通过传统的方式直接与Linux驱动交互,另外一种就是Android特有的,就是HAL模块。

时间: 2024-12-29 07:19:35

Android深度探索(卷1)HAL与驱动开发第九章读书笔记的相关文章

Android深度探索(卷1)HAL与驱动开发第九章总结

本章主要讲硬件抽象层:HAL.HAL 是建立在linux 驱动之上的一套程序库,Google为Android加入HAL主要如下的目的. 1.统一硬件的调用接口 2.解决了GPI版权的问题 3.针对一些特殊的要求 在LED的驱动中,我们加入HAL使用程序不需要关心Linux驱动和设备文件的交互方式.编写一款支持HAL的linux驱动程序的步骤: 第一步:编写linux驱动 第二步:编写 HAL Library 第三步:编写Service library 编写HAL模块的步骤和原理如下: 第一步:定

Android深度探索(卷1)HAL与驱动开发 第九章 硬件抽象层:HAL 读书笔记

HAL是建立在Linux驱动之上的一套程序库.这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层.HAL的主要目的一个是用来保护"私人财产",另一个是尽量避免应用程序直接访问Linux驱动程序. 传统的Linux系统中Linux驱动一般有两种类型的代码,访问硬件寄存器和业务逻辑代码.对于访问硬件寄存器代码,并无秘密可言,因为都是调用Linux内核的标准函数进行的标准操作.而Linux的业务逻辑部分对于有些企业或者个人并不想讲源代码公开.Linux内核采用GPL协议,

Android深度探索(卷1)HAL与驱动开发第十章读书笔记

对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行测试.如设置断点,逐步跟踪代码,输出调试信息等.本章主要讲述了如何利用开发板.Android模拟器以及一些函数.工具调试嵌入式Linux内核模块.可执行程序和共享库. 1.打印内核调试信息:printk 该函数的用法和printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间.函数原型: asmlinkage printk(const char *fmt, ...) 第一个参数表示格式字符串.后面

Android深度探索(卷1)HAL与驱动开发第八章读书笔记

通过蜂鸣器的实现原理,实现一个完整的蜂呜器驱动,可以打开和关闭蜂鸣器. PWM驱动的实现方式不同于LED驱动, PWM 驱动将由多个文件组成.这也是大多数 Linux 驱动的标准实现方式. 刚开始是LED驱动的代码重用,Linux 驱动的代码重用有很多种方法.可以采用标准 C程序的方式.将要重用的代码放在其他 的文件 (在头文件中声明〉中. 如果要使用某些功能, include 相应的头文件即可〈这种方式称为 静态重用〉.也可以使用另外一种动态重用的方式,也就是一个 Linux 驱动可以使用另外

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记 本章是 Android系统移植与驱动开发概述性的具体讲解.首先,Android被分为了四层架构.在最底层的是Linux内核 .然后分别是C/C++代码库.Android SDK A和应用程序.而Android的移植又分为系统移植和应用移植.系统移植要实现Android操作系统在其他硬件平台上运行起来,其中的关键是Linux的内核.内核必须要完成对平台上运行的各个硬件的识别.所以这就需要Linu

Android深度探索(卷1)HAL与驱动开发 第二章 搭建Android开发环境 读书笔记

Android深度探索(卷1)HAL与驱动开发 第二章 搭建Android开发环境 读书笔记   本章主要讲解在Ubuntu Linux 下搭建Android开发环境. 1.JDK:从官网下载压缩包,并将其解压缩. Gedit etc/profile 并设置PATH环境变量,记得PATH. 2.搭建Android应用程序开发环境. 安装Android SDK 安装Eclipse 安装ADT 配置ADT 建立AVD 这个步骤是安装Android SDK,步骤与操作与在Windows操作系统下的安装

Android深度探索(卷1)HAL与驱动开发第一章总结

Android系统在2015年占全球市场份额的的81.6%,而且近几年一直持增长趋势,走在大街上,随处可见的安卓手机,毋庸置疑,安卓已经成为当前智能手机操作系统的老大.当我们想要搞明白Android驱动开发的时候,其实就是在学习linux驱动开发的过程,只不过安卓增加了一个HAL,这是Android特有的.Google这样设计的原因有很多,例如由于Linux内核基于CPL开源协议,而很多驱动厂商不想开放源代码,所以增加HAL层后,可已经Linux驱动的业务逻辑放在HAL层. Android的系统

Android深度探索(卷1)HAL与驱动开发1-4章

第一章:Android系统移植与驱动开发概述 这一章是学习Linux驱动的第一道门,在这一章中,主要对Android以及Linux驱动做一个总体的介绍,在这一章中,我对开发Linux驱动有了一个更深的认识.Android系统构层一共有4层内容:Linux内核.C/C++代码库.Android SDK API.应用程序.这一章中学会了Android系统移植,Android移植分为2个部分,一个是应用移植,一个是系统移植.Android系统移植是指让Android操作系统在某一个特定硬件平台上运行.

Android深度探索(卷1)HAL与驱动开发5-7章

第5章:搭建 S3C6.410 开发板的测试环境 开发板是开发和学习嵌入式技术的主要硬件设备, 尽管可以在 PC 上开发 Linux 驱动, 然后重 新编译成 ARM 架构的 Linux 驱动模块.但最终都是要在开发板上进行测试的.这主要是因为 ARM 架构的开发板可基于 X86 架构的 PC 在 CPU 指令以及二进制格式上都有所不同. 而且如果 Linux 驱动需要访问硬件(如 LCD. Wi-町.蓝牙等〉,并且这些硬件很难在 PC 上进行模拟, 那么就要在 带有这些硬件的开发板上进行调试和