掌桥专利:专业的专利平台
掌桥专利
首页

一种系统识别方法、装置、嵌入式控制器及存储介质

文献发布时间:2023-06-19 16:06:26



技术领域

本公开涉及计算机技术领域,尤其涉及一种系统识别方法、装置、嵌入式控制器及存储介质。

背景技术

目前,热键的应用,增加了电子设备使用的方便性。但是,目前UOS(UnityOperating System,统一操作系统)热键和WIN(Windows,操作系统)热键的实现方式不同。在一些热键的实现方式上,UOS系统主要是通过键盘扫描码调用驱动来实现的;而WIN系统是通过BIOS(Basic Input Output System,基本输入输出系统)调用驱动来实现的。因此,在使用支持UOS和WIN双系统的电子设备时,为了保证双系统的热键功能均能够很好的实现,必须要先对操作系统的系统版本进行标识,才能在热键使用时保证所用到的实现方式是正确的。而目前系统版本标识的方法容易导致系统版本信息被篡改,这样一来就会使得系统版本的标识出现错误,导致热键功能不能正常使用。因此,如何使得配置有双系统的电子设备的热键能够正常使用成为亟待解决的问题。

发明内容

本公开提供了一种系统识别方法、装置、嵌入式控制器及存储介质,以至少解决现有技术中存在的以上技术问题。

根据本公开的第一方面,提供了一种系统识别方法,所述方法包括:发送设定事件至基本输入输出系统;在设定时间内检测所述基本输入输出系统调用的设定驱动的读取命令;若在设定时间内检测到所述设定驱动的读取命令,则标识当前操作系统为第一类型系统。

在一可实施方式中,在所述发送设定事件至基本输入输出系统之前,所述方法还包括:获取当前操作系统的系统状态变量;根据所述系统状态变量,确定所述当前操作系统是否启动;若所述系统状态变量示出所述当前操作系统已启动,则继续发送设定事件至基本输入输出系统;若否,则标识当前操作系统为第二类型系统。

在一可实施方式中,所述若在设定时间内检测到所述设定驱动的读取命令,则标识当前操作系统为第一类型系统,包括:在设定时间内检测到所述基本输入输出系统调用的设定驱动的读取命令的情况下,根据所述读取命令对所述当前操作系统的系统标志变量进行置位操作;在完成对所述系统标志变量置位操作的情况下,获取置位后的系统标志变量;在置位后的系统标志变量符合预设条件的情况下,将当前操作系统标识为第一类型系统。

在一可实施方式中,所述读取命令包括第一读取命令和第二读取命令;所述第一读取指令用于对所述系统标志变量的第一位进行置位操作;所述第二读取指令用于对所述系统标志变量的第二位进行置位操作;相应的,所述根据所述读取命令对所述当前操作系统的系统标志变量进行置位操作,包括:在检测到所述第一读取指令的情况下,将所述系统标志变量的第一位置位;在检测到所述第二读取指令的情况下,将所述系统标志变量的第二位置位。

在一可实施方式中,所述预设条件为所述系统标志变量的第一位和第二位均被置位。

在一可实施方式中,所述第二类型系统为统信操作系统UOS;和/或所述第一类型系统为操作系统Windows。

根据本公开的第二方面,提供了一种系统识别装置,所述系统识别装置包括:事件发送模块,用于发送设定事件至基本输入输出系统;命令检测模块,用于在设定时间内检测所述基本输入输出系统调用的设定驱动的读取命令;系统标识模块,用于在设定时间内检测到所述设定驱动的读取命令的情况下,标识当前操作系统为第一类型系统。

根据本公开的第三方面,提供了一种嵌入式控制器,包括上述系统识别装置。

根据本公开的第四方面,提供了一种电子设备,包括上述嵌入式控制器。

根据本公开的第五方面,提供了一种存储有计算机指令的计算机可读存储介质,所述计算机指令用于使所述计算机执行本公开所述的方法。

本公开的一种系统识别方法、装置、嵌入式控制器及存储介质,通过发送事件,并接收事件触发的设定驱动的读取命令的方式来判断操作系统的类型的方案,避免了现有技术获取的系统版本信息容易被篡改,从而导致系统版本判断不准确,相应的热键功能不能正常使用的问题,提升了操作系统类型判断的准确率,保证了热键功能在双系统下正常使用。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:

在附图中,相同或对应的标号表示相同或对应的部分。

图1示出了本公开实施例系统识别方法的实现流程示意图;

图2示出了本公开实施例系统识别方法的应用示例的实现流程示意图;

图3示出了本公开实施例系统识别装置的组成结构示意图。

具体实施方式

为使本公开的目的、特征、优点能够更加的明显和易懂,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而非全部实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

