Android移植应该做的两步工作

2022-05-06 09:28:28姚政紫
导读 大家好,我是本期栏目编辑小友,现在为大家讲解Android移植应该做的两步工作问题。 移植安卓系统的目的是在特定的硬件上运行安卓系统。在移

大家好,我是本期栏目编辑小友,现在为大家讲解Android移植应该做的两步工作问题。

移植安卓系统的目的是在特定的硬件上运行安卓系统。在移植过程中,抓住关键点,减少工作量是一个重要方面。从工作的角度来看,通常的方法是,首先熟悉硬件抽象层的接口,其次对现有的驱动进行集成和复用,主要的工作量在于硬件抽象层的实现。为了更好地理解和调试系统,我们还应该正确理解上层对硬件抽象层的调用。

移植有两个主要部分:

Linux驱动程序

安卓系统硬件抽象层。

Linux中的驱动工作在内核空间,Android系统的硬件抽象层工作在用户空间。有了这两部分的结合,庞大的安卓系统就可以在特定的硬件平台上运行。

安卓移植的主要工作如图1所示。

1 Android移植的主要工作。

有了特定的硬件系统后,通常需要在Linux中实现它的驱动程序。这些驱动通常是Linux的标准驱动,在Android平台和其他Linux平台上基本相同。主要实现方面是安卓系统中的硬件抽象层。硬件抽象层在底层调用Linux中的驱动程序,在顶层提供接口供Android系统的其他部分(通常是Android本地框架层)调用。

提示:安卓硬件抽象层的接口是本地移植层的接口,不属于标准API,没有前向或后向兼容性。

安卓系统需要移植的内容主要包括以下几个部分:

显示器的一部分(显示器)

包括一个由framebuffer驱动的Gralloc模块(可以选择是否实现)。

用户输入部分(输入)

包括事件驱动的EventHub(安卓标准内容)。

多媒体编解码器

包括由硬件编解码器(如OpenMax)驱动的编解码器插件。

3D加速器部分(3D加速器)。

包括硬件OpenGL驱动OpenGL插件。

音频部分(音频)

包括由音频驱动的音频硬件抽象层。

视频输出部分(视频输出)。

包括视频显示驱动覆盖硬件抽象层。

相机的一部分(相机)

包括摄像头驱动(通常为v4l2)摄像头硬件抽象层。

电话部分(Phone)

RIL现代驱动程序库。

全球定位系统部分

包括GPS驱动程序(通常是串口)。

无线局域网部分

包括Wlan驱动程序和WIFI (Android标准内容)协议适配层。

碧蓝之牙部分(蓝牙)

包括BT驱动和协议BT(安卓标准内容)适配层。

传感器零件(传感器)

包括由传感器驱动的传感器硬件抽象层。

振动器部分(振动器)。

包括振动器驱动振动器硬件抽象层(安卓标准内容)。

背光(光)的一部分

包括由光驱动的光硬件抽象层。

报警部分(报警)

包括Alarm驱动和RTC系统用户空间调用(安卓标准内容)。

电池的一部分(电池)

包括硬件抽象层(Android标准内容),其中电池部分驱动电池。

安卓有很多组件,但不是每个组件都需要移植。对于一些纯软部件,不需要移植。对于浏览器引擎等部分组件,虽然需要下层网络的支持,但并不直接移植网络接口,而是通过无线局域网或电话系统数据连接完成标准网络接口。

Android移植可以分为几种类型:基本图形用户界面(GUI)部分,包括显示部分和用户输入部分;以及硬件相关的加速部分,包括媒体编解码和OpenGL音视频输入输出环节,包括音视频输出和摄像头部分;连接部分,包括WLAN、蓝牙、GPS电话部分;配件包括传感器、背光、振动器等。

除了以上移植,电源管理也是一个非常重要的方面,关系到安卓的各个子系统。

