阅读:1498回复:2
如果9052的Space0和Space1的配置是一样的(续)
OK,实验证明,当Space0和Space1的配置是一样的(唯一的不同是Space0是memory方式访问,而Space1是I/O方式访问),两种方式访问的数据区其实是同一个数据区。
另: 当local Bus被配置成8bit数据宽度时,如果您曾经习惯于在DOS下用Debug.exe去调试您的ISA卡,那么,在win2000下,您同样可以用debug.exe去访问您的PCI9052卡! 以PDC1000开发卡为例。读写操作的目标是PXL9052本地端口上的SRAM。假设用户已经安装了PLX公版驱动程序PLX9050.sys和winnt/2000下访问I/O的驱动程序Giveio.sys驱动程序。 关于Giveio,网上有很多应用示例,如果您对WDM编程一头雾水又急于在win2000下对一些I/O口进行访问,giveio是一个极好的辅助工具。附件是Giveio的驱动程序和安装说明及英文的编程说明。 1,在win2000的控制面板-系统-硬件-设备管理器,找到您的PCI9052卡,双击,观察其占用的资源,记下该卡占用的“输入输出范围”,比如我的卡就是“e000-e0ff”共计256个byte。 2,在win2000的“开始”-“运行”,键入“CMD”,进入win2000的类似于DOS的控制台窗口。 3,键入“Debug \\.\giveio”,回车 提示“file not found”,不管它, 在命令符“-”后,键入“i e000”,这样,就把I/O地址是0xe000(对应PXL9052本地端口上的SRAM的第1存储单元)的数据读回到计算机,此时读回的值是0x18。 此时可以多读几个地址,然后打开PLXmon以8bit方式去读S0,您会发现两种方式读回的数据是一样的。 4,在命令符“-”后,键入“o e000 a5”,这样就把0xA5写入到I/O地址是0xe000(对应PXL9052本地端口上的SRAM的第1存储单元)的存储单元中。再键入“i e000”,此时读回的值是就是刚才写入的0xA5了。用PLXmon以8bit方式去读S0,可以清楚地看到,SRAM的第1存储单元的数据被改成了0x5a。 |
|
|
沙发#
发布于:2004-02-18 11:15
楼上的大哥你知怎样调用微软的PCIRAW驱动吗
|
|
板凳#
发布于:2004-02-18 17:11
俺也不知道,但是,如果你有NI公司的Labwindows/CVI 5.5或更高版本的软件(基于C语言),在winnt/win2000下访问被操作系统保护起来的I/O和memory空间是非常容易的事,因为Labwindows/CVI已经把驱动隐含在了它的运行库中,而我们依然可以像在win98下那样,用函数inpd(),outpd(),ReadFromPhysicalMemoryEX(),WriteToPhysicalMemoryEX(),对I/O和memory空间进行访问:)。当然,CVI的一个弱点很多,比如不支持中断……
在本站中有文章介绍在winnt/win2000下访问memory的程序,你找找看哈。 |
|