首先,对本公开应用场景进行说明,本公开实施例主要应用于EC(EmbededController,嵌入式控制器)上,来使EC能够支持双系统下热键功能的正常使用。就支持UOS系统和WIN系统的双系统电脑而言,WIN系统F4热键的功能是通过发送特定事件,并由BIOS调用驱动程序来实现的;而UOS系统的F4热键功能是通过键盘扫描码来实现的。由此,需要设计一款能够同时支持双系统的EC,来判断操作系统的类型,从而按照正确的系统对应的热键实现方式来运作,才能保证双系统下热键功能能够正常使用。而目前判断系统类型的方案是BIOS通过ACPI(Advanced Co nfiguration and Power Management Interface,高级配置和电源管理接口)获取系统版本信息,然后再向EC的RAM(Random Access Memory,随机存取存储器)中写入系统版本信息,键盘的热键有动作后,EC在根据RAM中的数据判断系统版本信息。但ACPI中的数据可能被微软的ASL(ACPI Source language,编译)工具修改,RAM中的数据同样也可能被一些APP或者驱动改动,这样一来,便可能导致获取的系统版本信息不准确,导致系统类型判断错误,影响热键的正常使用。由此,本公开提供了一种系统识别方法来解决上述问题。

图1示出了本公开实施例系统识别方法的实现流程示意图。

参考图1,本公开实施例系统识别方法包括:S101,发送设定事件至基本输入输出系统;S102,在设定时间内检测基本输入输出系统调用的设定驱动的读取命令;S103,若在设定时间内检测到设定驱动的读取命令,则标识当前操作系统为第一类型系统。

在S101中,操作系统启动后,EC可以首先发送设定事件至基本输入输出系统。

具体的,EC支撑着电子设备热键的使用,在我们打开电子设备后需要用到热键功能,而不同操作系统下的热键功能实现方式是不同的,因此在打开电子设备,并确定操作系统已经启动后要先判断操作系统的类型。进一步的,判断系统类型的方式主要是通过发送设定事件的方式,在这里设定事件指的是需要通过调用设定驱动来实现功能的热键的事件,这些均需要通过调用设定驱动来实现功能的热键的事件包含的标识码均相同,这些事件可被称为设定驱动事件,在这里标识码为一具体的阿拉伯数字。相应的,在EC发送事件到BIOS后,BIOS便对设定事件进行解析,主要是解析事件中的标识码。

举例说明,WIN平台下的键盘的某些热键的功能需要调用WIN自带的VPC(ACPI-Compliant Virtual Power Controller,虚拟电源管理)驱动来实现,如F4、F5、F8等热键,这些热键的事件均包含相同的标识码44。以双系统中的某一操作系统为Windows为例,在操作系统启动后,EC可以向基本输入输出系统发送F4热键的事件,之后基本输入输出系统会对事件进行解析,如果对应的当前操作系统为Windows,基本输入输出系统便会在解析到F4热键的事件中的标识码44后调用VPC驱动。而如果当前操作系统不为Windows,而是另一个系统,由于另一个系统中不存在VPC驱动,则基本输入输出系统便不能够调用VPC驱动。

在S102,在设定时间内检测基本输入输出系统调用的设定驱动的读取命令。

具体的,在基本输入输出系统接收到设定事件后,会在解析到设定事件中的标识码时去尝试调用设定驱动,此时,EC便会在设定时间内不断检测是否存在基本输入输出系统调用的设定驱动的读取命令,也就是检测当前操作系统是否存在设定驱动。

在S103,若在设定时间内检测到设定驱动的读取命令,则标识当前操作系统为第一类型系统。

具体的,EC会在设定时间内检测是否存在设定驱动的读取命令,如果当前操作系统存在设定驱动,则BIOS便一定可以调用设定驱动,而设定驱动一旦被调用便一定能够向EC发送读取命令。在EC接收到设定驱动的读取命令后便能够明确当前操作系统存在设定驱动,而设定驱动又是只有第一类型系统才存在的,相应的,EC便直接将当前操作系统标识为第一类型系统。之后用户使用某个热键时,EC便可以以第一类型系统下的热键实现方式来运作,使得热键的功能能够正常运行了。

举例说明,以双系统中的第一类型系统为Windows为例,Windows下的某些热键的功能,需要调用特定的驱动VPC来实现,以F8为例,这些需要调用VPC驱动来实现热键功能的热键的事件包含的标识码均为44,这些事件也可称为44号事件。相应的,当基本输入输出系统接收到EC发送的事件并解析到标识码44之后,便调用VPC驱动,这时EC便可以接收到VPC驱动响应于基本输入输出系统发出的读取指令。由于VPC驱动是Windows特有的,则接收到VPC驱动的指令后,EC便可确定当前操作系统为Windows。

