基于android的开源平板电脑 (fspad723) 系统构成分析

37
基基 Android 基基基基基基基 FSPAD723 基基基基 基基基

Upload: isaura

Post on 06-Jan-2016

145 views

Category:

Documents


2 download

DESCRIPTION

基于Android的开源平板电脑 (FSPAD723) 系统构成分析. 潘友华. 内容大纲. 平板概述 平板的硬件系统 概述 ARM处理器 主要外设 平板的软件系统 概述 系统移植 android文件系统. 平板概述. 平板电脑(Tablet Personal Computer),是一种以触摸屏作为输入设备的小型、方便携带的个人电脑。 微软的定义: 平板电脑就是一款无须翻盖、没有键盘 、小到可以手持的 功能完整的PC。 目前主要有基于ARM架构和x86架构两类,前者主要支持的系统有iOS和android,后者主要支持windows系统。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

基于Android 的开源平板电脑( FSPAD723)系统构成分析

潘友华

Page 2: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• 平板概述• 平板的硬件系统

–概述–ARM 处理器–主要外设

• 平板的软件系统–概述–系统移植–android 文件系统

内容大纲

Page 3: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• 平板电脑( Tablet Personal Computer ),是一种以触摸屏作为输入设备的小型、方便携带的个人电脑。

• 微软的定义:平板电脑就是一款无须翻盖、没有键盘、小到可以手持的功能完整的 PC 。

• 目前主要有基于 ARM 架构和 x86 架构两类,前者主要支持的系统有 iOS 和 android ,后者主要支持 windows 系统。

• 60 年代末艾伦 · 凯( Alan Kay )提出新型笔记本电脑,本世纪初比尔 · 盖茨( Bill Gates )正式定义了平板电脑,到 2010 年被乔布斯( Steven Paul Jobs )称为非平板的 iPad 的出现,引发了平板电脑应用的火爆。

平板概述

Page 4: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• 平板电脑由于其自身的特点:低功耗、高性能,故此其硬件系统一般都是基于嵌入式处理器芯片构成。

• 目前比较主流的平板电脑的嵌入式芯片主要有:高通的骁龙处理器、苹果的 Ax 系列处理器、 intel 的 Atom 处理器、 NVIDIA 的 Tegra 系列处理器、通用 ARM处理器。

• 主要的外设:视频、音频、摄像头、 wifi 、重力传感器、大容量外存、外置 I/O 口、电源等等。

平板的硬件系统 - 概述

Page 5: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的硬件系统 - 概述

Page 6: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的硬件系统 - 概述

Page 7: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• 珠海全志科技股份有限公司是领先的智能应用处理器SoC 和智能模拟芯片设计厂商。公司主要产品为多核智能终端应用处理器、智能电源管理芯片等。

平板的硬件系统 -ARM 处理器

Page 8: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的硬件系统 -ARM 处理器

Page 9: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• 扩展内存

平板的硬件系统 - 主要外设

Page 10: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的硬件系统 - 主要外设

Page 11: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• 扩展外存–Sandisk SDTNQFAMA-004G–4G bit Nand Flash 19nm MLC

平板的硬件系统 - 主要外设

Page 12: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• LCD ( Liquid Crystal Display )–1 路 RGB 输出、 800x480 像素、电容式触摸屏(可支持 5 点)

平板的硬件系统 - 主要外设

Page 13: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• CTP(Capacitive Touch Panel)• 5 点电容式触摸屏控制芯片 GT818 :采用投射式电容检测原理,由 16 个驱动通道与 1

0 个感应通道组成触摸检测网络,通过内置模拟放大电路、数字运算模块及高性能 MPU ,得到实时准确的触摸信息,并通过 I2C 传输给主控芯片,实现“所点即所得”。

平板的硬件系统 - 主要外设

Page 14: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• Wifi–Realtek RTK8188ETV–802.11b/g/n 无线网络,支持 2.4G 频段

平板的硬件系统 - 主要外设

Page 15: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• 传感器–重力传感器: MEMSIC mxc6225xu–该传感器利用 MEMS 热对流技术,使用标准的 CMOS 工艺制造。传感器内部不包含

任何移动部件,从而大大提高了现场可靠性,消除了与竞争产品相同的重复性问题。

平板的硬件系统 - 主要外设

Page 16: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• Camera–格科 GC0308 CMOS image sensor ,效果出众的高端 VGA 芯片。–支持 640 x 480 分辨率,数据格式( 8-bit ) YUV/RGB/RAW Bayer

平板的硬件系统 - 主要外设

Page 17: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• 电源适配器–AXP223 是高度集成的电源系统管理芯片,针对单芯锂电池

( 锂离子或锂聚合物 ) 且需要多路电源转换 输出的应用,提供简单易用而又可以灵活配置的完整电源解决方案。