移植安卓系统的目的是在特定的硬件上运行安卓系统。在移植过程中,抓住关键点,减少工作量是一个重要方面。从工作的角度来看,通常的方法是,首先熟悉硬件抽象层的接口,其次对现有的驱动进行集成和复用,主要的工作量在于硬件抽象层的实现。为了更好的理解和调试系统。

统,也应该适当地了解上层对硬件抽象层的调用情况。

  移植方面主要的工作有两个部分:

  Linux驱动

  Android系统硬件抽象层

  Linux中的驱动工作在内核空间,Android系统硬件抽象层工作在用户空间,有了这两个部分的结合,就可以让庞大的Android系统运行在特定的硬件平台上。

  Android移植的主要工作如图1所示。

  

  图1 Android移植的主要工作

  在具有了特定的硬件系统之后,通常在Linux中需要实现其驱动程序,这些驱动程序通常是Linux的标准驱动程序,在Android平台和其他Linux平台基本上是相同的。主要的实现方面是Android系统中的硬件抽象层(Hardware Abstract Layer),硬件抽象层对下调用Linux中的驱动程序,对上提供接口,以供Android系统的其他部分(通常为Android本地框架层)调用。

  提示:Android硬件抽象层的接口是本地移植层的接口,不属于标准API,不具有向前或者向后兼容性。

  在Android系统需要移植的内容,主要包含了以下的各个部分:

  显示部分(Display)

  包括framebuffer驱动+Gralloc模块(可选择是否实现)

  用户输入部分(Input)

  包括Event驱动+EventHub(Android标准内容)

  多媒体编解码(Codec)

  包括硬件Codec驱动+Codec插件(如OpenMax)

  3D加速器部分(3D Accelerator)

  包括硬件OpenGL驱动+OpenGL插件

  音频部分(Audio)

  包括Audio驱动+Audio硬件抽象层

  视频输出部分(Video Out)

  包括视频显示驱动+Overlay硬件抽象层

  摄像头部分(Camera)

  包括Camera驱动(通常是v4l2)+Camera硬件抽象层

  电话部分(Phone)

  Modem驱动程序+RIL库

  全球定位系统部分(GPS)

  包括GPS驱动(通常为串口)+GPS硬件抽象层

  无线局域网部分(WIFI)

  包括Wlan驱动和协议+WIFI的适配层(Android标准内容)

  蓝牙部分(Blue Tooth)

  包括BT驱动和协议+BT的适配层(Android标准内容)

  传感器部分(Sensor)

  包括Sensor驱动+Sensor硬件抽象层

  震动器部分(Vibrator)

  包括Vibrator驱动+Vibrator硬件抽象层(Android标准内容)

  背光部分(Light)

  包括Light驱动+ Light硬件抽象层

  警告器部分(Alarm)

  包括Alarm驱动和RTC系统+用户空间调用(Android标准内容)

  电池部分(Battery)

  包括电池部分驱动+电池的硬件抽象层(Android标准内容)

  Android中具有很多组件,但并不是每一个部件都需要移植,对于一些纯软的组件,就没有移植的必要。对于一些部件,例如浏览器引擎,虽然需要下层网络的支持,但是并非直接为其移植网络接口,而是通过无线局域网或者电话系统数据连接来完成标准的网络接口。

  Android的移植主要可以分成几个类型:基本图形用户界面(GUI)部分,包括显示部分和用户输入部分;和硬件相关的加速部分,包括媒体编解码和OpenGL;音视频输入输出环节,包括音频,视频输出和摄像头部分;连接部分,包括无线局域网,蓝牙,GPS;电话部分;附属部件包括传感器、背光、振动器等。

  除了以上的移植方面,电源管理也是非常重要的一个方面,它和Android的各个子系统都有关系。

   技术专区 睿赛德科技喜迁新址 ,RT-Thread进入新的加速发展阶段 可靠性高、控制灵活、低功耗可调速风扇散热系统 安防监控摄像头LED驱动解决方案 如何定制嵌入式Linux发行版 基于SoC实现的数据采集系统详解

免责声明:本文由用户上传,如有侵权请联系删除!