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

关于PCI Device scan 的一点优化

[复制链接]
发表于 2008-12-19 10:57:34 | 显示全部楼层 |阅读模式
理论上在扫描PCI 设备的时候我们大可用  3个loops来做就可以了。但是这里有很大的弊端!) y* w  s; `" ^2 {- C0 x" H

5 R. F- J* T: e$ \% m     有优化的方案:9 C& T1 b+ Z* D

. Q2 ^; }, O$ [  y. L: S     第一,扫描每个PCI设备的 第00 function,如果这里返回的是 00 or FFH。那么,说明它的) @. w6 T+ }( I7 O8 V

* ^! k  h8 z/ q0 f其他function设备也肯定没有!所以这里就可以直接挑到下一个device的扫描了。
+ d7 c% [6 P9 z4 v# o( a
# M- V6 t0 ~. E, ?/ L' @     第二,假如第00 function是有设备的。那么也大可不必一下把后面的 01--07 function都扫描; w% I6 K) |2 G9 `' F
) Z2 q8 X( V" x& }' X
一遍。因为spec中有个位是专门来说明是否是multi 设备的。若这里被置1,才说明01--07有设备。) g3 r1 Y! `0 @4 L  y1 X( N( D5 K

7 e( x) X/ D0 ?5 ?+ U否则该pci设备是single  function的。
3 s9 q% j/ Q% J* Q4 m
# Y; L8 q0 L4 v3 S$ T      基于上面两点,可以优化很不少的时间。! Z) n  X) i2 g* b% d7 b

$ L6 X! s2 A/ m: K- W      以上仅仅是我作为一个初学者的经验,希望对后辈有用。少走点弯路。+ X  p8 Q% W! P6 y
  P- k5 ~. Y. A. P) {, I
       以后有时间我会继续,发表我的心得。也许比较简单。不知道版主支持不?
发表于 2008-12-19 12:59:22 | 显示全部楼层
你是dos下嗎?
' P5 g" t+ P, Q! e2 o3 e1 B
5 x3 X4 [* B: K0 y4 ~有没有哪位大侠,介绍一下,怎样在xp, vsta下 scan pci, mem , access io port,我很希望自己能" X+ X" d: e  e& \% F) W1 d
做一个功能同se.exe那样的东西 ) ^* t3 y( r5 p4 X, r
谢谢!!
回复

使用道具 举报

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

使用道具 举报

发表于 2008-12-19 18:20:35 | 显示全部楼层
原帖由 weednet 于 2008-12-19 12:59 发表 5 G8 s! N( ~/ U  }
你是dos下嗎?
; x2 u, Q8 e2 \  N, V
' H: G( k! x# B  C有没有哪位大侠,介绍一下,怎样在xp, vsta下 scan pci, mem , access io port,我很希望自己能
7 m. j1 _9 Z! `! U: L) C9 m: J做一个功能同se.exe那样的东西
0 q$ q* j7 J  G' F, s+ p1 u5 _3 V谢谢!!
9 U$ l7 N4 p7 q. d' W( ^
9 R9 d! B) f& F1 g* H9 W& d
我自己写了一个驱动,现在在X86/X64读IO MEM CPU的MSR之类的都OK。配套的Library基本函数都写完了,但是有些高级一点的function要加,所以目前不发布出来。
回复

使用道具 举报

发表于 2008-12-22 11:37:52 | 显示全部楼层
Dear freevanx,
, u' ^6 G" v  t, l0 ^  [ “我自己写了一个驱动,现在在X86/X64读IO MEM CPU的MSR之类的都OK。配套的Library基本函数都写完了,但是有些高级一点的function要加,所以目前不发布出来”4 {6 L3 j9 C4 Z* |' x" Q; g
   能介绍一下,需要用到那些工具,有哪些参考资料吗? 分享一下经验
回复

使用道具 举报

发表于 2008-12-23 09:37:12 | 显示全部楼层
原帖由 weednet 于 2008-12-22 11:37 发表
& G2 f0 l' G3 u& B4 k0 yDear freevanx,
% }: t% f- _2 A. r “我自己写了一个驱动,现在在X86/X64读IO MEM CPU的MSR之类的都OK。配套的Library基本函数都写完了,但是有些高级一点的function要加,所以目前不发布出来”
% ]- h' ^* q% u/ Z1 R$ ~" G2 q   能介绍一下,需要用到那些工具,有哪些参考资 ...
: r0 w$ G( v* X/ f+ I
1 _: q* a4 M! x
WDK,里面有个portIO的sample,基本参考那个就OK。一些细节上的代码要自己组织,另外要熟悉User library的写法。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-21 22:11 , Processed in 3.378906 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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