Chinaunix首页 | 论坛 | 博客
  • 博客访问: 335260
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 476
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-01 19:08
个人简介

Android/Linux/音频/驱动

文章分类

全部博文(41)

文章存档

2017年(21)

2016年(20)

我的朋友

分类: 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 之上的一系列进程的总和。

  不知道我的这个理解是否有问题,如果说得有偏差,欢迎各位朋友拍砖。


阅读(3050) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~