- 1、本文档共134页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.8.3 音频驱动程序设计 音频设备驱动程序的主要任务是控制音频数据在硬件中流动,并为音频应用提供标准接口。由于嵌入式系统资源有限,且处理器能力不强,所以在音频设备的驱动程序设计中,合理分配系统资源是难点。在三星公司的ARM芯片中,I/O设备的寄存器作为内存空间的一部分,可以使用普通的内存访问语句读写I/O寄存器,进而控制外部设备。这是该嵌入式系统与传统的基于Intel处理器的PC最大的不同。 ● 音频设备驱动程序功能 设备驱动程序中需要完成的任务包括:对设备以及对应资源初始化和释放;读取应用程序传送给设备文件的数据并回送应用程序请求的数据。这需要在用户空间、内核空间、总线及外设之间传输数据。 ● 驱动程序构架 Linux驱动程序中将音频设备按功能分成不同类型,每种类型对应不同的驱动程序。UDAl341TS音频芯片提供如下功能: 数字化音频:这个功能有时被称为DSP或Codec设备。其功能是实现播放数字化声音文件或录制声音。 混频器:用来控制各种输入输出的音量大小,在本系统中对应L3接口。 在Linux设备驱动程序将设备看成文件,在驱动程序中将结构file_operations中的各个函数指针与驱动程序对应例程函数绑定,以实现虚拟文件系统VFS对逻辑文件的操作。数字音频设备(audio)、混频器(mixer)对应的设备文件分别是/dev/dsp和/dev/mixer。 ● 设备的初始化和卸载 对/dev/dsp的驱动设计主要包含:设备的初始化和卸载、内存与DMA缓存区的管理、设备无关操作(例程)的实现以及中断处理程序。 在设备初始化中对音频设备的相关寄存器初始化,并在设备注册中使用了两个设备注册函数register sound_dsp()和regiter_sound_mixer()注册音频设备和混频器设备。这两个函数在2.2以上版本的内核drivers/sound/sound_core.c文件中实现。其作用是注册设备,得到设备标识,并且实现设备无关操作的绑定。在这些注册函数里使用的第一个参数都是struct file_operations类型的参数。该参数定义了设备无关接口的操作。 ● DMA缓存区设计和内存管理 在音频设备的驱动程序设计中,DMA缓存区设计和内存管理部分最为复杂。由于音频设备有很高的实时性要求,所以合理地使用内存能加快对音频数据的处理,并减少时延。 ● 设备无关操作 设备无关操作对应于file_operations指向的各个例程,它让用户用访问文件的方式访问设备。对设备的打开和读写是启动程序为用户程序提供的最主要接口,分别对应于file_operations中的open、read和write例程。在open例程中需要完成的任务主要是设备初始化,包括: (1)通过设置IIS寄存器控制音频设备的初始化,并且初始化设备的工作参数(包括速度、声道、采样宽度); (2)为设备分配DMA通道; (3)根据采样参数计算出缓存内段的大小(程序也可以指定缓存内段的大小); 当缓存区和DMA设置好后,读写操作主要对缓存操作。 对设备的操作除了读写操作外,还有音频播放中的暂停和继续。这两个操作在ioctl接口中实现,通过对相应的IIS总线控制器(IISCON寄存器)操作实现。在对音频操作时还要注意:一次采样得到的数据必须一次处理,否则不能正确播放数据。 UP-NETARM2410-S的UDAl341TS音频驱动程序: /arm2410s/kernel-2410s/drivers/sound/s3c2410-uda1341.c AT24C01A:地址端口A0、A1、A2 是器件的编号,通过对三个埠的编号可以确定该器件在系统中的编号;也就是说,在一根总线上最多可以挂接8 个该器件,通过对地址码的最低三位的设置来决定使用哪一个器件。当该器件的WP 引脚连接到VCC 的时候,器件处于写保护状态,不能够对其进行读写操作。 AT24C02:和AT24C01 相同。 AT24C04:只使用A2、A1 这两个埠作为器件编号;在一根总线上可以挂接4 块该器件;第三位作为芯片内部的块的选择,决定使用第一个块还是第二个块。A0这个埠不使用。当该器件的WP引脚连接到VCC 的时候,器件处于写保护状态,不能够对其进行读写操作。 AT24C08:使用A2 这一个埠作为器件编号;在一根总线上可以挂接2 块该器件; 第二位和第三位作为芯片内部的块选择,可以选择四个块中的一个。A0、A1 这两个埠不使用。当该器件的WP 引脚连接到VCC 的时候,器件仍然可以进行读/写操作;AT24C16:不使用外部引脚作为器件编号,所以在同一根总线上只能够挂接1 块该器件;三位元全部作为芯片内部的块选择,可以选择八个块中间的一块。当该器件的WP 引脚连接到VCC 的时候
您可能关注的文档
- 企业标志设计经典案例技术分析.ppt
- 乐都汇完美声音技术分析.ppt
- 企业的信息化技术分析.ppt
- 企业防火防盗防暑培训技术分析.ppt
- 了解感应卡门禁管理系统的主要功能技术分析.ppt
- 了解集成电路技术分析.ppt
- 了解键盘_练习指法技术分析.ppt
- 企业管理的人力资源及其应用学习知识技术分析.ppt
- 企业管理基础工作技术分析.ppt
- 冷冲压模具设计技术分析.ppt
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)