网站首页 | 论文指导 | 经济论文 | 理工论文 | 管理论文 | 法律论文 | 行政论文 | 英语论文
艺术论文 | 农学论文 | 医学论文 | 文史论文 | 教育教学论文 | 论文定制 | 论文发表
论文库分类>>> 点这里访问轻松论文网主站>>>
您当前的位置:轻松论文网 -> 论文中心 -> 理工论文 -> 电子通信网络论文 -> 文章内容 退出登录 用户管理
 子栏目导航
· 计算机与信息技术论文
· 电子通信网络论文
· 自动化论文
· 土建水利论文
· 交通运输论文
· 化学与化工论文
· 石油与能源动力论文
· 机械制造论文
· 矿业与冶金论文
· 工程论文
· 生命环境论文
· 材料科学与工程
· 综合论文
 最新推荐
· 世界地缘政治体系与印度...
· 维新与革命:政治选择的...
· 世界地缘政治体系与印度...
· 中国国家安全哲学-政治哲...
· 政治学视野中的公共政策...
· 方法引导下的政治理论[上...
· 格拉修斯原则:基督教二...
· 方法引导下的政治理论[下...
· 国体、国情与现代国家-政...
· 试论我国今后政治发展的...
· 东亚的政治权威与现代化...
· 跨国收养法的概念与渊源...
 热门文章
· 开题报告的格式(通用...
· 怎样写开题报告
· [图文] 开题报告范文1(银行...
· 开题报告范文2(网上...
· 毕业论文开题报告-A...
· 开题报告的撰写方法...
· 开题报告范文3(网络...
· 文献综述的写法
· 毕业论文例文评析
· 开题报告撰写的方法...
 相关文章
· [图文] 面向对象的嵌入式系...
· [图文] 基于Nios软核的嵌入...
· [图文] 大容量内存文件系统...
· [图文] 基于嵌入式PC的PIII...
· [图文] UML 在嵌入式系统设...
· [图文] 嵌入式系统中的线性...
· [图文] ARM7系统中实现CF卡...
· [图文] 基于Geode TMGX1的嵌...
· 嵌入式系统设计方法...
· ASP.NET的网站新闻管...
 
[论文定制][论文发表][价格总览][支付方式][购买流程]点击这里给我发消息 点击这里给我发消息
基于IIS总线的嵌入式音频系统设计
作者:佚名  来源:不详  发布时间:2007-3-2 15:17:57  发布人:admin

减小字体 增大字体

摘要:介绍了基于IIS总线的嵌入式音频设备的硬件体系结构及其Linux驱动程序的设计。在音频驱动程序设计综合使用了DMA、分段多缓存区和内存映射技术以提高系统性能,满足音频实时性的要求。

    关键词:音频设备驱动程序 IIS总线 嵌入式Linux DMA 内存映射

嵌入式音频系统广泛应用于GPS自动导航、PDA、3G手机等嵌入式领域,但目前国内在这方面的研究较少。

音频系统设计包括软件设计和硬件设计两方面,在硬件上使用了基于IIS总线的音频系统体系结构。IIS(Inter-IC Sound bus)又称I2S,是菲利浦公司提出的串行数字音频总线协议。目前很多音频芯片和MCU都提供了对IIS的支持。

在软件上,作为一个功能复杂的嵌入式系统,需要有嵌入式操作系统支撑。Linux是一个源代码开放的类UNIX系统,由于其具有内核可裁剪性,且提供对包括ARM、PPC在内的多种嵌入式处理器的支持,所以广泛应用于嵌入式高端产品中。虽然Linux提供了众多API来降低驱动程序制作的复杂度,但是由于音频应用对实时性有很高的要求,且需要处理的数据量较大,所以必须合理分配资源,使用合适的算法。本文针对三星公司的S3C44B0 ARM处理器构造了基于lis的音频系统,并介绍了该音频系统基于Linux2.4.0内核的驱动程序构造技术。

1 硬件体系结构

IIS总线只处理声音数据。其他信号(如控制信号)必须单独传输。为了使芯片的引出管脚尽可能少,IIS只使用了三根串行总线。这三根线分别是:提供分时复用功能的数据线、字段选择线(声道选择)、时钟信号线。

在三星公司的ARM芯片中,为了实现全双工模式,使用了两条串行数据线,分别作为输入和输出。此外三星公司的IIS接口提供三种数据传输模式:

· 正常传输模式。此模式基于FIFO寄存器。该模式下CPU将通过轮询方式访问FIFO寄存器,通过IISCON寄存器的第七位控制FIFO。

· DMA模式。此模式是一种外部设备控制方式。它使用窃取总线控制权的方法使外部设备与主存交换数据,从而提高系统的吞吐能力。

在三星公司的ARM芯片中有4个通道DMA控制器用于控制各种外部设备,其中IIS与其他串行外设共用两个桥联DMA(BDMA)类型的DMA通道。通过设置CPU的IISFCON寄存器可以使IIS接口工作在DMA模式下。此模式下FIFO寄存器组的控制权掌握在DMA控制器上。当FIFO满时,由DMA控制器对FIFO中的数据进行处理。DMA模式的选择由IISCON寄存器的第四和第五位控制。

    · 传输/接收模式。该模式下,IIS数据线将通过双通道DMA同时接收和发送音频数据。本系统使用该数据传输模式。

图1是44BOX芯片与菲利浦公司的UDAl341TS音频芯片的连接示意图。

在这个体系结构中,为了实现全双工,数据传输使用两个BDMA通道。数据传输(以回放为例)先由内部总线送到内存,然后传到BDMA控制器通道0,再通过IIS控制器写入IIS总线并传输给音频芯片。通道1用来录音。

三星公司的BDMA控制器没有内置的存储区域,在驱动程序中必须为音频设备分配DMA缓存区。缓存区的地址在通道DMA控制器的地址寄存器中设置。

UDAl341TS芯片除了提供IIS接口和麦克风扬声器接口,还提供L3接口控制音量等。L3接口分别连到S3C44B0的3个通用数据输出引脚上。

2 音频设备底层软件设计

嵌入式系统硬件设备种类繁多,且缺乏PC中标准的体系结构,所以必须为各种设备编写驱动程序。

驱动程序的主要任务是控制音频数据在硬件中流动,并为音频应用提供标准接口。由于嵌入式系统资源有限,且处理器能力不强,所以在音频设备的驱动程序设计中,合理分配系统资源是难点。

需要注意的是,在三星公司的ARM芯片中,I/O设备的寄存器作为内存空间的一部分,可以使用普通的内存访问语句读写I/O寄存器,进而控制外部设备。这是该嵌入式系统与传统的基于Intel处理器的PC最大的不同。

2.1 驱动程序功能

设备驱动程序中需要完成的任务包括:对设备以及对应资源初始化和释放;读取应用程序传送给设备文件的数据并回送应用程序请求的数据。这需要在用户空间、内核空间、总线及外设之间传输数据。

2.2 驱动程序构架

Linux驱动程序中将音频设备按功能分成不同类型,每种类型对应不同的驱动程序。UDAl341TS音频芯片提供如下功能:

· 数字化音频。这个功能有时被称为DSP或Codec设备。其功能是实现播放数字化声音文件或录制声音。

· 混频器。用来控制各种输入输出的音量大小,在本系统中对应L3接口。

在Linux设备驱动程序将设备看成文件,在驱动程序中将结构file_operations中的各个函数指针与驱动程序对应例程函数绑定,以实现虚拟文件系统VFS对逻辑文件的操作。数字音频设备(audio)、混频器(mixer)对应的设备文件分别是/dev/dsp和/dev/mixer。

2.3 设备的初始化和卸载

/dev/dsp的驱动设计主要包含:设备的初始化和卸载、内存与DMA缓存区的管理、设备无关操作(例程)的实现以及中断处理程序。

在设备初始化中对音频设备的相关寄存器初始化,并在设备注册中使用了两个设备注册函数register sound_dsp()和regiter_sound_mixer()注册音频设备和混频器设备。这两个函数在2.2以上版本的内核drivers/sound/sound_core.c文件中实现。其作用是注册设备,得到设备标识,并且实现设备无关操作的绑定。在这些注册函数里使用的第一个参数都是struct file_operations类型的参数。该参数定义了设备无关接口的操作。

设备卸载时使用注销函数。注销时用输入注册时得到的设备号即可。在注销时还必须释放驱动程序使用的各种系统资源包括DMA、设备中断等。

2.4 DMA缓存区设计和内存管理

在音频设备的驱动程序设计中,DMA缓存区设计和内存管理部分最为复杂。由于音频设备有很高的实时性要求,所以合理地使用内存能加快对音频数据的处理,并减少时延。

三星公司的BDMA控制器没有内置DMA存储区域,在驱动程序中必须为音频设备分配DMA缓存区。这样就能通过DMA直接将需要回放或是录制的声音数据存放在内核的DMA缓存区中。

为了方便各种物·理设备使用DMA资源,在程序中使用strcut s3c44b_DMA数据结构管理系统各个DMA通道的资源,如图2。每个DMA通道被多个外部设备共用,为各个外设分配的DMA缓存区的大小和数目可能不·一致,所有分配的数据块使用DMA缓存数据块DMA_buf管理。各个不同设备申请的数据缓存区形成一个单向链表,每个链表节点包含一个起点字段,存放实际DMA缓存起始位置的物理地址。在设备第一次使用DMA时,使用kmalloc函数为DM A_buf分配内存,并且使用consistent_alloc函数为DMA分配实际的连续物理缓存区,然后将节点插入队列中。从第二次开始通过缓存区的标示符对缓存区进行操作。

内存管理中的重要问题是缓存区块设计。常见的设计思路是使用一个缓存区,CPU先对缓存区处理,然后挂起,音频设备对缓存区操作,音频设备处理完后唤醒CPU,如此循环。需要处理大量音频数据的音频设备驱动程序,可以使用双缓冲。以录音为例,系统使用缓存2存放音频设备量化好的声音,CPU(应用程序)则处理缓存1中的声音数据;当Codec设备填充完缓存2,它移向缓存1填充数据,而CPU转向处理缓存2里的数据;不断交替循环,如图3(a)、(b)所示。

使用这种方法处理音频数据,能够提高系统的并行能力。应用程序可以在音频工作的同时处理传输进来的音频数据。 由于实际系统被设计成支持全双工的音频系统,所以必须为输入和输出同时分配内存,对应的数据结构设计如图4所示。

图4中音频设备缓存控制块管理音频设备的缓存区。在控制块中输入/输出缓存指针分别指向输入和输出缓存结构audio_buf,输入输出控制块指针分别指向对应的DMA控制块。因为输人输出使用了不同DMA通道,所以音频设备缓存控制块有两个DMA控制块控制指针。在audio_buf中分别有两个DMA起点字段分别指向双缓存区的起始物理地址。缓存区状态字段包含缓存.区是否被映射、是否激活、是否暂停等信息。 应用程序处理缓存中数据的速度依赖于缓存的大小和数据传输速度。例如使用"8kHz/8位/单工" 的采洋方式录音,音频芯片产生64kbps的数据流量。如果是两个4K字节的缓存,那么应用程序就只有0.5s处理缓存中的数据并把它存到Flash芯片中(或者传输到其它设备中)。若0.5s内不能处理这些数据,缓存就会溢出。若采用高品质的采样,例如使用CD音质的采样,那么Codec产生数据的速度将达1376kbps,CPU处理音频数据的时间就只有23ms。在CPU负载较大的情况下,将可能出现数据丢失的问题。

为了解决音频应用I/O数据量大的问题,最简单易行的方法是使用比较大的缓存区域。但实际上大的缓存区需要更长的填充时间,在使用时会出现延时,并可能占用过多CPU资源。为了解决延时的问题,使用多段缓存机制。在这种机制下,将可用的缓存区分割成若干个相同大小的块。对较大的缓存区的操作转变成对较小的缓冲区块的操作,在不增加缓存区操作时间的情况下提供较大的缓存。不同的音频应用,精度不一样,需要的缓存大小也不一样。所以在应用程序层上,驱动程序还必须提供接口让应用程序改变块的大小和个数。这个接口可以在ioctl中实现。对缓存区块的大小控制通过对audio_buf中的对应字段设置实现。

    使用内存映射(mmap)技术是另一种提高系统性能的途径。Linux系统的内存空间分为内核。空间和用户空间,驱动程序工作在内核空间,并负责在内核空间和用户空间传输数据。音频应用一般数据量比较大,而且有较高的质量要求,在驱动程序中还可以使用内存映射进一步提高CPU的利用率。内存映射通过remap page_range将分配给DMA缓存区的内核空间的内存映射到用户空间,用户不需使用copy_to_user和copy_from_user将数据在内核空间与用户空间中拷贝。图4中缓存区状态和缓存区起点两个字段也用于内存映射服务。在实现时由于DMA的缓存结构复杂,需要将每个缓存块分别映射。

2.5 设备无关操作

设备无关操作对应于file_operations指向的各个例程,它让用户用访问文件的方式访问设备。对设备的打开和读写是启动程序为用户程序提供的最主要接口,分别对应于file_eratlons中的open、read和write例程。在open例程中需要完成的任务主要是设备初始化,包括:

· 通过设置IIS寄存器控制音频设备的初始化,并且初始化设备的工作参数(包括速度、声道、采样宽度);

· 为设备分配DMA通道;

· 根据采样参数计算出缓存内段的大小(程序也可以指定缓存内段的大小);

当缓存区和DMA设置好后,读写操作主要对缓存操作。 对设备的操作除了读写操作外,还有音频播放中的暂停和继续。这两个操作在ioctl接口中实现,通过对相应的IIS总线控制器(IISCON寄存器)操作实现。

此外,在对音频操作时还要注意:一次采样得到的数据必须一次处理,否则不能正确播放数据。

论文指导 开题报告   论文格式   论文撰写   论文答辩   论文答谢   
经济论文 税收论文   证券投资论文   房地产论文   金融论文   投资论文   财政论文   西经论文   国际贸易论文   计量经济论文   国民经济论文   保险信托论文   地方经济   国际经济   新经济学   经济学理论   经济学其他   
理工论文 计算机与信息技术论文   电子通信网络论文   自动化论文   土建水利论文   交通运输论文   化学与化工论文   石油与能源动力论文   机械制造论文   矿业与冶金论文   工程论文   生命环境论文   材料科学与工程   综合论文   
管理论文 电子商务论文   会计论文   财务论文   人力资源论文   市场营销论文   企业管理论文   信息管理论文   旅游管理论文   工商管理论文   公共管理论文   物流管理论文   
法律论文 民法论文   刑法论文   诉讼法论文   行政法论文   国家法   宪法论文   土地资源环境法论文   国际法论文   劳动保障论文   商法论文   经济法论文   法史学论文   法理学论文   司法制度论文   
行政论文 中国政治论文   国际政治论文   管理科学论文   思想政治教育论文   国家行政管理论文   政治理论论文   哲学理论论文   三个代表论文   社工论文   
英语论文 学术英语论文   商务英语论文   科技英语论文   英语教学论文   
艺术论文 艺术理论论文   电视艺术论文   电影艺术论文   音乐论文   舞蹈论文   戏剧论文   美术论文   
农学论文 农艺学(园林,林学)论文   渔业论文   水产论文   植物保护论文   农业基础科学论文   综合论文   
医学论文 医学论文写作方法   基础医学论文   医药卫生论文   临床医学论文   药学论文   特种医学论文   护理学论文   
文史论文 中国史论文   世界史论文   考古论文   文字学论文   语法论文   中国文学论文   世界文学论文   文学理论论文   文艺美学论文   文学评论论文   经典名著赏析论文   新闻传媒学论文   社会学论文   
教育教学论文 语文论文   数学论文   英语论文   物理论文   美术论文   音乐论文   地理论文   化学论文   历史论文   体育论文   思想政治论文   生物自然论文   信息技术论文   德育管理论文   素质教育论文   教学管理论文   综合论文   
[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:基于SX52的嵌入式Web服务器的快速实现
下一篇文章:基于PXA255的PDA交通管理系统在Linux环境下的实现
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
服务电话:020-61131011;020-61131022 转82 投诉电话:020-61131011;020-61131022 转88 传真:020-61131022
电子邮件:paperease@vip.163.com paper@126.com 服务QQ:130008818 130009919
© 2002-2004 轻松论文网 赣ICP备05004673号 网络实名:轻松论文