在本公开一实施方式中,若在设定时间内检测到设定驱动的读取命令,则标识当前操作系统为第一类型系统,包括:EC在设定时间内检测到基本输入输出系统调用的设定驱动的读取命令的情况下,根据读取命令对当前操作系统的系统标志变量进行置位操作;在完成对系统标志变量置位操作的情况下,EC获取置位后的系统标志变量;在置位后的系统标志变量符合预设条件的情况下,EC将当前操作系统标识为第一类型系统。

具体的,基本输入输出系统调用设定驱动后,设定驱动可以向EC发送读取指令来读取信息,EC在接收到读取指令后对操作系统的系统标志变量进行置位操作,并在设定时间内检测置位后的系统标志变量是否满足预设条件,在确定置位后的系统标志变量满足预设条件的情况下,标志当前操作系统为对应的第一类型系统。并且针对上述过程有一设定时间,在设定时间内,EC获取到的系统标志变量满足预设条件,才能够确定当前操作系统为对应的第一类型系统。其中,上述系统标志变量为一个字节,包括8位二进制数字。

需要说明的是,业内通用的系统标志变量设置方法,均可实现对系统标志变量的具体设置,因此,在此不在赘述。

在本公开一实施方式中,若在设定时间内EC未接收到设定驱动的读取指令,则判定当前操作系统为第二类型系统。

具体的,EC发送设定事件到BIOS后,BIOS在解析到事件中的标识码时去调用设定驱动,而如果当前操作系统不包含设定驱动,则基本输入输出系统无法调用设定驱动,EC便无法接收到读取指令。在这种情况下EC在设定时间内无法接收到读取指令,便会将操作系统标识为第二类型系统。

在本公开一实施方式中,读取命令包括第一读取命令和第二读取命令。第一读取指令用于对系统标志变量的第一位进行置位操作,第二读取指令用于对系统标志变量的第二位进行置位操作。相应的,可以在检测到第一读取指令的情况下,将系统标志变量的第一位置位,在检测到第二读取指令的情况下,将系统标志变量的第二位置位。由此实现根据读取命令对当前操作系统的系统标志变量进行置位操作。

在本公开一实施方式中,预设条件为系统标志变量的第一位和第二位均被置位。

具体的,设定驱动向EC发送的读取指令包括第一读取指令和第二读取指令,在EC接收到第一读取指令时会将系统标志变量的第一位由0置为1,在EC接收到第二读取指令的情况下,会将系统标志变量的第二位从0置位1。则在EC获取的置位后的系统标志变量的第一位以及第二位均被置位的情况下,则确定系统标志变量满足预设条件。

在本公开一实施方式中,在发送设定事件至基本输入输出系统之前,首先要获取当前操作系统的系统状态变量,并根据系统状态变量,确定当前操作系统是否启动;若系统状态变量示出当前操作系统已启动,则继续发送设定事件至基本输入输出系统;若否,则标识当前操作系统为第二类型系统。

具体的,双系统中会有一默认系统,这里将默认系统设置为第二类型系统。进一步,在系统开启后,EC首先要获取系统状态变量,并根据系统状态变量判断操作系统是否真正的启动,如果启动,则开始发送设定事件,如果没启动,则EC便直接标识系统为默认系统第二类型系统。

图2示出了本公开实施例系统识别方法的应用示例的实现流程示意图。

在本公开实施例一具体实施方式中,第一类型系统可以为操作系统Windows。第二类型系统可以为统信操作系统UOS。第二类型系统还可以是其他适用的操作系统,例如:麒麟等。

为进一步理解本方案,下面以本公开实施例一具体应用实例来进行说明。

WIN系统下的一些热键,是通过发送事件至BIOS,并由BIOS调用VPC驱动来实现的,这些热键在WIN系统下的事件的标识码均为44,这些事件可以称为44号事件。而UOS系统是通过键盘扫描码的形式实现热键功能的,UOS内核并不存在VPC驱动。

参考图2,本公开的方法应用于电脑的EC,具体的可以在EC中设置系统识别模块。在电脑开机后,电脑中的各模块开始初始化,首先EC便通过获取系统状态变量的方式确定操作系统是否已经启动。如果EC发现当前操作系统没有启动,便直接将当前操作系统标识为UOS系统。如果EC确定电脑操作系统已开启,设置在EC的系统识别模块使能,相应的EC中计时模块开始计时。在设定时间内系统识别模块首先发送设定事件至BIOS,并在设定时间内不断检测系统标志变量是否满足预设条件,这里预设条件为系统标志变量第一位和第二位均被置位,设定事件可以为F4或F8的事件。如果在设定时间内系统识别模块确定系统标志变量符合预设条件,便相应的将系统设置为WIN系统;如果在设定时间内系统标志变量不符合预设条件,便设置当前操作系统为UOS系统。

