ImageVerifierCode 换一换
格式:PDF , 页数:27 ,大小:200.70KB ,
资源ID:3043151      下载积分:5 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenkunet.com/d-3043151.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(手机开发培训 07_Android的Audio系统.pdf)为本站会员(魏子好的一塌糊涂的文献)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(发送邮件至13560552955@163.com或直接QQ联系客服),我们立即给予删除!

手机开发培训 07_Android的Audio系统.pdf

1、 Android 的 Linux 内核与驱动程序 Android 的 Linux 内核与驱动程序 第一部分 Linux 核心与驱动 第二部分 Android 专用驱动 第三部分 Android 使用的设备驱动 第一部分 Linux 核心与驱动 Android 使用标准的 Linux2.6 内核, 作为其操作系统。 Android 1.0 (release-1.0 ) 使用 Linux2.6.25 Android 1.5 (sdk-1.5_r1) 使用 Linux2.6.27 Android 1.6 (sdk-1.6_r1) _ 使用 Linux2.6.29 第一部分 Linux 核心与驱动 获

2、取通用内核的代码:获取通用内核的代码: $ git clone git:/android.git.kernel.org/kernel/common.git kernel/common.git 为通用 Kernel 的工程名称。 Android1.5 之前的版本具有 kernel 目录,其中也是参考 的 kernel 。 第一部分 Linux 核心与驱动 Android Linux 内核的配置和编译:内核的配置和编译: $ make ARCH=arm goldfish_defconfig .config $ make ARCH=arm CROSS_COMPILE=path/arm-none-li

3、nux-gnueabi- Android 通用的 Kernel 使用的处理器为 goldfish ,这是 一种 ARM 处理器。这个 Linux 编译生成的结果在 Android 的模拟器中使用。 第一部分 Linux 核心与驱动 Goldfish 处理器的编译结果: vmlinux 为内核的 ELF 文件, zImage 为内核的压缩映 像文件。 LD vmlinux SYSMAP System.map SYSMAP .tmp_System.map OBJCOPY arch/arm/boot/Image Kernel: arch/arm/boot/Image is ready AS arch

4、/arm/boot/compressed/head.o GZIP arch/arm/boot/compressed/piggy.gz AS arch/arm/boot/compressed/piggy.o CC arch/arm/boot/compressed/misc.o LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready vmlinux 和 zImage 分别对应 Android 代码 prebuilt 中的预编译的 arm 内核。 第一

5、部分 Linux 核心与驱动 Android 模拟器使用的处理器的 goldfish 的配置文件为: arch/arm/mach-goldfish # # System Type # CONFIG_ARCH_GOLDFISH=y # # Android # CONFIG_ANDROID=y CONFIG_ANDROID_BINDER_IPC=y CONFIG_ANDROID_LOGGER=y # CONFIG_ANDROID_RAM_CONSOLE is not set CONFIG_ANDROID_TIMED_OUTPUT=y CONFIG_ANDROID_LOW_MEMORY_KILLER

6、=y # # Networking options # CONFIG_ANDROID_PARANOID_NETWORK=y # # UBI - Unsorted block images # CONFIG_ANDROID_PMEM=y 第一部分 Linux 核心与驱动 goldfish 是一种 ARM 处理器,其 核心内容的路径为: arch/arm/mach-goldfish Android 还需要在标准的 Linux 内核中需要增加必要的驱动,用于对系 统用户程序的支持。在 android 中的 驱动主要分成两种类型: Android 专用驱动 Android 使用的设备驱动 第二部分 A

7、ndroid 专用驱动 2.1 Ashmem 2.2 binder 2.3 logger 第二部分 Android 专用驱动 Ashmem : 匿名共享内存驱动 Logger : 轻量级的 log 驱动 Binder 驱动( 驱动( Binder Driver ):): 基于 OpenBinder 驱动,为 Android 平台提供 IPC 的支持 能源管理(能源管理( Android Power Management ):): 轻量级的能源管理,基于 Linux 的能源管理,为嵌入 式系统做了优化 Android Power Management ( PM ):): 定时器驱动,用于唤醒设备

8、 Low Memory Killer : 在缺少内存的情况下,杀死进程 Android PMEM : 物理内存驱动 Android 的 Ashmem 的含义为: Anonymous Shared Memory 匿名共享内 存,通过内核的机制,为用户空间程序提供分 配内存的机制。 Ashmem 设备节点名称: /dev/ashmem 主设备号为 10 ( Misc Driver ) 次设备号动态生成 2.1 Ashmem 2.1 Ashmem Ashmem 的代码路径: kernel/include/linux/ashmem.h kernel/mm/ashmem.c 在用户空间 C libuti

