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

2021年8月23日 Windows 11 下测试成功运行

 

Win11 运行结果

《ACPI 内存变量查看工具》有6个想法

  1. 有点尴尬诶。
    我们可能无法找到您需要的内容。或许搜索功能可以帮到您。
    下载提示找不到文件, 可以帮忙重新传一下?

  2. 你好,在Win10 [Version 10.0.19043.1151]下以管理员权限运行此Tool,会报错如下,是否有机会重新编译一下能在Win10下执行?感谢无私分享此Tool。

    ******************************************
    * ACPI Variable Analyser *
    * Powered by http://www.lab-z.com *
    * 03/04/2018 Version 0.5 *
    ******************************************
    Error In InitializeWinIo!

发表回复

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