使用WIN2000 DDK配置PCI驱动,为什么开两个stm32 dma通道道会导致程序无法运行?

PCI声卡WDM驱动程序研究与设计--《中国地质大学(北京)》2005年硕士论文
PCI声卡WDM驱动程序研究与设计
【摘要】:本文深入分析了Windows 2000下的PCI声卡的WDM驱动程序体系结构和开发技术,对开发过程中的关键步骤和问题进行了详细的讨论和分析。论文采用了由普遍到特殊的研究方法,从DDK自带的AC97驱动源程序入手,结合实际的声卡硬件特征开发自己的PCI声卡驱动程序。
本文首先介绍Windows 2000的设计原理和总的体系结构以及Windows 2000下驱动程序的概况,特别讨论了Windows 2000的中断请求级,I/O请求包结构以及I/O处理顺序;接着详细分析了WDM驱动程序模型的特性和层次结构,重点分析了DriverObject和DeviceObject这两个驱动程序设计中比较关键的对象,阐述了驱动程序的加载顺序,研究了驱动程序设计中的关键例程DriverEntry和AddDevice的程序实现方法;同时论文还介绍了一些Windows 2000的硬件基础知识,着重介绍了寄存器的访问方法,DMA机制以及PCI总线的特征;并且对声卡的硬件体系结构,音频基本概念和音频处理的一些基本技术做了介绍,特别对该论文的开发对象Banjo声卡进行了详细的分析,介绍了它的工作原理、工作方式,总结了该声卡的各功能模块、各个寄存器的作用。针对诸如声卡的多媒体设备,Microsoft特别提供了多媒体的驱动程序结构。本文对该类驱动程序结构进行了介绍。Microsoft提供的DDK带有一个AC97驱动源程序,它为PCI声卡驱动程序的开发提供了一个框架。仔细研究AC97驱动源程序,分析它的框架结构和主要类对象,这是进行声卡驱动程序开发非常关键的步骤。在这个驱动程序框架的基础上,结合实际的声卡特征,按各功能模块分步开发声卡的驱动程序。对驱动程序的加载/卸载过程,基本播放/录音功能的实现以及ISR例程和DPC例程的程序实现做了详细的说明。最后,本文还特别介绍了驱动程序编译工具的使用,编译和调试环境的建立以及安装文件.inf的结构和编写。
本文对声卡驱动程序的开发过程中所涉及的内容都作了阐述,它不仅对声卡驱动程序开发有直接的参考作用,而且对Windows 2000平台下各种类型驱动程序的开发都有实际的借鉴意义。
【关键词】:
【学位授予单位】:中国地质大学(北京)【学位级别】:硕士【学位授予年份】:2005【分类号】:TP311.11【目录】:
第一章 引言9-12
1.1 课题的背景及意义9-10
1.2 课题的目标及任务10
1.3 课题的重点与难点10-12
第二章 WINDOWS 2000 驱动程序概述12-21
2.1 WINDOWS 2000 的体系结构12-14
2.1.1 Windows 2000 的硬件特权级别12
2.1.2 Windows 2000 系统的分层结构12-13
2.1.3 执行程序组件13-14
2.2 WINDOWS 2000 设备驱动程序分类14-15
2.3 WINDOWS 2000 使用的中断优先级15-17
2.3.1 CPU 的优先级分层16
2.3.2 软件产生中断16-17
2.4 I/O 请求包17-21
2.4.1 IRP 结构17-19
2.4.2 I/O 处理顺序19-21
第三章 WDM 驱动程序的基本结构21-31
3.1 驱动程序中的对象21-24
3.1.1 Driver 对象21-22
3.1.2 Device 对象22-23
3.1.3 Interrupt 对象23-24
3.1.4 Adapter 对象24
3.2 WDM 驱动程序的层次结构24-26
3.3 驱动程序的加载顺序26-27
3.4 WDM 驱动程序的例程27-31
3.4.1 DriverEntry 例程28-29
3.4.2 AddDevice 例程29-31
第四章 硬件基础知识31-39
4.1 设备寄存器31
4.2 访问设备寄存器31-33
4.2.1 I/O 空间寄存器32-33
4.2.2 内存映射寄存器33
4.3 DMA 机制33-35
4.4 自动识别和自动配置35
4.5 PCI 总线35-39
4.5.1 寄存器访问36
4.5.2 DMA 能力36-37
4.5.3 设备内存37
4.5.4 自动配置37-39
第五章 声卡驱动程序开发基础39-51
5.1 音频基本概念39-40
5.1.1 关于声音采样39-40
5.1.2 脉冲编码调试(PCM)40
5.1.3 音效多媒体数字信号编/解码标准(Audio Codec’97)40
5.1.4 SONY/PHILIPS 数字接口(SPDIF)40
5.2 声卡硬件说明40-51
5.2.1 声卡体系结构41-42
5.2.2 PCI 配置空间42-43
5.2.3 音频功能寄存器映射43
5.2.4 间接寄存器寻址43-44
5.2.5 间接功能寄存器44-45
5.2.6 播放Fifo45-47
5.2.7 录音Fifo47-48
5.2.8 其它寄存器48-51
第六章 声卡驱动程序开发实例51-71
6.1 多媒体驱动程序结构51
6.2 AC97 驱动程序框架51-56
6.2.1 驱动程序结构及主要对象介绍52-55
6.2.2 AC97 的即插即用55-56
6.2.3 AC97 的电源管理56
6.3 驱动开发实例分析56-71
6.3.1 驱动程序的装载/卸载57-63
6.3.2 基本放音/录音功能的实现63-68
6.3.3 各种控制功能的实现68-71
第七章 驱动程序的编译、安装和调试71-81
7.1 驱动程序的编译71-72
7.1.1 Build 工具71
7.1.2 编译驱动程序的过程71-72
7.2 驱动程序的安装72-78
7.2.1 使用INF 文件自动安装73-77
7.2.2 使用驱动程序的INF 文件77-78
7.3 驱动程序的调试环境78-81
7.3.1 硬件和软件要求78-79
7.3.2 启用目标系统上故障转储79-80
7.3.3 启用目标系统上的调试客户80-81
第八章 结论81-82
参考文献82-83
个人简历84
欢迎:、、)
支持CAJ、PDF文件格式
【引证文献】
中国硕士学位论文全文数据库
赵敬东;[D];南京理工大学;2011年
李鑫;[D];哈尔滨工程大学;2007年
陈婷;[D];南京理工大学;2013年
【参考文献】
中国期刊全文数据库
,马秦生;[J];电子技术应用;2003年12期
中国硕士学位论文全文数据库
张奕;[D];西安电子科技大学;2001年
【共引文献】
中国期刊全文数据库
严迎建;徐金甫;徐劲松;李伟;;[J];电子技术应用;2007年06期
富大鹏;杨会玲;;[J];国外电子测量技术;2009年09期
陈赟;赵兴国;;[J];光子学报;2007年03期
陈赟;赵兴国;;[J];光子学报;2008年02期
孙健;贾民平;许飞云;胡建中;;[J];机电工程;2007年12期
任小均;叶玉堂;刘旭;樊星;罗颖;;[J];中国测试技术;2008年03期
张保钦,李平,王亚晓,来跃深;[J];西安工业学院学报;2005年02期
王丹;朱齐丹;;[J];应用科技;2005年12期
中国重要会议论文全文数据库
张毅刚;彭宇;刘大同;张丽丽;平恒;;[A];2009中国仪器仪表与测控技术大会论文集[C];2009年
中国博士学位论文全文数据库
陈赟;[D];中国科学院研究生院(长春光学精密机械与物理研究所);2006年
中国硕士学位论文全文数据库
钱小辉;[D];西安电子科技大学;2011年
刘洋一;[D];吉林大学;2011年
赵敬东;[D];南京理工大学;2011年
詹金勇;[D];华中科技大学;2011年
赵春红;[D];西北工业大学;2003年
杨皓;[D];电子科技大学;2004年
陈少卿;[D];华中科技大学;2004年
尚荣军;[D];华中科技大学;2004年
刘勇;[D];大连理工大学;2005年
余昌盛;[D];浙江大学;2005年
【同被引文献】
中国期刊全文数据库
季昂;薛斌;;[J];中国传媒大学学报(自然科学版);2008年03期
李寿强;[J];成都电子机械高等专科学校学报;2003年04期
潘莉,郭东辉,纪安妮,刘瑞堂;[J];电讯技术;2001年05期
黄兴奎;;[J];电脑开发与应用;2006年06期
叶丽艳,吕新宇,吴中一;[J];电信快报;1997年06期
史波;[J];今日电子;1998年01期
李海;[J];电子技术应用;2000年01期
,马秦生;[J];电子技术应用;2003年12期
童鹏;吴新建;;[J];电子技术应用;2005年10期
谢冲;董鹏举;;[J];电子商务;2010年06期
中国硕士学位论文全文数据库
郎宝华;[D];西安理工大学;2003年
郭晓辉;[D];西北工业大学;2004年
王琨;[D];哈尔滨工程大学;2004年
梁波;[D];电子科技大学;2005年
赵鑫;[D];哈尔滨工程大学;2005年
熊璐;[D];电子科技大学;2006年
黄艳华;[D];吉林大学;2007年
【二级引证文献】
中国硕士学位论文全文数据库
王琪;[D];哈尔滨工程大学;2010年
程鹏;[D];哈尔滨工程大学;2010年
张哲;[D];哈尔滨工程大学;2011年
归美;[D];哈尔滨工程大学;2008年
何兆龙;[D];西安电子科技大学;2012年
董志远;[D];山东大学;2012年
张楠;[D];五邑大学;2012年
张楠;[D];长安大学;2012年
【相似文献】
中国期刊全文数据库
刘国强;[J];流体力学实验与测量;1994年02期
朱丹绯,顾钟文,周春晖;[J];石油化工自动化;1999年05期
刘恩锋;[J];中国会计电算化;1999年08期
王思逊;[J];电脑爱好者;1999年07期
;[J];电脑采购周刊;1999年08期
于德水;;[J];电工技术;1999年03期
董平,刘心松;[J];计算机应用;2000年04期
陈志峥;[J];电脑爱好者;2000年08期
刘晨明;[J];电脑爱好者;2000年24期
蜀奇;[J];家庭电子;2000年10期
中国重要会议论文全文数据库
白姗姗;;[A];煤矿自动化与信息化——第19届全国煤矿自动化与信息化学术会议暨中国矿业大学(北京)百年校庆学术会议论文集[C];2009年
盛磊;李健;;[A];第三届全国信息获取与处理学术会议论文集[C];2005年
时巍;曾碚凯;刘晓峰;;[A];冶金企业自动化、信息化与创新——全国冶金自动化信息网建网30周年论文集[C];2007年
袁魏华;朱海君;乔卫民;敬岚;;[A];第11届全国计算机在现代科学技术领域应用学术会议论文集[C];2003年
吴忠杰;林君;韦建荣;谢宣松;;[A];第七届青年学术会议论文集[C];2005年
郭显;白凤娥;;[A];AECC专题学术研讨会论文集[C];2007年
汪兴旺;曹修定;任晨虹;;[A];2007'中国仪器仪表与测控技术交流大会论文集(二)[C];2007年
朱曦;;[A];第十届中国科协年会信息化与社会发展学术讨论会分会场论文集[C];2008年
杜冬梅;何青;唐斌;陈菲;;[A];2009中国控制与决策会议论文集(2)[C];2009年
刘爽;路莹;马腾;许镇;;[A];中国通信学会第六届学术年会论文集(上)[C];2009年
中国重要报纸全文数据库
马正阳;[N];电脑报;2003年
陈建明;[N];电脑报;2004年
;[N];网络世界;2008年
杨宏权;[N];电脑报;2002年
张亚鹏;[N];中国计算机报;2003年
宋梦觉;[N];电脑报;2002年
李玲;[N];电脑报;2007年
李冰;[N];中国电脑教育报;2002年
村干部;[N];中国电脑教育报;2004年
陈江旭;[N];中国电脑教育报;2005年
中国博士学位论文全文数据库
禹东赫;[D];天津大学;2007年
杨泓渊;[D];吉林大学;2009年
蒋凯;[D];浙江大学;2007年
张志安;[D];南京理工大学;2007年
从明;[D];中国科学技术大学;2009年
宋华军;[D];中国科学院研究生院(长春光学精密机械与物理研究所);2006年
李凌;[D];浙江大学;2007年
宋玉明;[D];吉林大学;2007年
陈迪虎;[D];中国科学技术大学;2009年
陈月岩;[D];吉林大学;2009年
中国硕士学位论文全文数据库
黄丽;[D];电子科技大学;2005年
石磊;[D];国防科学技术大学;2005年
周旺;[D];电子科技大学;2002年
艾思特;[D];重庆大学;2002年
章岗;[D];电子科技大学;2004年
罗彬;[D];四川大学;2004年
刘云飞;[D];解放军信息工程大学;2004年
李佳;[D];华北电力大学(北京);2005年
赵金玉;[D];哈尔滨工程大学;2005年
罗清平;[D];四川大学;2005年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 知识超市公司
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号下次自动登录
现在的位置:
& 综合 & 正文
DriverStudio开发PCI设备DMA数据传输
驱动框架,包括总线类型,地址空间,中断源,DMA资源,以及IOCTL(i/o控制)的定义等等。详细情况可参看DriverStudio的帮助文档,以下主要介绍如何用DriverWorks编写DMA方式的驱动程序。
操作。封装了三个类:KDmaAdapter, KDmaTransfer和KCommonCmaBuffer。 KDmaAdapter类用于建立一个DMA适配器。说明DMA通道的特
类用于控制DMA传输: KCommonCmaBuffer类用于申请公共缓冲区。
类“由于硬件或者缓冲区大小的限制。将一个DMA请求分段进行。为每个段提供了一个传输段描述符数组,当设备不支持分散/集中时,这个数组中的描述符只有一个。每个描述符包含一个物理地址和相应的字节数。其
通过封装,隐藏了映射寄存器的操作,简化了编程。
的驱动编程步骤如下:
类的适配器对象,并且在启动设备的时候对其初始化,正确的建立适配器描述符(DEVICE_DIS—CRItrflON),说明是否为总线主设备、是否支持分散/集中以及总线类型等特征,详细定义参考DDK文档。
类的对象。可在全局范围内静态定义,也可定义为驱动程序基类的成员变量,或者在需要时在内存堆上分配。进~TDMA传输的设备使用Queuelrp串行IRP,于是DMA传输通常在成员函数Startlo中初始化,同时定义一个DMA回调例程(作为KDmaTransfer类初始化成员函数的一个参数)。
回调例程。如前所述,KDmaTransfer类的一个重要功能就是根据硬件或者缓冲区大小的限制将一个传输分解成段。每当准备传输一个新段时,KDmaTransfer的对象将通知驱动程序调用回调例程。回调函数的原型typedef DMAREADY— CALLBACK指定, 通常使用宏DEVMEM—BER— DMAREADY,声明回调函数为驱动程序基类的成员函数。调函数首先检查传输是否完成。调用成员函数BytesRemaining,如果返回为0, 回调函数将调用成员函数Terminate,完成相应的IRP。否则,回调函数继续传输。
段传输结束的代码。一段传输结束,通常硬件以一个DMA中断通知系统。在中断服务例程中判断是否为DMA中断,如果是,就请求DPC (延迟调用过程)。在DPC中,驱动程序必须调用成员函数Continue通知传输对象此段传输完成。这个成员函数按照需要清空缓冲区,更新传输状态。如果整个传输并没有完成。则建立下一段传输调用DMA回调例程。
生成驱动程序框架共需要11个步骤,其中比较重要的包括:
.并在Device ID和Vendor ID中分别输入设备号和厂商号.还需要填入PCI Subsystem ID和PCI Revision ID。这些ID都保存在PCI配置寄存器PCR中。3.1版中的C DriverWizard提供一个PnP View可以查看这些值,另外也可以使用PCI Tree等免费软件查看。
中添加资源.在Name中输入变量名.在PCI Base Address中输入0—5的序列号.0—5和BARO—BAR5一一对应。实例中有两个IoPort资源。在设置中断对话框中.在name栏写人中断服务程序的名称,选中创建中断服务程序ISR(Interrupt Service Route),选中创建延迟程序调用DPC(Deferred Processing Call),选中Make ISR/DPC class functions。
选取读写方式.用于描述与I/O操作相关的数据缓冲区。实例中不需要传送大量数据,因此采用Buffered方式。
中包含了系统分配的两种资源配置信息,一种是原始的资源分配信息(AllocatedResources),一种是转换后的资源分配信息(AllocatedResources Translated)。因为I/O总线与CPU在寻址物理硬件的方式上不同.所以存在着两种资源列表。在WDM出现之前.内核模式驱动程序从注册表、PCI配置空间、或其它地方获取原始的资源值,并通过调用诸如HalTranslateBusAddress或HalGetInterruptVector函数转换这些数值。现在。接收和转换工作全部由PnP
驱动程序需要做的仅是从设备启动IRP中获取这些资源。
访问基地址)和BAR2(PCI本地空间0基地址)两个地址有效。定义和初始化如下:
个参数为I/O口对应的基地址.用来转换成特定端口资源的序数。在将硬件中断与中断服务例程连接之前.先要关闭PCI采集卡中断.方法是将9052控制芯片I/0基地址偏移0x4Ch的INTCSR寄存器中断使能位(第6位)屏蔽。方法如下:
其中PLX9052 INTCSR、PLX9052 INTCSR IE定义分别为
初始化并连接中断。
一6038中定义设置中断模式为下降沿触发.设置通道一为读方式,具体操作是向PCI一6038特定偏移的地址中写入特定的控制字节,最后开中断。
控制芯片INTCSR寄存器的LINTil Status(第2位)的值,若为1,表明中断有效;否则,直接返回。
&PLX9052_INTCSR_LINTlE))
的中断运行级上.因此ISR中使用的代码和数据必须存在于非分页内存中。此外。ISR能调用的内核模式函数有限。为了提高系统性能,ISR应该尽可能快地执行。基本上.只做服务硬件所需的最小量的工作.然后立即返回。如果有额外的工作需要做,应该交给DPC来完成。
码发送的GPS时间.其余工作由DPC完成,包括清除中断、通知用户应用程序时间采集完成等。
一6038提供了中断清除寄存器.因此只要向该寄存器中写入0x00.就可以清除当前中断。在中断操作过程中,plx9052控制寄存器中的INTCSR寄存器中,除了INTl(bit#8)和INT2(bit#9)使能外,其余bit#0一bit#6均保持默认设置。
作为调试工具.基本过程如下:
加载驱动程序水.Bins文件,然后激活SoftIce,设置断点跟踪调试;
命令产生虚拟中断,单步跟踪中断服务例程;
码发送频率.检验驱动程序响应速率。在驱动程序的调试过程中,经常出现系统“死机”、“蓝屏”等现象,这些情况可能由于内存访问分页错误、寄存器非法操作等因素造成。
的配置,但是在驱动程序设计过程中,一般会遇到DMA传输、内存映射、文件读写、中断处理等问题。在此模块,应注意的是读写访问和内存映射问题,对于局部总线地址进行的读写访问,它的部分驱动程序如下:
,plength);
种内存映射的方式:
/O管理器先创建一个与用户模式数据缓冲区大小相等的系统缓冲区,驱动程序将使用这个系统缓冲区工作。I/O管理器就负责在用户模式缓冲区与系统缓冲区之间复制数据;
/O管理器锁定了包含用户模式数据缓冲区的物理内存页,并创建一个称为MDL(内存描述符表)的辅助数据结构来描述锁定页。本模块采用这种方式;
/O管理器把调用者的输入缓冲区的地址放IRP当前的I/O堆栈单元的Parameters.DeviceIoContr01.TypelnputBuffer域中,把输出缓冲区的地址存放到IRP UserBuffer域中。
获取中断使能寄存器的值,如值为0,则通过WriteFile往该寄存器写入1打开中断。若想关闭中断,先ReadFile获取中断使能寄存器的值,如值为1,则通过WriteFile往该寄存器写人0关闭中断。
和WriteFile并不能直接访问设备,它们是通过驱动程序的read和write例程来访问设备的。
例程相似,只是获得缓冲区地址的语句和访问设备的语句不同。
//往端口写一个字节数据,
端口的访问
,0)函数接到“通知”,开始利用DeviceloControl函数对设备发起读操作。
,NULL,0,DataBuffer,IOCTRL_OUTBUF_SIZE,&nOutput,NULL)
时,并不是直接去读设备,而是利用函数SynchronizeInterrupt(&m_Irq,LinkTo(ReadDataFromDevice),PIRP(I))调用中断同步例程ReadDataFromDevice。
,Count);
//当完成读操作后,给m_bNotifyApp赋值为TRUE,当数据采集卡再次发出中断时,在中断服务例程及延时处理例程中重新设置事件。
启动例程中初始化KInterrupt和KDeferredCall类实例,还需要声明中断服务例程和延迟过程调用例程。当创建驱动程序框架时,若有中断资源,这些都是自动生成的。图1是中断处理流程图。
;若是,进行必要的处理,请求一个DPC,然后返回TRUE。
//判断是否为本设备产生的中断
//清除中断
//请求延迟过程调用
,&Notify);
//调用中断同步例程
//设置事件
函数创建自动重置事件,并调用DeviceIoControl函数把事件的句柄传递给驱动程序。PCI接口芯片s5935及其应用
摘要:s5935是AMCC公司生产的 PCI接口芯片,可实现直通(PASS-THRU)、邮箱(MAILBOX)、FIFO/DMA三种工作方式。文章简要介绍了这三种工作方式,并给出了s5935的WDM驱动编程。
关键词:PCI WDM s5935
PCI局部总线由于具有高速率以及支持即插即用等特点在微机系统中得到广泛应用。利用PCI接口芯片可以方便地设计PCI规范板卡。s5935是AMCC公司s59xx系列PCI接口芯片中的一种。该芯片功能强大,可用于高速数据采集处理卡、视频加速卡以及多媒体通信等。其主要特点如下:
●兼容PCI2.1规范,可实现PCI总线主设备和从设备功能;
●具有高达132MB/s的传输速率;
●支持8/16/32位外加用户总线;
●可选nvRAM和扩展BIOS;
●具有直通、邮箱、FIFO/DMA三种工作方式;
●适于32位5V电平PCI卡,具有160脚PQFP和208脚TQFP两种封装。
1 s5935的结构
图1所示是s5935的内部结构框图。s5935中的寄存器分为PCI配置寄存器组和操作寄存器组。前者可从nvRAM的40h~7fh位载入,也可以是默认值,s5935只能实现首部类型0和单功能设备配置。后者用于s5935与外加总线的操作配置和数据传输(如中断控制,邮箱入口等),从PCI总线访问时称为PCI操作寄存器组,地址为PCI操作寄存器基址加各寄存器偏移地址;而从外加总线访问时,称为外加总线操作寄存器组,可通过ADR[6:2]选择。
s5935的引脚接口分为PCI总线接口、外加总线接口和nvRAM接口。外加总线接口包括中断、复位输出、数据总线及控制引脚,这三种工作方式各有其独立的控制引脚。
2 s5935的工作方式
s5935具有直通、邮箱和FIFO三种工作方式,其中直通方式(Pass-Thru)可以实现PCI总线对外加总线的实时读写,它可对PCI总线读写时序直接响应;邮箱方式(MAILBOX)可通过PCI总线与外加总线的一方读/写邮箱,另一方接收中断/查询并写/读邮箱;以上两种工作方式只能在s5935作为PCI从设备时实现。 而FIFO方式则可使其作为总线主设备来启动DMA数据传输。在典型的PCI数据处理卡中,可用s5935作为PCI接口通过DSP处理数据,同时使用FPGA完成DSP与s5935间的逻辑转换;邮箱或直通方式用于主机和DSP之间的命令和参数传输,FIFO/DMA方式则可完成高速批量数据传送。下面是s5935的PCI配置及三种工作方式在Win-dows2000下的WDM驱动程序(DDK编程)。
2.1 s5935的PCI配置
PCI配置寄存器格式可参考PCI协议文档。如果不使用nvRAM加载s5935的PCI配置寄存器,将无法实现FIFO和直通工作方式。PCI配置寄存器中的基址寄存器BASE ADDRESS 0对应于PCI操作寄存器的基地址;BASE ADDRESS 1至4则分别对应于四个直通通道地址(无nvRAM时默认为0)。上述基址寄存器的内容可由系统在初始化时查询以确定映射方式(I/O或内存映射)、直通通道位宽和地址范围,然后由系统写入物理地址,这种具体配置方法比较麻烦(见参考文献1和2)。同时,nvRAM的45h字节的第5、6位必须置0以使能FIFO操作。
2.2 直通方式
s5935提供有四条直通通道,可以实现单周期和突发数据传送。在主机驱动程序中,读写直通通道地址可实现数据传输,如:
WRITE PORT USHORT?BASE ADDRESS 3+OFF-SET ADDRESS,DATA?;
s5935外加总线接口部分相关引脚:
PTATN: 输出,直通周期开始;
PTNUM?1?0?: 输出,指示四个直通通道之一;
PTBE?3?0?: 输出,DQ?31?0?字节使能;
PTWR: 输出,读写选择;
PTADR: 输入,OFFSET ADDRESS从直通地址寄存器驱动至DQ?31?0?;
PTRDY: 输入,表明外加总线完成传输;
ADR?6?2?: 输入,选择外加操作寄存器;
2.3 邮箱方式
s5935有输入、输出邮箱各四个,多采用中断/查询方式传输数据,外加总线则可由ADR?6:2?和IRQ等引脚实现。中断控制/状态寄存器用于实现中断的使能配置、查询和清除,邮箱状态寄存器可查询邮箱状态,通过控制/状态寄存器可使邮箱复位。还可以通过EA?0?8?脚直接读写外加总线4号输出邮箱的第三字节,这也是直连外部中断的一种简单方法。在Windows2000下,其典型WDM驱动程序中断相关部分模型如下(地址I/O映射):
AddDevice()//加载设备
IoInitializeDpcRequest();
DispatchPNP ? ? //
case CmResourceTypeInterrupt:
GetInterruptRes??; //取得中断资源
WRITE PORT ULONG(BASE ADDRESS 0+INTCSR,DISABLE INT DWORD) ;//禁止中断
IoConnectInterrupt???
DeviceControl()//实现应用程序中DeviceIOCon-trol函数对设备的读写
switch?CONTROLCODE??……
case ENABLE INTERRUPT: //使能和配置
WRITE PORT ULONG(BASE ADDRESS 0+INTCSR,INT MASK DWORD);
case WRITE DATA:
WRITE PORT ULONG(BASE ADDRESS 0+INCOMING MBOX2 ADDRESS,DATA);
InterruptHandler? ? //中断服务函数
DWORD= READ PORT ULONG(BASE AD-DRESS 0+INTCSR)?//查询是否使本设备产生的中断及本设备以何种方式产生中断
DWORD=READ PORT ULONG(BASE AD-DRESS 0+PCI INCOMING MBOX2);//假设2号邮箱收到数据产生此中断
WRITE PORT ULONG(BASE ADDRESS 0+INTCSR,DEASSERT INTERRUPT WORD);//清中断
IoRequestDpc();//调用DpcForISR函数,完成可推迟的中断服务
DpcForISR? ? ?……?
2.4 FIFO方式
s5935的两条FIFO,分别对应于读、写外加总线,它们可根据读写方向由s5935自动选择。当外加总线作为主控设备时,使能AMREN(外加总线主控读使能)和AMWEN(外加总线主控写使能)引脚即可启动FIFO/DMA传输,同时可通过相应的引脚或寄存器得到FIFO状态并复位FIFO。当从PCI总线进行s5935主控FIFO/DMA传输时,首先应在中断配置寄存器中写endian格式和中断方式,然后写地址和计数寄存器,最后写PCI控制/状态寄存器(MCSR)并启动DMA, 在Windows2000下的驱动程序步骤如图2所示,具体编程可参考邮箱方式。
Related Articles
06/09 09:15
摘要:PCI9052是PLX公司继PCI9050之后新推出的一种低成本的PCI总线目标接口芯片,它传输速率高,数据吞吐量大,可避免用户直接面对复杂的PCI总线协议.文中主要介绍了PLX公司的PCI总线目标接口芯片的功能与应用,并给出了具体的应用设计实例. 目前,PCI总线已成为新一代个人计算机的标准总线,它是一种高性能的32/64位地址数据复用总线,总线时钟频率的0-33MHz.它不象ISA异步总线那样把地址寻址和数据读写控制信号都交由微处理器产生,而是一种独立于处理器的同步总线,可以支持猝发传
11/21 08:06
作者Email:
摘要:PCI9050是PLX公司推出的一种低成本的PCI协议从模式接口芯片.本文主要介绍了它的功能.特点及应用,说明了它在使用时应该注意的一些问题,最后给出了一个具体的应用实例. 关键词:PCI总线 局部总线 PCI9050 1. 引言 PCI总线是目前应用最广泛.最流行的一种高速同步总线,具有32bit总线宽度,总线时钟频率为0~33MHz,最大传输速率可以达到132Mbyte/s,远远大于ISA总线5Mbyte/s的速度.而且,它不象IS
06/02 04:13
随着数字化广播电视技术的迅速发展和基于MPEG-2标准的图像压缩和复用技术的完善,利用PC对大容量信息的处理变得日益重要,如基于PC的软复用器的实现,使得通过PC接收DVB(数字视频广播)码流已逐渐成为一项不可替代的多媒体数据接收技术.因此,设计基于PC平台的DVB码流接收卡是数字广播电视发展的需要. 由于DVB-ASI信号的平均传输速率为270 Mbps,而DVB传输流又要求保证接收的实时性,因此本文选择了PCI总线.33MHz.32位的PCI总线的数据传输速率最高可达133MBps, 完全可
09/04 05:27
目前中国国内&金税工程&经过几年的推广实施,在全国范围内己取得了巨大的经济效益和社会效益,在金税工程中,最重要的是对于开票系统数据的保护,为了防止开票系统受病毒感染或被人为地破坏,绝大部分的单位都被要求专机专用,从而来确保系统的安全和稳定. 但随着&金税工程&的深入推广,也暴露出了一些急待解决的问题∶首先,由于国税局对于企业的防伪税控开票系统有&专机专用&的要求,致使企业花费一万多元购买的防伪税控设备及计算机只能用于开具增值税发票巨大的资源浪费:
09/24 08:21
0 引言 在信息化时代的今天,计算机技术的飞速发展,给人们的生产和生活带来了巨大便利,以前复杂的工作,现在只要单击鼠标即可完成,因此,计算机已经成为人们日常工作和生活的一部分,人们对计算机的依赖程度越来越高,没有计算机的生活简直难以想象.随着计算机在生产和生活中占剧比重的加大,信息安全问题也显得突出重要,失泄密案件时有发生.小到企业商业机密被窃取,给企业造成巨大的经济损失:大到国家安全和军事机密被窃取,给人民的生命财产安全带来严重威胁.在铁路军交管理系统中,对军列的调度是采用密码管理的,这些密码
02/28 09:43
摘要:介绍了如何利用接口芯片PCI 9030制作PCI总线接口卡,实现由ISA接口向PCI接口的转换.文中从实例出发,详细阐述了接口卡的硬件设计.EEPROM的配置.驱动程序的编写等方面的内容. 关键词:PCI总线:PCI9030:寄存器:驱动程序 1.引言 作为对PCI总线在仪器领域的扩展,PXI总线由于具有高性能.低价位等特点,使其在数据采集.工业自动化系统.计算机机械观测系统和图像处理等方面获得了广泛应用. 但是PXI总线协议十分复杂,其接口的实现比ISA困难得多,直接为它设计相匹配的数字
04/23 16:00
摘要:CH361是一个简便易用的PCI总线通用接口芯片.可用于制作低成本的PCI总线的计算机板卡,同时也可以利用它把原来的ISA总线卡移植到PCI总线上.文中在介绍了CH361的特点.功能和工作模式的基础上,重点介绍了CH361与PCI总线.存储器.扩展ROM和I/O端口的接口电路. 关键词:PCI总线:CH361:I/O端口映射:扩展ROM映射 1 主要特点 CH361是一个简便易用的PCI总线通用接口芯片.该器件在本地端提供了通用的8 位数据总线.由于其支持I/O 端口映射和扩展ROM 映射
05/12 03:02
内容摘要:利用PCI专用接口芯片PCI9052和DEI总线收发芯片设计了ARINC429接口卡,采用DSP作为主控CPU完成数据自动处理,用双口RAM完成DSP与PCI总线数据交换.实验表明:所设计的接口卡传输效率高,可靠性好,开发简单. 关键词:PCI总线:ARINC429总线:DSP:双口RAM:WinDriver 在现代军.民用飞机和导弹上,系统间需要传输大量信息,随着数字技术的发展和微型电子计算机的出现,越来越多的航空电子设备已经采用航空数据总线进行通讯.其中ARINC4
10/19 17:40
PCI局部总线不仅是目前最新的计算机总线,而且是一种兼容性最强.功能最全的计算机总线.它可同时支持多组外围设备,而且不受制于处理器,为CPU及高速外围设备提供高性能.高吞吐量.低延迟的数据通路.图形用户界面(GUI).高清晰度电视(HDTV).三维视频多媒体显示等新技术的发展以及高速通讯系统的广泛需求使PCI具有良好的应用前景.针对这种趋势,国外许多芯片厂家设计生产了各种各样的PCI专用集成电路. 目前国内系统厂家的PCI总线接口一般采用国外的PCI专用芯片,如TUNDRA公司的Qspan.PL

我要回帖

更多关于 dma通道 的文章

 

随机推荐