从系统获取acpi表

2023年 10月 15日 52.5k 0

前言

最近一直在忙项目,需要跟固件的同事打交道。
在Linux中,目前设备的信息很多是通过ACPI表描述的,而这个ACPI表是需要固件写入的,我们操作系统驱动没办法控制。在调试的过程中,经常会遇到在不同的机器上面,驱动执行不一致的问题。驱动代码都是同一份的,不同的就是固件了。而固件内部,除了一些硬件寄存器配置外,就是ACPI表的描述了。很多时候,不晓得别人是不是给你描述对了,与其去问,还不如自己动手去看ACPI表了。

上网查了一下,get一个新技能。

ACPI表

APCI, Advanced Configuration and Power Interface,高级配置与电源接口,是BIOS到操作系统的一系列接口,ACPI接口中包含了很多预定义的表格,这些表格的定义存储在BIOS芯片中,由BIOS生成到内存中提交给操作系统,各种不同的操作系统都可以提取BIOS提交的原始ACPI表格文件,其中最重要的就是DSDT和SSDT表格。

DSDT,Differentiated System Description Table,差分系统描述表,包含大部分硬件信息的主体表格。

SSDT,Secondary System Description Table,辅助系统描述表,包含少部分硬件补充信息的表格。

APCI表解析

在系统目录/sys/firmware/acpi/tables下存储了ACPI表信息,不过这个是不能够明文查看的,需要使用工具解析。这个工具就是iasl, 这是一个编译和解析ACPI的工具,一般系统中没有,需要自行安装。

apt install iasl

# 拷贝APIC文件
cp /sys/firmware/acpi/tables/DSDT /tmp

# 解析DSDT文件,输出 DSDT.dsl
cd /tmp
iasl -d DSDT

root@VirtualBox:/tmp# ls
DSDT  DSDT.dsl

打开dsdt.dsl, 找到对应的device,可以看到具体的描述。

dsdt.png

上面我们从/sys/firmware/acpi/tables拷贝了DSDT表文件到/tmp目录。其实,我们也可以使用acpidump工具直接生成表文件

apt install acpidump 

acpidump -n DSDT -b  # 生成DSDT表文件 dsdt.dat

iasl -d dsdt.dat # 

root@keep:/tmp/812# iasl -d dsdt.dat  # 生成dsdt.dsl文件

Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20190509
Copyright (c) 2000 - 2019 Intel Corporation

File appears to be binary: found 2605 non-ASCII characters, disassembling
Binary file appears to be a valid ACPI table, disassembling
Input file dsdt.dat, Length 0x1B46 (6982) bytes
ACPI: DSDT 0x0000000000000000 001B46 (v02 PHYLTD PHYTIUM. 00000001 INTL 20180629)
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 - 59176 bytes

acpidump -s # 可以查看当前apci所有的表

除了iasl, 还可以使用acpidump工具。

更多

重启学习历程!

行动,才不会被动!

欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。

博客地址: fishmwei.github.io

掘金主页: juejin.cn/user/208432…

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论