S3C2440A中文手册【八】
来源:小侦探旅游网
S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com 第八章 直接存储器存取 概述 s3c2440支持在系统总线和外围总线之间的4路DMA控制器 。每一路DMA控制器可以自由的执行数据在系统总线和(或)外围总线之间的动作。换句话说,每一路可以在下列列4种情况下运行: 1.源设备和目标设备都在系统总线上 2.源设备在系统总线上,目标设备在外围总线上 3.源设备在外围总线上,目标数据在系统总线上 4.源设备和目标设备都在外围总线上 DMA的主要优点是它可以不通过CPU直接调用数据。DMA工执行可以软件开始,也可以从内部的外设请求或者外部的引脚请求开始。 DMA请求源 每一路DMA控制器都可以从4种开始请求中选择一路,如果DCON寄存器选择H/W DAM请求模式(注意,选择S/W时这个DMA请求源没意义)。表8--1列出了4种请求和每一路的关系: 表8--1.DMA开始请求和每一路关系 这里nXDREQ0和nXDREQ1表示两个外部源(Extermal Devices),12SSDO和12SSDI分别表示IIS的 传输和接收。 DMA 工作状态 DMA应用3态FSN(有限状态机),它可以描述为以下3步: State--1. 作为起始状态,DMA等待DMA请求,一旦请求到来马上转到State--2, 在 这个状态,DMA ACK和INT REQ是0. State--2. 在这个状态,DMA ACK变为1,计数器(CURR_TC)从DCON[19:0]装载。 DMA ACK保持1,直到它被清0。 State--3. 在这个状态,控制DMA原子操作的子FSM被初始化了。子FSM从源地址 读取数据后把它写入目标地址。在这个操作中,数据宽度和传输大小(单次 或突发)应给与考虑。在完整服务模式中,这种操作不断重复直到计数器 1 9/10/2007 S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com (CURR_TC)变为0。然而在单一模式中只进行一次,当子FSM完成每个原子 操作时,主FSM对CURR_TC倒计时。另外,当CURR_TC为0和中断设置 DCON[29]为1 时,主FSM发出INT REQ信号(中断请求信号)。另外,如 果发生下列情况之一,DMA ACK将被清零。 1) 在整体服务模式中CURR_TC变为0 2) 在单一模式中原子操作完成 注:在单一服务模式中,主FSM的三个状态进行然后停止,等待另外的DMA REQ。如果DMA REQ到来,重复三种状态。因此,DMA ACK被使能然后被取消后进行每一个原子操作。相反的,在整体服务模式中,主FSM等待在state-3直到CURR_TC变为0。所以,在TC到达0时,DMA ACK在传输区间被使能然后被取消。 总之,INT REQ被使能只由CURR_TC是否为0决定,与服务模式无关(单一服务模式或整体服务模式)。 外部DMA 请求/应答(应答(DREQ/DACK)协议 有三种类型的外部DMA请求/应答协议(单一需求模式、单一同步交换模式和整体同步交换模式)。每一种类型定义这些协议涉及到什么样的DMA请求和应答信号。 基本 DMA 时序图 DMA服务意味着在DMA操作中执行一对读、写循环,它可以考试一个DMA操作。图8--1显示了S3C2440DMA操作中的继电器 ——XnXDREQ和XnXDACK中的建立时间(serup)和延时时间(delay)在所有模式下都是 相同的 ——如果XnXDREQ完成遇上建立时间,那么它将同步加强为原来的两倍,这是XnXDACK 被声明了 ——XnXDACK声明以后,DMA请求总线,如果到达总线则执行其操作,DMA操作完成后 运行XnXDACK 图8--1.基本 DMA 时序图 需求/同步交换模式比较 2 9/10/2007 S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com 需求和同步交换模式都涉及到XnXDREQ和XnXDACK协议。图8--2指出了两种模式之间的不同 在操作(单一/突发操作)最后,DMA组织双同步XnXDREQ。 需求模式 — 如果XnXDREQ尚未使能,那么下一个操作马上开始。否则它一直等XnXDREQ 被设为无效。 同步交换模式 — 如果XnXDREQ无效,DMA取消XnXDACK两个周期。否怎,一直等XnXDREQ 被设为无效。 注:XnXDREQ只在XnXDACK无效(hugh)后被使能(low) 图8—2需求模式和同步交换模式比较 传送容量 — 有两种不同的传输方式,unit和Burst 4 — 在传输大量数据时,DMA牢牢占据总线,因此其他总线主控不能得到总线 Burst 4传输容量 有四组连续的读、写操作在Burst 4中分别完成 注 Unit传输型:执行单读、写 Unit 3 9/10/2007 S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com 图8--3.Burst 4传输型 Burst 4 举例 举例 Unit传输容量的单一服务需求模式Unit传输容量的单一服务需求模式 传输容量的单一服务需求模式 每一个UnitUnit传输(单一服务模式)都需要XnXDREQ使能。这个操作一直延续到XnXDREQ被使能Unit(需求模式),一对读、写(单一传输容量)操作被执行。 图8--4.UnitUnit传输容量的单一服务需求模式Unit传输容量的单一服务需求模式 Unit传输容量的单一服务单同步交换模Unit传输容量的单一服务单同步交换模式传输容量的单一服务单同步交换模式 图8--5.Unit传输容量的单一服务单同步交换模式Unit传输容量的单一服务单同步交换模式 Unit传输容量的整体服务同步交换模式Unit传输容量的整体服务同步交换模式 传输容量的整体服务同步交换模式 图8--6.Unit传输容量的整体服务同步交换模式Unit传输容量的整体服务同步交换模式 4 9/10/2007 S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com DMA专用寄存器DMA专用寄存器 专用寄存器 每一路DMA有九个控制寄存器(4路一共有36个)。其中6个控制寄存器控制DMA传输,另外的3个监听DMA控制器状态。详细说明如下。 DMA初始源寄存器 DMA INITIAL SOURCE (DISRC) REGISTER DMA INITIAL SOURCE (DISRC) REGISTER 寄存器寄存器 寄存器 DISRC0 DISRC1 DISRC2 DISRC3 DISRCn S_ADDR Bit Bit [30:0] 说明 说明 说明 源数据传输基地址(起始地址)。当CURR_SRC值为0,DMA ACK值为1时,这个bit值被写入CURR_SRC 初始状态 初始状态 0x00000000 地址 地址0x4B000000 0x4B000000 0x4B000000 0x4B000000 R/W R/WR/W R/W R/W R/W 说明 说明DMA 0 initial source register DMA 1 initial source register DMA 2 initial source register DMA 3 initial source register 重新赋值 重新赋值 0x00000000 0x00000000 0x00000000 0x00000000 DMA初始源控制寄存器 DMA INITIAL SOURCE CONTROL (DISRCC) REGISTER DMA INITIAL SOURCE CONTROL (DISRCC) REGISTER 寄存器寄存器 寄存器 DISRC0 DISRC1 DISRC2 DISRC3 DISRCCn DISRCCnLOC Bit Bit [1] 说明 Bit 1用来选择源位置 0:源在系统总线(AHB)上 1: 源在外围设备总线(APB)上 Bit 0用来选择地址增量 0=增加 1=不变 如果为0,在突发和单一传出模式传输之后地址随数据量增加。 如果为1,地址在传输后不变。(在突发模式,地址在传输过程中增加,但是在传输结束后恢复到初始值。) 5 地址 地址0x4B000004 0x4B000044 0x4B000084 0x4B00000c4 R/W R/WR/W R/W R/W R/W 说明 说明DMA 0 initial source control register DMA 1 initial source control register DMA 2 initial source control register DMA 3 initial source control register 重新赋值 重新赋值 0x00000000 0x00000000 0x00000000 0x00000000 初始状态 0 INC [0] 0 9/10/2007 S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com DMA初始目的寄存器 DMA INITIAL DESTINATION (DIDST) REGISTER DMA INITIAL DESTINATION (DIDST) REGISTER 寄存器寄存器 寄存器 DIDST0 DIDST1 DIDST2 DIDST3 DIDSTn DIDSTnD_ADDR Bit Bit[30:0] 说明 目标传输基地址(起始地址)。如果CURR_DST为0,DMA ACK为1,这个bit值被写入CURR_SRC 初始状态 0x00000000 地址 地址0x4B000008 0x4B000048 0x4B000088 0x4B00000B8 R/W R/WR/W R/W R/W R/W 说明 说明DMA 0 initial destination register DMA 1 initial destination register DMA 2 initial destinationregister DMA 3 initial destination register 重新赋值 重新赋值 0x00000000 0x00000000 0x00000000 0x00000000 DMA初始目的控制寄存器 初始目的控制寄存器 DMA INITIAL DESTINATION (DIDST) REGISTER DMA INITIAL DESTINATION (DIDST) REGISTER 寄存器 DIDSTC0 DIDSTC1 DIDSTC2 DIDSTC3 DIDSTCn CHK_INT Bit [2] 说明 在自动重装载被设置时,选择中断发生的时间。 0:TC到达0时发生中断。 1:自动重装载完成后发生中断。 Bit1用来选择目标文件位置 0:目标文件在系统总线上(AHB) 1:目标文件在外部设备总线上(APB) Bit 0用来选择地址增量 0=增加 1=不变 如果为0,在所有单一和突发传输模式之后地址随数据量增加。 6 地址 0x4B00000C 0x4B00004C 0x4B00008C 0x4B00000CC R/W R/WR/W R/W R/W R/W 说明 DMA 0 initial destination control register DMA 1 initial destination control register DMA 2 initial destination control register DMA 3 initial destination control register 重新赋值 0x00000000 0x00000000 0x00000000 0x00000000 初始状态 0 LOC [1] 0 INC [0] 0 9/10/2007 S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com 如果为1,传输之后地址不变。(在突发模式中,地址在传输过程中增加,但在传输之后恢复成原来的值。) DMA控制寄存器 DMA CONTROL (DCON) REGISTERDMA CONTROL (DCON) REGISTER CONTROL (DCON) REGISTER 寄存器寄存器 寄存器 DCON0 DCON1 DCON2 DCON3 DCONn DCONnDMD_HS Bit Bit[31] 说明 在需求模式和同步交换模式中选一种 0:选择需求模式 1:选择同步交换模式i 这两种模式中,DMA控制器开始传输并通过给DACK使能从而给DREQ使能。这两种模式的区别在于是否等待DACK被无效与否 在同步交换模式,DMA控制器在开始新的传输前等待DREQ被设为无效。如果发现DREQ无效,马上把DACK设为无效,并等待DREQ另一次使能。 相反的,在需求模式,DMA控制器不等待DREQ被设为无效。如果DREQ使能,直接将DACK设为无效并开是下一次传输。 DREQ/DACK同步选择 0:DREQ和DACK同步到达PCLK(APB 时钟). 1:DREQ和DACK同步到达HCLK(APB 时钟) 因此,为了设置在AHB系统总线上,这位必须置1,为了设置在APB系统总线上,这位需要置0. 为了设置在外部系统总线上,使用者需要依靠外部系统和AHB系统和APB系统同步来选择这位 INT [29] CURR_TC(数字终端)禁止和允许中断 0:CURR_TC中断禁止,使用者必须寄查看存器形式中的传输个数(轮巡检测) 1:所有传输结束后产生中断请求(CURR_TC为0) 选择原子操作传输类型(传输执行任一时刻DMA在释放总线之前占有总线) 0:执行一个unit传输 1:执行一个4 burst传输 7 地址 地址0x4B000010 0x4B000050 0x4B000090 0x4B0000D0 R/W R/WR/W R/W R/W R/W 说明 说明DMA 0 source register DMA1 source register DMA 2 source register DMA 3 source register 重新赋值 重新赋值 0x00000000 0x00000000 0x00000000 0x00000000 初始状态 0 SYNC [30] 0 0 TSZ [28] 0 9/10/2007 S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com SERVMODE [27] 在单一服务模式和整体同步模式中选择 0:所有原子操作之后,DMA停止并等待另一个DMA请求时选择单一服务模式 1:一个请求到达原子操作并被重复直到传输个数为0.在这个模式中额外要求是不必要的 注意,在整体服务模式,所有原子操作之后DMA释放总线,然后试着再占据总线,防止其他总线主控得不到总线 每个DMA请求源 DCON0: 000:nXDREQ0 001:UART0 010:SDI 011:Timer 100:USB device EP1 DCON1: 000:nXDREQ1 001:UART1 010:I2SSDI 011:SPI 100:USB device EP2 DCON2: 000:I2SSDO 001:I2SSDI 010:SDI 011:Timer 100:USB device EP3 DCON3: 000:UART2 001:SDI 010:SPI 011:Timer 100:USB device EP4 DCON0: 101:I2SSDO 110:PCMIN DCON1: 101:PCMOUT 110:SDI DCON2: 101:PCMIN 110:MICIN DCON3: 101:MICIN 110:PCMOUT 这些位通过控制4-1 MUX来每个DMA请求源,只有DCONn[23]选择H/W请求模式时这些位才有意义 SWHW_SEL [23] 在软件(S/W请求模式)和硬件(H/W请求模式)中选择DMA源 0:通过DMASKTRIG控制寄存器的SW_TRIG位选择S/W请求模式和DMA触发 1:通过[26:24]位触发DMA动作选择DMA源 设置重启开关 0:但前传输个数变为0自动重启(执行所有必要传输) 1:当当前传输个数变为0时关闭DMA通路(DMA REQ)。通路开关位(DMASKTRIGn[1])置0(DREQ off),防止进一步非本意开始新的DMA动作 数据类型转换 00 = Byte 01 = Half word 8 0 HWSRCSEL [26:24] 00 0 RELOAD [22] 0 DSZ [21:20] 00 9/10/2007 S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com 10 = Word 11 = reserved TC [19:0] 初始传输个数 传输的字节数有下列公式计算:DSZ x TSZ x TC。其中DSZ,TSZ (1 or 4)和TC分别表示DCONn[21:20]数据量,DCONn[28]传输量和初始传输个数。只有到CURR_TC为0并且DMA ACK为1时,这个之被写入CURR_TC 00000 DMA状态寄存器状态寄存器 DMA CONTROL (DCON) REGISTER DMA CONTROL (DCON) REGISTER 寄存器寄存器 寄存器 DSTAT0 DSTAT1 DSTAT2 DSTAT3 DSTATn STAT Bit Bit[21:20] 说明 这个控制器的形式 00:表示DMA控制器为下一个DMA请求做准备 01:表示DMA控制器正在在传输过程中 传输个数的当前值 传输个数通过所有原子操作的最后一个,初始调整DCONn[19:0]寄存器的值和减少量。 初始状态 00b 地址 地址0x4B000014 0x4B000054 0x4B000094 0x4B0000D4 R/W R/WR R R R 说明 说明DMA 0 计数寄存器 DMA1 计数寄存器 DMA 2 计数寄存器 DMA 3 计数寄存器 重新赋值重新赋值 赋值 000000h 000000h 000000h 000000h CURR_TC [19:0] 00000h 当前DMA源寄存器 源寄存器 DMA CURRENT SOURCE (DCSRC) REGISTER 寄存器寄存器 寄存器 DCSRC0 DCSRC1 DCSRC2 DCSRC3 DCSRCn DCSRCnCURR_SRC 9 9/10/2007 地址 地址0x4B000018 0x4B000058 0x4B000098 0x4B0000D8 Bit Bit[30:0] R/W R/WR R R R 说明 说明DMA 0 当前源寄存器 DMA1 当前源寄存器 DMA 2 当前源寄存器 DMA 3 当前源寄存器 说明 适合DMAn的当前源地址 重新赋值 重新赋值 0x00000000 0x00000000 0x00000000 0x00000000 初始状态 0x00000000 S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com 当前目的寄存器 当前目的寄存器 CURRENT DESTINATION (DCDST) REGISTER CURRENT DESTINATION (DCDST) REGISTER 寄存器寄存器 寄存器 DCDST0 DCDST1 DCDST2 DCDST3 DCDSTn DCDSTnCURR_DST Bit Bit[30:0] 说明 适合DMAn当前目标地址 初始状态 0x00000000 地址 地址0x4B00001C 0x4B00005C 0x4B00009C 0x4B0000DC R/W R/WR R R R 说明 说明DMA0 当前目的寄存器 DMA1 当前目的寄存器 DMA 2 当前目的寄存器 DMA 3 当前目的寄存器 重新赋值 重新赋值 0x00000000 0x00000000 0x00000000 0x00000000 DMA模板触发寄存器 (DMA MASK TRIGGER (DMASKTRIG) REGISTER)(DMA MASK TRIGGER (DMASKTRIG) REGISTER) SK TRIGGER (DMASKTRIG) REGISTER) 寄存器寄存器 寄存器 DMASKTRIG0 0x4B000060 R R R DMA1 mask trigger register DMA 2 mask trigger register DMA 3 mask trigger register 000 000 000 DMASKTRIG1 0x4B0000A0 DMASKTRIG2 DMASKTRIG3 0x4B0000E0 DMASKTRIGn DMASKTRIGnSTOP Bit Bit[2] 说明 停止DMA操作 1:当前原子操作结束DMA马上停止。如果当前没有运行原子操作,DMA立即停止。CURR_TC, CURR_SRC和CURR_DST将被置0 注意:由于可能发生当前原子操作,‘stop’操作可能循环几次。操作的完成(实际停止时间)在引导位置于off同时被发现。这个停止是“实际停止”。 DMA引导开关位 0:关闭DMA引导(引导不理睬DMA请求) 1:DMA引导开启和DMA请求是可以控制的。如果我们把DCONn[22]位放在“不自动重启”和(或)DMASKTRIGn的STOP位在“stop”,这位会自动关闭。 10 地址 地址0x4B000020 R/W R/WR 说明 说明DMA0 mask trigger register 重新赋值 重新赋值 000 初始状态 0 ON_OFF [1] 0 9/10/2007 S3C2440A 数据手册 保定飞凌嵌入式技术有限公司 马志晶 mazhijing@163.com 当DCON[22]位是“不自动重启”,这位在CURR_TC为0时变为0。如果STOP是1,这位在当前远在操作结束时马上变为0. SW_TRIG [0] S/W请求模式触发DMA 1:向此控制器请求DMA动作 这个引导在必须选择S/W请求模式必须和ON_OFF位必须置1(导通)。当DMA开始运行,这位自动清零。 0 注意:注意:你可以修改DISRC,DIDST和TC field of DCON这些寄存器的置。这些修改只在完成当前调用(如CURR_TC变为0)后生效。另一方面,任何修改都会对其他寄存器和(或)领域产生直接影响。因此,谨慎修改这些寄存器和领域。 11 9/10/2007