嵌入式系统嵌入式系统/ARM技术中的技术中的Windows98平台下平台下DMA高速数据采高速数据采
集系统的开发集系统的开发
微软公司的windows视窗不仅改变了计算机操作界面,同时也改变了一个时代,它不需要有很高的打字技巧,也
不需要理解各种枯燥、深奥的命令,使越来越多的人能够接触计算机,并且在各自的生活、工作、学习中广泛
运用。人们只要按一下鼠标或者一两个按键,就可以完成很多事情,计算机也因此更加生活化,并以前所未有
的速度普及开来。 针对DMA的Windows虚拟设备驱动程序并不常见,因为DMA设备对物理地址采取的是直
接寻址,要保护正确地寻址相对较困难。笔者在开发利用DMA技术实现的高速数据采集系统——核谱获取和高
速生理信号采集处理系统时,成功地编写了DMA虚拟设备驱动程序。 1 系统硬件设计 利用DM
微软公司的windows视窗不仅改变了计算机操作界面,同时也改变了一个时代,它不需要有很高的打字技巧,也不需要理
解各种枯燥、深奥的命令,使越来越多的人能够接触计算机,并且在各自的生活、工作、学习中广泛运用。人们只要按一下鼠
标或者一两个按键,就可以完成很多事情,计算机也因此更加生活化,并以前所未有的速度普及开来。
针对DMA的Windows虚拟设备驱动程序并不常见,因为DMA设备对物理地址采取的是直接寻址,要保护正确地寻址相对
较困难。笔者在开发利用DMA技术实现的高速数据采集系统——核谱获取和高速生理信号采集处理系统时,成功地编写了
DMA虚拟设备驱动程序。
1 系统硬件设计系统硬件设计
利用DMA技术实现的高速数据采集系统框图如图1所示,该系统采用了ISA总线与PC机接口。当数据通过A/D转换采集进
来后,先存储到系统内部的数据缓存SRAM中;当数据存满预定的字节数后,系统即向计算机发出DMA申请。DMA控制器在
接管总线以后,在没有CPU的干预下,以极快的速度将缓存中的数据经计算机总线送到计算机内存中,再由计算机进行数据
分析处理。
2 基于基于Win98平台的平台的DMA高速数据采集系统的软件设计高速数据采集系统的软件设计
软件部分先使用VtoolsD开发出虚拟设备驱动程序(VxD),再以Visual C++6.0为开发工具进行界面设计和数据处理。
虚拟设备驱动程序VxD(Virtual Device Driver)是用来扩展Windows操作系统功能的一类程序。它主要向一般的应用程
序(运行于ring3级)提供位于系统底层的服务,解决难于被一般的ring3级的应用程序处理的问题,如对硬件的支持等。VxD
可以不受限制地访问所有的硬件设备,可以自由检查操作系统的数据结构,并可以访问一些内存地址。
VDMAD即DMA设备驱动程序,它提供一个虚拟的DMA控制器,使得在Windows平台上,虚拟机(VM)之间共享DMA成
为可能。在DMA方式下传输数据时,DMA控制器从一个物理地址开始,每传送完一个字节,地址自动加1或减1,再顺序存放
下一字节的内容。执行DMA数据传输时,VDMAD自身占用了一块物理连续的内容,此内存便成了VM与DMA通道间交换信息
的关键。
windows98是微软公司推出的windows95的升级版本,它保持了原来window95的优秀风格,也增加了不少新的特征。
windows98各种新增的系统工具使系统的性能更稳定,功能更强大;FAT32,系统文件检查器,电源管理,磁盘扫描和整理,
这些都是您不可缺少的好帮手。windows98创新的、容易使用的特征使您可以更方便地使用计算机;调整向导、WEB集成、
更新的向导方式,及增强的帮助,仔细琢磨一下,肯定会有大收获。windows98新的向导使复杂的操作变得更简单,增强的即
插即用功能使您可以更方便地添加新硬件,而它强大的网络功能和与WEB集成的特征使您可以更方便地使用Internet,系统附
加的各种多媒体程序使您的计算机成为一个娱乐中心。
另外,windows98还提供了更多的硬件支持功能,譬如,它可支持多台显示器同时工作,您可一边欣赏电影,一边工作;
它还支持通用串行总线USB(Universal Serial Bus),通过此端口,可支持多达127个外加周边设备,如USB扬声器、扫描
仪、数码镜头等;除此之外,windows98还支持DVD等新型多媒体设备。
专门开发虚拟设备驱动程序的工具以Windows DDK和VtoolsD较着名。VtoolsD较方便、快捷,是专门用于编写虚拟设备
驱动(VxD)程序的表格式的开发工具。编程者只要填写了有关的设备名称、版本信息、需求的Windows控制消息之
后,VtoolsD就会自生成VxD的程序框架,只需对一些有用的消息增添相应的功能代码,就可以编译成VxD文件,供一般的应
用程序调用。这里假设设备名为MYDMA,VtoolsD输出三个有用的程序:Madma.h、Mydma.c、Mydma.mak;分别打开
Mydma.h和Mydma.c进行代码功能的完善;最后在Visual C++6.0中,通过Mydma.mak文件加载工程,编程生成Mydma.VxD
文件;在ring3级程序中即可中通过CreateFile函数进行调用。
评论0
最新资源