zhoujian29
驱动牛犊
驱动牛犊
  • 注册日期2003-10-16
  • 最后登录2005-11-23
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1487回复:2

如果9052的Space0和Space1的配置是一样的(续)

楼主#
更多 发布于:2004-02-16 21:48
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-16_Giveio.rar (4KB)  1
dnykang
驱动牛犊
驱动牛犊
  • 注册日期2002-01-08
  • 最后登录2006-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-02-18 11:15
楼上的大哥你知怎样调用微软的PCIRAW驱动吗
zhoujian29
驱动牛犊
驱动牛犊
  • 注册日期2003-10-16
  • 最后登录2005-11-23
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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的程序,你找找看哈。
游客

返回顶部