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

IO Port Driver

[复制链接]
发表于 2009-5-13 17:14:34 | 显示全部楼层 |阅读模式
ECBACK.SYS
% _7 b/ V  P6 }1 e

  z8 E7 j3 j2 }& l  x7 j6 N" o最近工厂PE端需要一堆测试程序,这些程序主要是用于测试EC的各种功能如:测试风扇,测试电池,测试键盘等等。而且要求通吃vista,xp,winpe
我最初打算使用wmi acpi实现,可是发现wmi acpiwinpe下无法工作。
' O( c' b! T7 @  n4 e% K迫于无奈只有实现一个IO portdriver,然后AP透过ECback door 存取EC XRAM&REG,只有这个方法才能通吃三个平台了.+ X5 J( Q* n6 w* Y, `+ ^
& b1 N: b; G7 W& @: v& A  v
IO port driver是非常简单的driver了,winio就是一只这种类型的driverwinio是通过修改IOPM开启应用程序IO RW权限的,我写的这个ECBACK.sys则是使用DDKAPI读写IO实现的。当然我也参考了winio加载 driver 的代码,所以我将ECBACK.sys kernel mode & user mode source code贴于附件中供下载。解压后会三个文件夹其中sys
中是
& j2 f' r: O- b8 ^1 o6 EECBACK.syssource code,lib是我导出的user mode api 一共包含四个函数:

4 @, v; g% y5 w3 j9 i
4 b6 w6 h7 I/ [* ~3 R6 y#ifndef6 k" Q; d0 [" n
__ECBACKAPI_H__
6 d/ m- r1 D4 Z0 x: T. f- j" R
#define( N$ S% ?) m2 D! P4 \+ y
__ECBACKAPI_H__
: S( ]% J" g8 j) L/ p9 |
& r3 J  S) f3 G/ i
BOOL
( W. B9 F6 W, U# w+ ^4 v& G  JInstall_ECBackDrv(
void);

6 J" V( ?6 y+ P3 L  H: r$ Y
8 Y* K+ e% E) ?+ m& H6 SBOOL
0 x! L$ r* c1 H* w2 @- Y. h2 uUninstall_ECBACKDrv(
void);
' Z+ ~$ }: m/ M; r
. H- K3 r! c7 l
void9 h1 ~" |7 @, Q3 b* [
Write_EC_UCHAR(IN UCHAR port_base,IN UCHAR add_H,IN UCHAR add_L,IN UCHAR data);
4 Y- E7 O% ~: R- z
( a( v: b2 ]2 E. m
UCHAR4 B' d/ d  \+ I* C% _/ Z4 u6 l1 \
Read_EC_UCHAR(IN UCHAR port_base, IN UCHAR add_H,UCHAR add_L);
! d6 o8 A; p8 ?% Y! k+ t4 j1 @. Z5 ?, N% U2 ?/ z
6 H) j4 S2 ?/ O
#endif9 |: A- Z* z& l+ S
Install_ECBackDrv通过创建service的方式加载driver,这样AP才可以和driver沟通。读写io port部分也被封装到了Write_EC_UCHAR & Read_EC_UCHAR中了,user不用再去调用DeviceIoControl再往下送IRP了。使用完之后需要调用Uninstall_ECBACKDrv,该函数会将Install_ECBackDrv创建的service移除掉。文件夹
5 b, X) M2 p+ y6 QECBDTest是我写的一个测试程式用于演示如何使用lib文件夹中导出的函数。这些部分实现了以后其他组写测试程序只需要按照sample code写法实现就好了,我就解放了J!
9 n3 s( ]( ?1 z3 n
4 n5 N5 r$ Z* S3 v. ?
That’s all!
3 n( P. R2 X! M4 A0 l& ~4 ^$ M
  h3 t0 Q# R! K6 fPeter

本帖子中包含更多资源

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

×
发表于 2009-8-12 14:20:15 | 显示全部楼层
Hi,peter.hu
/ V7 _: S+ Y/ t( Y: \: M5 q
3 p5 Z+ `7 @6 e7 sdontuse.h头文件在哪里可以找到啊,谢谢了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-8-15 00:57:25 | 显示全部楼层
hi,peter.hu
% j0 t& Z3 A! {" n5 t. I
4 H2 N8 J' y8 x: O我安装了DDK 2006,但是还是没有找到这个文件,请指教,谢谢
回复

使用道具 举报

发表于 2009-8-17 13:04:29 | 显示全部楼层
ddk已经带有完整的示例代码了,就在src\gerneral\portio下。* L7 y" Q. A" a5 T% W( F; ?' D
包括驱动的加载,驱动代码,测试应用。
回复

使用道具 举报

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

使用道具 举报

发表于 2010-1-18 17:31:35 | 显示全部楼层
我以前是用我們的產品解決類似的問題:% t  i0 w8 q7 m  j% `
http://www.samedisk.com/cht/productinfo1051.php
9 q! i& @, g2 r! a4 u2 l8 G! _9 s# @$ H# Q
也是在產線測試和BURN-IN用的, 主要是S3切換方面: g3 H  r. v  h5 b. U1 E) C: o4 q/ x
要打下一些進S3特定時間後回來有問題的板子5 ]! }0 z  f* l

8 e7 n* C1 X+ K除了常用的OS以外還支持APPLE/MAC OS, Linux, WindowsCE5/6
& S% {. J7 i7 }. `9 s) R/ S當初還要用網路收集各站的資料, 所以支持Windows目錄網路共享
; [3 y, Z1 _9 X$ n
- f3 Z2 S* Q  Z. w1 k7 X9 J5 j優點是"免驅動程式"~! [2 P/ _! D( o) D$ o5 s
缺點是反應慢, 一秒20次左右~
: b2 {  \- |0 z* _傳SMBUS會傳到吐血
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-14 08:53 , Processed in 0.041276 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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