第1章:安卓系统移植与驱动开发概述

这一章主要概括的介绍了安卓驱动开发和系统移植的主要内容,对安卓与Linux驱动做了一个总体的介绍。通过对第一章的学习,使我对Linux驱动开发有了一个感性的认识。在学习过程中,首先,我通过以往上课时学习到的知识和查阅资料了解了一些专业词汇的含义(例如:.so文件:共享库,是shared object,用于动态连接;SDK:软件开发工具包;API:应用程序编程接口;HAL:硬件抽象层等),为以后更好的学习安卓驱动开发打下了基础。

其次在了解了一些专业基础的前提下,通过对第一章的学习我了解到,目前,安卓系统已经形成了非常完善的架构,主要包括Linux内核、核心库及环境(C/C++代码库和Runtime)、安卓软件开发工具包(应用框架)和应用程序。

Android移植可分为两部分:分别是应用移植与系统移植。本书主要介绍的是系统移植,是指让Android操作系统在某一个特定硬件平台上运行。这么做要求该操作系统支持硬件平台的CPU架构,还要让Android可以识别平台上的各种硬件。因此,系统移植除了移植CPU架构外,最重要的就是移植Linux驱动。除了Linux驱动移植外,安卓系统还独有HAL硬件抽象层,它位于安卓系统与Linux系统之间,在安卓访问Linux时起到作用。以此,安卓移植就分成了Linux驱动移植和HAL移植。

我们都知道Android是基于Linux内核的,因为一直以来Linux是开源的,所以基于Linux内核的Android也号称开源,所以一经推出后就受到了广大程序员和手机厂商的青睐。但是在开源方面Android“半遮半掩”,具体原因得从Android的发展历史谈起。

比如所有为Android写的硬件驱动都不能合并到Kernel中。这些驱动程序只能在Google代码中有效,而在Kernel中根本没法用。正是因为这个原因,Google从不把大量的硬件驱动程序和平台源码提交给Kernel。  既然硬件厂商都不开源驱动代码,对于我们生存在Android底层的开发人员,特别是从事驱动开发的成员来说,就带来了巨大的就业机会。我们可以为硬件厂商开发不开源的驱动程序而获得报酬,为此随着Android的异常火爆,市面上有很多企业在招聘Android驱动开发人员。由此可见,驱动的不开源给我们的学习带来了难题,但同样也为以后的就业机会增加了砝码。

http://www.cnblogs.com/Mr-zsj/

《Android深度探索》(卷1)HAL与驱动开发读后感的更多相关文章

  1. Android深度探索(卷1)HAL与驱动开发 虚拟环境的安装

    前言: 最近在看<Android深度探索(卷1)HAL与驱动开发>安装随书带的虚拟环境浪费了很多时间,说是虚拟环境的安装倒不如说是虚拟环境的导入,其实没什么技术含量,也没有什么复杂的,只是 ...

  2. Android深度探索(卷1)HAL与驱动开发

    第一章 介绍Android驱动开发和移植技术 主要对android和linux做了总体的介绍,让我们有了个感性的认识. 一.Android的四层系统架构: a) Linux内核:Android是基于L ...

  3. 《Android深度探索》(卷1)HAL与驱动开发读后感:

    第一章:安卓系统移植与驱动开发概述 全书分为4篇,分别从搭建开发环境,Linux驱动和Android HAL的基础知识,开发Linux驱动的高级技术和分析典型的Linux驱动源代码4个方面介绍Andr ...

  4. Android深度探索-卷1第一章心得体会

     本章介绍了安卓系统移植与驱动开发的概述,安卓的系统架构有四层:1 Linux内核,2 c/c++代码库, 3 Android SDK API, 4 应用程序 在读的过程中看到了专业名词,查了查,长点 ...

  5. Android深度探索-卷1第十章心得体会

    本章介绍了传统的printk 函数调试技术和其他的调试技术,如gdb gdbserver  kgdb 对于复杂的Linux 驱动及HAL 等程序库,需要使用各种方法对其进行调试,如,设置断点.逐步跟踪 ...

  6. Android深度探索-卷1第九章心得体会

    在android系统中使用Linux 驱动有两种方式一种是通过传统的方式直接与Lmux 驱动交互,如,直接读写设备文件的数据.另外一种是Android特有的,就是通过HAL 模块.HAL 模块本质是通 ...

  7. Android深度探索-卷1第四章心得体会

    这一章的和三章的git用法有联系,so,吧上一章的git基本用法搞好了再来,具体的方法就是看书上网查,这里就不做详细步骤介绍了.这章就有点意思了,是源码的下载和编译,有能看的,能自己鼓捣的,本章介绍的 ...

  8. Android深度探索-卷1第八章心得体会

    本章介绍了如何将Linux驱动分成多个实现文件和Linux常用的代码重用方式还有些强行卸载Linux驱动的方法 开发一个Linux驱动,可能会在init.exit等函数中发生错误导致Linux驱动安装 ...

  9. Android深度探索-卷1第七章心得体会

    创建LED驱动的设备文件 第一步:使用cdev_init函数初始化cdev 第二步:指定设备号.直接在代码指定或动态分配 第三步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中 第四步 ...

随机推荐

  1. java编写一个可以上、下、左、右移动的坦克

    唉,本人学习进度缓慢,但依然会坚持不懈!有感兴趣的朋友可以在下面留言. 源代码献上: /* * 画出我的坦克,使他可以上下左右移动 */package com.test4; import javax. ...

  2. git的一些常用方法

    1.撤销add但未commit的文件: git rm -r --cached path/file 2.git 撤销commit: 2.1).git log-显示提交的历史 commit ee50348 ...

  3. 使用 Jasmine 进行测试驱动的 JavaScript 开发

    Jasmine 为 JavaScript 提供了 TDD (测试驱动开发)的框架,对于前端软件开发提供了良好的质量保证,这里对 Jasmine 的配置和使用做一个说明. 目前,Jasmine 的最新版 ...

  4. for_each使用方法详解[转]

    for_each使用方法详解[转] Abstract之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL)曾經討論過for_each(),不過當時功力尚淺,只談 ...

  5. java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51

    http://blog.csdn.net/e_wsq/article/details/52100234 一日换了一下MyEclipse,换成2016CI,结果从SVN上下载了一个工程后出现以下错误: ...

  6. Shell重定向文件描述符

    #!/bin/bash      最近在看shell,各种困惑,不过解决困惑的感觉还是很不错的.废话少说,linux中使用文件描述符来标识每个文件对象.文件描述符为一个非负整数,可以唯一标识会话中打开 ...

  7. javascript中对象的深度克隆

    记录一个常见的面试题,javascript中对象的深度克隆,转载自:http://www.2cto.com/kf/201409/332955.html 今天就聊一下一个常见的笔试.面试题,js中对象的 ...

  8. 20145224&20145238 《信息安全系统设计基础》 第一次实验

    20145224&20145238 <信息安全系统设计基础>第一次实验 课程:信息安全系统设计基础 班级:1452 姓名:陈颢文 荆玉茗 学号:20145224 20145238 ...

  9. How do I install Adobe Flash on Debian Wheezy?

    aptitude install flashplugin-nonfreeif fail Check your settings in /etc/apt/sources.list. If this is ...

  10. 学完了js的知识,一起分享总结知识点

    又一个知识点学完了,到了总结学习效果和知识总结的时间了.js这个编程语言相对于html和css的逻辑性要强一些,也比较不容易上手.概念性的知识点不难理解,就是实际的操作并不容易,需要通过学习和借鉴案列 ...