내 노트북 ACPI 테이블을 추출하고 디컴파일하고 싶습니다. 저는 우분투 메이트 20.04를 실행하고 있습니다.
이를 수행하는 방법에는 여러 가지가 있는 것 같습니다. 나는 팔로우한다이 가이드.
모든 테이블 가져오기: sudo acpidump > acpi.log
DSDT 및 SSDT 추출:acpixtract acpi.log
이것은 나에게 ...
Intel ACPI Component Architecture
ACPI Binary Table Extraction Utility version 20190509
Copyright (c) 2000 - 2019 Intel Corporation
DSDT - 36705 bytes written (0x00008F61) - dsdt.dat
SSDT - 7917 bytes written (0x00001EED) - ssdt1.dat
SSDT - 2144 bytes written (0x00000860) - ssdt2.dat
SSDT - 2706 bytes written (0x00000A92) - ssdt3.dat
SSDT - 1790 bytes written (0x000006FE) - ssdt4.dat
SSDT - 281 bytes written (0x00000119) - ssdt5.dat
SSDT - 2107 bytes written (0x0000083B) - ssdt6.dat
SSDT - 771 bytes written (0x00000303) - ssdt7.dat
시계를 분해하십시오:iasl -e *.dat -d dsdt.dat
이것이 출력입니다 ...
Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20190509
Copyright (c) 2000 - 2019 Intel Corporation
File appears to be binary: found 12206 non-ASCII characters, disassembling
Binary file appears to be a valid ACPI table, disassembling
Input file dsdt.dat, Length 0x8F61 (36705) bytes
ACPI: DSDT 0x0000000000000000 008F61 (v01 DELL CL09 00000000 ASL 00040000)
External object resolution file ssdt7.dat
Input file ssdt7.dat, Length 0x303 (771) bytes
ACPI: SSDT 0x0000000000000000 000303 (v01 PmRef ApIst 00003000 INTL 20121220)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt6.dat
Input file ssdt6.dat, Length 0x83B (2107) bytes
ACPI: SSDT 0x0000000000000000 00083B (v01 PmRef Cpu0Cst 00003001 INTL 20121220)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt5.dat
Input file ssdt5.dat, Length 0x119 (281) bytes
ACPI: SSDT 0x0000000000000000 000119 (v01 PmRef ApCst 00003000 INTL 20121220)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt4.dat
Input file ssdt4.dat, Length 0x6FE (1790) bytes
ACPI: SSDT 0x0000000000000000 0006FE (v01 COMPAL CRV ORB 00001000 ACPI 00040000)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt3.dat
Input file ssdt3.dat, Length 0xA92 (2706) bytes
ACPI: SSDT 0x0000000000000000 000A92 (v01 COMPAL CRV ORB 00003000 ACPI 00040000)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt2.dat
Input file ssdt2.dat, Length 0x860 (2144) bytes
ACPI: SSDT 0x0000000000000000 000860 (v01 COMPAL CRV ORB 00003000 ACPI 00040000)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt1.dat
Input file ssdt1.dat, Length 0x1EED (7917) bytes
ACPI: SSDT 0x0000000000000000 001EED (v01 COMPAL CRV ORB 00001000 ACPI 00040000)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
Parsing completed
Found 7 external control methods, reparsing with new information
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
Parsing completed
Disassembly completed
ASL Output: dsdt.dsl - 330062 bytes
iASL Warning: There were 7 external control methods found during
disassembly, but only 2 were resolved (5 unresolved). Additional
ACPI tables may be required to properly disassemble the code. This
resulting disassembler output file may not compile because the
disassembler did not know how many arguments to assign to the
unresolved methods. Note: SSDTs can be dynamically loaded at
runtime and may or may not be available via the host OS.
In addition, the -fe option can be used to specify a file containing
control method external declarations with the associated method
argument counts. Each line of the file must be of the form:
External (<method pathname>, MethodObj, <argument count>)
Invocation:
iasl -fe refs.txt -d dsdt.aml
해결되지 않은 외부 제어 방법 없이 ACPI 테이블을 디컴파일/디스어셈블할 수 있습니까?
나는 이 명령을 사용하면 iasl -e *.dat -d dsdt.dat
모든 노트북 SSDT를 명령에 포함하므로 가능한 모든 외부 제어 명령이 해결될 것이라고 생각했습니다 iasl
.
건배
답변1
이 명령을 실행한 후 해결되지 않은 종속성이 발생한다고 생각합니다. iasl -e *.dat -d dsdt.dat
즉, DSDT 파일을 디컴파일하는 것은 그 자체로는 오류가 아니며 반드시 문제가 되는 것도 아닙니다.
dsdt.dat
이는 내 파일에서 호출된 메서드가 DSDT 파일을 디컴파일하는 명령과 함께 제공한 목록(*.dat)의 SSDT에 정의되어 있지 않기 때문일 가능성이 높습니다 .iasl
일부는 필요할 때만 로드될 수 있으므로 DSDT 및 모든 SSDT를 추출하는 명령을 실행할 때 사용되지 않았을 수 있으므로 모든 시스템 원시 SSDT(ACPI 테이블)가 없을 수도 있습니다.
다음 명령을 사용하여 DSDT.dsl 파일을 다시 컴파일해 보았 iasl DSDT.dsl
더니 오류 없이 컴파일되었습니다. 경고 3개와 기타 정보 메시지만 표시됩니다.
이것ACPICA 문서ACPI 테이블에 대한 정보와 명령을 사용하여 이를 디컴파일하는 방법에 대한 매우 유용한 소스입니다 iasl
.
내가 모르는 것은 "해결되지 않은 외부 제어 방법"의 정의를 볼 수 있는 방법이 있는지입니다. 이러한 방법이 포함된 (?제거된) SSDT를 찾는 방법을 아는 사람이 있으면 언제든지 기여해 주세요.