第一章 Android系统移植与驱动开发概述

Horatia 2021-09-04 原文


第一章 Android系统移植与驱动开发概述


本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容。

所谓“移植”是指为特定的自己的设备,如手机定制Android的过程。自己开发一些程序(移植)装载在设备上,使得Android系统可以识别设备中的蓝牙,WiFi等,这样就可以使用这些功能了。这些程序大多是支持各种硬件设备的Linux驱动程序。

这一章中介绍了许多在进行Android系统移植和驱动开发前要了解的概念以及要做的准备。接下来主要说的是在Android系统移植过程中的主要工作

Android移植分为两部分:应用移植和系统移植。

应用移植指将第四层的应用程序移植到某一特定硬件平台上。为了使应用程序可以在新的硬件平台上正常运行,需对源代码进行一些修改。没有源代码只能重新实现,应用移植并不涉及驱动和HAL(hardware abstraction layer-android的硬件抽象层)程序库的移植。

Android系统移植是指让Android操作系统在特定硬件平台上运行,首要条件是该操作系统支持硬件平台的CPU架构。Linux内核支持很多常用的CPU架构,如ARM、PowerPC。要使Android在不同硬件平台上正常运行,不仅要支持CPU架构,还要让Android可以识别平台上的各种硬件,蓝牙、声卡等。这些都由Linux内核完成,重要的就是Linux驱动。系统移植要移植CPU架构,还要移植Linux驱动程序。修改驱动程序使得Linux内核与新设备模块可正常交互,工作起来。

HAL位于系统架构第二层,也是Linux程序库,Android SDK(第三层)通过HAL直接访问Linux驱动。其他Linux系统是由应用程序直接访问驱动,而Android是要有HAL作为中介,这样设计的原因是Linux内核是基于GPL开源协议的,但很多驱动厂商不想开放源代码让其他人所知道,就增加了HAL层,将Linux驱动的业务逻辑放在HAL层,处理Linux驱动开源技术就是个空架子。为Android增加或修改了原来的驱动代码,相应的HAL代码也要做修改。

Android移植有两部分:①移植Linux驱动②移植HAL 基本就是Linux内核的移植,主要移植驱动程序

 如果要移植的Android系统提供了驱动源代码,直接根据移植的目标平台修改驱动代码即可。但更多的是无法获得驱动源代码或要实现的驱动程序所对应的硬件是自己特有的,就需要从头自己编写驱动程序以及相关配置文件。Android的移植是要尽可能找到驱动和HAL的源代码,直接修改这样比从头开始编写要容易得多。不过驱动和HAL的代码量不是很大。不同Linux版本的驱动程序不能通用,需重新修改源代码,并在新的Linux内核下重新编译才可以在新的Linux内核版本下运行新的驱动程序。Android开放源代码,即使同一个Android版本,Linux的内核也可能不同,因为有自制的ROM会更换不同的Linux内核,就和官方的Android对应的Linux内核不同。移植Linux驱动时主要考虑Linux内核版本,即使Android版本不同,只要Linux内核版本相同,Linux驱动就可以互相替换,有时还需考虑HAL是否和Linux驱动兼容。

发表于
2016-04-23 19:33 
Horatia 
阅读(166
评论(0
编辑 
收藏 
举报

 

版权声明:本文为Horatia原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Horatia/archive/2004/01/13/5425355.html

第一章 Android系统移植与驱动开发概述的更多相关文章

  1. 第一章 数据库系统知识

        1.1 数据库系统概论 数据库系统概念   数据库系统的基本概念     基本概念:数据(Data) […]...

  2. 计算机网络学习笔记 – 第一章 概述

    概述 争取两天一更 1.1 计算机网络在信息时代的作用 常见的网络 : 电信网络,有线电视网,计算机网络,随着 […]...

  3. 第一章 01教育概述

    教育概述 一、教育的含义 广义的教育:泛指增进人们的知识、技能和身体健康,影响人们的思想观念的所有活动 狭义的 […]...

  4. 第一章 03教育的发展历程

    教育的发展历程 一、原始社会的教育 不分化性(与生产劳动是分不开的) 平等性(人没有阶级也称无阶级性) 原始性 […]...

  5. C# 图解教程 第一章 C#和.NET框架

    C#和.NET框架 在.NET之前.NET时代 .NET框架的组成大大改进的编程环境 编译成CIL编译成本机代 […]...

  6. 嵌入式学习笔记(综合提高篇 第一章) — 利用串口点亮/关闭LED灯

    1      前言     从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机、光端机以及 […]...

  7. 高等数学 第一章 函数、极限、连续 第二节 极限

    (一)、极限的概念   1.数列    ∀ε>0,∃N>0,当n>N时,恒有|Xn-A|&l […]...

  8. 第一章 Android系统移植与驱动开发概述 心得笔记

           1.想要在自己的设备上运行Android,必须为自己的设备开发特定软件,这个为特定设备定制And […]...

随机推荐

  1. 性能测试方案和用例模板

    XX项目 性能测试方案   1. 引言 1.1. 文档版本 版本 作者 审批 备注 V1.0 dayu XXX […]...

  2. 异常处理–Exception(一) – jack_Meng

    异常处理–Exception(一) 很诱人的标题,今天不是给大家介绍,而是跟大家讨论些问题。 在做 […]...

  3. workspaces only allow trusted client with self-signed cert

    workspaces only allow trusted client with self-signed c […]...

  4. Springboot链接MySQL8.0出现的问题

    以前用的是5.7版本的MySQL,在学习实践Springboot的时候顺带升级了一下8.0,遇到了一些坑,在这 […]...

  5. python用户管理系统

      学Python这么久了,第一次写一个这么多的代码(我承认只有300多行,重复的代码挺多的,我承认我确实垃圾 […]...

  6. 2019年的面试经验总结-软件测试

      最近刚换了一份工作,上周请测试组的同事们一起吃了个饭,饭桌上分享了部分面试经验。饭后,一个同事跟我说:“有 […]...

  7. SIM卡管脚定义

      常用的SIM卡座为6脚,如图(网络截图): 使用到的管脚为:SIMVCC;SIMRST;SIMCLK;SI […]...

  8. 创建自定义的 Angular Schematics

    创建自定义的 Angular Schematics  本文对 Angular Schematics 进行了介绍 […]...

展开目录

目录导航