Android底层驱动开发(三)

本文详细介绍了Android系统的架构,包括系统架构图、源码目录解析、设备文件系统目录和启动过程。深入探讨了Android的层级结构,如应用程序层、框架层、硬件抽象层和内核层,以及设备文件系统中的sysfs。此外,还涵盖了Android启动过程中的关键步骤,如Bootloader、Kernel、Init、Zygote和System Service。
摘要由CSDN通过智能技术生成

目录

一、Android系统架构图

二、Android源码目录解析

Android源码目录结构如下:

Android系统结构与源码的对应关系:

三、设备文件系统目录解析

Android设备文件夹结构

sysfs文件系统

设备文件节点基础操作

四、Android启动过程

Android启动过程及可执行文件

bin的组成和打包


一、Android系统架构图

http://t.csdn.cn/Ja8ulhttp://t.csdn.cn/Ja8ul

二、Android源码目录解析

        各个版本的源码目录结构基本上是大同小异,这里我下载的源码版本是9.0的,如果你不知道你下载的源码版本的话,可以打开build->core->version_defaults.md中找到PLATFORM_SDK_VERSION字段,PLATFORM_SDK_VERSION:=28就是Android源码的版本。

Android源码目录结构如下:

  • art:Android Runtime,一种App运行模式,区别于传统的Dalvik虚拟机,旨在提高Android系统的流畅性。
  • bionic:基础C库源代码,Android改造的C/C++库。
  • bootable:Android程序启动导引,适合各种bootloader的通用代码,包括一个recovery目录。bootable/bootloader/edk2目录是基于uefi的应用程序处理器引导加载程序。
  • build:存放系统编译规则及generic等基础开发包配置。
  • compatibility:Android兼容性计划。
  • cts: Android兼容性测试套件标准。
  • dalvik:Android Dalvik虚拟机相关内容。
  • developers:Android开发者参考文档。
  • development: Android应用开发基础设施相关。为开发者提供Android参考应用程序和工具。
  • device:Android支持的各种设备及相关配置。
  • disregard:忽略文件。
  • external:Android中使用的外部开源库。
  • frameworks:应用程序框架,Android系统核心部分,由Java和C++编写。Android平台层(系统库和Java组件)。
  • hardware:硬件适配接口。硬件抽象层(HAL)(音频、传感器)和特定于硬件的qti包装器。
  • kernel:Linux Kernel,不过Android默认不提供,需要单独下载,只有一个tests目录。
  • libcore:Android Java核心类库。
  • libnativehelper:Android动态库,实现JNI库的基础。
  • non-hlos:高通私码。在about.html文件中能查看高通基线号。

ADSP(Applications Digital Signal Processor Subsystem):应用数字信号处理器子系统,音频及sensor相关。

TZ(TrustZone):安全环境,提供可信执行环境(TEE)。

WCNSS:Wireless connectivity subsystem,无线连接子系统。WLAN模块的firmware(固件)和一些配置文件等。

Bootloaders:(UEFI:可扩展固件接口)。BT模块的firmware(固件)和一些配置文件等。

MPSS:Modem peripheral subsystem software,调制解调器外围子系统软件。

RPM:Resource Power Manage,电源资源管理。

  • out:由用户编译生成的文件。out/host/是主机由Android构建创建的可执行文件。

out/target/product/<product>是目标文件:

super.img——包含列出超级分区中每个动态分区的名称和块范围的元数据。Android中可能的动态分区有System,Vendor, Product, System Ext, ODM。

vendor_boot.img——包含用于供应商引导功能的模块。

abl.elf——应用程序引导加载程序。

boot.img——Android引导映像(Linux内核+root FS)。

system.img——Android组件(/system)。

userdata.img——Android开发应用程序和数据库。

root/——root FS目录,编译为ramdisk。并合并到boot.img中。

system/——System FS目录,编译为system.img。

Android系统架构及其驱动研究】   1.1 Android系统架构 .....................................03   1.2 Android代码结构 .....................................04   1.3 Android专用驱动 .....................................05   1.4 Linux设备驱动Android上的使用分析 ....06   1.5 Android比起Linux的七点优势 ..................10 【Android底层驱动概述】   2.1 Android底层驱动的详细内容 ...................11   2.2 字符设备和块设备 ....................................13   2.3 Linux下的VFS ...........................................14    【Android 驱动类别】   3.1 Android专用驱动 Ashmem、binder、logger .............17   3.2 设备驱动 .................................................................17 【Android 驱动实例】   4.1 Android Led控制实验 ..............................................22   4.2 基于PXA310上的Android手机的驱动开发 ...............31   4.3 Android内核驱动——Alarm .....................................34 【Android 驱动实例】   5.1 CameraSerivce服务的注册流程 ...........................47   5.2 ramdisk driver 驱动实现的源码 ..........................61 【其他】   6.1 提交BUG ..............................................................74   6.2 关于eoe Android .................................................74   6.3 eoe携手支付宝移动应用开发者沙龙 ...................74   6.4 eoe Android移动互联高峰论坛在深圳举行 ..........74
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值