Android深度探索第一章心得

本章主要是对Android和Linux驱动做一个简单的介绍

第一节介绍Android 系统架构,一共分为四层,从下到上依次为:

1.第一层:linux内核,主要包括驱动程序以及管理内存、进程、电源等资源的程序。

2.第二层:C/C++代码库,主要包括Linux的.so文件以及嵌入到APK程序中的NDK代码。

3.第三层:Android SDK API,直接面向应用程序的JAVA APK

4.第四层:应用程序,直接面向最终用户的JAVA应用程序(APK程序)

第二节介绍Android移植的主要工作

Android移植可以分成两个部分:应用移植和系统移植。这本书中主要讲的是系统的移植。Android系统移植最主要实现的目标是让Android系统能够在一个特定的硬件平台上运行。Linux内核对于大多数常用的CPU架构都是支持的。Android对于平台上的各种硬件的支持工作也是由Linux内核来完成的,也就是用到了Linux驱动。所以对于系统移植来说除了移植CPU架构外,最主要的也就是要完成Linux驱动的移植。

抽象硬件层HAL(Hardware Abstraction Layer)是一个Android系统特有,用来使Android SDK通过HAL来直接访问Linux驱动。对Android进行增加或修改驱动的话,HAL的代码也必须进行更改。

但是不同版本的Linux内核的驱动不可以通用,必须修改源代码,并且在新的Linux内核下重新编译后才可以用在新的Linux内核上。所以在进行Linux驱动移植时,主要应该考虑的是Linux内核的版本,对于Android版本的话可以不予考虑。只要Linux内核版本相同,就可以在不同的Android上互相替换(有时也需要考虑HAL是否和Linux驱动容)。

第三节介绍查看linux系统的内核版本有两种方法,如下:

在 Linux 终端执行下面的命令  uname –a

在 Linux终端执行下面的命令  cat /proc/version

/proc:Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。

第四节介绍 Linux内核版本号的定义规则

linux内核版本号由五部分组成:主版本号,次版本号,修订版本号,微调版本号及为特定的Linux系统特别调校的描述。

第六节介绍设备的分类以及特点

计算机系统的硬件主要由CPU,存储器和外设组成。驱动针对的是存储器和外设(包括CPU内部集成的存储器和外设)

Linux将存储器和外设分为三类,分别为字符设备(Character devices),块设备(Block devices),网络设备(Network devices)。

第七节介绍了Linux驱动:LED

任何的 Linux 驱动都有一个装载函数〈装载驱动时调用〉和一个卸载函数(卸 载驱动时调用〉即可。装载函数和卸载函数分别通过 mobule_init和 module exit宏指定。

时间: 2024-10-14 01:23:28

Android深度探索第一章心得的相关文章

Android深度探索第一章总结

Android深度探索第一章主要是Android系统移植与驱动开发概述.要想进行系统移植就必须先了解Android的系统架构,Android的系统架构主要是:第一层,Linux内核,主要包括驱动程序以及管理内存.进程.电源等资源的程序:第二层,C/C++代码库,主要包括Linux的.so文件以及嵌入到APK程序中的NDK代码:第三层,Android SDK API,直接面向应用程序的Java APK:第四层,应用程序,直接面向最终用户的Java应用程序(APK程序).接下来是Android移植的

android深度探索第一章

Android深度探索HAL与驱动开发的第一章学习了android系统移植与系统开发详述. 正如书上的导言所说,,android已经成为当前智能手机操作系统的老大.所以其重要性可想而知,其学习的意义非比寻常.其发展的迅速,很大程度上取决于任何人都可以利用android的源代码定制完全属于自己的嵌入式系统,而不需要向Google交钱.而由于android原生的代码支持的设备不多,因此,要想在自己的设备(包括手机.智能电视.平板等)上完美运行android,就需要另外一些开发程序,使得android

android深度探索1-4章心得体会

第一章 Android系统本身是一个庞大的系统,移植并不需要精通Android的每一个部分,需要考虑的是Android系统的硬件抽象层(HAL)和Linux中的相关设备驱动程序. Android系统的移植工作的目的是为了在特定的硬件上运行Android系统.在移植的过程中,把握关键要点,减少工作量是一个重要的方面.从工作的角度,通常的方法为,首先要熟悉硬件抽象层的接口,其次要集成和复用已有的驱动程序,主要的工作量在硬件抽象层的实现中.为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调

Android深度探索--第一章读后感

第一章主要讲了Linux驱动和AndroidHAl的基础知识.首先介绍了Android系统构架分为四层,Linux内核.C/C++代码库.Android SDK API.应用程序.了解这四层是Android系统移植的前提,Android系统移植是指让Android操作系统在某一个特定硬件平台上运行.并且Linux有一个很大的好处,就是Linux内核本身支持很多常用的CPU构架,因此,将Android在不同的CPU构架之间移植并不用做过多的改动.在移植的过程中,除了要移植CPU构架以外,最重要的还

android深度探索第九章心得体会

本章主要讲硬件抽象层:HAL,它是建立在Linux驱动之上的一套程序库.刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口.二,解决了GPL版权问题.三,针对一些特殊的要求.可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作. 编写HAL模块的步骤和原理如下. 第一步:定义结构体和宏编写HAL模块需要使用到3个非常重要的结构体,在第一步需要定义两个新的结构体. 第二步:编写HAL模块的open函数 open函数是HAL模块的入口点.本例中使用的是l

Android深度探索第二章心得

本章主要介绍如何搭建Android底层开发的环境,主要包括Android应用程序开发环境,和交叉编译环境的搭建. 其中开发.测试和调试Linux驱动.HAL程序库需要的工具包括: 1. JDK6或以上版本 2. Eclipse3.4或以上版本 3. ADT(用于开发Android应用程序) 4. CDT(用于开发Android NDK程序) 5. Android SDK 6. Android NDK 7. 交叉编译环境 8. Linux 内核源代码 9. Android 源代码 10.用于调试开

Android深度探索第二章总结

Android深度探索第二章主要是搭建Android开发环境.首先我们要准备好开发工具,有:JDK.Eclipse.ADT.CDT.Android SDK.Android NDK.交叉编译环境.Linux内核源代码.用于调试开发板的串口工具minicom.1.安装JDK.将下载好的JDK解压,在终端输入gedit  /etc/profile打开profile文件后输入export PATH=.:/developer/jdk6/bin:$PATH然后保存,再在终端中输入source /etc/pr

Android深度探索——第九章读书笔记及心得

HAL模块 ——第9章读书笔记及心得 通过本章学习学会了Android中特有的与linux驱动交互的方法,即通过HAL模块.HAL模块本质上就是通过linux共享库(.so)与linux交互驱动,然后利用应用程序再访问linux共享库.每一个HAL共享库指定一个ID,在利用这个ID配合一定的规则找到linux共享库.知道了HAL对于Android的意义.知道了Android HAL的架构. HAL是建立在linux驱动之上的一套不属于linux内核的程序库.它属于linux内核层之上的应用层.H

Android深度探索——第二章读书笔记及心得

Android开发环境搭建 ——第二章读书笔记及心得 通过本章的学习了解了如何对Ubuntu Linux下的Android进行搭建,包括搭建Android应用程序开发环境.Android NDK开发环境和交叉编译环境的搭建.了解了搭建Android环境所需要的各种东西,了解了配置ADT的必要性—以便ADT能够找到Android SDK.知道了底层开发所需要的各种工具.学会了如何在Ubuntu下安装JDK.以及编译交叉编译环境,当初在学习Linux交叉环境编译的时候就不是特别成功,中间出了很多的错