首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>服务器技术>WEB服务器>正文

基于IIS总线的嵌入式音频系统设计

http://www.oklinux.cn  2004-10-06  来源: oklinux收集   会员收藏  游客收藏  【 】 

  嵌入式音频系统广泛应用于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同时接收和发送音频数据。本系统使用该数据传输模式。
  
  在这个体系结构中,为了实现全双工,数据传输使用两个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分配实际的连续物理缓存区,然后将节点插入队列中。从第二次开始通过缓存区的标示符对缓存区进行操作。
共2页: 上一页 1 [2] 下一页

上一篇:在Windows 2003 IIS6.0环境下安装PHP   下一篇:让IIS Web服务器不再拒认ASP网页


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·在Windows 2003 IIS6.0环境下安装PHP
·让IIS Web服务器不再拒认ASP网页
·IIS6.0服务器架站无法访问解决方案总结
·IIS服务中FTP站点的建立与维护(3)
·IIS服务中FTP站点的建立与维护(2)
·在一个IP地址上配置多个Web站点应用
·解决apache Web服务器网页显示乱码的两种方法
·IIS 6.0下ASP的一些新增加的功能
·一个IP建多个Web站点---主机头名法
·IIS服务中FTP站点的建立与维护(1)
·创建Web部件显示Portal Server的搜索数据
·JRun3.0配合IIS的安装全过程详解
·装IIS 6.0后所有站都出现500错误
·使用Delphi创建IIS虚拟目录的方法
·完美实现个人建站梦想 全面了解IIS组建方法
·如何用Resin使IIS支持JSP和Servlet
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·WEB服务器流量超负载:如何分散解决?
·Frontpage服务器扩充程序
·“http 500内部服务器错误”的解决方法
·Windows2003校园Web服务器常见问题(图)
·资深网管教你打造SSL加密的安全站点1(
·资深网管教你打造SSL加密的安全站点2(
·资深网管教你打造SSL加密的安全站点3(
·资深网管教你打造SSL加密的安全站点4(
·用Server 2003建匿名访问服务器(图)
·资深网管教你WIN2K下如何一机多"站"一(
·新手入门之认识典型Web服务器(图)
·资深网管教你WIN2K下如何一机多"站"二(
  阅读排行
·Apache php mysql在windows下的安装与
·Win2003服务器组网、安全管理全攻略二
·IIS配置及安全访问控制策略详解
·Win2003服务器组网、安全管理全攻略一
·WEB专用服务器的安全设置的实战技巧
·Win2003实现Web虚拟网站操作篇
·从权限入手解决IIS PHP环境故障
·IIS5.1和IIS6.0一些显著的重要区别
·解答终端服务与远程桌面区别(组图)
·网管经验谈-巧妙搭建IIS下PHP环境
·使用IIS5.0调整Web服务器的艺术与科学
·Win2000IIS安全构建指南
·巧施妙手,排除IIS特殊管理困惑
·Longhorn下的IIS是Apache杀手么?
·Windows2003基本的web服务器安全设置
网摘收藏: