Acpi表处理系统及方法

文档序号:6587487阅读:307来源:国知局
专利名称:Acpi表处理系统及方法
技术领域
本发明涉及一种ACPI (Advanced Configuration and Power Interface,高级配置 与电源接口)表处理系统及方法,特别涉及一种对ACPI表进行读取及更新处理的系统及方法。
背景技术
ACPI是为计算机软件及硬件提供配置和电源管理接口的业界规范,目前已广泛的 应用在各种计算机平台中,对这些计算机平台提供高效能的电源管理等功能。BIOS (Basic Input and Output System,基本输入输出系统)通常包含大量的 ACPI相关内容,以支持或实现ACPI的相关规范,并且BIOS提供ACPI架构中基本的ACPI 表,操作系统或其它程序依赖这些基本的ACPI表完成相关操作。在电脑主板BIOS的开发 过程中,ACPI表时常改动更新。例如要对这些ACPI表进行改动更新,通常的做法是在BIOS 的AML (ACPIMachine Language, ACPI机器语言)程序源代码中修改ACPI相关内容,重新生 成BIOS文件,再将BIOS文件写入到闪存中,这种方式需对BIOS的AML程序源代码进行操 作,比较繁琐费时,使得对ACPI表的处理效率极低。

发明内容
鉴于以上内容,有必要提供一种高效率的ACPI表处理系统及方法。一种ACPI表处理系统,包括一处理器、一存储器及一内存,所述处理器分别与所 述存储器及所述内存相连并执行所述存储器内存储的指令,所述存储器包括一访问权限 设置模块,用于在DOS下进入处理器的保护模式并在所述保护模式下设置一内存的访问权 限,并在设置完成后退出所述保护模式;一标示符搜寻模块,用于在内存的一地址空间范围 内确定一标示符的存放地址;一 ACPI表获取模块,用于在所述标示符的存放地址内找到指 向一 RSD表的指针,并在指针中读取所述RSD表的基地址,并根据所述基地址找到所述RSD 表,然后在所述RSD表中得到所有ACPI表的入口地址,再根据一预设参数选择与所述预设 参数对应的ACPI表;一 ACPI表读取模块,用于接收到用户输入的读取选择的ACPI表操作 时读取选择的ACPI表内存储的所述选择的ACPI表的容量及校验值,并根据一预设算法计 算出校验值,比较计算出的校验值是否等于读取的校验值,若两者相等,则判断为读取的所 述选择的ACPI表正确,若两者不相等,则判断为读取的所述选择的ACPI表错误;及一 ACPI 表更新模块,用于接收到用户输入的更新选择的ACPI表操作时读取选择的ACPI表内存储 的所述选择的ACPI表的容量及读取一新的ACPI表的容量,并比较所述选择的ACPI表的容 量是否大于所述新的ACPI表的容量,若所述选择的ACPI表的容量大于所述新的ACPI表的 容量,则用新的ACPI表替换掉选择的的ACPI表,若所述选择的ACPI表的容量小于或等于 所述新的ACPI表的容量,则调整内存中的ACPI表的布局,然后用新的ACPI表替换掉选择 的ACPI表,再读取所述新的ACPI表的校验值,并根据一预设算法计算出校验值,比较计算 出的校验值与读取的校验值,若两者相等,则判断为读取的所述新的ACPI表正确,若两者不相等,则判断为读取的所述新的ACPI表错误。一种ACPI表处理方法,包括以下步骤在DOS下进入处理器的保护模式并在所述保护模式下设置内存的访问权限,并在 设置完成后退出所述保护模式;在内存的地址空间范围内确定一标示符的存放地址;在所述标示符的存放地址内找到指向一 RSD表的指针,并在所述指针中读取所述 RSD表的基地址,根据所述基地址找到所述RSD表,在所述RSD表中得到所有ACPI表的入口 地址,再根据一预设参数选择与预设参数对应的ACPI表;判断用户输入的是读取还是更新选择的ACPI表的操作,若是读取选择的ACPI表 的操作,则读取所述选择的ACPI表内存储的所述选择的ACPI表的容量及校验值,并根据 一预设算法计算出校验值,比较计算出的校验值是否等于读取的校验值,若两者相等,则判 断为读取的所述选择的ACPI表正确,若两者不相等,则判断为读取的所述选择的ACPI表错 误;若是更新选择的ACPI表的操作,则读取选择的ACPI表内存储的所述选择的ACPI 表的容量及读取一新的ACPI表的容量,比较所述选择的ACPI表的容量是否大于所述新的 ACPI表的容量,若所述选择的ACPI表的容量大于所述新的ACPI表的容量,则用新的ACPI 表替换掉所述选择的ACPI表,若所述选择的ACPI表的容量小于或等于所述新的ACPI表的 容量,则调整内存中的ACPI表的布局,用新的ACPI表替换掉所述选择的ACPI表;及读取所述新的ACPI表的校验值,并根据一预设算法计算出校验值,比较计算出的 校验值是否等于读取的校验值,若两者相等,则判断为读取的所述新的ACPI表正确,若两 者不相等,则判断为读取的所述新的ACPI表错误。


