以下为DMA代码 :
UINT32 Length=0x2000;
UINT32 pbuffer=cacheDmaMalloc(Length*4);
*(UINT8*)(Base0Addr+0x8e) =0x01;/*open Dma inter Mask */ *(UINT32*)(Base0Addr+0x0) = pbuffer ;/*dma address*/
*(UINT32*)(Base0Addr+0x08) =Length*4; /*dma transmitte length*/
*(UINT32*)(Base0Addr+0x90)= 0x10000;/*DMA start;*/
semTake(DataReady,WAIT_FOREVER); /* wait for DMA Intrrupt Event*/
cacheDmaFree((char*)pbuffer);
发觉在4k下数据正常,>4K则不正常,中间老有一段乱数。
我想一次读取1M数据
我试过
1:将pbuffer &0xFFFFF000
结果:8k正常,但到0x256K 又不正常。。
2:指定Vxworks 下一段没用的空间 比如:0x6D00000
8K有时正常,有时不正常 ,1M就根本没成功过。
请各位大侠帮忙。