安卓移植和驱动开发第九章心得体会

HAL ( Hardware Abstraction Layer,硬件抽象腔,〉是建立在Linux驱动之上的一套翻字库。这套程序 j率并不属于 Linux 内核, 而是属于 Linux 内核层之上的应用层。 Google 为 Android 增加 HAL 的主要目 的除了尽量避免应用程序直接访问 Linux 驱动外,还有一仓重要原因,那就是保护 “私人财产”。-对于 那些既想发布茬子·Android,的Linux驱动程序,又不想将核心业务逻辑公开的企业或个人,这时候HAL显得非常重要了。

在传统的 Linux.系统中Linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑有码。对于访问硬件寄存器的代码,并没有什么秘密可言,因为这都是调用的 Linux 内核的标准函数〈如 ioad32·iowrite32等)进行的标准操作。比也架构比较简单,其基本原理就是在Android系统中使用程序库 Cso文件) 调用位守内核空间的Linux驱动 〈一般通过设备文件访问)。 然后沟通1droid面用程序{APK文件〉,也可以通过NDK程序访问HAL中的程序库,或者也可以直接在安卓的程序中进行访问。

编写支持 HAL 的 Linux 驱动程序的步骤:1. 编写 Linux 驱动 2.编写 HAL Library 3.编写 Service Library 。

在Android.系统中使用 Linux驱动有两种方式。 一种是通过传统的方式直接与Limux驱动交互。例如, 直接读写设备文件的数据。另外→种是 Android特有的,就是通过 HAL模块HAL模块本质就是通过Linux共享库与Linux驱动交互,然后应用程序再访问 Linux.共享库。早期的HAL模块应用程序直接按访问Linux共字库的方式调用。而高版本的Android系统为HAL I曾加了Stub换句话说还就是为每一个 HALi共享库指定一个id, 再利用这个id 配合一定的规则 找到 Linux共享库,这样 Linux 共享库更换文件名,移动位置都很方便。

http://www.cnblogs.com/suntao123/

时间: 2024-08-08 10:59:36

安卓移植和驱动开发第九章心得体会的相关文章

安卓移植和驱动开发第二章心得体会

第二章我们学习了安卓系统与嵌入式开发,我们都知道安卓操作系统是基于Linux内核的,从系统移植和驱动开发的角度来说,安卓的底层开发移植,和传统嵌入式Linux系统的开发关系非常密切,两者的驱动在开发上几乎保持了完全一致,另外,安卓的底层开发和移植也与Linux嵌入式的环境保持了一致,嵌入式在我们生活中应用非常广泛,在消费电子,网络,航空航天,军事国防,医疗设备等都有非常大的应用,嵌入式系统主要由软件和硬件组成,硬件是基础,软件是核心与灵魂,而在硬件设备中,包括了嵌入式处理器和外围设备,而嵌入式的

《Android深度探索》(卷1)HAL与驱动开发 第九章心得体会

本章主要学习了硬件抽象层:HAL. Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节.也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间.为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件的支持逻辑都放在内核空间

安卓移植和驱动开发第八章心得体会

Linux 驱动的代码重用有很多种方法.可以采用标准 C程序的方式.将要重用的代码放在其他 的文件 (在头文件中声明〉中. 如果要使用某些功能, include 相应的头文件即可〈这种方式称为 静态重用〉.也可以使用另外一种动态重用的方式,也就是一个 Linux 驱动可以使用另外←个 Linux 驱动中的资源(函数.变量.宏等〉.C或E++语言中编译多个源代码文件时,如果a.c使用 Z b.c文件中的函数,需 :要在 a.c 文件中使用 extern 预先定义 b.i: 中的函数, extern

安卓移植和驱动开发第十章心得体会

对于复杂的 Linux 驱动及 HAL等程序库,需要使用各种方法对其进行调试. 例如,设置断点. 逐步跟踪代码.-输出调试值息等.虽然嵌入式Linux在调试方面并没有 Visual Studio. Delphi. Eclipse 这些可视偌工其荒便,但学习一些这方面的技术无疑更奇脚手亮发强款而稳定的 Linux 内核模块←对 于嵌入式 Linux 内核模块.对于嵌入式的调试可能要更复杂一些.因为有时候需要至 少两台机器(开发机和-目标机)用于调试将主要介绍如何利用开发板之 Android模拟器以

《Android深度探索》(卷1)HAL与驱动开发 第一章心得体会

本书的第一章讲的是Android系统移植与驱动开发概述. android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 1.应用程序: Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等.所有的应用程序都是使用JAVA语言编写的. 2.应用程序框架 开发人员也可以完全访问核心应用程序所使用的API

android驱动开发第九章心得笔记

---恢复内容开始--- 第九章主要讲硬件抽象层:HAL,它是建立在Linux驱动之上的一套程序库.刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口.二,解决了GPL版权问题.三,针对一些特殊的要求.可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作. 下一个小节讲了Android HAL 架构.接下来讲了为led驱动增加HAL,主要是将所有的业务逻辑从LED驱动移到HAL模块,而LED驱动只保留读写寄存器的功能. 涉及的HAL步骤:1.编写Li

安卓系统移植和开发第一章心得体会

进入大三第二学期,我们学习了安卓系统的移植和驱动开发,这是我们继上学期安卓嵌入式开发对安卓系统的进一步学习.第一章我们学习了安卓系统的编译和移植实例,首先我们要下载课程所需要的软件环境,现有的环境是一套能正常运行Linux2.6.21的EZ6410硬件系统和移植目标在EZ 6410系统上运行的安卓2.3系统,在移植过程中主要涉及的步骤有,安装Linux安卓的内核,安装交叉工具链,移植内核支持的Ez6410 平台,安装安卓SDK,获得安装安卓系统的根文件系统.设置系统环境,完成安卓正常启动,嵌入式

Android系统移植与驱动开发概述读书心得

第一章是Android系统移植与驱动开发概述,包含了Android系统架构.Android系统移植的主要工作.查看Linux内核版本.Linux内核版本号的定义规则.如何学习Linux驱动开发以及Linux设备驱动等六方面内容 Android系统架构分为四层,分别是Linux内核.C/C++代码库.Android SDK API和应用程序.Linux内核这一层主要包括Linux的驱动程序以及内存管理.进程管理.电源管理等程序. Android移植可分为两部分:应用移植和系统移植.应用移植是指将应

Android系统移植与驱动开发第一章读书笔记

最近,认真学习了Android深度探索的第一章内容——Android系统移植与驱动开发概述,了解了Android是基于Linux内核的.这一章作为学习Linux驱动的基础,对Android以及Linux驱动做了总体的介绍,为之后的学习打下良好的基础. Android作为优秀的嵌入式操作系统,其系统架构可分为四层,通过学习,清楚的明白了每一层的作用以及功能.Android移植可分为两部分:应用移植和系统移植.应用移植是指将应用程序移植到某一个特定硬件平台上.系统移植是指让Android操作系统在某