9、l 库对 Asheme 封装 并提供接口: system/core/include/cutils/ashmem.h system/core/libcutils/ashmem-dev.c system/core/libcutils/ashmem-host.c 2.1 Binder Android 的 Binder 驱动程序为用户 层程序提供了 IPC (进程间通信)的支 持, Android 整个系统的运行依赖 Binder 驱动 Binder 设备节点名称: /dev/binder 主设备号为 10 ( Misc Driver ) 次设备号动态生成 2.1 Ashmem binder 的代码路

10、径: kernel/include/linux/binder.h kernel/drivers/misc/binder.c 在用户空间 libutil 工具库和 Service Manager 守护进程调用 Binder 接口提供对整个 系统的支持: frameworks/base/cmds/servicemanager/ frameworks/base/include/utils/ frameworks/base/libs/utils/ 2.1 Logger Android 的 Logger 驱动程序为用 户层程序提供 Log 的支持,这个驱动作为 一个工具来使用。 Logger 有三个设备

11、节点: /dev/log/main /dev/log/event /dev/log/radio 主设备号为 10 ( Misc Driver ) 次设备号动态生成 2.1 Ashmem Logger 驱动的代码路径: kernel/include/linux/logger.h kernel/drivers/misc/logger.c 在用户空间 logcat 程序调用 Logger 驱 动: system/core/logcat/ 第三部分 Android 使用的设备驱动 3.1 framebuffer 驱动 3.2 Event 输入设备驱动 3.3 v4l2 摄像头视频驱动 3.4 OSS

12、音频驱动 3.5 ALSA 音频驱动 3.6 MTD 驱动 3.7 蓝牙驱动 3.8 Wlan 驱动 3.1 framebuffe 显示驱动 显示驱动使用 framebuffer 驱动。 framebuffer 驱动的设备节点: /dev/fb0 /dev/graphics/fb0 主设备号为 29 ,次设备号递增生成。 代码路径: include/linux/fb.h drivers/video/fbmem.c 3.1 framebuffe 显示驱动 显示硬件(LCD硬件) 字符设备驱动程序核心 具体Framebuffer驱动 (实现struct fb_info) 注册调用 注册调用 硬件

13、操作 /dev/fbX 设备号(29,X) 文件接口调用(ioctl/mmap/write) 用户空间 硬件层 内核空间 register_framebuffer Framebuffer驱动核心 (fbmem.c) 3.2 Event 输入设备驱动 输入设备的驱动通常使用 Input 设备中的 Event 设备。 Event 的字符设备的设备节点: /dev/input/eventX 主设备号为 13 ,设备节点为 64-95 Input 驱动程序的头文件: include/linux/ input.h 代码路径: drivers/input/input.c :核心代码 drivers/inp

14、ut/evdev.c : Event 部分的 实现。 3.2 Event 输入设备驱动 鼠标、键盘、触摸屏等硬件 字符设备驱动程序核心 具体Event驱动 (实现struct input_dev) 注册调用 注册调用 硬件 操作 /dev/input/eventX Event设备号 (13,64+) 文件接口调用(ioctl/poll/read) 用户空间 硬件层 内核空间 input_register_device Event (edev.c) 鼠标 (mousedev.c) 游戏杆 (joydev.c) Input驱动核心 (input.c) 3.3 v4l2 摄像头视频驱动 摄像头( C

15、amera )视频驱动驱动通常使用 Video For Linux 。 v4l2 驱动的设备节点: /dev/video/videoX 主设备号为 81 ,次设备号 0-63 。 v4l2 驱动主要头文件路径: include/linux/videodev.h : v4l 第一版的头文件 include/linux/videodev2.h :定义主要的数据接口和常量 include/media/v4l2-dev.h :设备头文件,具体设备使用其中的接口注册 v4l2 驱动核心实现路径: driver/media/video/v4l2-dev.c 3.3 v4l2 摄像头视频驱动 摄像头 字符设

16、备驱动程序核心 具体V4L2驱动 (实现struct video_device) 注册调用 注册调用 硬件 操作 /dev/video V4L2设备号 (81,X) 文件接口调用(ioctl/mmap) 用户空间 硬件层 内核空间 video_register_device V4L2驱动核心 (v4l2-dev.c) 视频输出设备 3.4 OSS 音频驱动 OSS ( Open Sound System )开放声音 系统。 OSS 驱动的设备节点: /dev/mixer /dev/sndstat /dev/dsp OSS 主设备号为 14 ,次设备号为各个设 备。 OSS 驱动程序的主要头文件

17、: include/linux/soundcard.h : OSS 驱动的主要头文件 include/linux/sound.h :定义 OSS 驱动的次设备号和注册函数 OSS 驱动程序的核心: sound/sound_core.c 3.4 OSS 音频驱动 音频设备 字符设备驱动程序核心 具体OSS驱动 (实现各个设备的struct file_operations) 注册调用 注册调用 硬件 操作 OSS设备号(14,X) 文件接口调用(ioctl/read/write) 用户空间 硬件层 内核空间 register_sound_mixer register_sound_dsp regis

