01.android 系统开发介绍

本文深入探讨了Android系统的发展历程、主要特性,如安全性和内存管理,并详细介绍了Android目录结构,强调了ART运行时环境。讲解了Android与Linux内核的关系,包括设备驱动和启动流程。此外,还涉及了Linux驱动开发的基本要求和内核相关路径。最后,概述了音频架构和驱动开发实例。
摘要由CSDN通过智能技术生成

介绍ppt:

https://www.slideshare.net/EmertxeSlides/embedded-android-system-development-part-i?next_slideshow=3

https://www.slideshare.net/EmertxeSlides/embedded-android-system-development-part-ii-linux-device-drivers

https://www.slideshare.net/EmertxeSlides/embedded-android-system-development-part-iii?next_slideshow=2

https://www.slideshare.net/EmertxeSlides/embedded-android-system-development-part-iv?next_slideshow=1

总体介绍

ppt: https://www.slideshare.net/EmertxeSlides/embedded-android-system-development-part-i?next_slideshow=3

本文介绍了Android的整个发展史。对于不同版本的Android有什么功能,可以查这个资料。

MTP (media transfer protocol):一个Android 平板接入windows之后,正常显示应该是MTP设备。

Android继承了linux的部分特性:

  • 安全

  • 内存管理

  • 进程管理

  • 网络协议栈

  • 驱动模型

  • 抽象层

ART : android runtime , 更方便debug,可以设置观察点。

Android目录结构

Android

  • device: 驱动相关,不同设备的驱动不同

  • kernel: 芯片组的内核树

  • platform : android 平台源码

    • abi : 定义不明确

    • art : android runtime

    • bionic : Android 标准C库,比GUN的C库少了GPL&LGPL协议的代码

    • bootable : Code samples( bootloader ,disk installer , recovery)

    • build : 编译系统入口

    • cts : 测试相关

    • dalvik :虚拟机工具以及核心库

    • developers : 定义不明确

    • development : 平台工程工具,应用模板

    • docs : AOSP相关文档

    • external : 包含所有第三方源码的项目

    • framework : 包含所有框架的源码

    • hardware:硬件相关源码,比如HAL

    • libcore :dalvik, DOM, JSON , LUNI还有其他一些支持文件的测试代码

    • libnativehelper: VM不可知的原生帮助函数

    • ndk : 编译脚本,帮助文档,

    • out :编译生成文件路径

    • packages : AOSP的标准Android应用 , 如果不需要什么应用,可以直接在这里裁剪掉。

    • pdk: 提供给芯片组供应商和 OEM 以迁移到新版本的减少的 Android 版本集

    • prebuilts : 提供给不同机器的交叉编译工具链

    • sdk :编译SDK,大部分都移到到了prebuilts

    • system : 系统核心文件

    • toolchain : 编译安装GNU工具

    • tools :在prebuilts里面的依赖库

    • vendor : HTC 相关,不用管。

  • product : 产品代码

  • public project: empty

  • toolchain : 工具链,gcc,ndk,llvm...

  • tools: repo , aospstats

  • trusty : Google's Trusty OS ,跟谷歌相关。

编译系统要求

I5 ,8G ,500G , ubuntu 14.04(最好16.04),

编译办法参考官网。

硬件相关文件

  • bootcode.bin

    第二阶段BootLoader,在GPU中执行,加载start.elf 启动GPU,

  • start.elf

    GPU硬件,读取config.txt , cmdline.txt ,加载Linux kernel 镜像,启动CPU

GPU跑在一个简单的系统叫做VCOS( video core operation system )

第一阶段的bootloader是写死在SOC中的,这个阶段会挂载硬盘进来,第二阶段才能正常工作。

  • config.txt

    • 有与videoCore IV GPU 相关的信息,比如屏幕多大,要用什么解析引擎,在树莓派移植Android时,我就已经改过。

    • linux 内核相关,比如从哪个地址开始加载,设备树,uart波特率

  • cmdline.txt

    linux命令行,载入内容,启动进程相关?

  • fixup.dat

    配置GPU,CPU的SDRAM划分

树莓派设备的目录树:

kernel /rpi /arch /arm/ boot /dts / bcm2710-rpi-3-b.dtb

kernel /rpi /arch /arm/ boot /dts / overlays / vc4-kms-v3d.dtbo

  • bootloader的工作流程

Android系统的驱动流程

zygote 对应 init

是个加载app的守护进程,所有app进程的父进程,由init.rc触发,被app_process启动。

Linux驱动相关

ppt :https://www.slideshare.net/EmertxeSlides/embedded-android-system-development-part-ii-linux-device-drivers

  • good C & programming Skills

  • Linux & the Filesystem

    • Root , User Space Headers & libraries

  • Files

    • Regular , Special , Device

  • toolchain

    • GCC & GUN相关工具

  • Make & Makefiles

  • kernel Source

linux内核代码路径以及相关配置文件路径

比如我们安装了Ubuntu,我们需要调试Ubuntu内核代码时,可以关注以下几个路径:

  • 内核源码所在目录: /usr/src/linux

  • 标准模块所在目录:/lib/modules/<kernel version>/kernel/...

  • 模块配置文件:/etc/modprobe.conf

  • 系统窗口:

    • /proc

    • /sys

  • 系统log : /var/log/

Android 系统开发介绍

https://www.slideshare.net/EmertxeSlides/embedded-android-system-development-part-iii?next_slideshow=2

aosp能打开时,要重读这一块。

Audio Arch

下图描述了app到linux kernel的调用关系:

audio驱动开发例子:https://www.slideshare.net/EmertxeSlides/embedded-android-system-development-part-iv?next_slideshow=1

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值