基于PCI总线的嵌入式实时图像处理系统

时间:2013-03-14来源:网络


Windows主要根据页错误机制实现对存储器映射设备访问的虚拟化。要捕获对某个设备内存的访问,设备VxD驱动程序会将页表中对应于相应当内存页标注为“不可用”。当在虚拟环境中运行的程序试图访问这个页时,会产生一个错误。VM的异常处理器会调用已注册的设备VxD驱动程序的页错误处理器进行相关处理,即当VM访问该端口时产生异常时进入该硬件的回调处理器,由我们自己编写的函数进行处理。

3.2 各种驱动程序比较

常见的驱动程序包括三种:VxD,KMD和WDM。

(1) VxD:虚拟设备驱动程序,是系统用于各种硬件资源识别、管理、维护运作的扩展。VxD和VMM一起维持着系统的运作。VxD运作组Intel系列CPU保护模式下的Ring0,拥有对硬件的最高控制权。
(2) KMD,Kernel Mode Driver。它是WindowsNT下提出的管理、维护硬件运作的驱动程序模式。该Driver运行于WindowsNT的Kernel模式下(类似于Ring0)。但一个KMD的运行环境在不同的时候是根本不同的,Driver收到设备请求时的运行环境很可能和设备请求实际操作的运行环境根本不同,因此在WindowsNT下Driver的运作受到WindowsNT本身的很多限制。
(3) WDM,Win32 Driver Model。它可以和Windows2000兼容,MS力推的全新的驱动程序模式,它实际也可以理解为一个即插即用的KMD。WMD代码很长,Windows98对WDM支持有限,因此WMD难以一时取代VxD。

3.3 PCI2040驱动程序开发

PCI2040不是标准的硬件设备,因此必须自己编写PCI2040的硬件安装信息文件和驱动程序。PCI2040配置空间如附表:

其中设备ID用以标识特定的设备,具体的代码由供应商来分派;供应商ID用以表明设备的制造者,这二者是识别PCI设备的唯一标识。对于PCI2040来说,当读Vendor-device ID时,返回值为AC60104C。

(1) 设备信息安装文件

设备信息安装文件(.INF)包含了驱动程序的名称、驱动程序应该复制到的目录,以及在驱动程序安装时必须生成和修改的注册表入口。

在编写INF文件时,可以使用了VtoolsD开发包中的INF Editor工具,以下是我所编写的PCI2040安装信息文件。

[Version]
Signature=$CHICAGO$
Class=PCI Bridge file://设备类型为PCI桥设备
Provider=%String0% file://供应商的名称
[ClassInstall]
[DestinationDirs]
DefaultDestDir=11 file://将驱动程序安装在
file://C:WindowsSystem目录下
[Manufacturer]
%String1%=SECTION_0
[SECTION_0]
%String2%=sevenstar,PCIVEN_104CDEV_AC60
[sevenstar]
CopyFiles=CopyFiles_sevenstar
AddReg=AddReg_sevenstar
[CopyFiles_sevenstar]
DSP_PCI_Bridge.vxd file://驱动程序的名称为 file://DSP_PCI_Bridge.vxd
[AddReg_sevenstar]
HKR,,DevLoader,0, DSP_PCI_Bridge.vxd file://在注 file://册表中添加相关信息
[sevenstar_LogConfig]
ConfigPriority=NORMAL
IRQConfig=3,7,9,10,15 file://指定PCI2040可 file://选的中断口
[ControlFlags]
[SourceDisksNames]
1=pci2040驱动盘,,0000-0000
[SourceDisksFiles]
DSP_PCI_Bridge.vxd=1
[Strings]
String0="Texas Instruments"
String1="TI"
String2=“PCI桥接”

(2) VxD的创建

Windows支持静态安装和动态安装VxD,前者是在Windows初始化时安装VxD并一直保存在Windows中,后者是在一个应用程序或其他VxD的控制下安装和卸载。静态安装的VxD始终占用着一定的内存资源以及中断口,若不是一直运行,则导致了资源浪费。

在使用QuickVxD开发VxD只需在Dynamically Loadable选项中打勾就行了,其中Device Name是指我们的VxD的设备名,每个VxD都有设备名这儿是指PCI2040芯片,Device ID是用来标识设备,只有当该VxD需要提供对其他VxD的调用入口时才用,且不能任意取应该由Microsoft公司提供,一般情况直接用UNDEFINED_DEVICE_ID就行了,Device Initialization Order确定Windows对VxD的安装顺序,比如你想要你的VxD先于VDD初始化就应该设置为VDD_INIT_ORDER-1,一般情况也使用默认值。

4 结束语

图像处理系统实现的关键在于如何对大容量的信息进行暂存、压缩和传输等问题进行处理。本系统的实现很好的解决了这三个难题。在图像信息暂存方面充分利用了DSP存储空间的可扩展性,保证了系统可暂存的信息量足够大;信息压缩是DSP的最擅长做的事情,可以在很短的时间内完成大量的信息压缩工作;PCI总线的引入保证了信息在足够的带宽下进行快速传输。
1 2 3

关键词: PCI总线 实时图像 处理系统

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版