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

IO Port Driver

[复制链接]
发表于 2009-5-13 17:14:34 | 显示全部楼层 |阅读模式
ECBACK.SYS

% w, j# ?" r1 Y" G8 T* K
6 v- }9 ]( X4 t, f/ H最近工厂PE端需要一堆测试程序,这些程序主要是用于测试EC的各种功能如:测试风扇,测试电池,测试键盘等等。而且要求通吃vista,xp,winpe
我最初打算使用wmi acpi实现,可是发现wmi acpiwinpe下无法工作。! |: C6 c! }5 e/ ~2 J5 J9 T+ M
迫于无奈只有实现一个IO portdriver,然后AP透过ECback door 存取EC XRAM&REG,只有这个方法才能通吃三个平台了.
! S: V- L1 h0 o$ t+ |
, R8 B: ^6 C+ n8 P4 b/ RIO port driver是非常简单的driver了,winio就是一只这种类型的driverwinio是通过修改IOPM开启应用程序IO RW权限的,我写的这个ECBACK.sys则是使用DDKAPI读写IO实现的。当然我也参考了winio加载 driver 的代码,所以我将ECBACK.sys kernel mode & user mode source code贴于附件中供下载。解压后会三个文件夹其中sys
中是
( A5 r! q; ~; z9 I9 kECBACK.syssource code,lib是我导出的user mode api 一共包含四个函数:

6 p4 T6 [6 q: V3 f* ` 7 w& \6 c% z: i& |- P( v+ a
#ifndef
2 F6 v$ C! ~$ y0 Y) a6 E__ECBACKAPI_H__

2 E- `" m# x2 j#define
5 [* {2 w4 I; q1 Y) o$ H8 N__ECBACKAPI_H__
0 {$ W/ T9 F+ m9 D) n

8 z+ r  ^, H. S6 KBOOL
# z! G$ W) [0 @. cInstall_ECBackDrv(
void);
+ [7 g7 f: k8 D: z  t' r" i
, {! n9 N8 o5 k; Y
BOOL
6 Q4 m' T0 ?! h2 E& b0 vUninstall_ECBACKDrv(
void);
. p( ~( B/ W' N
/ o! I6 ~7 n9 i
void& n) U7 ]$ g' Z) y
Write_EC_UCHAR(IN UCHAR port_base,IN UCHAR add_H,IN UCHAR add_L,IN UCHAR data);

' r3 A' s& f5 D; Z8 L$ @+ D4 b ) C# I( v5 I; v+ X) \0 v- a2 M
UCHAR8 k* ~+ p+ b( ?
Read_EC_UCHAR(IN UCHAR port_base, IN UCHAR add_H,UCHAR add_L);2 @! A, O6 N/ E# r( a+ K
5 ~, i% }% `) r' v" t" u
+ d' A9 _* k2 {0 O7 ^1 A8 |
#endif$ t! K, S1 X/ p: ?1 b- l
Install_ECBackDrv通过创建service的方式加载driver,这样AP才可以和driver沟通。读写io port部分也被封装到了Write_EC_UCHAR & Read_EC_UCHAR中了,user不用再去调用DeviceIoControl再往下送IRP了。使用完之后需要调用Uninstall_ECBACKDrv,该函数会将Install_ECBackDrv创建的service移除掉。文件夹
3 y7 f3 c- s: b% [: g0 L. j. f1 L2 OECBDTest是我写的一个测试程式用于演示如何使用lib文件夹中导出的函数。这些部分实现了以后其他组写测试程序只需要按照sample code写法实现就好了,我就解放了J!
' ^2 v9 h8 p) ]7 {- X3 D

. ^/ H# }4 p# w. b( s# |1 @# h( BThat’s all!6 Q, K) x. r0 I; `# S7 N

  \) N6 B8 X! K' O' A) o( oPeter

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入计匠网

×
发表于 2009-8-12 14:20:15 | 显示全部楼层
Hi,peter.hu
* j4 b$ s: ]* E) V
! p  E+ W; p; ~dontuse.h头文件在哪里可以找到啊,谢谢了
回复

使用道具 举报

 楼主| 发表于 2009-8-12 17:06:11 | 显示全部楼层
应该在DDK里面,你装个DDK然后到安装目录下的include文件夹下找找看。
回复

使用道具 举报

发表于 2009-8-15 00:57:25 | 显示全部楼层
hi,peter.hu9 R- h5 ?- C4 D% ~7 i
5 a2 {) Z% M# @. `1 h
我安装了DDK 2006,但是还是没有找到这个文件,请指教,谢谢
回复

使用道具 举报

发表于 2009-8-17 13:04:29 | 显示全部楼层
ddk已经带有完整的示例代码了,就在src\gerneral\portio下。9 V% n/ S( b' {, Q' L. }3 L
包括驱动的加载,驱动代码,测试应用。
回复

使用道具 举报

发表于 2009-12-28 13:56:50 | 显示全部楼层
Write_EC_UCHAR和Read_EC_UCHAR函数的参数跟WinIO的IOPort函数不一样,我不太明白,可否说明下这2个函数里参数的意义。
回复

使用道具 举报

发表于 2010-1-18 17:31:35 | 显示全部楼层
我以前是用我們的產品解決類似的問題:
1 c$ ^& Y8 j4 d. F/ ~$ yhttp://www.samedisk.com/cht/productinfo1051.php9 s0 J* ]& K& T8 X8 @: L
8 R7 {6 g5 R" N0 ~( F
也是在產線測試和BURN-IN用的, 主要是S3切換方面
( G! ?+ @% j+ l4 [* c要打下一些進S3特定時間後回來有問題的板子
* y' N8 H! b; M2 m* G# X1 w4 [0 Q/ A, R5 a/ X: A
除了常用的OS以外還支持APPLE/MAC OS, Linux, WindowsCE5/6
+ l6 Y& [2 h3 T當初還要用網路收集各站的資料, 所以支持Windows目錄網路共享) W3 u( E$ N" k% A# j' }9 g6 y

# Y! [$ y, U# u; i/ Q6 p優點是"免驅動程式"~8 ^+ K3 |; A' P1 `. y" C2 M
缺點是反應慢, 一秒20次左右~7 c0 Z3 R1 V0 [+ g1 Q+ V  P1 ?
傳SMBUS會傳到吐血
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-24 22:35 , Processed in 0.041600 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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