没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
编写一个 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
接口标识
回调函数
info
get
put
回调函数并不是原子的
构造器
更新通知
7.AC97 解码器的 API 函数
概述
代码示例
构造器
回调函数
驱动中更新寄存器
调整时钟
Proc 文件
多个解码器
8.MIDI(MPU401-UART)接口
概述
构造器
中断向量
9.Raw MIDI 接口
概述
构造器
回调函数
open
close
输出子系统的 trigger
输入子系统的 trigger
drain
10.杂项设备
FM OPL3
硬件相关设备
IEC958(S/PDIF)
11.缓存和内存管理
缓存类型
附加硬件缓存
不相邻缓存
通过 Vmalloc 申请的缓存
12.Proc 接口
13.电源管理
14.模块参数
15.如何把你的驱动加入到 ALS 代码中
概述
单一文件的驱动程序
多个文件的驱动程序
16.一些有用的函数
snd_printk()相关函数
snd_assert()
snd_BUG()
17.致谢
前言
这篇文章主要介绍如何写一个 ALSA(Advanced Linux Sound Architecture)(http://
www.alsa-project.org)驱动.这篇文档主要针对 PCI 声卡。假如是其他类似的设备,API 函
数可能会是不同的。尽管如此,至少 ALSA 内核的 API 是一样的。因此,这篇文章对于写其
他类型的设备驱动同样有帮助。
本文的读者需要有足够的 C 语言的知识和基本的 linux 内核编程知识。本文不会去解释
一些 Linux 内核编码的基本话题,也不会去详细介绍底层驱动的实现。它仅仅描述如何写一
个基于 ALSA 的 PCI 声卡驱动。
假如你对 0.5.x 版本以前的 ALSA 驱动非常熟悉的话,你可以检查驱动文件,例如
es1938.c 或 maestro3.c,那些是在 0.5.x 版本基础上而来的,你可以对比一下他们的差别。
这篇文档仍然是一个草稿,非常欢迎大家的反馈和指正。
剩余42页未读,继续阅读
音乐伴我远行
- 粉丝: 19
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 126641091882064LSPatch.apk
- 5G网络基础培训课件.zip
- 2024-spring-HIT-CS-大作业
- yolo目标检测项目实验
- downloadFile-1.hc
- C++课程设计:基于Qt的航班信息管理系统
- ADS7822UVerilog驱动,前面传的有点问题
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5