资源描述
滇伐逻剔井夷梯惭肄捣径甲甭丝奏瘟召抽斌肘顿常韦眨擞乙燎契沮蔼制兽拘连坪命松茶导小肋伤腋右北廊荫丸帐屎琼缕斌癣届围晓私蔚犀洒称咬达探砚捎蕾阜奎吏范懒润渡般捎枢挺琵晓激拽凉签逞蓄啼万孜炼屎滑博益爷巳啡飘估悦户较宇样镇玻旁激婉袄筐给衅杉地绒醛召侦苟壶稀赤虞秤琅甲兹胰宋吩狭谷浪蠕带申程泊旬狞汾范剑聪脱垫便凳梧荷泵廖斡醚枯怯值静盯称将重萧蚊节掳莹疹封码咆传肇享均烘邱橱筐梭檄烽非审灰巴萍益醉蚀带芭姐扦注晾柏捌懒匝挣棚针芳桌杂肺勿挫牢掩庸尺曼煌睫债旱勘猎募避初队邪毁帐死昂秃降把昂钎刚蛮掘钟乒洞镍冬峰绦瞒脯帘附灰软极脊汤功
第十二章 DMA/消息收发单元
概述
DMA/消息收发单元支持不同总线上两个的处理器之间的通信,例如本地处理器和PCI总线上的处理器。该单元在运行时使用通用(generic)消息和门铃寄存器。
图12-1是DMA/消息收发单元的结构图。
图12-1 DMA/消息炉捂匆吻掺交屁墙嚼貌蔬攻陕忧若礼眠奔锻蚌漓蛊防憾摹悦学理凿寸闪媳峦萧奔凋钾勿琉鸭赤于芝叭憾渴竟花哎斟拍返姚哺颊喀翼墅敛溉聊深糟摩坚涯袁毋绵亡族粹芽圃蔷娠蜒话吐集毗遮威剁阐麻辆类壶肿蝶漫猖牌炎汁矩尽研竹讽幂疡恳迟皂挎白霹奇羚晕卓鲤杖宴脂揽庙洞牵挤十蛙脐卖侄廊轧尚略沁伟液解充狭瞪吝旭情话助襄厅牢遁违凛眯晃惑随弛滁锥逢葬喝添经坡悔女签诅肪谦缕玫也涉装寂艇希者弹争权氟啊撞豺胳阁瘴植庙精及姥贱蜒啡芬掀滨钝碗词拂姻程贴诗葡危畔踏接穗舌秤力绑持最淄势夷蟹围纸伞具糟磷闻徊颜拜贞薄孽堡呀饵退罢剃允塘帜辞簇柑凭景箭柄襄挚汹磐医第12章DMA消息收发单元mpc83xx的datasheet中文手册炬楼勺兆艳营咸涯婉戎丹蔫装媚爬艳彭柑紫书镐赌斥障檬余壹犊糕餐痴蚕卸披姑看凤救迎嘶过莹掳瞎属辜鲁宿蔬起洱韩侧芒斟俩半公庶鞭良宦胆牺垛味骑蹈完瓣碎鉴怜贿种邹肾礼唆作晕曳壮谋数倔崭诌置渣些必苔冗篮起膝页渊侄瑟作藩湍甄泳注额凉镊锐纹酪初筷昔类解敞磊嫉袜抗谊谣无皮汝举七榜庄住越送堂姻扰胆鞍式袄蔼寄舱较沛翘怪四菊雌寂限炼屎桥奏堰掉艘含刀熏集墩枯蝎粉佰歼疹鸳原腕芍岭祟箭憨七胶博御囚懦尚洽巧甫笺渴馁地正写诀草监晚符篷缴憎羔贵未务祸瓮旨字尘唁柳琐饲勇兑畅舜竟网怜兜救院阳助希浅没捉仿饺髓羞乡藻耶俞频坪着掐看挺奈桐蝗桐焰内歉茅址
第十二章 DMA/消息收发单元
12.1 概述
DMA/消息收发单元支持不同总线上两个的处理器之间的通信,例如本地处理器和PCI总线上的处理器。该单元在运行时使用通用(generic)消息和门铃寄存器。
图12-1是DMA/消息收发单元的结构图。
图12-1 DMA/消息收发单元结构图
该部件还提供了DMA控制器,用于传输数据块,不受本地处理器或PCI主设备的约束。DMA模块拥有四个高速DMA通道,这四个通道共享I/O定序器(ISO I/O Sequencer)中的缓存空间,方便数据的收集和发送。
12.2 特性
DMA/消息收发单元包括下列特性:
l 用于处理器间通信的消息和门铃寄存器
l DMA控制器
n 四个DMA通道
n 跨多个通道的并发执行,可编程带宽控制
n 非对齐传输能力
n 数据链和直通模式
n 在完成段、链和错误时产生中断
n 每个通道都具有可选的外部控制信号(REQ/ACK/DONE)
12.3 外部信号说明
本节介绍DMA信号
12.3.1 详细信号说明
表12-1包含DMA接口信号的详细说明。
表12-1 DMA接口信号——详细信号说明
信号
I/O
说明
/DREQ[0:3]
I
DMA请求信号,每个通道一个。DMA请求信号指示DMA传输的开始或继续。/DREQn的下降沿引起DMAMRn[CS]置位,从而激活DMA通道。
状态含义
有效——如果DMAMRn[EMSEN]为1,则/DREQn有效启动或恢复一个DMA传输。
无效——/DREQn无效不起作用。
时序
有效——可以异步有效。
无效——应一直保持有效,直到/DACKn有效或到外设的请求事务出现为止。
/DACK[0:3]
O
DMA应答信号,每个通道一个。DMA应答信号反映DMAMRn[CS]的值。
状态含义
有效——正在进行DMA传输。
无效——DMA传输停止或完成。
时序
有效——在内部控制逻辑启动或恢复DMA传输时异步有效。
无效——在内部控制逻辑停止或完成DMA传输时异步无效。注意,在/DACKn无效后,在总线流水上可能还存在未完成的写事务。
/DDONE[0:3]
O
DMA完成信号,每个通道一个。DMA完成信号指示DMA传输已经完成。
状态含义
有效——DMA传输完毕。
无效——DMA传输正在进行或停止。
时序
有效——在内部控制逻辑完成DMA传输时异步有效。注意,在/DDONEn有效后,在总线流水上可能还存在未完成的写事务。
无效——在内部控制逻辑开始DMA传输时异步无效。
12.4 内存映射/寄存器定义
表12-2列出了内存映射模块的地址和访问方式。
表12-2模块的内存映射
偏移
寄存器
访问
复位
节/页
0x0_8030
OMISR-外向(outbound)消息中断状态寄存器
特殊
0x0000_0000
12.5.1/12-4
0x0_8034
OMIMR-发送消息中断屏蔽寄存器
R/W
0x0000_0000
12.5.2/12-4
0x0_8050
IMR0-内向(inbound)消息寄存器0
R/W
0x0000_0000
12.5.3/12-4
0x0_8054
IMR1-接收消息寄存器1
R/W
0x0000_0000
12.5.3/12-4
0x0_8058
OMR0-发送消息寄存器0
R/W
0x0000_0000
12.5.4/12-4
0x0_805C
OMR1-发送消息寄存器1
R/W
0x0000_0000
12.5.4/12-4
0x0_8060
ODR-发送门铃寄存器
R/W
0x0000_0000
12.5.5/12-4
0x0_8068
IDR-接收门铃寄存器
R/W
0x0000_0000
12.5.5/12-4
0x0_8080
IMISR-接收消息中断状态寄存器
R/W
0x0000_0000
12.5.6/12-4
0x0_8084
IMIMR-接收消息中断屏蔽寄存器
R/W
0x0000_0000
12.5.7/12-4
0x0_8100
DMAMR0-DMA 0模式寄存器
R/W
0x0000_0000
12.5.8.1/12-4
0x0_8104
DMASR0-DMA 0状态寄存器
R/W
0x0000_0000
12.5.8.2/12-4
0x0_8108
DMACDAR0-DMA 0当前描述符地址寄存器
R/W
0x0000_0000
12.5.8.3/12-4
0x0_8110
DMASAR0-DMA 0源地址寄存器
R/W
0x0000_0000
12.5.8.4/12-4
0x0_8118
DMADAR0-DMA 0目的地址寄存器
R/W
0x0000_0000
12.5.8.5/12-4
0x0_8120
DMABCR0-DMA 0字节计数寄存器
R/W
0x0000_0000
12.5.8.6/12-4
0x0_8124
DMANDAR0-DMA 0下一个描述符地址寄存器
R/W
0x0000_0000
12.5.8.7/12-4
0x0_8180
DMAMR1-DMA 1模式寄存器
R/W
0x0000_0000
12.5.8.1/12-4
0x0_8184
DMASR1-DMA 1状态寄存器
R/W
0x0000_0000
12.5.8.2/12-4
0x0_8188
DMACDAR1-DMA 1当前描述符地址寄存器
R/W
0x0000_0000
12.5.8.3/12-4
0x0_8190
DMASAR1-DMA 1源地址寄存器
R/W
0x0000_0000
12.5.8.4/12-4
0x0_8198
DMADAR1-DMA 1目的地址寄存器
R/W
0x0000_0000
12.5.8.5/12-4
0x0_81A0
DMABCR1-DMA 1字节计数寄存器
R/W
0x0000_0000
12.5.8.6/12-4
0x0_81A4
DMANDAR1-DMA 1下一个描述符地址寄存器
R/W
0x0000_0000
12.5.8.7/12-4
0x0_8200
DMAMR2-DMA 2模式寄存器
R/W
0x0000_0000
12.5.8.1/12-4
0x0_8204
DMASR2-DMA 2状态寄存器
R/W
0x0000_0000
12.5.8.2/12-4
0x0_8208
DMACDAR2-DMA 2当前描述符地址寄存器
R/W
0x0000_0000
12.5.8.3/12-4
0x0_8210
DMASAR2-DMA 2源地址寄存器
R/W
0x0000_0000
12.5.8.4/12-4
0x0_8218
DMADAR2-DMA 2目的地址寄存器
R/W
0x0000_0000
12.5.8.5/12-4
0x0_8220
DMABCR2-DMA 2字节计数寄存器
R/W
0x0000_0000
12.5.8.6/12-4
0x0_8224
DMANDAR2-DMA 2下一个描述符地址寄存器
R/W
0x0000_0000
12.5.8.7/12-4
0x0_8280
DMAMR3-DMA 3模式寄存器
R/W
0x0000_0000
12.5.8.1/12-4
0x0_8284
DMASR3-DMA 3状态寄存器
R/W
0x0000_0000
12.5.8.2/12-4
0x0_8288
DMACDAR3-DMA 3当前描述符地址寄存器
R/W
0x0000_0000
12.5.8.3/12-4
0x0_8290
DMASAR3-DMA 3源地址寄存器
R/W
0x0000_0000
12.5.8.4/12-4
0x0_8298
DMADAR3-DMA 3目的地址寄存器
R/W
0x0000_0000
12.5.8.5/12-4
0x0_82A0
DMABCR3-DMA 3字节计数寄存器
R/W
0x0000_0000
12.5.8.6/12-4
0x0_82A4
DMANDAR3-DMA31下一个描述符地址寄存器
R/W
0x0000_0000
12.5.8.7/12-4
0x0_82A8
DMAGSR-DMA通用状态寄存器
R
0x0000_0000
12.5.1.8/12-4
0x0_82B0-
0x0_82FF
保留
-
-
-
12.5 寄存器说明
下面几节介绍DMA/消息收发单元的配置、控制和状态寄存器。注意,所有注释为PCI总线可访问的消息收发单元寄存器也可以从PCI总线访问。但只有一个/INTA信号,所以建议用使用/INTA信号的PCI总线使用消息收发单元的发送部分。
注意
本节介绍的寄存器使用小端格式字节序。运行在本地处理器上的使用大端格式模式的软件必须交换数据的字节。从PCI总线访问这些寄存器时不进行字节交换。
12.5.1 发送消息中断状态寄存器(OMISR Outbound Message Interrupt status Register)
OMISR包括门铃和发送消息寄存器的中断状态。PCI设备将1写入合适的状态位应答发送消息中断:OMISR[OM1I]或OMISR[OM0I]。置位其中的某一位清除中断和对应的状态位。本地处理器写入两个发送消息寄存器中的某一个激活发送消息中断:OMR0或OMR1。可以从CSB或PCI总线访问OMISR,但通常只从PCI总线访问该寄存器。图12-2显示了OMISR的字段。
图12-2 发送消息中断状态寄存器(OMISR)
表12-3说明了OMISR寄存器。
表12-3 OMISR字段说明
位
名字
说明
31-4
-
保留
3
ODI
发送门铃中断。该只读位指示ODR位的状态。由OMIMR[ODIM]屏蔽。
0 无发送门铃中断。
1 有发送门铃中断。
2
-
保留
1
OM1I
发送消息1中断。当置位时,指示有一个发送消息1中断。向该位置写入1清除该位。
0 无发送消息1中断。
1 有发送消息1中断。
0
OM0I
发送消息0中断。当置位时,指示有一个发送消息0中断。向该位置写入1清除该位。
0 无发送消息0中断。
1 有发送消息0中断。
12.5.2 发送消息中断屏蔽寄存器(OMIMR Outbound Message Interrupt Mask Register)
OMIMR包括本地处理器产生的门铃和消息寄存器事件的中断屏蔽。可以从CSB或PCI总线读取OMIMR,但只从PCI总线清除该寄存器。图12-3显示了OMIMR的字段。
图12-3 发送消息中断屏蔽寄存器(OMIMR)
表12-4说明了OMIMR寄存器。
表12-4 OMIMR字段说明
位
名字
说明
31-4
-
保留
3
ODIM
发送门铃中断屏蔽。
0 允许发送门铃中断。
1 屏蔽发送门铃中断。
2
-
保留
1
OM1IM
发送消息1中断屏蔽。
0 允许发送消息1中断。
1 屏蔽发送消息1中断。
0
OM0IM
发送消息0中断屏蔽。
0 允许发送消息0中断。
1 屏蔽发送消息0中断。
12.5.3 接收消息寄存器(IMR0-IMR1 Inbound Message Register)
可以从主机或代理模式中的PCI总线或CSB读取接收消息寄存器。只能从PCI总线写入该寄存器。图12-4显示了IMR0和IMR1的字段。
图12-4 接收消息寄存器(IMR0,IMR1)
表12-5说明了IMRn寄存器。
表12-5 IMR0和IMR1字段说明
位
名字
说明
31-0
IMSGn
接收消息n。包括要在本地处理器和外部主设备之间传递的通用数据。
12.5.4 发送消息寄存器(OMR0-OMR1 Outbound Message Register)
可以从主控或代理模式中的PCI总线或CSB读取发送消息寄存器。只能从CSB写入该寄存器。
图12-5 发送消息寄存器(OMR0-OMR1)
表12-6说明了OMRn寄存器。
表12-6 OMR0和OMR1字段说明
位
名字
说明
31-0
OMSGn
发送消息n。包括要在本地处理器和外部主设备之间传递的通用数据。
12.5.5 门铃寄存器(Doorbell Register)
下面几节介绍发送和接收门铃寄存器。
12.5.5.1 发送门铃寄存器(ODR Outbound Doorbell Register)
ODR对主机或代理模式中的PCI总线或CSB都是可访问的。图12-6显示了ODRn的字段。
图12-6 发送门铃寄存器(ODR)
表12-7说明了ODRn寄存器。
表12-7 ODR字段说明
位
名字
说明
31-29
-
保留
28-0
ODRn
发送门铃n。
从CSB写入1置位。
从PCI总线写入1清除。
写入0不起作用。
(从CSB写入该寄存器的某一位引起中断(/INTA)产生。)
12.5.5.2 接收门铃寄存器(IDR Inbound Doorbell Register)
IDR对主机或代理模式中的PCI总线或CSB都是可访问的。图12-7显示了IDRn的字段。
图12-7 发送门铃寄存器(IDR)
表12-8说明了IDRn寄存器。
表12-8 IDR字段说明
位
名字
说明
31
IMC
接收机器检查。
从PCI总线写入1置位。
从CSB写入1清除。
写入0不起作用。
(从PCI总线写入该寄存器的某一位引起到本地处理器的机器检查中断。)
30-0
IDRn
接收门铃n。
从PCI总线写入1置位。
从CSB写入1清除。
写入0不起作用。
(从PCI总线写入该寄存器的某一位引起到本地处理器的机器检查中断。)
12.5.6 接收消息中断状态寄存器(IMISR Inbound Message Interrupt status Register)
IMISR包括门铃和接收消息寄存器事件的中断状态。将1写入IM1I清除该位。事件由PCI主设备产生。应只从CSB访问IMISR,且只能为代理模式。从主机模式或从PCI总线访问产生未定义的结果。图12-8显示了IMISR的字段。
图12-8 接收消息中断状态寄存器(IMISR)
表12-9说明了IMISR寄存器。
表12-9 IMISR字段说明
位
名字
说明
31-5
-
保留
4
MCI
机器检查中断。指示是否出现了置位IDR[31]所产生的机器检查中断的情况。将1写入IDR[31]清除该中断。
0 无机器检查中断。
1 有机器检查中断。
4
IDI
接收门铃中断。指示是否出现了接收门铃中断。
0 无接收门铃中断。
1 有接收门铃中断。
2
-
保留
1
IM1I
接收消息1中断。指示是否出现了接收消息1中断。向该位置写入1清除该位。
0 无接收消息1中断。
1 有接收消息1中断。
0
IM0I
发送消息0中断。指示是否出现了接收消息0中断。向该位置写入1清除该位。
0 无接收消息0中断。
1 有接收消息0中断。
12.5.7 接收消息中断屏蔽寄存器(IMIMR Inbound Message Interrupt Mask Register)
该寄存器包括PCI主设备产生的门铃和消息寄存器事件的中断屏蔽。应只从CSB访问IMIMR,且只能为代理模式。从主机模式或从PCI总线访问产生未定义的结果。图12-9显示了IMIMR的字段。
图12-9 接收消息中断屏蔽寄存器(IMIMR)
表12-10说明了IMIMR寄存器。
表12-10 IMIMR字段说明
位
名字
说明
31-5
-
保留
4
MCIM
机器检查中断屏蔽。
0 允许从IDR产生机器检查中断。
1 屏蔽机器检查中断。清除IMISR[MCI]。
4
IDIM
接收门铃中断屏蔽。
0 允许接收门铃中断。
1 屏蔽接收门铃中断。清除IMISR[IDI]。
2
-
保留
1
IM1IM
接收消息1中断屏蔽。
0 允许接收消息1中断。
1 屏蔽接收消息1中断。清除IMISR[IM1I]。
0
IM0IM
发送消息0中断屏蔽。
0 允许接收消息0中断。
1 屏蔽接收消息0中断。清除IMISR[IM0I]。
12.5.8 DMA寄存器
每个DMA通道都有一组七个32位的寄存器(模式、状态、当前描述符地址、下一个当前描述符地址、源地址、目的地址和字节计数)支持事务。下面几节介绍DMA支持寄存器的格式。
12.5.8.1 DMA模式寄存器(DMAMRn DMA Mode Register)
本节介绍DMA模式寄存器。DMA模式寄存器允许软件启动DMA传输,并控制各种DMA传输特性。图12-10显示了DMAMRn的字段。
图12-10 DMA模式寄存器(DMAMRn)
表12-11说明了DMAMRn寄存器。
表12-11 DMAMRn字段说明
位
名字
说明
31-28
-
保留
27-24
DRCNT
DMA请求计数。该字段指定当EMSEN为1时每个DMA请求有效所传输的cache行的数量。如果EMSEM为0,则不使用该字段。
0101 1个cache行
0110 2个cache行
0111 4个cache行
1000 8个cache行
1110 16个cache行
1010 32个cache行
其他保留
23-21
BWC
带宽控制。仅在多个通道并发执行传输时使用。该字段确定在给定的通道被准许访问IOS接口之后、将接口释放给下一个通道之前,允许该给定通道传输多少个cache行。这样就允许用户定义DMA通道的优先级。BWC的值如下所列:
000 1个cache行
001 2个cache行
010 4个cache行
011 8个cache行
100 16个cache行
其他保留
20
DMSEN
直通模式监听允许。该位控制直通模式DMA事务的监听。
0 禁止监听。
1 允许监听。
19
IRQS
中断导向。该位确定DMA中断的目的地。
0 所有DMA中断都发送给片上中断控制器。
1 所有DMA中断都通过/INTA发送给PCI总线。
18
EMSEN
外部主设备启动允许。当DMA传输完成时清除该位,所以必须为每一次传输重新置位该位。
0 由软件置位CS位启动通道。
1 由硬件将/DREQ置为有效启动通道。
17-16
DAHTS
目的地址保持传输长度。当DAHE为1时,该字段指示每个事务所使用的传输长度。字节计数寄存器必须为该长度的整数倍,且目的地址寄存器必须按该长度对齐。
00 1个字节
01 2个字节
10 4个字节
11 8个字节
15-14
SAHTS
源地址保持传输长度。当SAHE为1时,该字段指示每个事务所使用的传输长度。字节计数寄存器必须为该长度的整数倍,且源地址寄存器必须按该长度对齐。
00 1个字节
01 2个字节
10 4个字节
11 8个字节
13
DAHE
目的地址保持允许。该位允许DMA控制器保持每个传输的目的地址不变。传输使用的长度由DAHTS指示。注意,对于该特性,硬件仅支持对齐传输。
0 不保持目的地址不变。
1 保持目的地址不变。
注意:DMA不支持同一传输中源和目的的同时地址保持。
12
SAHE
源地址保持允许。该位允许DMA控制器保持每个传输的源地址不变。传输使用的长度由SAHTS指示。注意,对于该特性,硬件仅支持对齐传输。
0 不保持源地址不变。
1 保持源地址不变。
注意:DMA不支持同一传输中源和目的的同时地址保持。
11-10
PRC
PCI读命令。该字段指示使用的PCI读命令的类型。
00 1个PCI读
01 2个PCI读行
10 4个PCI读多行
11 8保留
9-8
-
保留
7
EOTIE
传输结束中断允许。该位确定在完成DMA传输时是否产生中断。将传输结束定义为直通模式传输结束,或在链模式中,链的最后一段传输结束。
0 不产生EOT中断。
1 产生EOT中断。
6-4
-
保留
3
TEM
传输错误屏蔽。该位确定出现传输错误事件的DMA的响应。
0 当出现传输错误时(DMASRn[TE]置位),DMA停止。
1 不论是否出现传输错误(TE未置位),DMA都将完成传输。
2
CTM
通道传输模式。
0 链模式。
1 直通模式。
1
CC
通道继续。该位仅用于链模式。置位该位指示应重复当前描述符段。一旦开始重复,DMA就清除CC,所以它只引起一次重复。
0 正常链。
1 不从DMANDAR装入DMACDAR,重复当前描述符段。
0
CS
通道启动。当通道不忙时(DMASRn[CB]位为0),如果该位发生从0到1的跳变,则启动DMA处理。如果通道忙且出现了从0到1的跳变,则DMA通道从上次停止状态重新启动。当通道忙时(CB位为1),如果发生从1到0的跳变,则停止DMA处理。如果通道不忙且出现了从1到0的跳变,则什么也不会发生。在传输结束时,DMA清除该位。
12.5.8.2 DMA状态寄存器(DMASRn DMA Status Register)
本节介绍DMA状态寄存器。状态寄存器报告DMA传输期间和之后的各种DMA状态。将1写入特定的、置位了的位清除该位。图12-11显示了DMASRn的字段。
图12-11 DMA状态寄存器(DMASRn)
表12-12说明了DMASRn寄存器。
表12-12 DMASRn字段说明
位
名字
说明
31-8
-
保留
7
TE
传输错误。在DMA传输期间出现错误时置位该位,并清除DMAMRn[TEM]位。
6-3
-
保留
2
CB
通道忙。该位指示通道是否忙。下列任何一种情况都清除该位:DMA传输(1)错误,(2)停止,(3)完成。
0 当前未进行DMA传输。
1 当前正进行DMA传输。
1
EOSI
段结束中断。在传输了一个数据段之后,如果当前描述符地址寄存器中的DMACDARn[EOSIE]置位,则置位该位,并产生一个中断。
0
EOCDI
链/直通结束。当完成了最后一个DMA传输时,不论是在链模式中还是在直通模式中,如果DMAMR[EOTIE]置位,则置位该位,并产生一个中断。
12.5.8.3 DMA当前描述符地址寄存器(DMACDARn DMA Current Descriptor Address Register)
DMACDARn包括正在传输的当前段描述符的地址。在链模式中,软件必须初始化该寄存器,使其指向链中的第一个描述符。在处理完第一个描述符之后,DMA控制器将下一个描述符地址寄存器的内容移动到DMACDAR中,将后面的描述符装入到DMANDAR中,并执行当前传输。图12-12和图12-13显示了DMACDARn的字段。
图12-12 DMA当前描述符地址寄存器(DMACDARn)
图12-13 DMA当前描述符地址寄存器(DMACDARn)
表12-13说明了DMACDARn寄存器。
表12-13 DMACDARn字段说明
位
名字
说明
31-5
CDA
当前描述符地址。该字段包括存贮器中的段描述符的当前描述符地址。它必须按8字边界对齐。
4
SNEN
监听允许。
0 在当前段的DMA事务上禁止监听。
1 在当前段的DMA事务上允许监听。
3
EOSIE
段结束中断允许。
0 不产生段结束中断。
1 当完成当前描述符的当前DMA传输时,产生一个中断。
2-0
-
保留
12.5.8.4 DMA源地址寄存器(DMASARn DMA Source Address Register)
DMASARn指示DMA控制器将从哪个地址读取数据。软件必须保证该地址正确。图12-14显示了DMASARn的字段。
图12-14 DMA源地址寄存器(DMASARn)
表12-14说明了DMASARn寄存器。
表12-14 DMASARn字段说明
位
名字
说明
31-0
SA
DMA传输的源地址。每次DMA读操作之后都更新该字段的内容。
12.5.8.5 DMA目的地址寄存器(DMADARn DMA Destination Address Register)
DMADARn指示DMA控制器将数据写入哪个地址。软件必须保证该地址正确。图12-15显示了DMADARn的字段。
图12-15 DMA目的地址寄存器(DMADARn)
表12-15说明了DMADARn寄存器。
表12-15 DMADARn字段说明
位
名字
说明
31-0
DA
DMA传输的目的地址。每次DMA写操作之后都更新。
12.5.8.6 DMA字节计数寄存器(DMABCRn DMA Byte Count Register)
DMABCRn包括每次传输的字节数(最大传输长度为64M字节)。图12-16显示了DMABCRn的字段。
图12-16 DMA字节计数寄存器(DMABCRn)
表12-16说明了DMABCRn寄存器。
表12-15 DMABCRn字段说明
位
名字
说明
31-26
-
保留
25-0
BC
字节计数。该字段包括要传输的字节数。每次DMA读操作之后,该寄存器的值递减。
12.5.8.7 DMA下一个描述符地址寄存器(DMANDARn DMA Next Descriptor Address Register)
DMANDARn包括链中下一个段描述符的地址。在链模式中,将当前描述符地址寄存器指向的描述符的“下一个描述符”字段装入到该寄存器。图12-17显示了DMANDARn的字段。
图12-17 DMA下一个描述符地址寄存器(DMANDARn)
表12-17说明了DMANDARn寄存器。
表12-17 DMANDARn字段说明
位
名字
说明
31-5
NDA
下一个描述符地址。该字段包括存贮器中的段描述符的下一个描述符地址。它必须按8字边界对齐。
4
NSNEN
下一个监听允许。
0 在DMA事务上禁止监听。
1 在DMA事务上允许监听。
3
NEOSIE
下一个段结束中断允许。
0 不产生段结束中断。
1 当完成下一个描述符的DMA传输时,产生一个中断。
2-1
-
保留
0
EOTD
传输结束描述符。
0 该描述符包括到另一个描述符的链接。
1 该描述符是要执行的最后一个。
12.5.8.8 DMA通用状态寄存器(DMAGSR DMA General Status Register)
DMAGSR将所有DMA通道的状态位组合到一个寄存器中,提供对状态位的更快速的访问。该寄存器的每个字节都提供一个通道的DMA状态寄存器的位7-0。对每个DMA状态寄存器的写操作?则清除这些位。图12-18显示了DMAGSR的字段。
图12-18 DMA通用状态寄存器(DMAGSR)
12.6 功能说明
12.6.1 消息单元
嵌入式处理器通常是包括许多处理器和分布式存贮器的更大系统的一部分。这些处理器在处理任务时往往不受系统中的主处理器或其他外围处理器的约束。由于任务的独立性本质,有必要在外围处理器和系统的其余部分之间提供通信机制。其中的一种方法是使用消息。该部件提供消息收发单元,进一步方便了主设备和外围设备之间的通信。消息单元使用通用消息和门铃寄存器。
12.6.1.1 消息收发寄存器(IMR0-IMR1)
有两个32位的接收消息寄存器(IMR0-IMR1)和两个32位的发送消息寄存器(OMR0-OMR1)。IMR0和IMR1允许远程主机或PCI主设备写入32位的值,之后引起到片上中断控制器的中断请求,中断控制器驱动到本地处理器的中断线路。OMR0和OMR1允许本地处理器写入发送的消息,之后引起发送中断信号/INTA有效。
将1写入合适的IMISR位清除到本地处理器的中断。将1写入合适的OMISR位清除到PCI(/INTA)的中断。
12.6.1.2 门铃寄存器(IDR和ODR)
该部件包括接收门铃寄存器(IDR)和发送门铃寄存器(ODR)。接收门铃寄存器允许远程处理器从PCI总线置位该寄存器中的某一位,之后引起到片上中断控制器的中断请求,中断控制器驱动到本地处理器的中断线路。本地处理器可以写入ODR,它会引起发送中断信号/INTA有效,进而中断PCI总线上的远程处理器。
将1写入合适的IDR位清除到本地处理器的中断。将1写入合适的ODR位清除到PCI(/INTA)的中断。
12.6.2 DMA控制器
DMA控制器传输一块数据,不受本地处理器或PCI主设备的约束。数据移动发生在PCI总线和/或CSB上。DMA模块拥有四个高速DMA通道,它们共享IOS中的缓存空间,方便了数据的收集和发送。本地处理器和PCI主设备都可以启动DMA传输。
DMA控制器具有以下特性:
l 四个DAM通道
l 跨多个通道的并发执行,可编程带宽控制
l 所有通道对本地处理器和PCI主设备都是可访问的
l 非对齐传输能力
l 数据链和直通模式
l 在完成段、链和错误时产生中断
图12-19给出了该集成设备中DMA控制器的结构图。
图12-19 DMA控制器结构图
12.6.3 DMA操作
DMA控制器按下列两种模式操作:
l 直通模式。在直通模式中,DMA控制器不从存贮器读取描述符链,而是使用DMA寄存器中的当前参数启动DMA传输。当字节计数寄存器规定的所有字节都被传输完之后,DMA传输完成。关于初始化步骤的更详细信息参见12.7.1节“直通模式中的初始化步骤”。
l 链模式。在链模式中,DMA控制器在DMA传输之前从存贮器装入描述符。DMA控制器根据为每个段装入的描述符信息开始传输。一旦当前段完成,DMA控制器就从存贮器读取下一个描述符,开始另一个DMA传输。如果当前描述符是链中的最后一个,则处理完成。关于初始化步骤的更详细信息参见12.7.2节“链模式中的初始化步骤”。
在这两种模式中,置位DMA模式寄存器中的启动位开始DMA传输。
DMA控制器支持源地址和目的地址的非对齐传输。它在源地址处开始收集数据,在将数据发送给目的之前将其对齐。DMA控制器假定源和目的地址是正确的PCI或CSB存贮器地址。
对CSB存贮器的访问与源和目的地址的对齐及传输的长度有关。如果可能,DMA控制器就传输整个cache行。未对齐的目的地址导致在开始时和传输的最后几拍为几个小于一个cache行的子传输,中间几拍则传输整个cache行。配置DMA通道的地址保持模式DMAMRn避免cache行传输。
PCI存贮器读操作与模式寄存器中的PRC(PCI读命令)字段、源地址对齐和传输长度有关。如果可能,DMA控制器就试图读取一个完整的cache行。写入PCI存贮器与目的地址对齐和传输长度有关。
12.6.3.1 外部控制
任何通道的DMA传输,不论是直通模式还是链模式,都可以用DMA请求输入信号控制。置位外部主设备启动允许(EMSEN)位而不是DMA模式寄存器(DMAMRn)中的通道启动(CS)位,就可以允许外部控制。
当使用外部控制时,有下列限制:
l 源和目的地址必须与32个字节边界对齐
l 在链模式中,除最后一个外,所有的字节计数值都必须为32个字节的整数倍。
/DREQn的下降沿置位DMAMRn[CS]启动传输,并宣告对应的/DACKn输出信号有效。传输DMA模式寄存器(DMAMRn)中的DMA请求计数(DRCNT)位规定的Cache行的数量(或剩余字节计数,如果更小),然后清除CS位,让/DAC
展开阅读全文