- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ARM9的音频驱动程序设计 主要内容 1.驱动程序简介 2.音频系统 3.程序整体框架 驱动程序 1.什么是驱动程序? 2.Linux系统中驱动程序的分类。 3.Linux系统中驱动程序的特点。 4.Linux驱动开发的两种调试方法。 S3C2410X与UDA1341TS连接示意图 音频缓冲区 音频驱动程序框架 #define MODULE #include linux/module.h #include linux/kernel.h static int bb_audio_init(void) { //驱动程序的入口:注册设备、初始化设备、申请DMA通道 } static void bb_audio_exit(void) { //驱动程序的出口:注销设备、释放DMA通道 } //一些其他函数:open、release、write、read等 module_init(bb_audio_init); module_exit(bb_audio_exit); file_operations结构体 static struct file_operations bb_audio_fops = { //DSP设备的file_operations结构体 llseek: bb_audio_llseek; write: bb_audio_write; read: bb_audio_read; poll: bb_audio_poll; ioctl: bb_audio_ioctl; open: bb_audio_open; release: bb_audio_release }; 打开操作:bb_audio_open() bb_audio_open()函数主要完成以下功能: 判断在系统调用open()时是以O_RDONLY、O_WRONLY或O_RDWR那种方式打开。 将声音的一些特性进行初始化:声音的采样率、DMA通道选择。 按指定的打开方式对IIS总线进行初始化。 使用宏MOD_INC_USE_COUNT来使模块计数加1。 录音和放音操作 录音和放音操作分别对应驱动程序中的bb_audio_read()和bb_audio_write()。 bb_audio_read()就是通过循环将内核地址空间的数据拷贝到用户地址空间,bb_audio_write()正好相反。 用户地址空间和内核地址空间的区别:在应用程序中,系统为每个程序提供了4GB的地址空间,但这是虚拟地址,还需映射到物理地址。在内核中,使用的是内核地址空间,实际给出的地址就是物理地址。 输入输出复用:bb_audio_poll() 输入输出复用的作用:返回一个读写标志(可读/可写/错误),实现非阻塞的读写。 实现输入输出复用常用的函数:poll()和select()。它们在功能上相同,但poll()函数与select()函数相比,用起来更直观更容易。 设备控制bb_audio_ioctl() ioctl用于对设备进行读写以外的其它控制操作 ioctl的大体框架: static int bb_audio_ioctl(struct inode *inode, struct file *file, uint cmd, ulong arg) { switch (cmd) { case SNDCTL_DSP_SETFMT: //设置采样格式 break; case SNDCTL_DSP_CHANNELS: //设置通道数 break; case SNDCTL_DSP_STEREO: //设置采样速率 break; } } 谢谢! * * 指导老师:李正民 2005级计算机科学与技术2班 梁红艳 IISCLK IISLRCLK IISCLK GPB2 GPB4 GPB3 扬声器右声道 扬声器左声道 麦克风右声道 麦克风左声道 IISSDO IISSDI UDA1341TS BCK VOUTR WS VOUTL SYSCLK VINR L3MODE VINL L3CLK DATAI L3DATA DATAO 写入 处理 环形缓冲区 字符设备、块设备、网络设备 模块化是主要特点,便于加载和卸载。 一种是直接编译到内核,再运行新的内核来测试;二是编译为模块的形式,单独加载运行调试。第一种方法效率较低,模块方式调试效率很高,它使用insmod 工具将编译的模块直接插入内核,如果出现故障,可以使用rmmod
您可能关注的文档
最近下载
- DELIXI德力西DT(S)SF606 三相电子式多费率电能表(8费率)20240621.pdf
- 化验员应知应会手册正文.docx
- 引擎培训-运维4.0.docx VIP
- 2025至2030中国航空配餐行业市场发展分析及竞争格局与发展趋势报告.docx VIP
- 锅炉原理课件:第七章 锅炉设备的通风计算.ppt VIP
- 引擎培训-运维2.0.docx VIP
- 古代诗人名人高适人物介绍PPT.pptx VIP
- (正式版)C-J-T 298-2008 城镇供水营业收费管理信息系统.docx VIP
- 贵州片区设备运维线路 转正考试题.docx VIP
- 私募股权投资基金基础知识-7月《私募股权投资基金基础知识》押题密卷6.docx VIP
原创力文档


文档评论(0)