參考網站
ACPICA
Errors, Warnings, and Remarks
-ve
只回報Error,忽略Warning及Remark。
編譯 DSDT0000.dsl時只回報 Error
iasl.exe -ve DSDT0000.dsl
AML Disassembler
-d <f1 f2 ...>
反組譯 AML檔案回 ASL(*.dsl)
反組譯 DSDT0000.bin回 DSDT0000.dsl 的ASL檔案
iasl.exe -d DSDT0000.bin
-e <f1 f2 ...>
在反組譯AML時,會遇到有些 unresolve external control method,用以指定含有其
external control method的 AML檔
反組譯DSDT0000.bin時,指定 SSDT0000.bin及 SSD10000.bin為含有其
external control method的AML檔
iasl.exe -e SSDT0000.bin SSD10000.bin -d DSDT0000.bin
指定所有 SSD*.bin為含有DSDT0000.bin external control method的AML檔
iasl.exe -e SSD*.bin -d DSDT0000.bin
2021年4月27日 星期二
2021年4月13日 星期二
asl.exe - Microsoft ASL Compiler
參考網站
microsoft-asl-compiler
Windows在使用 ACPI table時,不是每次都從記憶體存取,而是暫存在其登錄檔,透過登錄檔
來存取。可以透過 regedit登錄檔編輯程式來讀取修改 ACPI的登錄檔,其路徑為
Computer\HKEY_LOCAL_MACHINE\HARDWARE\ACPI
而 Microsoft的 WDK提供 asl.exe可以用來取出或取代其中的 ACPI table。
/tab=<TabSig>
將 <TabSig>的 AML反組譯回 ASL檔案,<TabSig>可從 regedit查詢。
取出 DSDT.asl
asl.exe /tab=DSDT
取出所有 ACPI table並存成 ACPI.txt
asl.exe /tab=*
/nologo
不印出logo banner的訊息。
Example 1: without /nologo
asl.exe /tab=DSDT
Output 1:
Microsoft ACPI Source Language Assembler Version 5.0.0NT
Copyright (c) 1996,2014 Microsoft Corporation
Compliant with the ACPI 5.0 Specification
Example 2: with /nologo
asl.exe /nologo /tab=DSDT
Output 2:
/c
將 table存成 .bin檔
取出 DSDT的 AML並存成 DSDT0000.bin
asl.exe /c /tab=DSDT
只能用於已存在在系統中的ACPI table
/loadtable
將ACPI table load進 registry中
將 AMLFile load進 registry中
asl.exe /loadtable [-v] [-d] <AMLFile>
-v: verbose mode
-d: 移除先前所 load的 AML檔
在 Windows下修改及替換 DSDT或SSDT table
1. 以DSDT為例,先使用 asl.exe將 DSDT的 AML從 registry取出
asl.exe /tab=DSDT /c
會得到 DSDT0000.BIN。
2. 使用 ASL compiler iasl.exe將 DSDT0000.bin 反組譯。
iasl.exe -d DSDT0000.bin
若是反組譯成功,就會產生 DSDT0000.dsl的 ASL檔。
有時會遇到缺少 external control method的情況導致反組譯失敗,這時就可以使用 -e
參數來 include包含 external control method的 AML檔。
EX: Include SSD0及 SSD1
iasl.exe -e SSD00000.bin SSD10000.bin -d DSDT0000.bin
或是使用 -fe來 include描述 external control method的檔案。
3. 依照需求修改 DSDT0000.dsl
EX: 在 DSDT0000.dsl中加入 Serial port的定義
DefinitionBlock ("", "DSDT", 2, "ACRSYS", "ACRPRDCT", 0x00000000)
{
External (_GPE.HLVT, MethodObj) // 0 Arguments
External (_PR_.BGIA, UnknownObj)
External (_PR_.BGMA, UnknownObj)
External (_PR_.BGMS, UnknownObj)
......
Name (SS1, Zero)
Name (SS2, Zero)
......
4. 使用 iasl.exe compile修改過的DSDT0000.dsl
iasl.exe -ve DSDT0000.dsl
成功後就會產生 DSDT0000.aml。
-ve為忽略 warning及 remark,只顯示error。
5. 將DSDT0000.aml load到 registry
asl.exe /loadtable DSDT0000.aml
6. 啟動 Windows test mode
bcdedit /set testsigning on
重新開機以後就能生效。
microsoft-asl-compiler
Windows在使用 ACPI table時,不是每次都從記憶體存取,而是暫存在其登錄檔,透過登錄檔
來存取。可以透過 regedit登錄檔編輯程式來讀取修改 ACPI的登錄檔,其路徑為
Computer\HKEY_LOCAL_MACHINE\HARDWARE\ACPI
而 Microsoft的 WDK提供 asl.exe可以用來取出或取代其中的 ACPI table。
/tab=<TabSig>
將 <TabSig>的 AML反組譯回 ASL檔案,<TabSig>可從 regedit查詢。
取出 DSDT.asl
asl.exe /tab=DSDT
取出所有 ACPI table並存成 ACPI.txt
asl.exe /tab=*
/nologo
不印出logo banner的訊息。
Example 1: without /nologo
asl.exe /tab=DSDT
Output 1:
Microsoft ACPI Source Language Assembler Version 5.0.0NT
Copyright (c) 1996,2014 Microsoft Corporation
Compliant with the ACPI 5.0 Specification
Example 2: with /nologo
asl.exe /nologo /tab=DSDT
Output 2:
/c
將 table存成 .bin檔
取出 DSDT的 AML並存成 DSDT0000.bin
asl.exe /c /tab=DSDT
ACPI-table-load usage
只能用於已存在在系統中的ACPI table
/loadtable
將ACPI table load進 registry中
將 AMLFile load進 registry中
asl.exe /loadtable [-v] [-d] <AMLFile>
-v: verbose mode
-d: 移除先前所 load的 AML檔
在 Windows下修改及替換 DSDT或SSDT table
1. 以DSDT為例,先使用 asl.exe將 DSDT的 AML從 registry取出
asl.exe /tab=DSDT /c
會得到 DSDT0000.BIN。
2. 使用 ASL compiler iasl.exe將 DSDT0000.bin 反組譯。
iasl.exe -d DSDT0000.bin
若是反組譯成功,就會產生 DSDT0000.dsl的 ASL檔。
有時會遇到缺少 external control method的情況導致反組譯失敗,這時就可以使用 -e
參數來 include包含 external control method的 AML檔。
EX: Include SSD0及 SSD1
iasl.exe -e SSD00000.bin SSD10000.bin -d DSDT0000.bin
或是使用 -fe來 include描述 external control method的檔案。
3. 依照需求修改 DSDT0000.dsl
EX: 在 DSDT0000.dsl中加入 Serial port的定義
DefinitionBlock ("", "DSDT", 2, "ACRSYS", "ACRPRDCT", 0x00000000)
{
External (_GPE.HLVT, MethodObj) // 0 Arguments
External (_PR_.BGIA, UnknownObj)
External (_PR_.BGMA, UnknownObj)
External (_PR_.BGMS, UnknownObj)
......
OperationRegion (SERP, SystemIO, 0x3F8, 0x8)
Field (SERP, ByteAcc, NoLock, Preserve)
{
THRR, 8,
, 8,
, 8,
, 8,
, 8,
LSRR, 8,
MSRR, 8
}
Field (SERP, ByteAcc, NoLock, Preserve)
{
THRR, 8,
, 8,
, 8,
, 8,
, 8,
LSRR, 8,
MSRR, 8
}
Name (SS1, Zero)
Name (SS2, Zero)
......
4. 使用 iasl.exe compile修改過的DSDT0000.dsl
iasl.exe -ve DSDT0000.dsl
成功後就會產生 DSDT0000.aml。
-ve為忽略 warning及 remark,只顯示error。
5. 將DSDT0000.aml load到 registry
asl.exe /loadtable DSDT0000.aml
6. 啟動 Windows test mode
bcdedit /set testsigning on
重新開機以後就能生效。
訂閱:
文章 (Atom)