–集成了 USB3.0-Compatible flash charger ,支持 21 电源输出。还整合了过 / 欠压 (OVP/UVP) 、过温 (OTP) 、过流 (OCP) 等保护电路。

–智慧电能平衡 (Intelligent Power Select, IPS™) 电路可以在 USB 以及外部交流适配器、锂电 池和应用系统负载之间安全透明的分配电能,并且在只有外部输入电源而没有电池 ( 或者电池过放 / 损坏 ) 的情况下也可以使应用系统正常工作。

平板的硬件系统 - 主要外设

Page 18: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统—概述• 系统引导过程

Page 19: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统—概述• android 系统构成

Page 20: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统—概述• 移植的主要工作

Page 21: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

• 一般的,系统软件移植,主要会有选、改、添 / 减:–A 、有现成直接可用的代码,则选中编译•主要是熟悉源码组织结构和编译系统。一般的,基于 linux 环境下的编译系统,一般都是由脚本及 Makefile 组成。–B 、有现成的代码,但是部分代码不合适,则修改后选中编译•除熟悉源码组织结构和编译系统外,还需要熟悉系统初始化流程,理解代码组织框架等等。–C 、没有的代码,则编写添加,多余代码则删除•一般的,需要添 / 减的都是涉及设备控制的逻辑和功能模块。添加的时候,除熟悉源码组织结构和编译系统外,对该系统源码设计的思路要充分理解,按照其设计思路设计新的代码并加入到源码中。

平板的软件系统—系统移植

Page 22: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统—系统移植• 三个方面的工作:• 1 、选平台

–指定平台相关的代码目录。系统软件一般都是分层设计:存在应用需求代码,逻辑核心代码及硬件相关代码三个层次。一般的,这个选平头的工作主要是选择与硬件平台相关的初始化代码。

• 2 、修改 / 定制板级文件–板级相关的代码,逻辑及设备初始化相关代码添 / 减、

修改。• 3 、选配模块

–选择相应的应用需求代码、逻辑相关代码或是设备驱动代码。

Page 23: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统—系统移植• BL 两个阶段的代码:

–A 、第一阶段• 初始化基本的硬件• 把 bootloader 自搬运到内存中• 设置堆栈指针并将 bss 段清零。为后续执行 C 代码做准备• 跳转到第二阶段代码中–B 、第二阶段• 初始化本阶段要使用到的硬件• 读取环境变量• 如果是自启动模式,从 Flash 或通过网络加载内核并执行• 如果是下载模式,接收到用户的命令后执行

Page 24: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统—系统移植• 内核启动的准备条件:

–A 、保存平台号到 r1 中–B 、保存参数地址到 r2中 (param_struct 或 taglist)

–C 、关闭 d-cache、 i-cache、mmu 等等

Page 25: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统—系统移植• android kernel 与 linux kernel 的差异:

–本质上 android kernel 还是 linux kernel ,但是还是修改添加了一些内容,譬如: Android IPC ( Binder )、 Android 日志系统( Logger )、 Android 电源管理(Power )、 Android 闹钟管理( Alarm )、 Android 内存控制台( Ram_console )、 yaffs 文件系统等等。

• kernel 编译系统:–Kconfig —— 提供选项–.config —— 保存选择结果–Makefile —— 根据 .config 中选择结果来指导编译

• 机器码定义–arch\arm\tools\mach-types

• 内核启动参数格式–u-boot 可以传递内核启动参数给内核,但是存在两种格式

• 交叉编译工具链的版本

Page 26: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• 文件系统就是管理外存上数据的逻辑结构,是存储、组织计算机文件

和数据的一种方法,更严格地说,是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型 (Abstract data type) ,通过它来访问、查找文件和数据很容易。外存数据在硬盘就是具体位置,用代码表述的话就是起始地址,但是看着不直观,操作也不方便,有文件系统弄出文件及目录的概念来翻译转换这些数据区域操作更方便。打个比方:一本书中就好比文件系统,目录及内容就是被文件系统管理的正文,有了目录,读写查找书的内容才方便。

• 涉及概念:–A 、内容–命令(软件、系统服务等)、库、脚本、配置、目录等等–B 、格式–文件系统的内容总是以特定格式存储在外存上的。嵌入式设备

中常用 flash 作为外存,对应的文件系统有 yaffs/yaffs2 、 jffs2 、 cramfs 等等。

Page 27: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• 一般的, Android 系统磁盘分区如下:

–Boot 分区:存储 boot.img映像–System 分区:存放 System.img映像–UserData 分区:存放 userdata.img映像–Recovery 分区:存放 recovery.img映像–Cache 分区:应用程序缓存分区,加快程序启动–Misc 分区:系统设置厂商硬件设置信息分区

