第12章DMA消息收发单元mpc83xx的datasheet中文手册.docx
《第12章DMA消息收发单元mpc83xx的datasheet中文手册.docx》由会员分享,可在线阅读,更多相关《第12章DMA消息收发单元mpc83xx的datasheet中文手册.docx(38页珍藏版)》请在冰豆网上搜索。
第12章DMA消息收发单元mpc83xx的datasheet中文手册
第十二章DMA/消息收发单元
12.1概述
DMA/消息收发单元支持不同总线上两个的处理器之间的通信,例如本地处理器和PCI总线上的处理器。
该单元在运行时使用通用(generic)消息和门铃寄存器。
图12-1是DMA/消息收发单元的结构图。
图12-1DMA/消息收发单元结构图
该部件还提供了DMA控制器,用于传输数据块,不受本地处理器或PCI主设备的约束。
DMA模块拥有四个高速DMA通道,这四个通道共享I/O定序器(ISOI/OSequencer)中的缓存空间,方便数据的收集和发送。
12.2特性
DMA/消息收发单元包括下列特性:
●用于处理器间通信的消息和门铃寄存器
●DMA控制器
⏹四个DMA通道
⏹跨多个通道的并发执行,可编程带宽控制
⏹非对齐传输能力
⏹数据链和直通模式
⏹在完成段、链和错误时产生中断
⏹每个通道都具有可选的外部控制信号(REQ/ACK/DONE)
12.3外部信号说明
本节介绍DMA信号
12.3.1详细信号说明
表12-1包含DMA接口信号的详细说明。
表12-1DMA接口信号——详细信号说明
信号
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-DMA0模式寄存器
R/W
0x0000_0000
12.5.8.1/12-4
0x0_8104
DMASR0-DMA0状态寄存器
R/W
0x0000_0000
12.5.8.2/12-4
0x0_8108
DMACDAR0-DMA0当前描述符地址寄存器
R/W
0x0000_0000
12.5.8.3/12-4
0x0_8110
DMASAR0-DMA0源地址寄存器
R/W
0x0000_0000
12.5.8.4/12-4
0x0_8118
DMADAR0-DMA0目的地址寄存器
R/W
0x0000_0000
12.5.8.5/12-4
0x0_8120
DMABCR0-DMA0字节计数寄存器
R/W
0x0000_0000
12.5.8.6/12-4
0x0_8124
DMANDAR0-DMA0下一个描述符地址寄存器
R/W
0x0000_0000
12.5.8.7/12-4
0x0_8180
DMAMR1-DMA1模式寄存器
R/W
0x0000_0000
12.5.8.1/12-4
0x0_8184
DMASR1-DMA1状态寄存器
R/W
0x0000_0000
12.5.8.2/12-4
0x0_8188
DMACDAR1-DMA1当前描述符地址寄存器
R/W
0x0000_0000
12.5.8.3/12-4
0x0_8190
DMASAR1-DMA1源地址寄存器
R/W
0x0000_0000
12.5.8.4/12-4
0x0_8198
DMADAR1-DMA1目的地址寄存器
R/W
0x0000_0000
12.5.8.5/12-4
0x0_81A0
DMABCR1-DMA1字节计数寄存器
R/W
0x0000_0000
12.5.8.6/12-4
0x0_81A4
DMANDAR1-DMA1下一个描述符地址寄存器
R/W
0x0000_0000
12.5.8.7/12-4
0x0_8200
DMAMR2-DMA2模式寄存器
R/W
0x0000_0000
12.5.8.1/12-4
0x0_8204
DMASR2-DMA2状态寄存器
R/W
0x0000_0000
12.5.8.2/12-4
0x0_8208
DMACDAR2-DMA2当前描述符地址寄存器
R/W
0x0000_0000
12.5.8.3/12-4
0x0_8210
DMASAR2-DMA2源地址寄存器
R/W
0x0000_0000
12.5.8.4/12-4
0x0_8218
DMADAR2-DMA2目的地址寄存器
R/W
0x0000_0000
12.5.8.5/12-4
0x0_8220
DMABCR2-DMA2字节计数寄存器
R/W
0x0000_0000
12.5.8.6/12-4
0x0_8224
DMANDAR2-DMA2下一个描述符地址寄存器
R/W
0x0000_0000
12.5.8.7/12-4
0x0_8280
DMAMR3-DMA3模式寄存器
R/W
0x0000_0000
12.5.8.1/12-4
0x0_8284
DMASR3-DMA3状态寄存器
R/W
0x0000_0000
12.5.8.2/12-4
0x0_8288
DMACDAR3-DMA3当前描述符地址寄存器
R/W
0x0000_0000
12.5.8.3/12-4
0x0_8290
DMASAR3-DMA3源地址寄存器
R/W
0x0000_0000
12.5.8.4/12-4
0x0_8298
DMADAR3-DMA3目的地址寄存器
R/W
0x0000_0000
12.5.8.5/12-4
0x0_82A0
DMABCR3-DMA3字节计数寄存器
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发送消息中断状态寄存器(OMISROutboundMessageInterruptstatusRegister)
OMISR包括门铃和发送消息寄存器的中断状态。
PCI设备将1写入合适的状态位应答发送消息中断:
OMISR[OM1I]或OMISR[OM0I]。
置位其中的某一位清除中断和对应的状态位。
本地处理器写入两个发送消息寄存器中的某一个激活发送消息中断:
OMR0或OMR1。
可以从CSB或PCI总线访问OMISR,但通常只从PCI总线访问该寄存器。
图12-2显示了OMISR的字段。
图12-2发送消息中断状态寄存器(OMISR)
表12-3说明了OMISR寄存器。
表12-3OMISR字段说明
位
名字
说明
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发送消息中断屏蔽寄存器(OMIMROutboundMessageInterruptMaskRegister)
OMIMR包括本地处理器产生的门铃和消息寄存器事件的中断屏蔽。
可以从CSB或PCI总线读取OMIMR,但只从PCI总线清除该寄存器。
图12-3显示了OMIMR的字段。
图12-3发送消息中断屏蔽寄存器(OMIMR)
表12-4说明了OMIMR寄存器。
表12-4OMIMR字段说明
位
名字
说明
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-IMR1InboundMessageRegister)
可以从主机或代理模式中的PCI总线或CSB读取接收消息寄存器。
只能从PCI总线写入该寄存器。
图12-4显示了IMR0和IMR1的字段。
图12-4接收消息寄存器(IMR0,IMR1)
表12-5说明了IMRn寄存器。
表12-5IMR0和IMR1字段说明
位
名字
说明
31-0
IMSGn
接收消息n。
包括要在本地处理器和外部主设备之间传递的通用数据。
12.5.4发送消息寄存器(OMR0-OMR1OutboundMessageRegister)
可以从主控或代理模式中的PCI总线或CSB读取发送消息寄存器。
只能从CSB写入该寄存器。
图12-5发送消息寄存器(OMR0-OMR1)
表12-6说明了OMRn寄存器。
表12-6OMR0和OMR1字段说明
位
名字
说明
31-0
OMSGn
发送消息n。
包括要在本地处理器和外部主设备之间传递的通用数据。
12.5.5门铃寄存器(DoorbellRegister)
下面几节介绍发送和接收门铃寄存器。
12.5.5.1发送门铃寄存器(ODROutboundDoorbellRegister)
ODR对主机或代理模式中的PCI总线或CSB都是可访问的。
图12-6显示了ODRn的字段。
图12-6发送门铃寄存器(ODR)
表12-7说明了ODRn寄存器。
表12-7ODR字段说明
位
名字
说明
31-29
-
保留
28-0
ODRn
发送门铃n。
从CSB写入1置位。
从PCI总线写入1清除。
写入0不起作用。
(从CSB写入该寄存器的某一位引起中断(/INTA)产生。
)
12.5.5.2接收门铃寄存器(IDRInboundDoorbellRegister)
IDR对主机或代理模式中的PCI总线或CSB都是可访问的。
图12-7显示了IDRn的字段。
图12-7发送门铃寄存器(IDR)
表12-8说明了IDRn寄存器。
表12-8IDR字段说明
位
名字
说明
31
IMC
接收机器检查。
从PCI总线写入1置位。
从CSB写入1清除。
写入0不起作用。
(从PCI总线写入该寄存器的某一位引起到本地处理器的机器检查中断。
)
30-0
IDRn
接收门铃n。
从PCI总线写入1置位。
从CSB写入1清除。
写入0不起作用。
(从PCI总线写入该寄存器的某一位引起到本地处理器的机器检查中断。
)
12.5.6接收消息中断状态寄存器(IMISRInboundMessageInterruptstatusRegister)
IMISR包括门铃和接收消息寄存器事件的中断状态。
将1写入IM1I清除该位。
事件由PCI主设备产生。
应只从CSB访问IMISR,且只能为代理模式。
从主机模式或从PCI总线访问产生未定义的结果。
图12-8显示了IMISR的字段。
图12-8接收消息中断状态寄存器(IMISR)
表12-9说明了IMISR寄存器。
表12-9IMISR字段说明
位
名字
说明
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接收消息中断屏蔽寄存器(IMIMRInboundMessageInterruptMaskRegister)
该寄存器包括PCI主设备产生的门铃和消息寄存器事件的中断屏蔽。
应只从CSB访问IMIMR,且只能为代理模式。
从主机模式或从PCI总线访问产生未定义的结果。
图12-9显示了IMIMR的字段。
图12-9接收消息中断屏蔽寄存器(IMIMR)
表12-10说明了IMIMR寄存器。
表12-10IMIMR字段说明
位
名字
说明
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.8DMA寄存器
每个DMA通道都有一组七个32位的寄存器(模式、状态、当前描述符地址、下一个当前描述符地址、源地址、目的地址和字节计数)支持事务。
下面几节介绍DMA支持寄存器的格式。
12.5.8.1DMA模式寄存器(DMAMRnDMAModeRegister)
本节介绍DMA模式寄存器。
DMA模式寄存器允许软件启动DMA传输,并控制各种DMA传输特性。
图12-10显示了DMAMRn的字段。
图12-10DMA模式寄存器(DMAMRn)
表12-11说明了DMAMRn寄存器。
表12-11DMAMRn字段说明
位
名字
说明
31-28
-
保留
27-24
DRCNT
DMA请求计数。
该字段指定当EMSEN为1时每个DMA请求有效所传输的cache行的数量。
如果EMSEM为0,则不使用该字段。
01011个cache行
01102个cache行
01114个cache行
10008个cache行
111016个cache行
101032个cache行
其他保留
23-21
BWC
带宽控制。
仅在多个通道并发执行传输时使用。
该字段确定在给定的通道被准许访问IOS接口之后、将接口释放给下一个通道之前,允许该给定通道传输多少个cache行。
这样就允许用户定义DMA通道的优先级。
BWC的值如下所列:
0001个cache行
0012个cache行
0104个cache行
0118个cache行
10016个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时,该字段指示每个事务所使用的传输长度。
字节计数寄存器必须为该长度的整数倍,且目的地址寄存器必须按该长度对齐。
001个字节
012个字节
104个字节
118个字节
15-14
SAHTS
源地址保持传输长度。
当SAHE为1时,该字段指示每个事务所使用的传输长度。
字节计数寄存器必须为该长度的整数倍,且源地址寄存器必须按该长度对齐。
001个字节
012个字节
104个字节
118个字节
13
DAHE
目的地址保持允许。
该位允许DMA控制器保持每个传输的目的地址不变。
传输使用的长度由DAHTS指示。
注意,对于该特性,硬件仅支持对齐传输。
0不保持目的地址不变。
1保持目的地址不变。
注意:
DMA不支持同一传输中源和目的的同时地址保持。
12
SAHE
源地址保持允许。
该位允许DMA控制器保持每个传输的源地址不变。
传输使用的长度由SAHTS指示。
注意,对于该特性,硬件仅支持对齐传输。
0不保持源地址不变。
1保持源地址不变。
注意:
DMA不支持同一传输中源和目的的同时地址保持。
11-10
PRC
PCI读命令。
该字段指示使用的PCI读命令的类型。
001个PCI读
012个PCI读行
104个PCI读多行
118保留
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,所以它只引起一次重复。
1正常链。
2不从DMANDAR装入DMACDAR,重复当前描述符段。
0
CS
通道启动。
当通道不忙时(DMASRn[CB]位为0),如果该位发生从0到1的跳变,则启动DMA处理。
如果通道忙且出现了从0到1的跳变,则DMA通道从上次停止状态重新启动。
当通道忙时(CB位为1),如果发生从1到0的跳变,则停止DMA处理。
如果通道不忙且出现了从1到0的跳变,则什么也不会发生。
在传输结束时,DMA清除该位。
12.5.8.2DMA状态寄存器(DMASRnDMAStatusRegister)
本节介绍DMA状态寄存器。
状态寄存器报告DMA传输期间和之后的各种DMA状态。
将1写入特定的、置位了的位清除该位。
图12-11显示了DMASRn的字段。
图12-11DMA状态寄存器(DMASRn)
表12-12说明了DMASRn寄存器。
表12-12DMASRn字段说明
位
名字
说明
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.3DMA当前描述符地址寄存器(DMACDARnDMACurrentDescriptorAddressRegister)
DMACDARn包括正在传输的当前段描述符的地址。
在链模式中,软件必须初始化该寄存器,使其指向链中的第一个描述符。
在处理完第一个描述符之后,DMA控制器将下一个描述符地址寄存器的内容移动到DMACDAR中,将后面的描述符装入到DM