wistful
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1918回复:8

PCI9030在915系列主板上的问题

楼主#
更多 发布于:2005-05-24 09:39
用PCI9030开发了一块板卡,在PIII,PIV系列的主板(芯片组如815,845,848,865,875)上运行的非常好,写板卡的数据流量120MByte/S,读板卡的数据流量1.6MByte/S。但板卡插到915的主板里,运行速度相当慢,写板卡数据流量40MByte/S,读板卡数据流量1.6MByte/S. 我怀疑是驱动的问题,有谁遇到过吗?
eebyte
驱动牛犊
驱动牛犊
  • 注册日期2002-10-23
  • 最后登录2014-10-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-05 14:21
我也碰到同样的问题,我观察了PCI总线的Frame信号,发现在915主板上没有Burst传输,都是单个的,而在老主板上都是很长的Burst

wistful,电话多少,我们聊聊

我的电话:013971057780
eebyte
驱动牛犊
驱动牛犊
  • 注册日期2002-10-23
  • 最后登录2014-10-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-05 15:40
还有qq:179483467
msn: eebyte@hotmail.com
wistful
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-06-06 08:59
9030在915主板上的问题,是驱动的问题。如果只是向PCI板卡写数据,不需要回读,在地址映射函数里增加下面一个属性PAGE_WRITECOMBINE,原属性为PAGE_READWRITE | PAGE_NOCACHE。如果不知在哪儿加,请查找PAGE_READWRITE关键字。这种解决办法可以解决写的问题,如果数据回读,用指针一个一个回读,没有问题,如果用MEMCPY函数回读,有时会死机。
eebyte
驱动牛犊
驱动牛犊
  • 注册日期2002-10-23
  • 最后登录2014-10-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-06-06 09:03
非常感谢wistful大哥,我试试看。
eebyte
驱动牛犊
驱动牛犊
  • 注册日期2002-10-23
  • 最后登录2014-10-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-06-06 10:11
我查了DDK关于地址映射的函数
NTKERNELAPI PVOID
  MmMapLockedPagesSpecifyCache(
    IN PMDL  MemoryDescriptorList,
    IN KPROCESSOR_MODE  AccessMode,
    IN MEMORY_CACHING_TYPE  CacheType,
    IN PVOID  BaseAddress,
    IN ULONG  BugCheckOnFailure,
    IN MM_PAGE_PRIORITY  Priority
    );
其中的参数
    IN MEMORY_CACHING_TYPE  CacheType
可用的类型有:
CacheType
Specifies a MEMORY_CACHING_TYPE value, which indicates the type of caching allowed for the requested memory. The possible values that drivers can use are:
MmNonCached
The requested memory cannot be cached by the processor.
MmCached
The processor may cache the requested memory.
MmWriteCombined
The requested memory cannot be cached, but can be used as a frame buffer by the video port driver.

是否将CacheType参数改成 MmWriteCombined | MmNonCached就可以?驱动原先用的是MmNonCached。

wistful,你是用什么工具开发的驱动?我用你说的关键字PAGE_READWRITE在DDK和DriverStudio中都没有搜到。
wistful
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-06-06 10:18
我们用DriverStudio开发驱动,在WDM.H中可以查到PAGE_READWRITE。你可以试一下MmWriteCombined | MmNonCached。祝你好运。
eebyte
驱动牛犊
驱动牛犊
  • 注册日期2002-10-23
  • 最后登录2014-10-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-06-06 11:03
谢谢!

你在DriverStudio中用的什么映射函数呢?我想参考一下。
wistful
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-06-06 11:49
m_ConstructorStatus = ZwMapViewOfSection(
hPhysMem,
m_hProcess,
&PreferredAddress,
0L,
Size,
&SectionOffset,
&ViewSize,
Inherit,
0,
PAGE_READWRITE | PAGE_NOCACHE | PAGE_WRITECOMBINE
);
游客

返回顶部