编 写 一 个 ALSA 驱 动Takashi lwai编 写 一 个 ALSA 驱 动(by Takashi Iwai)0.3.6 版 本翻 译 : creator sz111@126.com 翻 译 这 篇 文 章 主 要 是 为 了 学 习ALSA 驱 动 , 因 为 感 觉 ALSA 是 Linux 音 频 发 展 方 向 , 所 以下 决 心 仔 细 看 看 , 但 是 中 文 资 料 太 少 , 就 想 翻 译 一 份 奉 献 给 广 大 初 学 并 且 英 文 不 好 的 朋 友 。不 过 自 己 的 英 文 也 非 常 不 好 , 我 也 在 努 力 学 习 中 。 翻 译 的 不 好 , 有 些 地 方 也 不 准 确 , 希 望 大 家 多 提 宝 贵 意 见 , 共 同 维 护 这 篇 文 档 。这 篇 文 档 主 要 描 述 如 何 写 一 个 ALSA( Linux 高 级 声 音 体 系 ) 驱 动 。 目 录 前 言 1.目 录 树 架 构 概 述 内 核 core/oss core/ioctl32 core/seq core/seq/oss core/seq/instr 头 文 件 驱 动 drviers/mpu401 drviers/opl3 和 opl4 i2c i2c/l3 synth pci isa arm, ppc, 和sparc usb pcmcia oss 2.PCI驱 动 的 基 本 流 程 概 要 代 码 示 例 构 造 器 1) 检 查 并 增加设备索引 2) 创建一 个 声 卡实例 3) 创建一 个 主 要 部件 4) 设定驱 动ID 和 名字 5) 创建其他部件 , 如 : 混音 器 ( mixer) , MIDI, 等 6) 注册声 卡实例 7) 设定PCI 驱 动 数据, 然后返回零。 析构器 头文件 3.管理声卡和部件 声卡实例 部件 chip相关数据 1.通过snd_card_new()分配 2.分配其他设备 注册和释放 4.PCI资源管理 代码示例 一些必须做的事情 资源分配 设备结构体的注册 PCI入口 5.PCM接口 概述 代码示例 构造器 析构器 PCM 相关的运行时数据 硬件描述 PCM配置 DMA缓冲区信息 运行状态 私有数据 中断的回调函数 操作函数(回调函数) open close ioctl hw_params hw_free prepare trigger pointer copy,silence ack page 中断向量 周期中断 高频率的时钟中断 调用snd_pcm_period_elapsed() 原子 约束 6.控制接口 概 述 控 制 接 口 描 述 控 制 接 口 名称 通 用capture 和 playback Tone控 制 3D控 制 MIC Boost 接 ...