DMA:
DMA负责把帮CPU搬数据
memory1的地址是0x10000-0x20000
memory2的地址是0x20000-0x30000
dma基地址是0x30000-0x31000,内存1k,5个寄存器,偏移地址分别是0x00,0x04,0x08,0x0c,0x10
- step0:cpu检查dma状态,dma是否可用
while(1){
Read(0x30004,&status) // dma 地址为0x30004的寄存器,是dma状态寄存器
if(status==0)
break;
}
- step1:cpu 设置 dma
Write(0x30008,0x10000) // dma从source(地址为0x10000)
Write(0x3000c,0x20000) // 搬到destination(地址为0x20000)
Write(0x30010,0x100) // 搬的size为100k
- step2:cpu 启动 dma
Write(0x300000,0x1) // 在dma 偏移地址0x00上设置
- step3:dma 从 memory1 搬数据到 memory2
- step4:dma 把读取情况放到INT寄存器,并向 cpu 发中断请求,
- step5:cpu 检查 dma 状态
Read(0x30004, &status)