并行数据采集系统中物理内存分配与直接访问的研究
电子元件,电子元器件深圳市创唯电子有限公司
您现在的位置: 首页 > 电子技术
并行数据采集系统中物理内存分配与直接访问的研究  2012/3/1
采用此方法必须十分精通Windows内部体系结构、MicrosoftMASM汇编语言和设备驱动程序结构体系方法以及具有丰富的经验,否则会造成软件极不稳定甚至系统崩溃。这种方法在开发设备虚拟驱动程序时非常实用,但需要花费的时间和精力也比较多。(3)利用WinDriver实现的方法利用WinDriver也可以实现物理内存的分配,用这中方法的好处有:WinDriver的函数以文件形式独立出来,开发时只需将其文件加入模板接口API动态链接库(DLL)源文件中
采用此方法必须十分精通Windows内部体系结构、Microsoft MASM汇编语言和设备驱动程序结构体系方法以及具有丰富的经验,否则会造成软件极不稳定甚至系统崩溃。这种方法在开发设备虚拟驱动程序时非常实用,但需要花费的时间和精力也比较多。

(3)利用WinDriver实现的方法

利用WinDriver也可以实现物理内存的分配,用这中方法的好处有:

WinDriver的函数以文件形式独立出来,开发时只需将其文件加入模板接口API 动态链接库(DLL)源文件中即可,使用方便而且独立性较强。

由于模板接口API  DLL主要是利用WinDriver实现的,这样使整个DLL有较强的统一性和稳定性。

在整个DLL中,每个数据采集模板只有一个句柄,避免了有其他方法实现时的每个数据采集模板多句柄问题。

如上所诉,利用KRFTech’s公司开发的WinDriver是可以实现物理内存分配的。WinDriver本来是硬件驱动程序开发工具,运用它很容易完成访问I/O端口、存储区域、处理中断、执行DMA操作及访问PCI和自定义寄存器的工作。利用WinDriver 库函数WD_DMALOCK()可以动态地分配一段物理内存。这个函数的作用是:分配和锁定物理内存区,并返回已分配内存的物理地址。下面对此函数做一详细介绍。

   WD_DMALOCK(HANDLEHwd,WD_DMA *pDma)
这里用到WD_DMA结构,它的成员如下:
   pUserAddr – 内存的基地址
   dwBytes – 内存的大小
   dwOptions – 内存分配方式,常为 0。
=DMA_KERNEL_BUFFER_ALLOC 时,内存地址是连续的,内                  存地址放在pUserAddr中  
         =DMA_LARGE_BUFFER 将分配大于1MB 的内存
Page[] – 内存地址数组
Page[i].pPhysicalAddr – 第i页的物理地址
  
比如向上位机申请64KDWORD物理内存,则:

{ WD_DMA Dma;
BZERO(Dma);
Dma.dwBytes = 262144;//64KDWORD
Dma.pUserAddr = NULL;
Dma.dwOptions= DMA_KERNEL_BUFFER_ALLOC;
WD_DMALock (hWD, &Dma);
与《并行数据采集系统中物理内存分配与直接访问的研究》相关列表
电话:400-900-3095
QQ:800152669
库存查询
Copyright(C) 2011-2021 Szcwdz.com 创唯电子 版权所有 备案号:粤ICP备11103613号
专注电子元件代理销售  QQ:800152669  电子邮件:sales@szcwdz.com  电话:400-900-3095