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

关于PCI Device scan 的一点优化

[复制链接]
发表于 2008-12-19 10:57:34 | 显示全部楼层 |阅读模式
理论上在扫描PCI 设备的时候我们大可用  3个loops来做就可以了。但是这里有很大的弊端!
' \+ O$ u7 b( ], k/ ?4 m' n9 y/ c1 M
     有优化的方案:
1 W2 i# M, k2 t9 o0 N4 g5 Z
2 g! h8 }+ v2 w. J. j     第一,扫描每个PCI设备的 第00 function,如果这里返回的是 00 or FFH。那么,说明它的' J# u: x0 f5 ~# K- x
9 p9 F5 F; S6 O) b4 ]
其他function设备也肯定没有!所以这里就可以直接挑到下一个device的扫描了。! ~6 n  x$ j3 j- N; v7 d2 y

; Y7 V- d9 W, r- Z: A: U     第二,假如第00 function是有设备的。那么也大可不必一下把后面的 01--07 function都扫描2 c$ p" V$ b$ K- `
" [/ d+ d  i: K5 `
一遍。因为spec中有个位是专门来说明是否是multi 设备的。若这里被置1,才说明01--07有设备。
6 {+ f/ E6 [6 i1 F) V
0 a2 E7 t% Y( x7 U) _# q否则该pci设备是single  function的。
: H" H/ C# D: \: n, r5 {. \& i; Y
! z2 D; P( N1 }/ V& R      基于上面两点,可以优化很不少的时间。. _/ L0 M8 m6 Y% i5 ~* T- }; M- s% @

. F, Q" u0 s4 B4 w" @1 r      以上仅仅是我作为一个初学者的经验,希望对后辈有用。少走点弯路。9 n( i8 E- `6 a2 S# Z

. X; A  I+ ]) |- x- Z1 ?! V/ |. }       以后有时间我会继续,发表我的心得。也许比较简单。不知道版主支持不?
发表于 2008-12-19 12:59:22 | 显示全部楼层
你是dos下嗎?6 p! P8 I6 S( b  _
. Y$ P; k5 Z4 x6 d- F
有没有哪位大侠,介绍一下,怎样在xp, vsta下 scan pci, mem , access io port,我很希望自己能' P! m/ V& w& z/ M6 t& v
做一个功能同se.exe那样的东西   B( t/ p5 {8 ?6 l% ^+ k  @' \* `
谢谢!!
回复

使用道具 举报

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

使用道具 举报

发表于 2008-12-19 18:20:35 | 显示全部楼层
原帖由 weednet 于 2008-12-19 12:59 发表
7 P  _* S8 Z2 E2 J$ K4 i* m: e你是dos下嗎?
; j! {* T( g. e2 ^5 n1 r3 g
% X7 O* w: A- v0 C; i' z0 }! e8 q# @- e; Z有没有哪位大侠,介绍一下,怎样在xp, vsta下 scan pci, mem , access io port,我很希望自己能
9 V: u1 r5 b$ b7 s做一个功能同se.exe那样的东西
% c1 o% n( y5 m  z% t4 l" a) L谢谢!!

2 f& b% s# ]* Q( g3 `& D5 O% p% P; q  s4 C# ~
我自己写了一个驱动,现在在X86/X64读IO MEM CPU的MSR之类的都OK。配套的Library基本函数都写完了,但是有些高级一点的function要加,所以目前不发布出来。
回复

使用道具 举报

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

使用道具 举报

发表于 2008-12-23 09:37:12 | 显示全部楼层
原帖由 weednet 于 2008-12-22 11:37 发表
6 b9 v' [3 O. Y  T8 `0 [4 I) b: \Dear freevanx,/ [4 Z0 y" \# ^6 U
“我自己写了一个驱动,现在在X86/X64读IO MEM CPU的MSR之类的都OK。配套的Library基本函数都写完了,但是有些高级一点的function要加,所以目前不发布出来”( W# J9 N/ X7 r$ H2 d! I" M
   能介绍一下,需要用到那些工具,有哪些参考资 ...
) O! B/ ^0 U- S9 O4 |) @

% G+ r% k7 G2 t9 p, ~1 cWDK,里面有个portIO的sample,基本参考那个就OK。一些细节上的代码要自己组织,另外要熟悉User library的写法。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-29 04:07 , Processed in 0.452045 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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