|
今天试验使用dma传送数据。本来的目的是用于传送网卡的package的。
可是打示波器发现dma对网卡能读,却不能写内存。我写了以下的代码试验
用zdma0来在内存中传送数据,发现更本没有进行读写操作,但奇怪dam计数器
的计数和des地址都已经进行了相应增减。
那位有经验的老鸟帮忙看看
INT32U *src,*des,i,j,k;
INT32U srcData[200],desData[200];
src=srcData;
des=desData;
k=0;
do{
for(i=0;i<200;i++){
srcData=20000-k-i;
desData=0;
}
//use ZDMA0, whole mode,unit mode ,count.
rZDICNT0=(0x2<<2|(0x1<<26)|(0x3<<22)|(0<<20)|800;
///4byte unit,fixed src,src address
rZDISRC0=(0xb<<2|(INT32U)src ;
//increase dis ,dis address
rZDIDES0=(0x01<<2|(INT32U)des;
//enable ZDMA0,
rZDICNT0|=(1<<20);
//rx cfg
//issue s/w command,disable nxDREQ.
rZDCON0=1;
j=200;
while( (j>0)&&((rZDICNT0&(1<<20))!=0) ){
j--;
}
k=k+10;
}while(1); |
|