《Android深度探索》(卷1)HAL与驱动开发读后感
第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与驱动开发读后感的更多相关文章
- Android深度探索(卷1)HAL与驱动开发 虚拟环境的安装
前言: 最近在看<Android深度探索(卷1)HAL与驱动开发>安装随书带的虚拟环境浪费了很多时间,说是虚拟环境的安装倒不如说是虚拟环境的导入,其实没什么技术含量,也没有什么复杂的,只是 ...
- Android深度探索(卷1)HAL与驱动开发
第一章 介绍Android驱动开发和移植技术 主要对android和linux做了总体的介绍,让我们有了个感性的认识. 一.Android的四层系统架构: a) Linux内核:Android是基于L ...
- 《Android深度探索》(卷1)HAL与驱动开发读后感:
第一章:安卓系统移植与驱动开发概述 全书分为4篇,分别从搭建开发环境,Linux驱动和Android HAL的基础知识,开发Linux驱动的高级技术和分析典型的Linux驱动源代码4个方面介绍Andr ...
- Android深度探索-卷1第一章心得体会
本章介绍了安卓系统移植与驱动开发的概述,安卓的系统架构有四层:1 Linux内核,2 c/c++代码库, 3 Android SDK API, 4 应用程序 在读的过程中看到了专业名词,查了查,长点 ...
- Android深度探索-卷1第十章心得体会
本章介绍了传统的printk 函数调试技术和其他的调试技术,如gdb gdbserver kgdb 对于复杂的Linux 驱动及HAL 等程序库,需要使用各种方法对其进行调试,如,设置断点.逐步跟踪 ...
- Android深度探索-卷1第九章心得体会
在android系统中使用Linux 驱动有两种方式一种是通过传统的方式直接与Lmux 驱动交互,如,直接读写设备文件的数据.另外一种是Android特有的,就是通过HAL 模块.HAL 模块本质是通 ...
- Android深度探索-卷1第四章心得体会
这一章的和三章的git用法有联系,so,吧上一章的git基本用法搞好了再来,具体的方法就是看书上网查,这里就不做详细步骤介绍了.这章就有点意思了,是源码的下载和编译,有能看的,能自己鼓捣的,本章介绍的 ...
- Android深度探索-卷1第八章心得体会
本章介绍了如何将Linux驱动分成多个实现文件和Linux常用的代码重用方式还有些强行卸载Linux驱动的方法 开发一个Linux驱动,可能会在init.exit等函数中发生错误导致Linux驱动安装 ...
- Android深度探索-卷1第七章心得体会
创建LED驱动的设备文件 第一步:使用cdev_init函数初始化cdev 第二步:指定设备号.直接在代码指定或动态分配 第三步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中 第四步 ...
随机推荐
- JMeter结果分析
- XAF应用开发教程-内置Attribute功能列表
在 XAF 框架,一些用来生成一个业务应用程序的信息是在Attribute中指定.您可以将属性应用到业务类 (或它的成员) 指定验证规则,指定如何对数据进行显示. 设置关系类等.本主题提供了有关在何处 ...
- [poj3321]Apple Tree(dfs序+树状数组)
Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 26762 Accepted: 7947 Descr ...
- Linux变量
变量:(大的分为环境变量与本的变量) 本地变量: 本地变量在用户现在的shell生命期的脚本中使用.例如,本地变量file-name="loop.doc",这个值只在用户当前she ...
- Windows下面安装easy_install报UnicodeDecodeError: 'ascii' codec can't decode byte解决方法
在运行python ez_setup.py install后, 发现是在下载并解压setuptools-2.1,并运行setup.py时出现如下错误: 提示D:\Python27\lib\mimety ...
- spring bean的初始化
scope:作用域 singleton prototype request session 默认为singleton lazy-init:default=false ,false ,tru ...
- 学习mongo系列(十一)关系
准备工作:首先在maxh数据库的address集合中先插入数据 > db.address.insert({child_address:"gansu"}) WriteResul ...
- 能源项目xml文件 -- springMVC-servlet.xml -- default-lazy-init
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...
- 6/17 Sprint3
首页改进:
- Python、PIP环境变量的配置
Python安装的路径:D:\Python35 pip的环境变量 Python和pip的PATH: PIP下载链接:https://pypi.python.org/pypi/pip 随意解压好,然后C ...