phyond
驱动牛犊
驱动牛犊
  • 注册日期2009-05-23
  • 最后登录2014-09-05
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1565回复:4

恳请高手解答:访问Pci设备资源问题

楼主#
更多 发布于:2009-06-11 21:53
我是用driverstudio3.1开发的Pci驱动
我的硬件信息是:Pci板上有一个双口RAM,要求主机能够实现对双口的访问
驱动程序框架是用wizard生成的,虽然应用程序中能够实现读写操作,但是
不清楚具体写到哪个位置了,从哪个位置读出来的,而主机方要求能够实现对
双口ram指定地址单元的读写操作,那么我在驱动程序里面应该怎么办呢?
谢谢指点
careware
驱动牛犊
驱动牛犊
  • 注册日期2009-03-27
  • 最后登录2009-07-27
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-06-12 10:09
我也是个新手。正好也在做这些东西,就来说说,说的不对的地方请多指教。
不知道对楼主问题理解的对不对。
在设备类中申明一个KMemory 的成员,叫m_MemoryRange.在OnSrartDevice中添加。
这里假设内存空间被映射到BAR0,具体你可以通过写如数据测试,看映射的对不对。
Status=m_MemoryRange0.Initialize(
            pResListTranslated,
            pResListRaw,
            m_PciConfig.BaseAddressIndexToOrdinal(0);//映射内存空间到BAR0;
            );
BAR0~BAR5中寄存着内存空间和IO空间的基地址。在设计硬件时被硬件置位的。不懂得参考一下PCI2.2协议。另外看看板卡的设计说明书,一般功能教简单的板卡是在接口卡的基础上设计的。可以参考接口卡PLX PCI9052的设置。
希望你顺利解决问题,分享你的成功经验与喜悦。
phyond
驱动牛犊
驱动牛犊
  • 注册日期2009-05-23
  • 最后登录2014-09-05
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-06-12 11:03
很感谢楼上的解答
不过我还有一些不明白之处,driverstudio开发环境下,write和read函数是调用writefile和readfile来实现的,但是write和read函数的参数中只有一个表示字节的,没有地址参数,即使我知道了映射出来的基地址又有何用?
还有,driverstudio里面有没有读取Pci配置空间的函数或类?
谢谢回答
careware
驱动牛犊
驱动牛犊
  • 注册日期2009-03-27
  • 最后登录2009-07-27
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-06-14 18:25
回 2楼(phyond) 的帖子
WriteFile和ReadFile是用在应用程序中的,与测试程序通信的。
KPciConfiguration类是配置空间的类。如果你是框架生成的,那么第二步选择PCi设备时,向导就会申明这个类的成员。
用这个语句关联到PDO上:KPciConfiguration PciConfig(m_Lower.TopOfStack());
知道了基址,直接写数据就可以了。inb()读数据,outb()写数据。
FORM 2:

VOID inb(
   ULONG ByteOffset,
   PUCHAR Buffer,
   ULONG Count
);

Read a byte or multiple bytes from the mapped range.

FORM 2:

VOID outb(
   ULONG ByteOffset,
   PUCHAR Buffer,
   ULONG Count
);

Write a byte or multiple bytes to the mapped range
给你举个例子。m_IORange.outb(0x0,pBuffer,1);//将pBuffer中的一个字节写入IO
你可以查查帮助。多看看书吧,基础一定要打好。
careware
驱动牛犊
驱动牛犊
  • 注册日期2009-03-27
  • 最后登录2009-07-27
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-06-14 18:31
不过硬件的地方我也有些地方不懂,希望相互交流共同进步吧。
我的QQ是:515241195
游客

返回顶部