1. Android 系统架构和分层
2019-10-17 本文已影响0人
瑟闻风倾
Android 系统架构.png
分类 | 名称 | 作用 |
说明 |
---|---|---|---|
软件-android os | app java(应用层) | 基于java来实现,运行在虚拟机上 | java写应用程序的效率和代码复杂度比 C 和 C++ 高很多 |
软件-android os | framework java (应用框架层) | 提供activityManger、windowManger、sensorManger、powerManger、wifiManger、packageManger等一系列服务;提供相关activity以及进程间通讯的方式 | 应用框架层提供的管理系统、服务和进程间通讯的方式足够让我们快速地构建自己的应用程序;应用框架层代码开源,可定制所需的控件和服务 |
软件-android os | dalvik (虚拟机系统) | 连接上层应用、低层服务和第三方库,提供自动化管理,尤其是内存管理 | 有虚拟机后才可以用java写上层应用 |
软件-android os | library (第三方开源库文件) | libjpack、libprg和webwik等第三方开源库可对系统进行处理 | - |
软件-android os | framework c++ | 承上启下的作用:对上层framework java 层提供服务,对下挂接hal层的外设(Sensor、Camera和WiF等) | 安全机制: 确保同一时刻只有一个应用程序对外设进行访问(对外设提供保护) |
软件-android os | hal (硬件适配层) | 将主要外设抽象为标准的接口供上层framework c++ 层调用 | - |
软件 | kennel (linux内核层) | 整个系统的核心(内核启动完成后会触发android系统的启动) | 负责内存、进程和网络管理等;可直接对硬件进行控制并将硬件抽象为文件对上层提供接口 |
软件 | boot | 引导kennel的启动 | 将内核从flash中搬到内存中 |
硬件 | 主cpu | 引导boot的启动(主芯片会提供各种启动模式:从usb启动;从cd卡启动;从flash启动) | 包括 Cache、MMU、GPU、各种总线等;由cpu厂商,即芯片开发商准备 |
硬件 | 外围设备 | 围绕cpu的主要接口来进行外围设计 | 外围设计包括 Sensor的选型、Camera的选型、LED的选型、Memery的选择以及存储空间的大小等;主要由硬件工程师来决定 |
嵌入式平台的启动过程
:硬件上电–>运行CPU自带的boot–>启动u-boot—>加载linux内核 –>挂载rootfs–>调用rootfs中的脚本/etc/profile—>调用用户的应用程序。参考Linux 开机启动详解、Android的开机启动流程、android系统启动流程