具体的,电脑开机后,BIOS会进行操作系统启动的引导,并在操作系统启动后,将系统状态变量中的相应位由0置位为1。相应的,在EC获取到系统状态标置变量,并确定系统标志变量已经被置位,就确定操作系统已经启动,便发送设定事件至BIOS。

进一步的,在系统识别模块将时间发送到BIOS后,BIOS便对设定事件进行解析,在解析到事件中的标识码44,BIOS就调用VPC驱动,VPC驱动便响应于BIOS的调用,以发送读取命令的形式向EC读取信息。这里读取命令包括第一读取指令0X10以及第二读取指令0X12,在EC接收到0X10便会将系统标志变量的bit0置1,接收到0X12就会将系统标志变量的bit1置1。相应的,EC会在获取置位后的系统标志变量进行确定,确定系统标志变量的第一位和第二位是否均被置位,如果均被置位,则证明当前操作系统为Windows系统,系统识别模块便设置表示系统版本的Flag为WIN系统,并退出。进一步的,如果当前系统为UOS系统,由于UOS系统没有VPC驱动,则系统识别模块在设定时间内接收不到VPC的读取命令,便确定当前操作系统为UOS系统,相应的设置Flag为UOS系统,并退出。

由此,本公开实施例结合WIN系统的特有的驱动VPC,通过EC检测有没有VPC驱动的读取命令,从而判断是不是WIN系统的系统识别方法,能够使WIN系统和定制的UOS系统共用一套EC,减少了研发、工厂、流转、售后等环节的维护成本。并且在系统识别方面,利用WIN系统上的驱动特性避免了现有技术中获取的系统版本信息可能被篡改导致的系统识别不准确的问题,提高了系统识别的准确率,使得系统识别可靠性更高,并简化了系统识别的流程。

图3示出了本公开实施例系统识别装置的组成结构示意图。

参考图3,基于上文系统识别方法,本公开实施例还提供了一种系统识别装置30,该装置30包括:事件发送模块301,用于发送设定事件至基本输入输出系统;命令检测模块302,用于在设定时间内检测基本输入输出系统调用的设定驱动的读取命令;系统标识模块303,用于在设定时间内检测到设定驱动的读取命令的情况下,标识当前操作系统为第一类型系统。

在本公开一实施方式中,该装置30还包括:获取模块,用于在发送设定事件至基本输入输出系统之前获取当前操作系统的系统状态变量;执行模块,用于根据系统状态变量,确定当前操作系统是否启动;若系统状态变量示出当前操作系统已启动,则继续发送设定事件至基本输入输出系统;若否,则标识当前操作系统为第二类型系统。

在本公开一实施方式中,系统标识模块303包括:置位子模块,用于在设定时间内检测到基本输入输出系统调用的设定驱动的读取命令的情况下,根据读取命令对当前操作系统的系统标志变量进行置位操作;获取子模块,用于在完成对系统标志变量置位操作的情况下,获取置位后的系统标志变量;标识子模块,用于在置位后的系统标志变量符合预设条件的情况下,将当前操作系统标识为第一类型系统。

在本公开一实施方式中,读取命令包括第一读取命令和第二读取命令;第一读取指令用于对系统标志变量的第一位进行置位操作;第二读取指令用于对系统标志变量的第二位进行置位操作;相应的,置位子模块包括:第一置位单元,用于在检测到第一读取指令的情况下,将系统标志变量的第一位置位;第二置位单元,用于在检测到第二读取指令的情况下,将系统标志变量的第二位置位。

在本公开一实施方式中,预设条件为系统标志变量的第一位和第二位均被置位。

在本公开一实施方式中,第二类型系统为统信操作系统UOS;和/或第一类型系统为操作系统Windows。

这里需要指出的是:以上针对系统识别装置实施例的描述与前述方法实施例的描述是类似的,具有同前述方法实施例相似的有益效果,因此不做赘述。对于本公开的这一实施例系统识别装置实施例的描述尚未披露的技术细节,请参照本公开前述方法实施例的描述而理解,为节约篇幅,因此不再赘述。

根据本公开的实施例,本公开还提供了一种嵌入式控制器包括上述系统识别装置。

根据本公开的实施例,本公开还提供了一种电子设备,包括上述嵌入式控制器。

同理,基于上系统识别方法,本公开实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被处理器执行时,使得所述处理器至少执行如下所述的操作步骤:S101,发送设定事件至基本输入输出系统;S102,在设定时间内检测基本输入输出系统调用的设定驱动的读取命令;S103,若在设定时间内检测到设定驱动的读取命令,则标识当前操作系统为第一类型系统。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本公开所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本公开各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本公开上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种系统识别方法、装置、嵌入式控制器及存储介质
  • 嵌入式系统控制方法、装置、存储介质及嵌入式控制器
技术分类

06120114701939