ACPI 内存变量查看工具

这是一个查看ACPI变量的工具。运行在 Windows 64下面:

acpivar

原理介绍:BIOS将数据传递给ASL 的方法是通过内存,比如,在Source Code 中你会看到下面的定义:
C头文件:
typedef struct {
//
// Miscellaneous Dynamic Registers:
//
UINT16 OperatingSystem; ///< Offset 0 Operating System UINT8 SmiFunction; ///< Offset 2 SMI Function Call (ASL to SMI via I/O Trap) UINT8 SmiParameter0; ///< Offset 3 SMIF - Parameter 0 UINT8 SmiParameter1; ///< Offset 4 SMIF - Parameter 1 ............ ASL 定义如下 OperationRegion(GNVS,SystemMemory,0xFFFF0000,0xAA55) Field(GNVS,AnyAcc,Lock,Preserve) { // // Miscellaneous Dynamic Registers: // Offset(0), OSYS, 16, // Offset(0), Operating System Offset(2), SMIF, 8, // Offset(2), SMI Function Call (ASL to SMI via I/O Trap) Offset(3), PRM0, 8, // Offset(3), SMIF - Parameter 0 Offset(4), PRM1, 8, // Offset(4), SMIF - Parameter 1 ….. 可以看到这两个定义是相同的。在平台启动后,反编译ASL会看到类似如下的结果 OperationRegion(GNVS,SystemMemory,0xFFFFF800,0xAA55) Field(GNVS,AnyAcc,Lock,Preserve) 就是说,内存0xFFFFF800地址处,Offset 4 中的SmiParameter1也就是PRM1。这个工具的作用就是将 GNVS 中定义的变量读取显示出来方便Debug。 使用的例子(以KBL-R HDK 平台为例): 1. 在Setup中将HD Audio 方面的 Waves Post-process 选项勾选上,再进入系统运行工具,将结果Dump到文本文件中; 2. 再取消Waves Post-process 选项的勾选,再进入系统运行工具,将结果Dump到文本文件中; 3. 比较两个文本文件,结果如下: acpivar2

这个工具首先取得本机ASL 然后得到内存偏移,再对ASL进行解析取得偏移,最终在内存中读取每个变量的值显示出来。

工具下载(无源程序):

VarAnalyzer

ACPI 内存变量查看工具》上有 2 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注