Page 28: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• boot.img镜像不是普通意义上的文件系统,而是一种特殊的 Android 定制格

式,由文件头信息 boot header ,压缩的内核,文件系统数据 ramdisk 以及second stage loader (可选)组成,它们之间非页面对齐部分用 0填充。

• ramdisk.img 是一个最基础的小型文件系统,是对 root 目录的打包和压缩,其中包含了启动 android 的很重要的文件,比如内核启动完后加载的第一个进程 init 、一些重要的配置文件等,总之它控制着整个 android 的启动。根据 init.rc 、 init.xxx.rc 来初始化并装载系统库、程序等直到开机完成。以下是一个典型的 ramdisk 中包含的文件列表:

–A 、脚本配置文件及初始化程序–/init.rc 、 /init.xxx.rc 、 default.prop 、 /init–B 、目录–/proc/ 、 /dev/ 、 /sys/ 、 /sbin/ 、 /system/ 、 /data/

• android 源码中提供 mkbootimg 工具来制作镜像包。格式如下:–mkbootimg --kernel 内核压缩包 --ramdisk ramdisk镜像 --board "xxx" --base 基

地址 -o boot.img

Page 29: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• Android 编译结果:• 保存目录: out/target/product/<products>/• 不同的平台其输出到 out/target/product/ 不同的子目录下• ramdisk.img :

–虚拟内存盘,用内存来模拟磁盘,它在 Linux 内核启动后被挂载,该映像里保存有 Android最基本的文件系统以及一些命令

• system.img :–Android 系统主要的文件系统映像,里面包含有 Android 系统运行必需的库、程序和

配置文件• userdata.img :

–用户数据映像,它是用户应用程序、用户信息保存目录• recovery.img :

–系统恢复映像,当系统进入恢复模式时的启动映像

Page 30: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• android 源码的编译系统:

–build/envsetup.sh• A、定义了一些 shell命令函数,这些命令主要是初始化编译环境,选择

定制厂商等等。• B、加载 vendor目录下自定义厂商产品编译项文件 vendorsetup.sh,以此

来让编译系统编译不同产品的定制目录。–lunch 命令• 打印出所有系统编译项,设置主要环境变量• TARGET_PRODUCT• TARGET_BUILD_VARIANT• TARGET_BUILD_TYPE

Page 31: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• android 源码编译系统的几个重要的 Makefile

–Android.mk• 编译源码 Makefile 文件,每个源码目录下都会有–main.mk• 定义了编译全部代码的依赖关系–config.mk• 用于配置编译系统,决定如何编译–envsetup.mk• 定义了编译环境配置–product_config.mk• 读取 AndrodProducts.mk生成 TARGET_DEVICE 变量–AndroidProducts.mk• 定义某厂商所有产品文件列表–BoardConfig.mk• 定义开发板软件相关配置项,将来影响系统条件编译。

Page 32: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• 厂商定制

Page 33: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• android 根文件系统初始化

Page 34: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• init进程

–init进程是一个由内核启动的用户级进程。启动过程就是代码 init.c( system\core\init目录下)中main函数执行过程。 init进程会解析执行 init.rc ,就是所谓的初始化脚本。

• init.rc 脚本–init.rc文件由语句组成,主要包含了四种类型的语句:

Action、 Commands、 Services、 Options。在 init.rc文件中一条语句通常是占据一行。单词之间是通过空格符来相隔的。如果需要在单词内使用空格,那么得使用转义字符“ \”,如果在一行的末尾有一个反斜杠,那么是换行折叠符号,应该和下一行合并成一起来处理,这样做主要是为了避免一行的字符太长,与 C语言中的含义是一致的。注释是以 #号开头。 Action和services显式声明了一个语句块,而 commands和 options属于最近声明的语句块。在第一个

语句块之前 的 commands和 options会被忽略。• 关键字

–section :语句块,相当于 C语言中大括号内的一个块。一个 Section 以 Service 或 On开头的语句块。以 Service开头的 Section叫做服务,而以 On开头的叫做动作 (Action)

–action :动作–services :服务–commands :命令–options :选项–trigger :触发器,或者叫做触发条件–class :所属类,即可以为多个 service 指定一个相同的类属,方便操作同时启动或停止

Page 35: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• android底层代码层次及结构

Page 36: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

平板的软件系统— Android 文件系统• 烧写根文件系统• A 、制作镜像包

–( 1 )使用专用工具把根文件系统的内容按指定格式制作成一个镜像包–( 2 )使用仿真环境或是 BL 来烧写该镜像包

• B 、挂载拷贝–( 1 )烧写分区以指定格式挂载到指定目录–( 2 )向该目录拷贝根文件系统的内容

Page 37: 基于Android的开源平板电脑 (FSPAD723) 系统构成分析

Q&A