当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]摘要:详细地分析了PC/AT机系统的DMA(直接存储器存取)控制器结构及其传输方式,并给出了C语言编程实例。DMA是英文DiretMemorAccess的缩写,即直接存储器存取,DMA传输是PC机

摘要:详细地分析了PC/AT机系统的DMA(直接存储器存取)控制器结构及其传输方式,并给出了C语言编程实例。

DMA是英文DiretMemorAccess的缩写,即直接存储器存取,DMA传输是PC机与外设

高速数据交换的重要方法,其一个典型应用是应用于声卡的录放音过程中,录音时,CPU首先设置好声卡和DMA的传输参数。当启动DMA数据传输(即开始录音)后,即由DMA控制器DMAC)按管PC总线进行数据传输,每次传输结束后,DMA控制器便归还总线控制权,并申请CPU中断,告之数据传输完毕,然后由中断服务程序将DMA数据缓冲区中数据取走并准备下次数据传输(即录音),由于在传输过程中无需CPU干沙,因此在录音期间CPU可以执行其它程序,这样既极大地提高了数据传输速度又提高了CPU的执行效率,正是由于DMA的这些优点,所以目前在工业控制领域的数据采集过程中都大量地采用了DMA数据传输方法。但是,由于DMA编程的资料较少,因此DMA编程一直是硬件编程方面的一个难点,本文将以C语言为例详细介绍DMA编程方法。

1、PC/AT的DMA系统特点

PC/AT使用两片8237A-5芯片组成级连结构,每片8237A-5芯片内部有4个独立的通道,分别以通道O-通道7表示。但由于通道4被用作第0片和第1片的级连,因此PC/AT系统-一共能提供7个通道的DMA数据传输,在这7个通道中,除通道2作为软盘DMA传输服务,通道0留给SDIC通信透配器外,其余通道0,1,3,5.6和7均留作扩充使用,在这7个DMA通道中,通道0~3按8位数据最大传输64KB设计;面通道5-7按16位数据最大传输64K字(128KB)设计,它们都支持寻址16MB空间的能力。

2、DMA通道地址产生方式

8237A-5只能管理16位地址(AI5-A0),但为了寻址PC/AT机的24位地址空间寻址,在DMA系统中将PCAT机的16M空间分为多个物理页面,从面保证了在DMA周期内只需16位地址寻址,因此DMA系统中为每个通道设置了一个DMA页面寄存器,用以存放此物理页面号。

对于8位传输通道0~3,由于芯片的地址使用字节边界,即A15-A0为16位长的字节地址,因此每页64KB,而对于16位传输通道5-7,由于芯片的地址使用字边界,即A16-AI(A0固定为0)为16位长的字地址,因此每页可达128KB,计算地址偏移和计数个数时尤其应该性意两者区别,对于DOS管理下的1M常规内存,页面分布图1所示:

从DMA通道地址产生方式,我们可以看出DMA控制器仅能在-个物理页面内传输数据,因此当数据跨页面存放时,我们必须分多次对其进行数据传输,从面保证每次传输时数据都在同一页面内。

 


3、DMAI/O地址

DMA控制器(DMAC)共有16个端口地址和4个页面寄存器地址,共分为两大类:控制DMA状态及设置数据地址。

在设置DMA传输数据时,要用到3个端口,分别是:页面寄存器,地址(偏移)寄存器和数据计数器,表1给出了每个通道及其相应1/O口地址。

 


在控制DMAC的状态时,要用到另外3个端口,分别是:方式寄存器,屏蔽寄存器和清除寄存器。

(1)方式寄存器(地址为0Bh或D6h,分别为8位通道和16位通道地址)

此方式寄存器用于设置DMA的数据传输方式,其控制字格式如图2所示。

 


例如:我们经常用到的两个方式字为(假定选DMA通道1):

45h:DMA写(即内存一1/0卡)

49h:DMA读(即1/0卡一内存)

(2)屏戴寄存器(地址为0Ah或D4h,分別为8位通道和16位通道地址)

此屏蔽寄存器用于使某个DMA通道屏蔽或开放DMA请求,其控制字格式如图3所示。

 


(3)清除寄存器(地址为0Qh或D8h,分别为8位通道和16位通道地址)

当输出0到此端口时,将停止由屏蔽寄存器(地址为0Ah或D4h)所选定的DMA通道所有正在进行的过程。DMA编程

4、DMA编程

通常,对某个DMA通道编程的步骤如下:

(1)保存原有中断向量,设置新中断向量,编写中断服务程序,其主要内容为下一次DMA传输编程,输出EO(中断结束)至中断控制器;或者是直接转出(当不需再次DMA传输时);

(2)DMAC初始化,包括设置方式控制字,屏数控制字及本次传输数据的页面号,,页面地址偏移及传输数据个数,必须特别注意的是DMAC的数据计数器比要传输的实际个数要少1;

(3)开放该通道允许DMA中断请求;

计数等,为考虑通用性,使用了目前普遍使用

(4)在程序结束时恢复中断向量。

笔者已编制了一个对DMA进行编控制的的TurboC2.0编程,程序也可以不加修改地使程序,此程序包括几个有关DMAC编程的通用用于BorlandC++系统中,程序中假设I/0卡函数,如DMAC控制块参数的获得,中断向量产生的硬件中断号是DREQ5,使用DMA通道及恢复设置,DMAC初始化,暂停DMA传输通道号1,读者在应用过程中应根据实际I/O卡提继续DMA传输,终止DMA传输,读取已传输供的硬件中断号及DMA通道号作相应修改。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