找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 14401|回复: 5

关于PCI Device scan 的一点优化

[复制链接]
发表于 2008-12-19 10:57:34 | 显示全部楼层 |阅读模式
理论上在扫描PCI 设备的时候我们大可用  3个loops来做就可以了。但是这里有很大的弊端!
. @, I  \: T, f2 |/ b6 k" i! R* S/ w+ F6 y1 J
     有优化的方案:
' k4 _/ C4 [) B8 c4 b- |9 H# b6 @) n/ ?: o1 I0 ?
     第一,扫描每个PCI设备的 第00 function,如果这里返回的是 00 or FFH。那么,说明它的- L2 d' s; l( @: b  Z

( d' n# f5 i: s4 e其他function设备也肯定没有!所以这里就可以直接挑到下一个device的扫描了。
# m; f: m* i6 i* I; j3 y* C, J; V! l$ P8 a3 U' ^8 X
     第二,假如第00 function是有设备的。那么也大可不必一下把后面的 01--07 function都扫描
" w6 A2 z8 ^7 a$ W" c  z7 Y
5 w8 Z; H6 D5 B: |一遍。因为spec中有个位是专门来说明是否是multi 设备的。若这里被置1,才说明01--07有设备。. Z  _* ~& M+ E5 x3 l* q! `
8 j/ P3 B3 q9 J9 M+ I' y: C# f
否则该pci设备是single  function的。) ]& A/ l3 `  h3 u8 k) m
0 `1 Z- I, [+ O2 }( Z- \
      基于上面两点,可以优化很不少的时间。# T, U0 U9 v0 _* V
6 q  J9 P8 J3 i8 R& I" w8 k
      以上仅仅是我作为一个初学者的经验,希望对后辈有用。少走点弯路。
( n* H( y  J4 B8 S/ B
% O7 p0 k4 Q+ G5 i4 v4 Y  b' }# Z) i  J       以后有时间我会继续,发表我的心得。也许比较简单。不知道版主支持不?
发表于 2008-12-19 12:59:22 | 显示全部楼层
你是dos下嗎?6 d; l4 y# q8 Y! s$ h6 c

, D$ M0 e& q5 l3 l7 [有没有哪位大侠,介绍一下,怎样在xp, vsta下 scan pci, mem , access io port,我很希望自己能; @- ^# H  a1 W9 b6 }6 n* Z( O7 m. _
做一个功能同se.exe那样的东西 + F0 K/ D; M  A$ _" Q) I2 n& @$ Y
谢谢!!
回复

使用道具 举报

 楼主| 发表于 2008-12-19 15:04:18 | 显示全部楼层
恩,我一直是在纯DOS下做的。至于XP或者 VISTA下,我没有做过。
回复

使用道具 举报

发表于 2008-12-19 18:20:35 | 显示全部楼层
原帖由 weednet 于 2008-12-19 12:59 发表 6 o/ p  ^% `; s: f1 ~, P) B
你是dos下嗎?6 m* @" X( B6 q$ Y6 x  v

8 h- S, h# {5 X有没有哪位大侠,介绍一下,怎样在xp, vsta下 scan pci, mem , access io port,我很希望自己能) Q! z. Y) k/ K$ s( J
做一个功能同se.exe那样的东西
% n" c) r% x6 v谢谢!!
" \9 Y6 i. ~( O: F

2 ~7 X+ N2 C) f2 T( c& Y* q我自己写了一个驱动,现在在X86/X64读IO MEM CPU的MSR之类的都OK。配套的Library基本函数都写完了,但是有些高级一点的function要加,所以目前不发布出来。
回复

使用道具 举报

发表于 2008-12-22 11:37:52 | 显示全部楼层
Dear freevanx,
) J/ |! u) a. u# I1 Y “我自己写了一个驱动,现在在X86/X64读IO MEM CPU的MSR之类的都OK。配套的Library基本函数都写完了,但是有些高级一点的function要加,所以目前不发布出来”/ G8 y( u* W% ^& C
   能介绍一下,需要用到那些工具,有哪些参考资料吗? 分享一下经验
回复

使用道具 举报

发表于 2008-12-23 09:37:12 | 显示全部楼层
原帖由 weednet 于 2008-12-22 11:37 发表 $ Q, L# J( k  w& _
Dear freevanx,
5 S; ]. X9 k& k, K' G* F! R1 ^' R! @ “我自己写了一个驱动,现在在X86/X64读IO MEM CPU的MSR之类的都OK。配套的Library基本函数都写完了,但是有些高级一点的function要加,所以目前不发布出来”
, _2 t" J' [4 j2 Q; }# j; {( a   能介绍一下,需要用到那些工具,有哪些参考资 ...
# ~- T, P/ o) _
6 H) f/ s" X$ F2 X3 v
WDK,里面有个portIO的sample,基本参考那个就OK。一些细节上的代码要自己组织,另外要熟悉User library的写法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2026-9-18 20:09 , Processed in 0.166184 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表