Android/Linux/音频/驱动
全部博文(41)
分类: Android平台
2017-06-08 18:10:46
【前言】
这是我根据自己的工作经验所总结,有一定代表性,但可能不齐全。这只是个提纲。
【知识点】
按照在操作系统中的层次划分,从上到下依次为:
1、Android系统分层模型。知道 APP、JNI、Frameworks、HAL、Driver 的划分以及 用户空间、内核空间 的概念。
2、Android Audio模块的启动、加载 及 放音/录音 流程。起码应该了解 AudioServer、AudioFlinger、AudioPolicyService、AudioPolicyManager、AudioTrack、Track、TrackHandle、PlaybackThread、RecordThread 这些部件分别在什么时候起作用。
3、Android系统常见分区的作用。例如 /boot、/system、/data、/sdcard、/sys、/proc、/dev。
4、Android系统启动流程。这里指的是在 init 进程跑起来之后各 Android 核心进程的启动顺序,比如 Zygote、Dalvik、SystemServer 等以及各种 server 和 service。
5、Linux Kernel启动流程。主要是 设备上电、bootloader、zImage、ramdisk、驱动模块、init进程 这些。
6、设备驱动开发的一般流程及常用函数。这个没什么好说的。
7、ALSA架构 及 ASoC 概念。知道 DAPM、Widget、kControl、Codec Driver、Platform Driver、Machine Driver、DAI、DAI_LINK、DPCM、Tinyalsa 的含义。
8、能阅读 电路原理图 和 芯片Datasheet。
【题外话】
其实我一直不认为 Android 是真正的操作系统,因为操作系统的几大主要功能,即 进程调度、内存管理、文件系统管理、socket管理、进程间通信,这些都是由底层的 Linux 提供的。从我上方第 4 点的描述里也可以看出 ,所谓的 Android 系统实际上是跑在 Linux 之上的一系列进程的总和。
不知道我的这个理解是否有问题,如果说得有偏差,欢迎各位朋友拍砖。