这次我们实验在 LattePanda 的 DSDT ACPI Table 中增加一个自定义设备。
首先,我们需要解压原版IFWI 中的 ACPI 模块出来。对于这次的 LattePanda来说,DSDT 是特别放在一个独立的 FFS中。
直接解压之:
使用十六进制工具打开可以看到就是 DSDT Table
因为目前的 ACPI 版本和之前的比如 TigerLake 有一些差别,因此,这里需要使用最新版本的 iASL 进行反编译:
反编译结果在 dsdt.dsl 文件中。使用文本编辑工具打开后,在最后加入我们自定义的设备:
之后再重新编译为 AML
对于这个文件,使用如下命令打包为一个 SECTION,对应的 GenSec.exe工具来自 EDK2 的源代码:
GenSec -s EFI_SECTION_RAW -o DSDT.raw dsdt.aml
接下来再使用 GenFFS 把 dsdt.raw 打包生成一个 FFS文件:
GenFfs -t EFI_FV_FILETYPE_FREEFORM -g C118F50D-391D-45F4-B3D3-11BC931AA56D -o new.ffs -oi dsdt.raw
接下来,我们使用新生成的这个 new.ffs替换位于03:02-01 (Index F9)处的FFS
最终我们就得到了一个替换过DSDT的新的 IFWI 文件:
本文提到的文件和工具可以在这里下载:
修改好后烧录进入 Windows即可看到设备管理器中多了一个设备,测试的视频在
https://www.bilibili.com/video/BV1GU411d7v1/?pop_share=1&vd_source=cf6121716e06cb669a27c10276f9c920