DSP

SLIC Tool 软件中的超静1/2/3及动态法是什么意思?

2019-07-13 20:25发布

一、静态法
所谓静态法就是指数据指针是以静态的形式直接被用户增添到ACPI表上一级表,从而让添加的SLIC表与相关的ACPI表建立关联关系的修改方法。静态法又分为静态法和超级静态法。超级静态法就是为了克服早期的静态法中内存容量变化会导致SLIC位置发生变化而导致指针和目标表脱离的影响。
超级静态法又分为三种:超级静态法一、二和三,三种(大概是方法的首创者定义的,英文缩写SS1-3)。超级静态法的特点就是把SLIC表放置在ROM区,即FXXXXXXXH和FXXXXH。这样做的好处就是SLIC表的位置固定,完全克服了早期的静态法的不足。当然,缺点也是显而易见的,和正常放置在RAM区域的ACPI表位置差别很大,很容易被识别出来!
(1)超级静态法一
就是把SLIC表通过添加非压缩格式独立模块放置FXXXXXXXH处。由于模块的位置要在最后修改完才能确定,所以指针地址往往需要2次才能确定,略显得有些麻烦。
(2)超级静态法二
超静二把SLIC表直接在FXXXXXXXH的BIOS的“HOLE”处,而且保持修改模块不变,模块的覆盖多以手工完成(现在AMI的新工具已经突破了这个限制),其它的完全等同超静一。超静二主要是是针对某些主板(如,微星MSI)不能改变、修改模块容量而提出。
有这样一个定律:如果改变模块的大小是安全的,那么不改变模块的大小也一定是安全的,但反之则不成立!因此,在不知道BIOS到底适合那种修改方法的时候,尽量采用超静二!
(3)超级静态法三
超级静态法三,就是把SLIC表放置在FXXXXH。这一般多是系统主模块驻留位置。如果RSDT等也位于主模块中,那么整个修改只涉及一个模块,故而显得比较简单。
超级静态法添加SLIC表指针的方法和过程都是一样的,区别仅在于SLIC的位置和放置方法。很显然,各方法有着很大的不同。特别需要说明的是,方法是为了解决不同BIOS的特殊性而创建,而不是为了解决同一BIOS可以有不同的修改方法!这一点很重要!所以,那些对三种修改方法优劣的任何比较都是毫无意义的!

二、动态法
所谓动态法就是所添加的SLIC表是和其它的ACPI表一起被加载到系统RAM区域高端的方法。(按此定义,利用网卡启动芯片添加SLIC表的方法将不归属在此列,最明显的是添加的SLIC表,依旧在ROM区域。)
它是通过对BIOS代码的修改来实现指针、表的添加,这个过程完全等同BIOS程序自己加载其它ACPI表的过程,而且所添加的SLIC表与其它的ACPI表在同一区域。很显然,它完全克服了静态法所添加的SLIC极易被发现的缺点,所以是所有修改方法中的“终极”方法。
10月将发布的WIN DOWS 7, 微软不知是否会在那时对超级静态法下手。
现在提出的一些动态法方案,大都适应性比较差,所以无法普及。纠其原因就是没有采用代码独立设计,总是去迁就原来BIOS的程序(如通过RSDT、FACS等去加载SLIC表)。个人比较推崇采用“独立代码”设计,并取得了良好的效果。这样,就给了动态法一定的规范和统一,增加了适应性。这在程序设计过程中要求使用者有一定的80X86汇编语言知识。当然,如果此源代码如是公开的(将择机公开适用于AMI BIOS和AWARD BIOS的汇编语言源程序),对使用者的使用就不成为问题了!