计算机系统与其组态管理程序传输系统信息的方法

文档序号:6467877阅读:350来源:国知局

专利名称::计算机系统与其组态管理程序传输系统信息的方法
技术领域
:本发明是有关于一种组态管理程序,且特别是有关于一种计算机系统与其组态管理程序传输系统信息的方法。
背景技术
:进阶组态与电源接口(Advancedconfigurationandpowerinterface,以下简称ACPI)目前广泛地被应用于各式的计算机平台,包括网络服务器、桌上型个人计算机、笔记本计算机等等。就目前ACPI功能的研发工作上,业界大都采用ASL(ACPISourceLanguage)程序语言来撰写ACPI功能模块,且需要先将ASL原始程序代码(Code)编译成机器码形式的AML(ACPImachinelanguage)程序代码,再将AML程序代码烧入至闪存(FlashROM)中,然后由ACPI操作系统(OperatingSystem,OS)来执行所需的电源管理功能。[OOO3]另夕卜,ACPIAML程序常需要与基本输入输出系统(Basicinputoutputsystem,以下简称BI0S)产生对应的数据交流关系。就目前来说,BIOS的功能于研发上大都采用C程序语言或汇编语言(AssemblyLanguage)来撰写,因此计算机工程师于研发某一ACPI功能时,则需以ASL程序语言来撰写ASL程序代码,且同时用C程序语言(或汇编语言)来撰写相关的BIOS程序代码。由于ASL程序语言和C程序语言(或汇编语言)为二种语法完全不同的程序语言,因此,对于计算机工程师(即ACPI的研发人员)来说,会带来很大的不便与困扰。也就是说,当计算机系统的芯片组需更换、硬件设计上需修改或BIOS程序代码需要修正时,计算机工程师不仅需要修正相关的BIOS程序代码,且须同时修正相关的ASL程序代码,使得计算机系统可以正常运作。有鉴于此,若是能提供一种技术,可以将单一版本ASL程序代码应用于不同产品项目,甚至用于不同的芯片组(Chipset)以及不同的硬件环境中,使得计算机工程师不需另外对ASL程序代码进行修正,以减少修改ASL程序代码的修正时间,将是一个重要的课题。
发明内容本发明提供一种计算机系统与其组态管理程序获得系统信息的方法,藉此让计算机工程师进行硬件(Hardware)或基本输入输出系统(BIOS)的修改时,不必去修改相关的组态管理程序的ASL/AML程序代码,以减少撰写ASL/AML程序代码的错误以及除错时间。本发明提出一种组态管理程序传输系统信息的方法,包括下列步骤。首先,提供第一存储器,其中该第一存储器记录着至少一系统信息。之后,由组态管理程序触发一中断,其中此中断具有指令信息。接着,由中断处理程序处理上述中断,以便依据上述中断的指令信息进行对应的组态设定操作,或是依据该指令信息将第一存储器中对应的系统信息回传给组态管理程序。在本发明一实施例中,上述方法还包括下列步骤。首先,检测计算机系统,以获取至少一系统信息。接着,将系统信息记录于第一存储器。在本发明一实施例中,上述检测计算机系统的步骤包括下列步骤。首先,进行开机自我测试程序。接着,于开机自我测试程序中,由基本输入输出系统检测计算机系统的组态,以获取系统信息。在本发明一实施例中,上述中断为系统管理中断(SystemManagementInterrupt,SMI),而中断处理程序为系统管理中断处理程序(SMIHandler)。在本发明一实施例中,上述指令信息包含指令,而上述组态管理程序触发中断的步骤包括写入指令至中断控制端口,其中中断处理程序执行中断控制端口的指令,以便依据上述指令进行对应的组态设定操作,或是依据上述指令将第一存储器中对应的系统信息回传给组态管理程序。在本发明一实施例中,上述指令信息包含指令与第一参数,而组态管理程序触发中断的步骤包括下列步骤。写入第一参数至中断数据端口。接着,写入指令至中断控制端口。其中,中断处理程序依据中断数据端口的第一参数执行中断控制端口的指令,以便依据第一参数与指令进行对应的组态设定操作,或是依据第一参数与指令将第一存储器中对应的系统信息写入中断数据端口。在本发明一实施例中,上述组态管理程序传输系统信息的方法还包括由组态管理程序从中断数据端口读取系统信息。在本发明一实施例中,上述中断数据端口是地址为B3h的输入输出端口。在本发明一实施例中,上述中断控制端口是地址为B2h的输入输出端口。在本发明一实施例中,上述组态管理程序触发该中断的步骤还包括写入第二参数至第二存储器,其中中断处理程序依据中断数据端口的第一参数与第二存储器的第二参数执行中断控制端口的指令,以便依据第一参数、第二参数与指令进行对应的组态设定操作,或是依据第一参数、第二参数与指令将第一存储器中对应的系统信息写入第二存储器。在本发明一实施例中,上述组态管理程序传输系统信息的方法还包括由组态管理程序从第二存储器读取系统信息。在本发明一实施例中,上述第二存储器为延伸BIOS数据区域(ExtendedBIOSDataArea,EBDA)。在本发明一实施例中,上述第一存储器为系统管理模式存储器(SystemManagementModeRandomAccessMemory,S匪RAM)。在本发明一实施例中,上述组态管理程序为先进组态与电源接口(AdvancedConfigurationandPowerInterface,ACPI)禾呈序。本发明提出一种计算机可读取储存媒体,用以储存计算机程序,此计算机程序用以加载至计算机系统中并且使得计算机系统执行上述组态管理程序传输系统信息的方法。本发明提出一种用于使组态管理程序传输系统信息的计算机程序产品,当计算机加载计算机程序并执行后,可完成上述组态管理程序传输系统信息的方法。本发明提出一种计算机系统,包括检测模块、存储器与组态管理程序模块与中断处理程序模块。检测模块用以检测计算机系统,以获取至少一系统信息。存储器用以储存该系统信息。组态管理程序模块用以执行组态管理程序,以触发一中断,且此中断具有指令信息。中断处理程序模块用以执行中断处理程序处理中断,以便依据指令信息进行对应的组态设定操作,或是依据指令信息将第一存储器中对应的系统信息回传给组态管理程序模块。在本发明一实施例中,上述计算机系统还包括检测模块。此检测模块用以检测计算机系统,以获取至少一系统信息,并将系统信息记录于第一存储器。在本发明一实施例中,上述检测模块进行开机自我测试程序,且于开机自我测试程序中,由基本输入输出系统检测计算机系统的组态,以获取系统信息。在本发明一实施例中,上述中断为系统管理中断,而中断处理程序为系统管理中断处理程序。在本发明一实施例中,上述指令信息包含指令,而计算机系统还包括中断控制端口。此中断控制端口用以储存指令,其中中断处理程序模块执行中断控制端口的指令,以便依据上述指令进行对应的组态设定操作,或是依据上述指令将第一存储器中对应的该系统信息回传给组态管理程序模块。在本发明一实施例中,上述指令信息包含指令与第一参数,而计算机系统还包括中断数据端口与中断控制端口。中断数据端口用以储存第一参数。中断控制端口用以储存指令。其中,中断处理程序模块依据中断数据端口的第一参数执行中断控制端口的指令,以便依据第一参数与指令进行对应的组态设定操作,或是依据第一参数与指令将第一存储器中对应的系统信息写入中断数据端口。在本发明一实施例中,上述组态管理程序模块是从中断数据端口读取系统信息。在本发明一实施例中,上述中断数据端口是地址为B3h的输入输出端口。在本发明一实施例中,上述中断控制端口是地址为B2h的输入输出端口。在本发明一实施例中,上述计算机系统还包括第二存储器,用以写入第二参数。其中,中断处理程序依据中断数据端口的第一参数与第二存储器的第二参数执行中断控制端口的指令,以便依据第一参数、第二参数与指令进行对应的组态设定操作,或是依据第一参数、第二参数与指令将第一存储器中对应的系统信息写入第二存储器。在本发明一实施例中,上述组态管理程序模块是从第二存储器读取系统信息。本发明通过将检测计算机系统所获取的系统信息,先存放于存储器中。再通过组态管理程序触发中断,并由中断处理程序处理中断,以便依据中断之指令信息进行对应的组态设定操作,或是依序中断的指令信息将存储器中对应的系统信息回传给组态管理程序,以便于让组态管理程序获得对应的系统信息。如此一来,若是计算机系统的芯片组需更换、硬件设计上需修改或BIOS程序代码需要修正时,计算机工程师只需要修正相关的BIOS程序代码即可,而不需在对组态管理程序相关的ASL程序代码进行修正,进而减少撰写ASL程序代码的错误以及除错时间。为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图,作详细说明如下。图1绘示为本发明一实施例的组态管理程序传输系统信息的方法流程图。图2绘示为本发明一实施例的计算机系统的示意图。图3绘示为本发明另一实施例的组态管理程序传输系统信息的方法流程图。图4绘示为本发明另一实施例的计算机系统的示意图。图5绘示为本发明又一实施例的组态管理程序传输系统信息的方法流程图,图6绘示为本发明又一实施例的计算机系统的示意图。图7绘示为本发明再一实施例的组态管理程序传输系统信息的方法流程图,图8绘示为本发明再一实施例的计算机系统的示意图。具体实施例方式图i绘示为本发明一实施例的组态管理程序获取系统信息的方法流程图。图2绘示为本发明一实施例的计算机系统的示意图。请合并参照图1与图2,计算机系统200包括检测模块210、第一存储器220、组态管理程序模块230与中断处理程序模块240。检测模块210用以检测计算机系统200,以获取至少一系统信息(步骤SIOI)。在本实施例中,检测模lfe210中可以配置一非易失性存储器(Non-volatileRandomAccessMemory,NVRAM),此非易失性存储器用以储存基本输入输出系统(BasicInputOutputSystem,BIOS)。因此,检测模块210会先进行开机自我测试(POST)程序,并于此开机自我测试程序中,由基本输入输出系统检测计算机系统200的组态,以获取所需要的系统信息。上述系统信息可以为通讯端口C0M1/C0M2、PS2-KB/MS、电话唤醒(WakeuponRing,WOR)、网络唤醒(WakeuponLAN,WOL)、停止风扇运转(StopFan)、设定电源指示灯状态(SetPowerLedState)、告知基板管理控制器(BaseboardManagementController,BMC)…等计算机系统200内部的各种相关信息。接着,在获得系统信息之后,检测模块210会将所获取的系统信息写入第一存储器220(步骤S103)。亦即第一存储器220会储存系统信息,以便计算机系统200在后续运作中可以由第一存储器220中读取出系统信息。在本实施例中,第一存储器220例如为系统管理模式存储器(SystemManagementModeRandomAccessMemory,S匪RAM)。组态管理程序模块230执行组态管理程序。当组态管理程序欲传输系统信息以执行组态管理时,组态管理程序模块230的组态管理程序会触发一中断(Interrupt),其中中断具有指令(Command)信息(步骤S105)。在本实施例中,组态管理程序模块230的组态管理程序可以是进阶组态与电源接口(ACPI)或其它任何用来管理计算机系统内部组态的组态管理程序。当中断处理程序模块240接收到上述中断发出之后,便会执行中断处理程序来处理此中断,以便依据中断的指令信息进行对应的组态设定操作或是获取组态讯息。前述中断例如为系统管理中断(SystemManagementInterrupt,SMI),而中断处理程序模块240所执行的中断处理程序可以是系统管理中断处理程序(SMIHandler)。换句话说,组态管理程序模块230可以通过触发中断,要求中断处理程序模块240依据该指令信息代为执行一部或全部的组态设定操作。也就是说,中断处理程序模块240会依据上述中断的指令信息而产生一设定值,以便进行组态设定操作(例如设定风扇转速,或其它组态设定)。或者,组态管理程序模块230也可以通过触发中断,要求中断处理程序模块240依据该指令信息至第一存储器220中读取对应的系统信息(即组态讯息,例如读取「网络唤醒」的设定值,或读取其它组态设定值),并将此系统信息回传给组态管理程序模块230(步骤S107),使得组态管理程序可以获得对应的系统信息。如此一来,计算机工程师不必因为计算机系统200的硬件或是基本输入输出系统的程序代码需要修改时,还要对组态管理程序模块230的程序代码进行修改。图3绘示为本发明另一实施例的组态管理程序传输系统信息的方法流程图。图4绘示为本发明另一实施例的计算机系统的示意图。请合并参照图3与图4,计算机系统400包括检测模块410、第一存储器420、组态管理程序模块430、中断处理程序模块440与中断控制端口450。本实施例中检测模块410、第一存储器420、组态管理程序模块430、中断处理程序模块440除下述说明外,也可以别参照图2中检测模块210、第一存储器220、组态管理程序模块230与中断处理程序模块240的相关说明。检测模块410用以检测计算机系统400,以获取至少一系统信息(步骤S301)。接着,检测模块410会将系统信息写入第一存储器420中(步骤S303),以便计算机系统400在后续运作中可以由第一存储器420中读取出系统信息。在本实施例中,第一存储器420例如为系统管理模式存储器。之后,组态管理模块430会写入一指令至中断控制端口450,并且执行组态管理程序触发一中断,而此中断具有上述指令(步骤S305)。前述中断例如为系统管理中断(SMI),而中断控制端口450可以是系统管理中断控制端口(SMIcontrolport)。接着,中断处理程序模块430接收到上述中断后,会到中断控制端口450读取上述指令,以便执行中断处理程序来处理中断控制端口450的指令,而将第一存储器420中对应的系统信息回传给组态管理程序模块430(步骤S307),使得组态管理程序可以获得对应的系统信息;或者,中断处理程序模块440依据第一参数执行中断控制端口450的指令,而进行对应的组态设定操作。如此一来,计算机工程师不必因为计算机系统400的硬件或是基本输入输出系统需要修改时,而还要对组态管理程序模块430的程序代码进行修改。图5绘示为本发明又一实施例的组态管理程序传输系统信息的方法流程图。图6绘示为本发明又一实施例的计算机系统的示意图。请合并参照图5与图6,计算机系统600包括检测模块610、第一存储器620、组态管理程序模块630、中断处理程序模块640、中断控制端口650、中断数据端口660。本实施例中检测模块610、第一存储器620、组态管理程序模块630、中断处理程序模块640、中断控制端口650除下述说明外,也可以分别参照图4中检测模块410、第一存储器420、组态管理程序模块430、中断处理程序模块440与中断控制端口450的相关说明。检测模块610检测计算机系统600,以获取至少一系统信息(步骤S501)。接着,检测模块610将系统信息写入第一存储器620中(步骤S503),以便计算机系统600在后续运作中可以由第一存储器620中读取出系统信息。在本实施例中,第一存储器620例如为系统管理模式存储器。之后,组态管理程序模块630先写入第一参数至中断数据端口660,再写入指令至中断控制端口650,并且执行组态管理程序以触发中断,且此中断具有上述第一参数与指令(步骤S505)。前述中断例如为系统管理中断(SMI),而中断数据端口660与中断控制端口650可以是系统管理中断数据端口(SMIdataport)与系统管理中断控制端口(SMIcontrolport)。在中断处理程序模块640接收到上述中断后,中断处理程序模块640会分别至中断数据端口660与中断控制端口650读取第一参数与指令,以便于依据中断数据端口660的第一参数执行中断控制端口650的指令,而将第一存储器620中对应的系统信息写入中断数据端口660(步骤S507);或者,中断处理程序模块640依据第一参数执行中断控制端口650的指令,而进行对应的组态设定操作。最后,组态管理程序模块630会从中断数据端口660中读取系统信息(步骤S509),以便让组态管理程序获得对应的系统信息。如此一来,计算机工程师不必因为计算机系统600的硬件或是基本输入输出系统需要修改时,而还要对组态管理程序模块630的程序代码进行修改。在本实施例中,中断数据端口660例如是地址为B3h的输入输出端口(8-bit),而中断控制端口650例如是地址为B2h的输入输出端口(8-bit)。在上述实施例中,中断数据端口660的所能储存的数据位大小为8位(Bit)。当组态管程序模块630写入参数的数据量大于8位时,上述实施例的中断数据端口660便无法完整地储存上述参数。因此,以下便举另一例来说明如。图7绘示为本发明再一实施例的组态管理程序传输系统信息的方法流程图。图8绘示为本发明再一实施例的计算机系统的示意图。请先参照图8,于本实施例中,计算机系统800包括检测模块810、第一存储器820、组态管理程序模块830、中断处理程序模块840、中断控制端口850、中断数据端口860与第二存储器870。本实施例中检测模块810、第一存储器820、组态管理程序模块830、中断处理程序模块840、中断控制端口850除下述说明外,也可以分别参照图6中检测模块610、第一存储器620、组态管理程序模块630、中断处理程序模块640与中断控制端口650的相关说明。第二存储器870可以储存数据量较大的参数,例如为1KB。请合并参照图7与图8,图7的步骤S701、S703的说明与图5的步骤S501、S503相同或相似,故不再赘述。接着,在步骤S705中,组态管理程序模块830将第一参数(8-bit)写入中断数据端口860以及写入指令至中断控制端口850夕卜,还会将第二参数写入至第二存储器870。之后,在步骤S707中,中断处理程序模块840接收到中断后,会先至中断数据端口860读取第一参数以及中断控制端口850读取指令外,还会同时至第二存储器870读取第二参数,以便于依据第一参数与第二参数执行中断控制端口850的指令,而将第一存储器820中对应的系统信息写入第二存储器870;或者,中断处理程序模块840可以依据在中断数据端口860的第一参数与在第二存储器870的第二参数执行中断控制端口850的指令,而进行对应的组态设定操作(例如设定风扇转速,或设定其它组态参数)。在此假设断处理程序模块840接收到中断后,会依据第一参数与第二参数执行中断控制端口850的指令,而将第一存储器820中对应的系统信息写入第二存储器870。最后,在步骤S709中,组态管理程序模块830会从第二存储器870中读取系统信息,以便让组态管理程序获得对应的系统信息。在本实施例中,第二存储器870为延伸BI0S数据区域(ExtendedBIOSDataArea,EBDA)。此EBDA可以容纳的数据量高达1024字节(bytes)。以下,将举一些实际的例子来说明。在计算机系统600(800)进入睡眠状态(Sle印State)之前,有2个时间点的工作必需由基本输入出系统执行。而第l个时间点为ACPI中的—PTS程序(Method)被执行时,也就是说使用软件的系统管理程序中断(SWSMI)去让基本输入输出系统执行一些功能,例如使能PS2KB/MS唤醒、清除唤醒状态、停止风扇运转、设定电源指示灯状态。此软件的系统管理中断要有输入数据(InputData)及输出结果(OutputResult)。而上述输入参数为本实施例所述的第一参数与指令,输出结果为本实施例所述的系统信息。并且,执行上述功能的程序如下所示EX:Method(_PTS,1,NotSerialized){if(Lor(LEqual(ARGO,4),LEqual(ARGO,5)))〃S4orS5{\_SB.SSMI(0xAF,0)〃issueswsmi0xAFsubf皿ction0toEnableSI0wakeuponringonCOMA\_SB.SSMI(0xAF,2)〃issueswsmi0xAFsubfunction2toEnableSI0wakeuponringonCOMB}if(LEqual(ARGO,l))〃WhileenteringSI{if(Lor(\_SB.WPSK,\_SB.WPSM))〃PS2KB/MSwillcanwakeupfromSI{SI0wakeupSI0wakeupSI0wakeupSI0wakeup…Store(0ne,PS1S)〃ClearSle印statusStore(0ne,PS1E)〃EnableSle印//Afterhere,systemwillissue"SleepSMI"if"sleeptypeenablebit,,issetas1}〃endof_PTS另外,第2个时间点为计算机系统600(800)要进入睡眠状态的最后点,也就是当睡眠缓存器(Sle印Register)的使能位(EnableBit)被写入1时,基本输入输出系统必\_SB.SSMI(0xAF,4)onPS2\_SB.SSMI(0xAF,6)onPS2\_SB.SSMI(OxAF,O)onringon\_SB.SSMI(OxAF,2)onringon'/issueswsmiOxAFsubfunction4toEnaableKB//issueswsmiOxAFsubfunction6toEnableMS'/issueswsmiOxAFsubfunction0toEnableCOMA//issueswsmiOxAFsubfunction2toEnableCOMB//endif需使用输入输出拦截(10tr即)或睡眠状态缓存器(Sle印TypeRegister)去栏截此系统管理中断,以便去执行相关的工作。上述功能例如为使能PS2KB/MS唤醒事件、电话唤醒与网络唤醒。此外,在计算机系统600(800)离开休眠状态后有1个时间点的工作必须由基本输入输出系统来执行,也就是ACPI中的—WAK程序(Method)被执行时,而透过软件的系统管理中断去执行工作,例如清除状态(ClearStatus)、禁能唤醒事件(DisableWakeupEvent)-、恢复风扇运转(RestoreFan)、设定电源指示灯状态。而执行上述功能的程序如下所述Ex:Method(_WAK,1,Serialized)\_SB.SSMI(0xAF,1)//issueswsmi0xAFsubf皿ction1todisableSI0wakeuponringonCOMA\_SB.SSMI(OxAF,3)//issueswsmi0xAFsubf皿ction3todisableSI0wakeuponringonCOMB\_SB.SSMI(OxAF,5)//issueswsmi0xAFsubf皿ction5todisableSI0wakeuponPS2KB\_SB.SSMI(OxAF,7)//issueswsmi0xAFsubf皿ction7todisableSI0wakeuponPS2MS…在本实施例中,ASL程.序代码中只有一个「触发软件的系统管理中断的程序」。而上述的程序中需要2个输入参数(指令与输入参数),亦即本实施例的第一-参数与指令,并且于执行完上述程序后将回传l个输出值,亦即本实施例的系统信息。因此,需要定义出指令(中断控制端口650(850),SMICommandPort0B2h)/输入参数(中断数据端口660(860),SMIDataPort0B3h)/输出参数(中断数据端口660(860),SMIDataPort0B3h)的对应关系即可。并且,指令(Command)/输入数据(InputData)/输出数据(OutputData)皆为8位。而执行上述功能的程序如下所述EX://〃Alg-issueSWSMIwithcommandARG0(8bits)&inputdataARG1(8bits),andreturnavalue(8bits)//EX:SWSMIOxAFwithparameterinputparameter〃0:EnableSI0COMAwakeonRing(EnableSioComaWOR)〃1-DisableSI0COMAwakeonRing(DisableSioComaWOR)〃2:EnableSI0COMBwakeonRing(EnableSioCombWOR)0112]0113]0114]0115]0116]0117]0118]0119]0120]0121]0122]0123]3:DisableSIOCOMBwakeonRing(DisableSioCombWOR)4-EnableSIOPS2KBwakeup(EnableSioPs2Kb)5-DisableSIOPS2KBwakeup(DisableSioPs2Kb)6:EnableSIOPS2MSwakeup(EnableSioPs2Ms)7-DisableSIOPS2MSwakeup(DisableSioPs2Ms)Method(SSMI,2)〃SWSMIMutex(MUTl,O)〃MUTEXforSMIS(IO0xB3)&SMIC(IO0xB2)Acquire(MUT1,OxFFFF)//AcquireSemaphore〃SaveSMIS/SetparameterintoSMIS7SWSMIcommandintoSMIC;issueSWSMI&willsaveto100xB3/RestoreSMIS//ReleaseSemaphore〃endSSMIStore(\_SB.SMIS,LocalO)Store(Argl,\_SB.SMIS)Store(ArgO,\_SB.SMIC)returnvalue0124]0125]Store(\_SB.SMIS,Local1)0126]Store(LocalO,\_SB.SMIS)0127]Release(MUT1)0128]Return(Local1)0129]}0130]0perationRegion(I0B2,Systeml0,0xB2,2)〃MKF_SMIPORT0131]Field(I0B2,ByteAcc,NoLock,Preserve)0132]{0133]SMIC,8,〃SW-SMIctrlport0134]SMIS,8,〃SW-SMIDataport0135]}0136]另外,在本例中,若能由透过软件的系统管理中断方式由检测模块(基本输入输出系统)610(810)中获得,如此,当基本输入输出系统的数据修改时并不用去修改ASL程序代码。如下例所示,0137]Memory32Fixed(ReadOnly,OxOFECOOOOO,0x0100)〃10APIC0138]10(Decodel6,0x0,0x0,0,0x10)0139]若要获得匪IO(MemoryMappedInputOutput)BaseAddressOxOFECOOOOO及10PortBaseAddress0x0,能由透过软件的系统管理中断方式由检测模块610(810)中经由EBDA存储器中获得。另外,AML程序代码与基本输入输出系统之间如何互换大量的数据。在本实施例中,可以使用第二存储器870。并且,于基本输入输出系统的自我测试程序时,保留一块最大且标准化的存储器容量(例如1KB)做为互换的数据区。AML透过软件的系统管理中断去获得此区域的存储地址(MemoryAddress),且其程序如下所述Ex:Name(EBAD,O)//MemorybaseOperationRegion(EBDA,SystemMemory,EBAD,0xl)〃EBDABaseAddressField(EBDA,ByteAcc,NoLock,Preserve){DAT0,8,DAT1,8,DAT2,8,…DATn,8}Scope(_SB){Method(_INI,0){Store(SSMI(OxAD,0),EBAD)〃issueSWSMIOxADwithinputparameter0togetEBDAbaseSHL(EBAD,8)…}}在呼叫软件的系统管理中断前,要将所要传入的数据写入此第二存储器870,也就是组态管理程序模块830需要将第一数据写入至第二存储器870。当执行完软件的系统管理中断,中断处理程序模块840依据控制数据端口的第一参数及第二存储器870的第二参数执行中断控制端口850的指令,而至第一存储器820中读取对应的系统信息,并将系统信息写入第二存储器870。而上述功能的程序如下所述EX://InputParametersStore(0,DATO)Store(1,DAT1)…Store(n,DATn)SSMI(OxFD,O)〃issueSWSMI//GetreturnvaluesStore(DATO,LocalO)…表1至表6为中断管理程序中,各种指令与第一参数、第二参数与系统信息的对照表。SMI机制分别为软件的系统管理中断(SWSMI)以及休眠模式系统管理中断(Sle印TypeSMI);「Both」表示同时具有SWSMI以及Sle印TypeSMI两种模式。「指令(Command)」字段表示中断控制端口650(850)中的指令;「第一参数」字段表示写入至中断数据端口660(860)中的第一参数;「第二参数」字段表示写入至为第二存储器870中的第一参数;「回传的系统信息」字段表示由中断处理程序模块640(840)依据中断所伴随的「指令」而回传给组态管理程序模块630(830)的对应的系统信息;「动作(action)」字段表示该对应「指令」的动作;「SMI处理程序的对应程序(correspondingprocedureinSMIhandler)」字段表示SMI处理程序依据中断所伴随的「指令」而内部执行的对应程序。以下,将以表1中灰色区块的数据进行说明。请合并参照表1与图6,在此假设指令信息包含指令与第一参数。当组态管理程序模块630将第一参数「0Bh」写入至中断数据端口660(其地址在B3h),再写入指令「AFh」至中断控制端口650(其地址在B2h)时,表示此时所用的SMI机制为SWSMI,且要取得计算机系统600中「网络唤醒」(wakeuponLAN)的设定值。在将第一参数「OBh」与指令「AFh」分别填入中断数据端口660与中断控制端口650后,组态管理程序模块630可以触发SMI中断。也就是说,此中断具有第一参数「OBh」以及指令「AFh」。接着,在中断处理程序模块640接收到上述SMI中断后,会依据中断数据端口660的第一参数「OBh」执行中断控制端口650的指令「AFh」,而至第一存储器620中读取「网络唤醒」的设定值(对应的系统信息),并将系统信息写入中断数据端口660(步骤S507)。在另一实施例中,SMI处理程序(中断处理程序模块640)可能会依据中断数据端口660的第一参数「0B」执行中断控制端口650的指令「AFh」,而呼叫对应的「GetWOLSts」程序(procedure)来取得计算机系统600中「网络唤醒」的设定值。最后,组态管理程序模块630会从中断数据端口660中读取系统信息(步骤S509),以便让组态管理程序获得对应的系统信息。在本实施例中,若上述步骤S507写入中断数据端口660中的系统信息(「网络唤醒」的设定值)为「0」,表示计算机系统600禁能「网络唤醒」。若上述步骤S507写入中断数据端口660的系统信息(「网络唤醒」的设定值)为「1」,表示计算机系统600可以通过网络唤醒(「网络唤醒」功能已被使能)。另外,再举一例进行说明。在此假设指令信息包含指令、第一参数与第二参数。请合并参照表6与图8,当组态管理程序模块830将第一参数「Oh」写入至中断数据端口860(其地址在B3h),写入指令「FAh」至中断控制端口850(其地址在B2h),以及写入第二参数「Oh」至第二存储器870时,表示此时所用的SMI机制为SWSMI,且要依据「从ACPI传送所运行操作系统类别给BIOSSMI处理程序(sendtherunningOStypetoBIOSSMIhandlerfromACPIOS)」的设定值对组态管理模块830进行对应的组态设定操作。在将第一参数「Oh」、指令「FAh」以及第二参数「Oh」分别填入中断数据端口860、中断控制端口850与第二存储器870后,组态管理程序模块830可以触发SMI中断。也就是说,此中断具有第一参数「Oh」指令「FAh」以及第二参数「Oh」。接着,在中断处理程序模块840接收到上述SMI中断后,会依据中断数据端口860的第一参数「Oh」以及第二存储器870的第二参数「Oh」执行中断控制端口850的指令「FAh」,而至第一存储器820中读取「从ACPI操作系统传送执行操作系统型态至BIOS中断处理程序」的设定值(对应的系统信息),并将系统信息写入第二存储器870(步骤S707)。在另一实施例中,SMI处理程序(中断处理程序模块840)可能会依据中断数据端口860的第一参数「0h」以及第二存储器870的第二参数「Oh」执行中断控制端口850的指令「FAh」,而呼叫对应的「SendRunningOsType」程序来执行「从ACPI传送所运行操作系统类别给BI0SSMI处理程序」的设定值的组态设定操作。在本实施例中,若上述步骤S707写入第二存储器870中的系统信息(「从ACPI传送所运行操作系统类别给BIOSSMI处理程序」的设定值)为「0h」,表示计算机系统800的操作系统类别为「WindowsXP」。若上述步骤S707写入第二存储器870的系统信息(「从ACPI传送所运行操作系统类别给BIOSSMI处理程序」的设定值)为「lh」,表示计算机系统800的操作系统类别为「Windows200332bit」。若上述步骤S707写入第二存储器870的系统信息(「从ACPI传送所运行操作系统类别给BIOSSMI处理程序」的设定值)为「2h」,表示计算机系统800的操作系统类别为「Windows200364bit」。若上述步骤S707写入第二存储器870的系统信息(「从ACPI传送所运行操作系统类别给BIOSSMI处理程序」的设定值)为「3h」,表示计算机系统800的操作系统类别为「Windows2000」。若上述步骤S707写入第二存储器870的系统信息(「从ACPI传送所运行操作系统类别给BIOSSMI处理程序」的设定值)为「4h」,表示计算机系统800的操作系统型态为「NT4.0」。若上述步骤S707写入第二存储器870的系统信息(「从ACPI传送所运行操作系统类别给BIOSSMI处理程序」的设定值)为「5h」,表示计算机系统800的操作系统类别为「RedhatLi皿xEL5AS」。若上述步骤S707写入第二存储器870的系统信息(「从ACPI传送所运行操作系统类别给BIOSSMI处理程序」的设定值)为「6h」,表示计算机系统800的操作系统类别为「FedoraCore8」。本领域有通常知识者可以通过上述的说明,来推得其它的对应关系,故在此不再赘述。表1为中断处理程序中,指令为AFh时,第一参数、第二参数与系统信息的对照表<table>tableseeoriginaldocumentpage16</column></row><table><table>tableseeoriginaldocumentpage17</column></row><table><table>tableseeoriginaldocumentpage18</column></row><table>表2为中断处理程序中,指令为AEh时,第一参数、第二参数与系统信息的对照表<table>tableseeoriginaldocumentpage19</column></row><table><table>tableseeoriginaldocumentpage20</column></row><table>表3为中断处理程序中,指令为ADh时,第一参数、第二参数与系统信息的对照表<table>tableseeoriginaldocumentpage20</column></row><table>表4为中断处理程序中,指令为FCh时,第一参数、第二参数与系统信息的对照表<table>tableseeoriginaldocumentpage20</column></row><table><table>tableseeoriginaldocumentpage21</column></row><table>表5为中断处理程序中,指令为FBh时,第一参数、第二参数与系统信息的对照表<table>tableseeoriginaldocumentpage21</column></row><table><table>tableseeoriginaldocumentpage22</column></row><table>表6为中断处理程序中,指令为FAh时,第一参数、第二参数与系统信息的对照表<table>tableseeoriginaldocumentpage22</column></row><table>在本实施例中,组态管理程序模块630所采用ASL程序语言包括SMI呼叫指令,其格式例如为CALL—SMI(command,inputdata,outputdata),其中「command」为指令,「inputdata」为第一参数,「outputdata」为系统信息。并且,以软件的系统管理中断(SoftwareSMI)呼叫界面的程序如下所述Method(SSMI,2)〃SWSMI=>Call_SMI(command,inputdata,outputdata)//ArgO-command;Argl-InputData;Locall-OuputData{Mutex(MUTl,O)〃MUTEXforSMIS(IOOxB3)&SMIC(IO0xB2)Acquire(MUTl,OxFFFF)//AcquireSemaphoreStore(\_SB.SMIS,LocalO)〃SaveSMISStore(Argl,\_SB.SMIS)Store(ArgO,\_SB.SMIC)returnvalueStore(\_SB.SMIS,Local1)Store(LocalO,\_SB.SMIS)Release(MUT1)//ReleaseSemaphoreReturn(Local1)//OutputData}〃endSSMI另外,以休眠模式系统管理中断(Sle印SMI)呼叫界面的程序如下所述Method(LSMI,1)〃Sle印—TypeSMI=>Call_SMI(command)Arg0_Co,ndbit"isSetparameterintoSMISSWSMIcommandintoSMIC;issueSWSMI&willsaveto100xB3〃RestoreSMISStore(Argl,\_SB.SMIS)//SetparameterintoSMISStore(0ne,PS1S)//ClearSleepstatusStore(0ne,PS1E)//EnableSleep//Afterhere,systemwillissue"SleepSMI,,if"sleeptypeenablesetas1}〃endLSMI本发明另提供一种计算机可读取储存媒体,其用以储存计算机程序,此计算机程序用以加载至计算机系统中并且使得计算机系统执行上述组态管理程序传输系统信息的方法。本发明另提供一种计算机程序产品,其是用以执行态管理程序传输系统信息的方法,此计算机程序产品基本上是由多个程序代码片段所组成的,并且这些程序代码片段在加载计算机中并执行之后,即可完成上述组态管理程序传输系统信息的步骤。综上所述,本发明通过将检测计算机系统所获取的系统信息,先存放于存储器中。再通过组态管理程序触发中断,并由中断处理程序处理中断,以便依据中断的指令信息进行对应的组态设定操作,或是依据中断的指令信息将存储器中对应的系统信息回传给组态管理程序,以便于让组态管理程序获得对应的系统信息。如此一来,若是计算机系统的芯片组需更换、硬件设计上需修改或BIOS程序代码需要修正时,计算机工程师只需要修正相关的BIOS程序代码即可,而不需在对组态管理程序相关的ASL程序代码进行修正,进而减少撰写ASL程序代码的错误以及除错时间。虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属
技术领域
中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许更动与润饰,因此本发明的保护范围当以权利要求所界定的为准。权利要求一种组态管理程序传输系统信息的方法,包括提供一第一存储器,其中该第一存储器记录着至少一系统信息;由一组态管理程序触发一中断,其中该中断具有一指令信息;以及由一中断处理程序处理该中断,以便依据该指令信息进行对应的一组态设定操作,或是依据该指令信息将该第一存储器中对应的该系统信息回传给该组态管理程序。2.如权利要求1所述的组态管理程序传输系统信息的方法,其特征在于,还包括检测一计算机系统,以获取至少一系统信息;以及将该系统信息记录于该第一存储器。3.如权利要求2所述的所述组态管理程序传输系统信息的方法,其特征在于,检测该计算机系统的步骤包括进行一开机自我测试程序;以及于该开机自我测试程序中,由一基本输入输出系统检测该计算机系统的组态,以获取该系统信息。4.如权利要求1所述的组态管理程序传输系统信息的方法,其特征在于,该中断为一系统管理中断,而该中断处理程序为一系统管理中断处理程序。5.如权利要求1所述的组态管理程序传输系统信息的方法,其特征在于,该指令信息包含一指令,而该组态管理程序触发该中断的步骤包括写入该指令至一中断控制端口;其中该中断处理程序执行该中断控制端口的该指令,以便依据该指令进行对应的该组态设定操作,或是依据该指令将该第一存储器对应的该系统信息回传给该组态管理程序。6.如权利要求1所述的组态管理程序传输系统信息的方法,其特征在于,该指令信息包含一指令与一第一参数,而该组态管理程序触发该中断的步骤包括写入该第一参数至一中断数据端口;以及写入该指令至一中断控制端口;其中该中断处理程序依据该中断数据端口的该第一参数执行该中断控制端口的该指令,以便依据该第一参数与该指令进行对应的该组态设定操作,或是依据该第一参数与该指令将该第一存储器中对应的该系统信息写入该中断数据端口。7.如权利要求6所述的组态管理程序传输系统信息的方法,其特征在于,还包括由该组态管理程序从该中断数据端口读取该系统信息。8.如权利要求6所述的组态管理程序传输系统信息的方法,其特征在于,该中断数据端口是地址为B3h的输入输出端口。9.如权利要求6所述的组态管理程序传输系统信息的方法,其特征在于,该中断控制端口是地址为B2h的输入输出端口。10.如权利要求6所述的组态管理程序传输系统信息的方法,其特征在于,还包括写入一第二参数至一第二存储器;其中该中断处理程序依据该中断数据端口的该第一参数与该第二存储器的该第二参数执行该中断控制端口的该指令,以便依据该第一参数、该第二参数与该指令进行一对应的该组态设定操作,或是依据该第一参数、该第二参数与该指令将该第一存储器中对应的该系统信息写入该第二存储器。11.如权利要求10所述的组态管理程序传输系统信息的方法,其特征在于,还包括由该组态管理程序从该第二存储器读取该系统信息。12.如权利要求IO所述的组态管理程序传输系统信息的方法,其特征在于,该第二存储器为一延伸BIOS数据区域。13.如权利要求1所述的组态管理程序传输系统信息的方法,其特征在于,该第一存储器为一系统管理模式存储器。14.如权利要求1所述的组态管理程序传输系统信息的方法,其特征在于,该组态管理程序为一先进组态与电源接口程序。15.—种计算机可读取储存媒体,用以储存一计算机程序,该计算机程序用以加载至一计算机系统中并且使得该计算机系统执行如权利要求1所述的组态管理程序传输系统信息的方法。16.—种用于使组态管理程序传输系统信息的计算机程序产品,当计算机加载该计算机程序并执行后,可完成权利要求1所述的方法。17.—种计算机系统,包括一第一存储器,用以记录一系统信息;一组态管理程序模块,用以执行一组态管理程序,以触发一中断,且该中断具有一指令信息;以及一中断处理程序模块,用以执行一中断处理程序处理该中断,以便依据该指令信息进行对应的一组态设定操作,或是依据该指令信息将该第一存储器中对应的该系统信息回传给该组态管理程序模块。18.如权利要求17所述的计算机系统,其特征在于,还包括一检测模块,用以检测该计算机系统,以获取至少一系统信息,并将该系统信息记录于该第一存储器。19.如权利要求18所述的计算机系统,其特征在于,该检测模块进行一开机自我测试程序,且于该开机自我测试程序中,由一基本输入输出系统检测该计算机系统的组态,以获取该系统信息。20.如权利要求17所述的计算机系统,其特征在于,该中断为一系统管理中断,而该中断处理程序为一系统管理中断处理程序。21.如权利要求17所述的计算机系统,其特征在于,该指令信息包含一指令,而该计算机系统还包括一中断控制端口,用以储存该指令,其中由该中断处理程序模块执行该中断控制端口的该指令,以便依据该指令进行对应的该组态设定操作,或是依据该指令将该第一存储器中应的该系统信息回传给该组态管理程序模块。22.如权利要求17所述的计算机系统,其特征在于,该指令信息包含一指令与一第一参数,而该计算机系统还包括一中断数据端口,用以储存该第一参数;以及一中断控制端口,用以储存该指令;其中,该中断处理程序模块依据该中断数据端口的该第一参数执行该中断控制端口的该指令,以便依据该第一参数与该指令进行对应的该组态设定操作,或是依据该第一参数与该指令将该第一存储器中对应的该系统信息写入该中断数据端口。23.如权利要求22所述的计算机系统,其特征在于,该组态管理程序模块是从该中断数据端口读取该系统信息。24.如权利要求22所述的计算机系统,其特征在于,该中断数据端口是地址为B3h的输入输出端口。25.如权利要求22所述的计算机系统,其特征在于,该中断控制端口是地址为B2h的输入输出端口。26.如权利要求22所述的计算机系统,其特征在于,还包括一第二存储器,用以写入一第二参数,其中该中断处理程序模块依据该中断数据端口的该第一参数与该第二存储器的该第二参数执行该中断控制端口的该指令,以便依据该第一参数、第二参数与该指令进行对应的该组态设定操作,或是依据该第一参数、该第二参数与该指令将该第一存储器中对应的该系统信息写入该第二存储器。27.如权利要求26所述的计算机系统,其特征在于,该组态管理程序模块是从该第二存储器读取该系统信息。28.如权利要求26所述的计算机系统,其特征在于,该第二存储器为一延伸BIOS数据区域。29.如权利要求17所述的计算机系统,其特征在于,该存储器为一系统管理模式存储器。30.如权利要求17所述的计算机系统,其特征在于,该组态管理程序为一先进组态与电源接口。全文摘要本发明公开了一种计算机系统与其组态管理程序传输系统信息的方法。上述方法包括下列步骤。首先,提供第一存储器,其中该第一存储器记录着至少一系统信息。之后,当组态管理程序需要计算机系统的某一系统信息时,由组态管理程序触发一中断,其中此中断具有对应的指令信息。接着,由中断处理程序处理上述中断,以便依据上述指令信息进行对应的组态设定操作,或是依据该指令信息将第一存储器中对应的系统信息回传给组态管理程序。文档编号G06F9/46GK101727349SQ20081017530公开日2010年6月9日申请日期2008年11月3日优先权日2008年11月3日发明者卢盈志,杨博钦,黄文彬申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1