S3C2410 leaven
当在 DCON 中配置为 H/W DMA request mode 的时候,每个 DMA 通道,可以由 DMA 控制器分别从
可选的四个中断源中选择一个,如果配置为 S/W DMA request mode 那么这些 DMA request sources
将无效.
Table 8-1. DMA Request Sources for Each Channel
Source0
Source1
Source2
Source3
Source4
Ch-0
nXDREQ0
UART0
SDI
Timer
USB device EP1
Ch-1
nXDREQ1
UART1
I2SSDI
SPI0
USB device EP2
Ch-2
I2SSDO
I2SSDI
SDI
Timer
USB device EP3
Ch-3
UART2
SDI
SPI1
Timer
USB device EP4
nXDREQ0 and nXDREQ1 为外部中断源. I2SSDO and I2SSDI 为 IIS 输出,接收中断.
DMA 的状态机转换:
DMA uses three-state FSM (finite state machine) :
State-1. 初始化状态,DMA等待DMA请求.如果请求到来,那么将会转到状态2,在本状态的时候
DMA ACK和INT REQ 都是0.
State-2. 在这个状态的时候DMA ACK 变为1,同时计数寄存器 CURR_TC取得寄存器
DCON[19:0]中的值.注意这个时候DMA ACK 的值依旧保持为1,直到它被后面清除.
State-3. 在此状态的时候,sub-FSM管理DMA. sub-FSM从源地址读取数据,并且写入目的地址.在
这个操作的过程按照数据的宽度(后面的unit或者burst 4)和传输数据量进行(不管是single模式或
者burst模式),不断重复这个传送过程,直到CURR_TC为0.在所有的模式中,只有在Single service
mode 中上面的循环只完成一次操作.每次sub-FSM完成时CURR_TC就会由FSM自动减去相应
的数值.当CURR_TC变为0并且DCON[29]被置为1时FSM会产生一个INT REQ . 在下面的两种
情况下FSM会清掉DMA ACK :
1) CURR_TC becomes 0 in the Whole service mode
2) Atomic operation finishes in the Single service mode.
DMA ACK 信号:在Single service mode时,在完成上面三个main FSM state后就停止,等待
下一次的DMA REQ.当下次来临后,main FSM 三个state又会重复一遍.在每次自动传输中DMA
ACK自动产生又自动清除.相对应的Whole service mode 将会停留在main FSM state-3中,直到
CURR_TC变为0.所以DMA ACK 在所有的传输过程中之产生一次,最后在TC为0时清除.
INT REQ 信号:只要CURR_TC变为0就会产生.
总共有三种DMA 请求应答协议:Single service Demand ,Single service Handshake,Whole
service Handshake mode
DMA 基本时序图: