第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. UITableView优化的方法

    使用不透明视图. 不透明的视图可以极大地提高渲染的速度.因此如非必要,可以将table cell及其子视图的opaque属性设为YES(默认值). 其中的特例包括背景色,它的alpha值应该为1(例如 ...

  2. mac 安装 nginx 环境

    1.brew search nginx 2.brew install nginx 启动nginx ,sudo nginx ;访问localhost:8080 发现已出现nginx的欢迎页面了. 备注: ...

  3. iOS 推送通知处理

    //这是程序杀死后再通过点击通知进入时调用的方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...

  4. 位域 unsigned int a : 4;

    位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数 ...

  5. web字体详解@font-face

    一:字体的下载(http://www.dafont.com/new.php) 二:选择需要的字体并下载( Download ) 三:下载后并解压 四:获取@font-face所需要字体的格式.eot, ...

  6. IE11里边form拦截失效,永远被弹回登录页

    现象描述: 1.在某些服务器上发布了程序以后,用IE11去浏览程序(试了多台电脑都一样),发现总是登录不进去,因为登录之后总是被立即反弹回登录页面,就像是登录后写入的票据瞬间丢失一样. 2.但是同一套 ...

  7. 读javascript高级程序设计16-几条函数小技巧

    内容概要 作用域安全的构造函数 惰性载入函数 函数绑定 函数节流 一.作用域安全的构造函数 我们知道,当使用new操作符调用构造函数时,构造函数内部的this会指向新创建对象的实例. function ...

  8. ajax转换成json参数

    //提交表单 $('#submit').click(function(){ var datas = $("#iform").serializeJson(); datas.actio ...

  9. Leetcode 171 Excel Sheet Column Number 难度:0

    https://leetcode.com/problems/excel-sheet-column-number/ class Solution { public: int titleToNumber( ...

  10. PHP 缓存扩展opcache

    opcache (全程 zend opcache): 从php5.5开始,默认提供的php脚本缓存扩展,编译php5.5时加上参数--enable-opcache就可以编译opcache了,只是要启用 ...