图1是本发明ACPI表处理系统的较佳实施方式的框图。图2是本发明ACPI表处理方法的较佳实施方式的流程图。
具体实施例方式如图1所示,本发明ACPI表处理系统6可在DOS (Disk Operating System,磁盘 操作系统)下对ACPI表进行高效率的读取及更新处理,其较佳实施方式包括一处理器10、 一存储器20及一内存30。在ACPI表更新系统6启动后如电脑启动后,ACPI表被存于内存 30中。所述处理器10分别与存储器20及内存30相连并执行存储器20内存储的指令。 存储器20包括一访问权限设置模块200、一标示符搜寻模块202、一 ACPI表获取模块204、 一 ACPI表读取模块206及一 ACPI表更新模块208。所述访问权限设置模块200用于在DOS下进入处理器10的保护模式并在保护模 式下设置一内存的访问权限例如4G的访问权限,并在设置完成后退出保护模式。因为在 DOS下只能支持访问较小的地址空间,因此若要访问较大的地址空间则需在DOS下进入处 理器10的保护模式重新设置内存的访问权限。在电脑启动后,内存30的地址空间范围FOOOOh-FFFFFh内就会存放一标示符例如“RSDPTR”,此标示符的地址内存放指向一RSD(Router System Description,路由系统描 述)表的指针,RSD表的指针指向RSD表的基地址,通过RSD表的基地址就可找到RSD表, 因为RSD表内存放所有ACPI表的入口地址,所以找到RSD表就可以获得所有ACPI表的入 口地址,再可根据一预设参数,例如ACPI表的序号等预设参数选择所需的ACPI表。所述标示符搜寻模块202用于在内存30的地址空间范围FOOOOh-FFFFFh内确定 标示符的存放地址。所述ACPI表获取模块204用于在标示符的存放地址内找到指向RSD表的指针,并 在指针中读取RSD表的基地址,并根据基地址找到RSD表,然后在RSD表中得到所有ACPI 表的入口地址,再根据预设参数选择与预设参数对应的ACPI表,例如预设参数为3则表示 选择第3个ACPI表。所述ACPI表读取模块206用于接收到用户输入的读取选择的ACPI表操作时读 取选择的ACPI表内存储的选择的ACPI表的容量及校验值,并根据一预设算法计算出校验 值,比较计算出的校验值是否等于读取的校验值,若两者相等,则判断为读取的所述选择的 ACPI表正确,并显示表示读取正确的信息,例如“Reading Right”,若两者不相等,则判断为 读取的所述选择的ACPI表错误,并显示表示读取错误的信息,例如“Reading Error”。在本 实施方式中,所述ACPI表读取模块208对读取的所述选择的ACPI表的内容进行相加运算 以计算出校验值。在其他实施方式中,也可以采用其他算法计算出校验值。所述ACPI表更新模块208用于接收到用户输入的更新选择的ACPI表操作时读 取选择的ACPI表内存储的选择的ACPI表的容量及读取一新的ACPI表的容量,并比较所 述选择的ACPI表的容量是否大于新的ACPI表的容量,若所述选择的ACPI表的容量大于 新的ACPI表的容量,则用新的ACPI表替换掉所述选择的ACPI表,若所述选择的ACPI表的 容量小于或等于新的ACPI表的容量,则调整所述选择的ACPI表或其他ACPI表的布局,然 后用新的ACPI表替换掉所述选择的ACPI表。再读取新的ACPI表的校验值,并根据一预 设算法计算出校验值,比较计算出的校验值与读取的校验值,若两者相等,则判断为读取的 新的ACPI表正确,并通过显示器显示表示读取正确的信息,例如“Reading Right”,若两者 不相等,则判断为读取的新的ACPI表错误,并通过显示器显示表示读取错误的信息,例如 "Reading Error”。例如可以采用如下的方法调整ACPI表的布局将其他的ACPI表的位置 在其相应的存储空间中顺次移动以留出足够的空间以放置新的ACPI表。如图2所示,本发明ACPI表处理方法可在DOS下对ACPI表进行高效率的读取及 更新处理,其较佳实施方式包括以下步骤步骤S100,所述访问权限设置模块200在DOS下进入处理器10的保护模式并在保 护模式下设置内存的访问权限例如4G的访问权限,并在设置完成后退出保护模式。步骤S102,所述标示符搜寻模块202在内存30的地址空间范围FOOOOh-FFFFFh内 确定标示符的存放地址。步骤S104,所述ACPI表获取模块204在标示符的存放地址内找到指向RSD表的指 针,并在指针中读取RSD表的基地址。步骤S106,所述ACPI表获取模块204根据基地址找到RSD表,在RSD表中得到所 有ACPI表的入口地址,再根据一预设参数选择与预设参数对应的ACPI表,例如预设参数为 3则表示选择第3个ACPI表。
步骤S108,判断用户输入的操作是读取还是更新选择的ACPI表的操作,若是读 取选择的ACPI表的操作,则执行步骤S110,若是更新选择的ACPI表的操作,则执行步骤 S118。步骤S110,所述ACPI表读取模块206读取选择的ACPI表内存储的选择的ACPI表 的容量及校验值,并根据一预设算法计算出校验值。在本实施方式中,所述ACPI表读取模 块206对读取的所述选择的ACPI表的内容进行相加运算以计算出校验值。在其他实施方 式中,也可以采用其他算法计算出校验值。步骤S112,所述ACPI表读取模块206比较计算出的校验值是否等于读取的校验 值,若两者相等,则执行步骤S114,若两者不相等,则执行步骤S116。步骤Sl 14,所述ACPI表读取模块206判断为读取的ACPI表正确,并通过显示器显 示表示读取正确的信息,例如“Reading Right”。步骤Sl 16,所述ACPI表读取模块206判断为读取的ACPI表错误,并通过显示器显 示表示读取错误的信息,例如“Reading Error”。步骤S118,所述ACPI表更新模块208读取选择的ACPI表内存储的ACPI表的容量 及读取一新的ACPI表的容量。步骤S120,所述ACPI表更新模块208比较所述选择的ACPI表的容量是否大于新 的ACPI表的容量,若所述选择的ACPI表的容量大于新的ACPI表的容量,则执行步骤S122, 若所述选择的ACPI表的容量小于或等于新的ACPI表的容量,则执行步骤S124。步骤S122,所述ACPI表更新模块208用新的ACPI表替换掉所述选择的ACPI表。步骤S124,所述ACPI表更新模块208调整所述选择的ACPI表或其他的ACPI表的 布局,用新的ACPI表替换掉所述选择的ACPI表。例如可以采用如下的方法调整ACPI表的 布局将其他的ACPI表的位置在其相应的存储空间中顺次移动以留出足够的空间以放置 新的ACPI表。步骤S126,所述ACPI表更新模块208读取新的ACPI表的校验值,并根据一预设算 法计算出校验值。步骤S128,所述ACPI表更新模块208比较计算出的校验值是否等于读取的校验 值,若两者相等,则执行步骤S114,若两者不相等,则执行步骤S116。本发明ACPI表更新系统及方法不需要在BIOS的AML程序源代码下进行ACPI表的 读取和更新等操作,只需在DOS下即可完成对ACPI表的相关操作,从而提高了对ACPI表的 处理效率,还可实现对处理器10的操作模式,如保护模式的设置及内存30的设置和读取。
权利要求
1.一种ACPI表处理系统,包括一处理器、一存储器及一内存,所述处理器分别与所述 存储器及所述内存相连并执行所述存储器内存储的指令,所述存储器包括一访问权限设置模块,用于在DOS下进入处理器的保护模式并在所述保护模式下设置 一内存的访问权限,并在设置完成后退出所述保护模式;一标示符搜寻模块,用于在内存的一地址空间范围内确定一标示符的存放地址; 一 ACPI表获取模块,用于在所述标示符的存放地址内找到指向一 RSD表的指针,并在 指针中读取所述RSD表的基地址,并根据所述基地址找到所述RSD表,然后在所述RSD表中 得到所有ACPI表的入口地址,再根据一预设参数选择与所述预设参数对应的ACPI表;一 ACPI表读取模块,用于接收到用户输入的读取选择的ACPI表操作时读取选择的 ACPI表内存储的所述选择的ACPI表的容量及校验值,并根据一预设算法计算出校验值,比 较计算出的校验值是否等于读取的校验值,若两者相等,则判断为读取的所述选择的ACPI 表正确,若两者不相等,则判断为读取的所述选择的ACPI表错误;及一 ACPI表更新模块,用于接收到用户输入的更新选择的ACPI表操作时读取选择的 ACPI表内存储的所述选择的ACPI表的容量及读取一新的ACPI表的容量,并比较所述选择 的ACPI表的容量是否大于所述新的ACPI表的容量,若所述选择的ACPI表的容量大于所述 新的ACPI表的容量,则用新的ACPI表替换掉选择的的ACPI表,若所述选择的ACPI表的容 量小于或等于所述新的ACPI表的容量,则调整内存中的ACPI表的布局,然后用新的ACPI 表替换掉选择的ACPI表,再读取所述新的ACPI表的校验值,并根据一预设算法计算出校验 值,比较计算出的校验值与读取的校验值,若两者相等,则判断为读取的所述新的ACPI表 正确,若两者不相等,则判断为读取的所述新的ACPI表错误。
2.如权利要求1所述的ACPI表处理系统,其特征在于所述内存的地址空间范围为 FOOOOh-FFFFFh。
3.如权利要求1所述的ACPI表处理系统,其特征在于所述ACPI表读取模块对读取 的所述选择的ACPI表的内容进行相加运算以计算出校验值。
4.如权利要求1所述的ACPI表处理系统,其特征在于所述调整ACPI表的布局是通 过将其他的ACPI表的位置在其相应的存储空间中顺次移动以留出相应空间以放置所述新 的ACPI表来实现的。
5.一种ACPI表处理方法,包括以下步骤在DOS下进入处理器的保护模式并在所述保护模式下设置内存的访问权限,并在设置 完成后退出所述保护模式;在内存的地址空间范围内确定一标示符的存放地址;在所述标示符的存放地址内找到指向一 RSD表的指针,并在所述指针中读取所述RSD 表的基地址,根据所述基地址找到所述RSD表,在所述RSD表中得到所有ACPI表的入口地 址,再根据一预设参数选择与预设参数对应的ACPI表;判断用户输入的是读取还是更新选择的ACPI表的操作,若是读取选择的ACPI表的操 作,则读取所述选择的ACPI表内存储的所述选择的ACPI表的容量及校验值,并根据一预设 算法计算出校验值,比较计算出的校验值是否等于读取的校验值,若两者相等,则判断为读 取的所述选择的ACPI表正确,若两者不相等,则判断为读取的所述选择的ACPI表错误; 若是更新选择的ACPI表的操作,则读取选择的ACPI表内存储的所述选择的ACPI表的容量及读取一新的ACPI表的容量,比较所述选择的ACPI表的容量是否大于所述新的ACPI 表的容量,若所述选择的ACPI表的容量大于所述新的ACPI表的容量,则用新的ACPI表替 换掉所述选择的ACPI表,若所述选择的ACPI表的容量小于或等于所述新的ACPI表的容 量,则调整内存中的ACPI表的布局,用新的ACPI表替换掉所述选择的ACPI表;及读取所述新的ACPI表的校验值,并根据一预设算法计算出校验值,比较计算出的校验 值是否等于读取的校验值,若两者相等,则判断为读取的所述新的ACPI表正确,若两者不 相等,则判断为读取的所述新的ACPI表错误。
6.如权利要求5所述的ACPI表处理方法,其特征在于所述内存的地址空间范围为 FOOOOh-FFFFFh。
7.如权利要求5所述的ACPI表处理方法,其特征在于所述ACP取模块对读取的所述 选择的ACPI表的内容进行相加运算以计算出校验值。
8.如权利要求5所述的ACPI表处理方法,其特征在于所述调整ACPI表的布局是通 过将其他的ACPI表的位置在其相应的存储空间中顺次移动以留出相应空间以放置所述新 的ACPI表来实现的。
全文摘要
一种ACPI表处理系统包括一处理器、一存储器及一内存,所述处理器分别与所述存储器及所述内存相连,所述存储器包括一访问权限设置模块,用于在处理器的保护模式下设置一内存的访问权限;一标示符搜寻模块,用于确定标示符的存放地址;一ACPI表获取模块,用于选择与预设参数对应的ACPI表;一ACPI表读取模块,用于读取选择的ACPI表并检验读取是否正确;及一ACPI表更新模块,用于更新选择的ACPI表,并检验更新后的ACPI表是否正确。本发明还提供一种ACPI表处理方法。本发明ACPI表处理系统及方法可实现高效率地对ACPI表的处理。
文档编号G06F9/445GK101996085SQ20091030615
公开日2011年3月30日 申请日期2009年8月27日 优先权日2009年8月27日
发明者郑治桥 申请人:鸿富锦精密工业(深圳)有限公司;鸿海精密工业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1