Linux解析ACPI表
参考:
https://blog.csdn.net/jiangwei0512/article/details/83317890
查看系统的ACPI表:
lihui@6000pc:/sys/firmware/acpi/tables$ tree
.
├── APIC
├── data
├── DSDT
├── dynamic
├── FACP
├── FACS
├── IVRS
├── MCFG
├── PPTT
├── SLIT
├── SRAT
└── VIAT
iasl
iasl是一个编译和解析ACPI的工具,在编译UEFI的时候也是必不可少的。
sudo apt install iasl
lihui@6000pc:/sys/firmware/acpi/tables$ sudo iasl -d APIC
Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20240827
Copyright (c) 2000 - 2023 Intel Corporation
File appears to be binary: found 223 non-ASCII characters, disassembling
Binary file appears to be a valid ACPI table, disassembling
Input file APIC, Length 0xFA (250) bytes
ACPI: APIC 0x0000000000000000 0000FA (v06 LOONGS LOONGSON 00000002 LIUX 01000013)
Could not open output file APIC.dsl
之后就可以通过iasl命令来解析ACPI文件了。但是需要注意,不能直接在上述的/sys/firmare/acpi/tables上来解析,会报错
所以我们先将需要解析的文件拿出来再解析:
lihui@6000pc:/sys/firmware/acpi/tables cd ~
lihui@6000pc:~$ sudo iasl -d APIC
Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20240827
Copyright (c) 2000 - 2023 Intel Corporation
File appears to be binary: found 223 non-ASCII characters, disassembling
Binary file appears to be a valid ACPI table, disassembling
Input file APIC, Length 0xFA (250) bytes
ACPI: APIC 0x0000000000000000 0000FA (v06 LOONGS LOONGSON 00000002 LIUX 01000013)
Acpi Data Table [APIC] decoded
Formatted output: APIC.dsl - 6958 bytes
或者:
lihui@6000pc:~ iasl -d APIC.bin
Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20240827
Copyright (c) 2000 - 2023 Intel Corporation
File appears to be binary: found 223 non-ASCII characters, disassembling
Binary file appears to be a valid ACPI table, disassembling
Input file APIC.bin, Length 0xFA (250) bytes
ACPI: APIC 0x0000000000000000 0000FA (v06 LOONGS LOONGSON 00000002 LIUX 01000013)
Acpi Data Table [APIC] decoded
Formatted output: APIC.dsl - 6962 bytes
可以看到解析成功了,并生成了新的dsl文件,可以通过cat来查看:
lihui@6000pc:~$ cat APIC.dsl
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20240827 (64-bit version)
* Copyright (c) 2000 - 2023 Intel Corporation
*
* Disassembly of APIC
*
* ACPI Data Table [APIC]
*
* Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue (in hex)
*/
[000h 0000 004h] Signature : "APIC" [Multiple APIC Description Table (MADT)]
[004h 0004 004h] Table Length : 000000FA
[008h 0008 001h] Revision : 06
[009h 0009 001h] Checksum : B9
[00Ah 0010 006h] Oem ID : "LOONGS"
[010h 0016 008h] Oem Table ID : "LOONGSON"
[018h 0024 004h] Oem Revision : 00000002
[01Ch 0028 004h] Asl Compiler ID : "LIUX"
[020h 0032 004h] Asl Compiler Revision : 01000013
[024h 0036 004h] Local Apic Address : 1FE01400
[028h 0040 004h] Flags (decoded below) : 00000001
PC-AT Compatibility : 1
...
...
...
acpidump
上述的iasl工具获取ACPI表需要从特定目录去拿,比较复杂,这里还可以用一个简单的工具acpidump来获取。它是一系列工具中的一个,可以通过如下的命令来安装:
apt install acpica-tools
acpidump工具需要在root用户下使用,帮助说明如下:
之后可以通过-s来查看现有的表:
root@6000pc:/home/lihui# acpidump -s
ACPI: MCFG 0x0000000000000000 00003C (v01 LOONGS LOONGSON 00000001 LIUX 01000013)
ACPI: APIC 0x0000000000000000 0000FA (v06 LOONGS LOONGSON 00000002 LIUX 01000013)
ACPI: SLIT 0x0000000000000000 00002D (v01 LOONGS LOONGSON 00000002 LIUX 01000013)
ACPI: VIAT 0x0000000000000000 00002C (v01 LOONGS LOONGSON 00000002 LIUX 01000013)
ACPI: IVRS 0x0000000000000000 00004C (v01 LARCH LOONGSON 00000001 LIUX 00000001)
ACPI: DSDT 0x0000000000000000 00282A (v02 LOONGS LOONGSON 00000002 INTL 20180629)
ACPI: SRAT 0x0000000000000000 000100 (v02 LOONGS LOONGSON 00000002 LIUX 01000013)
ACPI: FACP 0x0000000000000000 0000F4 (v03 LOONGS LOONGSON 00000002 LIUX 01000013)
ACPI: PPTT 0x0000000000000000 000128 (v03 LOONGS LOONGSON 00000002 LIUX 01000013)
ACPI: FACS 0x0000000000000000 000040
然后通过-n xxx -b来生成某个表的二进制文件,之后就又可以通过iasl来解析:
root@6000pc:/home/lihui# acpidump -n APIC -b
root@6000pc:/home/lihui# iasl -d apic.dat
Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20240827
Copyright (c) 2000 - 2023 Intel Corporation
File appears to be binary: found 223 non-ASCII characters, disassembling
Binary file appears to be a valid ACPI table, disassembling
Input file apic.dat, Length 0xFA (250) bytes
ACPI: APIC 0x0000000000000000 0000FA (v06 LOONGS LOONGSON 00000002 LIUX 01000013)
Acpi Data Table [APIC] decoded
Formatted output: apic.dsl - 6962 bytes
posted on 2025-01-24 10:05 lh03061238 阅读(23) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-01-24 使用CCS调试基于AM335X的SPL、Uboot(原创)