|
发表于 2023-10-9 15:42:30
|
显示全部楼层
关于步骤4编译BIOS dsl源码失败:
1)现象:
.\iasl.exe -ve .\DSDT0000.dsl 出现很多错误,
这些错误提示都是 case (XXX)重复
2)原因:
读取主板BIOS二进制后,反编译出来的DSL文件,有部分出现 switch() case XX 重复现象,
需要根据编译的错误提示,对应删除多余的case就可以解决.
比如提示:
./DSDT0000.dsl 63145: Case(0xA0)
Error 6022- case value already specified
Original Case value below:
./DSDT0000.dsl 63142: Case(0xA0)
说明DSL源码中,一个switch(X) 对应case 有2个以上相同的 case 0XA0,
C编程语言思路下,一个switch(X)下,只能有一个case 0XA0,其他多余的case 0XA0需要删除
3)处理方法:
再一个 一个switch(X)下,找到对应重复case 0XA0,只保留一个,删除多余的case 0XA0
如何快速定位错误呢:
根据编译错误提示,比如上面说到的提示:
./DSDT0000.dsl 63145: Case(0xA0)
./DSDT0000.dsl 63142: Case(0xA0)
那么63145 就是DSDT0000.dsl 文件的行号,对应有一个case 0XA0
那么63142 就是DSDT0000.dsl 文件的行号,也对应有一个case 0XA0
删除其中一个即可.
依次类推,删除删所有的重复的case XX ,就可以.
4)删除多余的case XX后,立即编译,验证是否删除干净.
多次编译,没有报错为止
5)这个BIOS DSL 删除好多余case后,做一个备份,后面添加I2C/SPI设备的时候,可以直接使用.不用重新从主板读取二进制进行编译. |
|