18、ter_sound_midi OSS驱动核心 (sound_core.c) /dev/mixer/dev/XXX/dev/dsp 3.5 ALSA 音频驱动 ALSA ( Advanced Linux Sound Architecture )高级 Linux 声音体系。 ALSA 驱动的设备节点: /dev/snd/controlCX /dev/snd/pcmXXXc /dev/snd/pcmXXXp /dev/snd/seq /dev/snd/timer 主设备号为 116 ,次设备号为各个设备。 ALSA 驱动程序的头文件: include/sound/asound.h : ALSA 驱动

19、的主要头文件 include/sound/core.h : ALSA 驱动核心数据结构和具体驱动的注册 函数 ALSA 驱动程序的核心实现: sound/core/sound.c 3.5 ALSA 音频驱动 音频设备 字符设备驱动程序 具体ALSA驱动 (实现数据设备和控制设备的结构) 注册调用 注册调用 硬件 操作 ALSA设备号(116,X) 文件接口调用 (ioctl/read/write) 用户空间 硬件层 内核空间 ALSA驱动核心(core.c) /dev/snd/controlCX /dev/snd/pcmXXXc /dev/snd/pcmXXXp ALSA 库 ALSA 工具

20、ALSA用户空间接口 控制设备 (control.c) 数据设备 (pcm.c) snd_pcm_new和 snd_ctl_add等接口 3.5 MTD 驱动 Flash 驱动通常使用 MTD ( memory technology device ),内存技术设备。 MTD 的字符设备: /dev/mtdX 主设备号为 90 。 MTD 的块设备: /dev/block/mtdblockX 主设备号为 13 。 MTD 驱动程序头文件路径: include/linux/mtd/mtd.h MTD 源代码路径: drivers/mtd/mtdcore.c : MTD 核心,定义 MTD 原始设备

21、 drivers/mtd/mtdchar.c : MTD 字符设备 drivers/mtd/mtdblock.c : MTD 块设备 3.5 MTD 驱动 Nor Flash 或者 Nand Flash MTD原始设备 (mtdcore.c) MTD字符设备号 (90,X) 硬件层 MTD字符设备 (mtdchar.c) MTD块设备 (mtdblock.c) Flash驱动程序 (实现struct mtd_info) 注册 调用 MTD块设备号 (31,X) /dev/mtdX/dev/block/mtdblockX 文件 系统 add_mtd_device 3.6 蓝牙驱动 在 Linux

22、 中,蓝牙设备驱动是网络设备,使用 网络接口。 蓝牙设备的网络协议: 协议族: AF_BLUETOOTH ( 31 ) 蓝牙协议部分头文件: include/net/bluetooth/hci_core.h include/net/bluetooth/bluetooth.h 蓝牙协议源代码文件: net/bluetooth/* 蓝牙驱动程序部分的文件: drivers/bluetooth/* 3.6 蓝牙驱动 蓝牙的驱动程序一般都通过标准的 HCI 控制实 现。但根据硬件接口和初始化流程的不同,又存在一 些差别。这类初始化动作一般是一些晶振频率,波特 率等基础设置。比如 CSR 的芯片一般通过

23、 BCSP 协议 完成最初的初始化配置,再激活标准 HCI 控制流程。 对 Linux 来说,一旦 bluez 可以使用 HCI 与芯片建立 起通信 ( 一般是 hciattach + hciconfig) ,便可以 利用其上的标准协议 (SCO, L2CAP 等 ) ,与蓝牙通信 ,使其正常工作了。 3.7 Wlan 驱动 在 Linux 中, Wlan 设备驱动是网络设备,使用 网络接口。 Wlan 在用户空间使用标准的 socket 接 口进行控制。 WIFI 协议部分头文件: include/net/wireless.h WIFI 协议部分源文件: net/wireless/* WIF

24、I 驱动程序部分: drivers/net/wireless/* 谢谢! 寵鼅夀邍蜀邍腎偧T開偧沖汓琀瑓瀀搀昀蜀誻欁Y上传资源获取1文币您在2020-11-06 23:57:11上传资源【乌鲁木齐高铁枢纽综合开发建设投资有限公司公司债券2020年半年度财务报告及附注.pdf】审核通过获取1文币0寵夀邍蜀邍腎偧镎偧沖汓琀瑓瀀搀昀蜀耀諆欁瀀Y上传资源获取1文币您在2020-11-06 23:57:20上传资源【乌鲁木齐城市建设投资(集团)有限公司2017年财务报表及附注.pdf】审核通过获取1文币0寵夀邍蜀邍腎偧開偧沖琀桢瀀搀昀蜀耀諆欁瀀Y上传资源获取1文币您在2020-11-06 23:57:20上传资源【乌鲁木齐城市建设投资(集团)有限公司2017年财务报表及附注.pdf】审核通过获取1文币0

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报