v_pFPGA_WaveData= (FPGA_WaveData*)VirtualAlloc(0,sizeof(FPGA_WaveData),MEM_RESERVE, PAGE_NOACCESS);
if(v_pFPGA_WaveData==NULL)
{
AfxMessageBox(_T("FPGA_WaveData Alloc错"));
}
else
{
if(!VirtualCopy((PVOID)v_pFPGA_WaveData,(PVOID)(FPGA_WAVEDATA>>8),sizeof(FPGA_WaveData),PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE))
{
AfxMessageBox(_T("FPGA_WaveData Copy错"));
if(v_pFPGA_WaveData)
VirtualFree((PVOID)v_pFPGA_WaveData,0,MEM_RELEASE);
v_pFPGA_WaveData = NULL;
}
}
for(i=0;i<(604*201/2+30);i++)
{
ret=(v_pFPGA_WaveData->dwWaveData);
g_nDPXData[2*i]=(U16)(ret&0xFFFF);
g_nDPXData[2*i+1]=(U16)(ret>>16&0xFFFF);
}
如上所示,现在可以从硬件上读大量数据,但是是一点一点慢慢读的,有没有更快的批量读过来的,比如在linux系统下的copy_to_user()就可以批量读数据。