虚拟通用i/o控制器的制造方法

文档序号:10694038阅读:372来源:国知局
虚拟通用i/o控制器的制造方法
【专利摘要】用于虚拟通用I/O(GPIO)的技术包含具有虚拟GPIO控制器驱动器、虚拟GPIO控制器固件接口和虚拟GPIO控制器的计算装置。驱动器从计算装置的操作系统接收GPIO命令。GPIO命令规定将由GPIO引脚执行的操作。驱动器向固件接口发送GPIO命令。响应于固件接口接收命令,虚拟GPIO控制器仿真虚拟GPIO引脚来实现GPIO命令。固件接口可触发能够由操作系统接收的中断。虚拟GPIO控制器可使用固件保留的后备存储器、嵌入式控制器或到计算装置的外围装置的接口来仿真虚拟GPIO引脚。固件接口可以是ACPI控制方法。描述并要求保护其它实施例。
【专利说明】虚拟通用I/O控制器
[0001 ] 相关美国专利申请的交叉弓I用
本申请要求在2014年3月27日提交的名称为“VIRTUAL GENERAL-PURPOSE I/OCONTROLLER”的美国实用新型专利申请N0.14/227,735的优先权。
【背景技术】
[0002]典型计算装置包括包含在平台芯片集中或平台片上系统中的若干通用输入/输出(“GP10”)引脚。GP1引脚可支持读写数字数据,并且可生成计算装置的硬件中断。通常,GP1引脚是多用途的,并且可由计算装置配置用于具体应用。例如,GP1引脚可用于驱动、位冲(bit-bang)或以别的方式控制平台特定特征,诸如按钮、指示器(例如LED)、开关或传感器(例如盖密封传感器、对接端口传感器、驱动插入传感器等)。
[0003]典型计算装置包含在芯片集或主处理器中实现的控制GP1引脚的一个或多个硬件GP1控制器。计算装置上的软件或固件可通过从与硬件GP1控制器关联的具体寄存器或存储器地址读或向其写来与硬件GP1控制器交互。高级配置与电源接口(ACPI)规范提供了到硬件GP1引脚的固件接口的一个示例。通常,操作系统供应商规定所需要的最小硬件资源,包含必须包含在平台芯片集中的特定硬件GP1引脚。
【附图说明】
[0004]本文描述的概念在附图中作为示例而非作为限制图示。为了图示的简洁和清晰起见,在附图中图示的元件不一定按比例绘制。在合适的情况下,附图标记在各图之间已经被重复以指示对应或类似元件。
[0005]图1是用于提供虚拟GP1控制器的计算装置的至少一个实施例的简化框图;
图2是图1的计算装置的环境的至少一个实施例的简化框图;
图3是用于初始化和运行可由图1和图2的计算装置执行的虚拟GP1控制器的方法的至少一个实施例的简化流程图;
图4是用于监视和处置可由图1和图2的计算装置执行的GP1命令的方法的至少一个实施例的简化流程图;以及
图5是用于监视和处置可由图1和图2的计算装置执行的GP1事件的方法的至少一个实施例的简化流程图。
【具体实施方式】
[0006]虽然本公开的概念易受到各种修改和备选形式,但其特定实施例已经在附图中作为示例示出,并且将在本文中详细描述。然而,应该理解,没有意图将本公开的概念局限于所公开的具体形式,而是相反,本发明覆盖与本公开和所附权利要求书对应的所有修改、等同物和备选。
[0007]在说明书中提到“一个实施例”、“实施例”、“说明性实施例”等指示所描述的实施例可包含具体特征、结构或特性,但每一个实施例可以一定或者可以不一定包含该具体特征、结构或特性。而且,此类短语不一定是指同一实施例。另外,当具体特征、结构或特性结合实施例进行描述时,认为结合不管是否明确描述的其它实施例来实现此类特征、结构或特性在本领域技术人员的知识范围内。此外,应该认识到,包含在以“A、B和C中的至少一个”的形式的列表中的项目可指的是(A); (B); (C); (A和B); (A和C) ; (B和C)或(A,B和C)。类似地,包含在以“A、B或C中的至少一个”形式的列表中的项目可指的是(A); (B); (C); (A和B);(A和C);(B和C)或(A, B和C)。
[0008]公开的实施例在一些情况下可用硬件、固件、软件或它们的任何组合来实现。所公开的实施例也可实现为由一个或多个易失性或非易失性机器可读(例如计算机可读)介质携带或存储在其上的指令,其可由一个或多个处理器读取和执行。机器可读存储介质可实施为用于存储或传送由机器(例如易失性或非易失性存储器、媒体盘或其它媒体装置)可读形式的信息的任何存储装置、机制或其它物理结构。
[0009]在附图中,一些结构特征或方法特征可按特定布置和/或排序示出。然而,应该认识到,可能不需要此类特定布置和/或排序。而是,在一些实施例中,此类特征可按与在说明性附图中示出的不同的方式和/或次序布置。此外,在具体附图中包含结构或方法特征不打算暗示此类特征在所有实施例中都需要,并且在一些实施例中,可能不包含或者可与其它特征组合。
[0010]现在参考图1,在说明性实施例中,计算装置100建立虚拟GP1控制器以减少由计算装置100需要的物理GP1引脚的总数。为了这么做,如下面所详细论述的,计算装置100的操作系统建立用于GP1控制器驱动器的标准接口,并且随后加载虚拟GP1控制器驱动器。虚拟GP1控制器驱动器从操作系统接收GP1命令(例如读、写、状况或控制命令)并将命令转发到虚拟GP1控制器固件接口。响应于虚拟GP1控制器固件接口接收GP1命令,虚拟GP1控制器仿真一个或多个物理GP1引脚的行为,并对GP1命令适当做出响应。此类仿真物理GP1引脚在本文被称为“虚拟GP1引脚”。
[0011]在一些实施例中,虚拟GP1控制器附加地或备选地可监视影响虚拟GP1引脚的仿真状态的平台事件。基于虚拟GP1引脚的仿真状态,虚拟GP1控制器可使虚拟GP1固件接口断言由操作系统处置的中断。操作系统通过将一个或多个GP1命令传到虚拟GP1控制器驱动器以查询虚拟GP1引脚的状态并且然后相应地响应来处置中断。从而,由虚拟GP1控制器仿真的虚拟GP1引脚对操作系统而言看起来好像与一个或多个物理GP1引脚一样。应该理解,虚拟GP1控制器可仿真任何数量的虚拟GP1引脚。
[0012]应该认识到,本公开的计算装置100可减少符合由操作系统供应商设置的GP1引脚要求所需的专用物理GP1引脚数。附加地或备选地,计算装置100可能能够使用通常比计算装置100的主处理器、芯片集或片上系统便宜并且更容易定制的外围装置或嵌入式控制器来实现所需的GP1功能性。
[0013]计算装置100可被实施为用于执行本文描述的功能的任何类型装置。例如,计算装置100可实施为但不限于台式计算机、服务器计算机、工作站、膝上型计算机、笔记本计算机、移动计算装置、智能电话、平板计算机、蜂窝电话、手机、消息传递装置、可穿戴计算装置、车载信息处理装置、分布式计算系统、多处理器系统、消费电子装置和/或配置成执行本文描述的功能的任何其它计算装置。如图1所示,说明性计算装置100包含处理器120、输入/输出子系统122、存储器126和数据存储装置130。当然,在其它实施例中,计算装置100可包含其它或附加组件,诸如在台式计算机中发现的组件(例如各种输入/输出装置)。此外,在一些实施例中,一个或多个说明性组件可合并在另一组件中,或以别的方式形成另一组件的一部分。例如,在一些实施例中,存储器126或其部分可结合在处理器120中。
[0014]处理器120可被实施为能够执行本文描述的功能的任何类型处理器。例如,处理器120可实施为单核或多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。类似地,存储器126可实施为能够执行本文描述的功能的任何类型易失性或非易失性存储器或数据存储装置。在操作中,存储器126可存储在计算装置100操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库以及驱动器。说明性存储器126包含虚拟GP1控制器128。如本文下面所描述的,虚拟GP1控制器128是仿真、适配或抽象一个或多个物理GP1引脚的软件实体。存储器126以通信方式经由I/O子系统122耦合到处理器120,I/O子系统104可实施为电路和/或组件以便于与计算装置100的处理器120、存储器126和/或其它组件的输入/输出操作。例如,I/O子系统122可实施为或以别的方式包含存储器控制器集线器、输入/输出控制集线器、固件装置、通信链路(即,点对点链路、总线链路、导线、电缆、光导、印刷电路板迹线等)和/或其它组件和子系统以便于输入/输出操作。I/O子系统122进一步包含引脚减少的GP1集124。引脚减少的GP1集124可包含若干物理GP1引脚供计算装置100使用。引脚减少的GP1集124相比典型的I/O子系统包含数量减少的物理GP1引脚,并且在一些实施例中可包含单个GP1引脚。在一些实施例中,I/O子系统122可形成片上系统(SoC)的一部分,并与计算装置100的处理器120、存储器126和其它组件一起结合在单个集成电路芯片上。
[0015]数据存储装置130可实施为配置用于数据的短期存储或长期存储的任何类型装置,诸如例如存储器件和电路、存储卡、硬盘驱动器、固态驱动器或其它数据存储装置。数据存储装置130可用于存储软件或其它数据以便执行,包含操作系统软件和应用软件。
[0016]计算装置100可进一步包含嵌入式控制器132和/或若干外围装置134。嵌入式控制器132可实施为与处理器120和/或I/O子系统122分开或独立的计算装置100的任何微控制器或其它控制器芯片。嵌入式控制器132可执行计算装置100的任何次级或辅助计算活动,诸如管理与一个或多个外围装置134的通信。嵌入式控制器132可在需要相对有限计算资源的数据连接(诸如低引脚计数(LPC)总线或系统外围互连(SPI)总线)上与I/O子系统122通信。此外,嵌入式控制器132相比处理器130和/或I/O子系统122可制作在更老或更大的半导体工艺节点上。因此,嵌入式控制器132设计、制造或定制可能相对不贵。
[0017]外围装置134可实施为计算装置100的任何外围装置组件。例如,外围装置134可实施为人类输入装置、显示器、指示器(诸如发光二极管(LED))、传感器(诸如温度传感器或装置插入传感器)、开关或按钮。外围装置134可提供计算装置100的平台特定功能性,诸如确定计算机100的盖是否盖上,确定媒体是否已经被插入到媒体驱动器中,或者对用户与硬件按钮的交互做出响应。每一个外围装置134都可以通信方式直接耦合到I/O子系统122或嵌入式控制器132。每个外围装置134都可使用任何适当的硬件接口或通信协议进行通信。从而,每个外围装置134都不需要耦合到I/O子系统122的专用GP1引脚。
[0018]现在参考图2,在一个说明性实施例中,计算装置100在操作期间建立环境200。说明性环境200包含若干应用202、包含虚拟GP1控制器驱动器206的操作系统204、虚拟GP1控制器固件接口 208以及虚拟GP1控制器212。环境200的各种模块和/或组件可实施为硬件、固件、软件或它们的组合。
[0019]应用202配置成读、写或以别的方式访问来自由虚拟GP1控制器212仿真的虚拟GP1引脚的数据,下面进一步描述。应用202可提供用户级交互功能,以及实用或操作系统级功能,诸如电源管理或入坞端口管理。在一些实施例中,应用202可包含使用虚拟GP1引脚连接的外围装置134的高级装置驱动器。在那些实施例中,装置驱动器可以是在外围装置134连接到物理GP1引脚的情形中使用的相同的装置驱动器。
[0020]操作系统204配置成管理应用202,并控制对虚拟GP1引脚的访问。操作系统204包含装置驱动器的一个或多个标准化接口。相应地,操作系统204创建并管理若干装置驱动器,包含虚拟GP1控制器驱动器206。操作系统204可将从应用202(在一些实施例中包含外围装置驱动器或其它软件/固件)接收的GP1命令转发到虚拟GP1控制器驱动器206。此外,操作系统204可单独生存GP1命令,并将命令发送到虚拟GP1控制器驱动器206。此外,如上所述,操作系统204可对由虚拟GP1控制器固件接口 208生成的中断做出响应。响应于此类中断,操作系统204可向虚拟GP1控制器驱动器206发送GP1命令,例如确定中断源的查询命令。操作系统204可使用任何技术,例如通过调用由虚拟GP1控制器驱动器206实现的若干回叫(callback)函数向虚拟GP1控制器驱动器206发送GP1命令。
[0021]虚拟GP1控制器驱动器206配置成从操作系统204接收GP1命令,并将GP1命令转发到虚拟GP1控制器固件接口 208。虚拟GP1控制器驱动器206可处理或格式化由虚拟GP1控制器固件接口 208所需的GP1命令。在一些实施例中,GP1命令可未做大改变地通过虚拟GP1控制器驱动器206。虚拟GP1控制器驱动器206实现操作系统204的标准GP1驱动器接口;从而,从操作系统204的角度看,虚拟GP1控制器驱动器206可与物理GP1引脚的驱动器互换。虚拟GP1控制器驱动器206从而可驻留在操作系统204的地址空间内。在一些实施例中,虚拟GP1控制器驱动器206和操作系统204可由不同实体提供;例如,虚拟GP1控制器驱动器206可由平台硬件供应商提供。
[0022]虚拟GP1控制器固件接口 208配置成从虚拟GP1控制器驱动器206接收GP1命令。附加地或备选地,虚拟GP1控制器固件接口 208可响应于由虚拟GP1控制器212生成或处置的GP1事件而中断或以别的方式发信号通知操作系统204。虚拟GP1控制器固件接口 208可实现用于与物理GP1引脚通信的标准化固件接口。例如,在一些实施例中,虚拟GP1控制器固件接口208可实现由高级配置与电源接口(ACPI)规范所定义的固件控制方法。那个固件控制方法可实施为可由计算装置100解释的标准化虚拟机架构(即“字节码”)的指令集合。在一些实施例中,那些功能可由子模块(例如固件控制方法210)执行。
[0023]虚拟GP1控制器212配置成仿真一个或多个虚拟GP1引脚以实现由虚拟GP1控制器固件接口 208接收的GP1命令。附加地或备选地,虚拟GP1控制器212配置成接收并实现与虚拟GP1引脚状态相关的GP1事件。例如,GP1事件可基于计算装置100的软件事件对仿真虚拟GP1引脚值的改变做出响应。作为另一示例,GP1事件可基于外围装置134和/或嵌入式控制器132的状态对仿真虚拟GP1引脚值的改变做出响应。虚拟GP1控制器212可使用计算装置100的任何支持资源仿真虚拟GP1引脚。例如,虚拟GP1控制器212可用软件仿真虚拟GP1引脚,在一些实施例中,使用存储器126的保留段来存储与虚拟GP1引脚状态相关的数据。附加地或备选地,虚拟GP1控制器212可通过适配一个或多个外围装置134的行为来仿真虚拟GP1引脚。在一些实施例中,虚拟GP1控制器212可通过适配一个或多个嵌入式控制器132的行为例如通过将嵌入式控制器132的资源(例如I/O引脚或总线)适配成看起来好像GP1引脚或通过将嵌入式控制器132的资源多路复用成看起来好像几个独立的GP1引脚来仿真虚拟GP1引脚。虚拟GP1控制器212可实施为计算装置100的应用代码、操作系统驱动器代码或固件代码的任何组合。在一些实施例中,那些功能可由一个或多个子模块例如由仿真模块214、外围装置模块216或嵌入式控制器模块218执行。尽管图示为单独模块,但在一些实施例中,虚拟GP1控制器212可包含在虚拟GP1控制器固件接口 208和/或固件控制方法210中,或以别的方式与之组合。
[0024]现在参考图3,在使用时,计算装置100可执行用于初始化并仿真GP1引脚的方法300。方法300开始于框302,在此计算装置100初始化虚拟GP1控制器212。计算装置100可执行对于虚拟GP1控制器212所必需的任何初始化,以仿真虚拟GP1弓I脚,包含初始化任何需要的数据结构或通信链路。在一些实施例中,在框304,计算装置100可初始化用于虚拟GP1引脚的固件控制的后备存储器区域。后备存储器可被实施为由固件保留的主存储器126的段,并且从而不可用于由操作系统204和/或应用202使用。后备存储器可由虚拟GP1控制器212用于存储虚拟GP1引脚的状态,例如,含有与虚拟GP1引脚关联的值的寄存器和含有虚拟GP1引脚的控制行为的值的寄存器。在一些实施例中,在框306,计算装置100可初始化嵌入式控制器132和/或外围装置134。计算装置100可执行所需的任何初始化,例如发送重置信号或初始化命令。
[0025]在框308,计算装置100加载虚拟GP1控制器固件接口 208。计算装置100可使用与操作系统204兼容的任何技术来加载虚拟GP1控制器固件接口 208。在一些实施例中,在框310,计算装置100可初始化固件控制方法210,并将固件控制方法210存储在系统数据表中。固件控制方法210可实施为能够管理操作系统204与虚拟GP1控制器212之间通信的任何固件例程。例如,固件控制方法210可实施为由ACPI规范所定义的控制方法。ACPI控制方法可实施为用编译成ACPI机器语言(AML)的ACPI源语言(ASL)写的断言和/或指令集。AML可实施为可由操作系统204翻译的字节码的集合。固件控制方法210的AML可被加载到存储在存储器126中的一个或多个ACPI表中。在运行时间,操作系统204可通过查找存储在ACPI表中的适当AML来访问固件控制方法210。计算装置100可中断固件控制方法210的AML以便执行虚拟GP1控制器固件接口 208的功能。尽管图示为单个固件控制方法210,但在一些实施例中,虚拟GP1控制器固件接口 208可包含任何数量的固件控制方法210。例如,虚拟GP1控制器固件接口 208可被实施为包含若干ACPI控制方法的ACPI装置。
[0026]在框312,计算装置100加载操作系统204。计算装置100可执行将控制传到操作系统204的固件引导加载程序。在加载操作系统204期间或之后,在框314,计算装置100加载虚拟GP1控制器驱动器206。例如,在一些实施例中,操作系统204可在仿真由平台固件定义的虚拟GP1控制器装置时加载虚拟GP1控制器驱动器206。加载虚拟GP1控制器驱动器206允许操作系统204传递到虚拟GP1控制器固件接口 208,并因此与虚拟GP1引脚交互。在一些实施例中,计算装置100可参考一个或多个系统数据表来选择对于加载的虚拟GP1控制器固件接口 208适当的虚拟GP1控制器驱动器206。
[0027I在框316,计算装置100运行操作系统204(包含由操作系统204执行的任何应用202)并监视GP1事件。GP1事件可包含由操作系统204引起的事件,包含由一个或多个应用202请求的GP1事件。GP1事件还可包含由虚拟GP1控制器212引起的事件,包含源自于嵌入式控制器132和/或外围装置134的软件始发的事件或多个事件。GP1事件还可包含由虚拟GP1控制器固件接口 208触发的中断。下面结合图4和图5详细描述用于处理GP1事件的方法。在一些实施例中,在框318,计算装置100可实现处理器120和/或I/O子系统122的硬件中断。除了别的之外,虚拟GP1控制器固件接口 208还可使用单个硬件中断线向操作系统204发信号通知事件。此外,在一些实施例中,虚拟GP1控制器212可监视硬件中断以管理来自嵌入式控制器132和/或外围装置134的事件。方法300环回到框316以继续运行操作系统204并监视GP1事件。
[0028]现在参考图4,在使用时,计算装置100可执行用于监视由操作系统204接收的GP1事件并对其做出响应的方法400。方法400开始于框402,在此计算装置100使用操作系统204监视GP1事件。GP1事件可实施为与虚拟GP1引脚的状态相关的任何平台事件。GP1事件包含诸如读、写等GP1命令或控制命令,以及与虚拟GP1引脚状态相关的中断或其它异步事件。在一些实施例中,在框404,计算装置100可从应用202接收对于GP1服务的调用。操作系统204可实现标准化应用编程接口(API)以从应用202接收对于GP1服务的调用。对于服务的调用通常可被映射到一个或多个GP1命令,包含I/O命令和控制命令(下面相对于框410进一步描述)。在一些实施例中,在框406,计算装置100可俘获从虚拟GP1控制器固件接口 208接收的GP1中断。可基于虚拟GP1引脚的状态,例如基于从仿真的状态改变或者底层外围装置134和/或嵌入式控制器132的状态改变,生成中断。可使用对计算装置100上的固件可用的任何方法发信号通知该中断。例如,可作为由ACPI规范所定义的系统控制中断(SCI)生成中断。相对于图5的方法500进一步描述GP1中断的生成。
[0029]在框408,计算装置100确定是否已经接收GP1事件。如果否,则方法400环回到框402以继续监视GP1事件。如果已经接收GP1事件,则方法400前进到框410。
[0030]在框410,计算装置100将GP1命令从操作系统204发送到虚拟GP1控制器驱动器206 AP1命令规定将由GP1引脚执行的操作。尽管GP1命令最终将由虚拟GP1引脚实现,但操作系统204对于物理和虚拟GP1引脚都使用相同接口。从而,操作系统204以及操作系统204的驱动器接口对于物理和虚拟GP1引脚可能是一样的。如上所述,GP1命令可响应于来自应用202的服务请求,或者可被创建成服务于从虚拟GP1控制器固件接口 208接收的中断。计算装置100可使用任何方法将命令发送到虚拟GP1控制器驱动器206。例如,操作系统204可调用由虚拟GP1控制器驱动器206定义的一个或多个回叫函数。那些回叫函数可以是GP1控制器的众所周知驱动器接口的一部分。从而,操作系统204以对于硬件GP1驱动器相同的方式与虚拟GP1控制器驱动器206交互。
[0031]在一些实施例中,在框412,计算装置100可将I/O命令发送到虚拟GP1控制器驱动器206。1/0命令可包含从虚拟GP1引脚读或写数据的命令。在一些实施例中,在框414,计算装置100可将控制命令发送到虚拟GP1控制器驱动器206。控制命令可包含调整虚拟GP1引脚的行为或查询虚拟GP1引脚的状况的命令。控制命令可包含启用或禁用虚拟GP1引脚上的中断、调整虚拟GP1引脚的逻辑级、调整虚拟GP1引脚的驱动电流的命令或其它控制命令。例如,操作系统204可发送控制命令以确定引起GP1中断的虚拟GP1引脚或多个引脚。
[0032]在框416,计算装置100将GP1命令从虚拟GP1控制器驱动器206发送到虚拟GP1控制器固件接口 208。计算装置100可使用任何技术来调用虚拟GP1控制器固件接口 208。例如,计算装置100可从系统数据表中选择固件控制方法210,并执行该控制方法。在一些实施例中,可使用适当字节码中断程序执行固件控制方法210。
[0033]在框418,计算装置100使用虚拟GP1控制器212来仿真虚拟GP1引脚以实现GP1命令。计算装置100可使用任何技术来虚拟化、抽象或以别的方式仿真虚拟GP1引脚的行为。当然,应该理解到,在一些实施例中,虚拟GP1控制器固件接口 208和虚拟GP1控制器212都可用固件或相同固件控制方法210实现。在一些实施例中,在框420,计算装置100可仿真硬件GP1引脚的行为。例如,计算装置100可通过读或写存储在与那个具体虚拟GP1引脚关联的后备存储器中的值来对读命令或写命令做出响应。在一些实施例中,后备存储器可实施为保留供固件使用的存储器126的段,并且从而与操作系统204隔离。计算装置100从而可存留指配给虚拟GP1引脚的值;也就是,计算装置100可在至少某个参考时段保持与虚拟GP1引脚关联的值。附加地或备选地,计算装置100可使用软件模型、调用装置驱动器或应用或其它仿真技术来仿真硬件GP1的行为。
[0034]在一些实施例中,在框422,计算装置100可将外围装置134的接口或嵌入式控制器132适配为虚拟GP1引脚。换言之,计算装置100可使用外围装置134或嵌入式控制器132仿真虚拟GP1引脚。适配外围装置134的接口可使外围装置134对操作系统204而言看起来好像经由一个或多个硬件GP1引脚连接到计算装置100。具体地说,计算装置100可适配用于控制外围装置134的具体硬件或软件接□。例如,计算装置100可将GP1命令(例如读、写、状况和事件)翻译成由具体外围装置134使用的硬件接口。适配嵌入式控制器132可使嵌入式控制器132的一个或多个输入或输出对操作系统204看起来好像硬件GP1引脚。那些输入或输出可被实施为嵌入式控制器132上的物理GP1引脚。例如,计算装置100可在适当互连总线上向并且从嵌入式控制器132转发GP1命令,并且嵌入式控制器132可用它自己的I/O资源(例如GP1引脚或其它硬件接口)执行I/O操作。在一些实施例中,嵌入式控制器132从而可与一个或多个外围装置134对接。
[0035]在一些实施例中,在框424,计算装置100向或者从嵌入式控制器132和/或外围装置134复用GP1数据。例如,单个嵌入式控制器132可包含到外围装置134的若干硬件I/O连接,但可使用单个总线、引脚或中断连接到I/O子系统122。虚拟GP1控制器212—一或计算装置100的附加虚拟GP1控制器212——可仿真多于一个的虚拟GP1引脚。虚拟GP1控制器212可包装、标识或另外复用与每个虚拟GP1引脚相关的GP1命令,使得嵌入式控制器132可在每个硬件I/O连接上执行适当操作。例如,嵌入式控制器132可包含若干硬件GP1引脚,并且虚拟GP1控制器212可仿真那些硬件GP1引脚中每个引脚的虚拟GP1引脚。类似地,在一些实施例中,计算装置100可复用与共享同一硬件连接的若干外围装置134关联的几个虚拟GP1引脚的GP1数据。如上所述,复用可减少支持外围装置134所需的处理器120和/或I/O子系统122上的物理引脚数。
[0036]在一些实施例中,在框426,计算装置100可响应于虚拟GP1引脚的仿真而生成GP1事件。例如,软件仿真可确定,应该基于虚拟GP1引脚的新状态生成GP1事件。作为另一示例,计算装置100可确定,应该基于与嵌入式控制器132和/或外围装置134的交互生成GP1事件。图5的方法500可处理由虚拟GP1控制器212生成的GP1事件,如下所述。
[0037]在框428,计算装置100将GP1命令的结果经由虚拟GP1控制器驱动器206返回到操作系统204。例如,虚拟GP1控制器驱动器206可从之前由操作系统204调用的回叫方法返回结果。返回的结果可包含状况代码或描述GP1事件的其它信息。在一些实施例中,在框430,计算装置100例如可响应于读命令而将虚拟GP1数据返回到操作系统204。例如,虚拟GP1数据可表示与虚拟GP1引脚关联的虚拟输入值。操作系统204又可使用返回的GP1数据对应用202做出响应,服务于中断,或以别的方式处理GP1事件。在返回结果之后,方法400环回到框402以继续监视GP1事件。
[0038]现在参考图5,在使用时,计算装置100可执行用于监视由虚拟GP1控制器212接收的GP1事件并对其做出响应的方法500。方法500开始于框502,在此计算装置100使用虚拟GP1控制器212监视GP1事件。虚拟GP1控制器212可监视影响虚拟GP1引脚状态的任何平台事件,包含软件事件、硬件事件、中断、网络事件或影响仿真的虚拟GP1引脚的任何其它事件。在框504,计算装置100监视软件GP1事件。虚拟GP1控制器212本身例如可响应于从虚拟GP1控制器驱动器206接收的GP1命令而用软件或固件生成GP1事件。上面关于图4的框426进一步描述了软件GP1事件的生成。在一些实施例中,在框506,计算装置100可监视虚拟GP1控制器212的固件控制的后备存储器。例如,如果平台事件已经被写到后备存储器,则计算装置100可以确定后备存储器中的任何值是否已经改变。在一些实施例中,在框508,计算装置100可监视I/O与外围装置134。计算装置100可以确定对外围装置134是否已经接收或发送数据,外围装置134是否已经触发了中断,外围装置134是否已经准备好传送,或者与外围装置134的任何其它I/O操作是否悬而未决。类似地,在一些实施例中,在框510,计算装置100可监视I/O与嵌入式控制器132。
[0039]在框512,计算装置100确定是否已经接收GP1事件。如果否,则方法500环回到框502以继续监视GP1事件。如果接收GP1事件,则方法500前进到框514。
[0040]在框514,计算装置100使用虚拟GP1控制器212来仿真虚拟GP1引脚以处置GP1事件。具体地说,可响应于处置GP1事件而修改虚拟GP1引脚的仿真状态。计算装置100可使用任何技术来虚拟化、抽象、适配或以别的方式仿真虚拟GP1引脚的行为。当然,应该理解到,在一些实施例中,虚拟GP1控制器固件接口 208和虚拟GP1控制器212都可用固件或相同固件控制方法210实现。在一些实施例中,在框516,计算装置100可仿真硬件GP1引脚的行为。例如,计算装置100可以确定与虚拟GP1引脚关联的虚拟输入值或与虚拟GP1引脚关联的虚拟输出值。在一些实施例中,虚拟GP1引脚的仿真状态可存储在固件控制的后备存储器中,如上所述。附加地或备选地,计算装置100可使用软件模型、调用装置驱动器或应用或使用任何其它仿真技术来仿真硬件GP1的行为。
[0041]在一些实施例中,在框518,计算装置100可将外围装置134的接口或嵌入式控制器132适配为虚拟GP1引脚。适配外围装置134的接口可使外围装置134对操作系统204而言看起来好像经由一个或多个硬件GP1引脚连接到计算装置100。具体地说,计算装置100可适配用于控制外围装置134的具体硬件或软件接口。例如,计算装置100可以解释从具体外围装置134接收的I/O事件(例如输入、输出或中断)以修改虚拟GP1引脚的仿真状态。适配嵌入式控制器132可基于嵌入式控制器132的一个或多个输入或输出的状态修改虚拟GP1引脚的状态。那些输入或输出可被实施为嵌入式控制器132上的物理GP1引脚。在一些实施例中,嵌入式控制器132从而可与一个或多个外围装置134对接。
[0042]在一些实施例中,在框520,计算装置100向或者从嵌入式控制器132和/或外围装置134复用GP1数据。例如,单个嵌入式控制器132可包含到外围装置134的若干硬件I/O连接,但可使用单个总线、引脚或中断连接到I/O子系统122。虚拟GP1控制器212—一或计算装置10的附加虚拟GP1控制器212——可仿真多于一个的虚拟GP1引脚。虚拟GP1控制器212可包装、标识或另外复用在若干虚拟GI1引脚上从嵌入式控制器132接收的I/O事件。例如,嵌入式控制器132可包含若干硬件GP1引脚,并且虚拟GP1控制器212可仿真那些硬件GP1引脚中每个引脚的虚拟GP1引脚。类似地,在一些实施例中,计算装置100可复用与共享同一硬件连接的若干外围装置134关联的几个虚拟GP1引脚的GP1数据。如上所述,复用可减少支持外围装置134所需的处理器120和/或I/O子系统122上的物理引脚数。
[0043]在处置GP1事件之后,在框522,计算装置100确定对于GP1事件是否已经启用了中断。中断可能之前已经由从虚拟GP1控制器驱动器206或虚拟GP1控制器固件接口 208接收的控制命令启用。可对于各个虚拟GP1引脚启用中断。从而,计算装置100可确定与启用的虚拟GP1引脚相关的虚拟GP1数据是否已经改变。附加地或备选地,计算装置100可确定对于GP1事件,中断是否是适当的。例如,当虚拟GP1的状态已经改变时,中断可能是适当的。如果中断未启用,则方法500环回到框502以继续监视GP1事件。如上所述,操作系统204可在随后时间通过发送适当GP1命令来同步读取GP1数据。如果中断被启用,则方法500前进到框524。
[0044]在框524,计算装置100触发从虚拟GP1控制器固件接口208到操作系统204的中断。虚拟GP1控制器212可调用虚拟GP1控制器固件接口 208以生成中断。中断可被实施为由I/O子系统122生成的物理中断,其如上所述可实施为分立芯片,或包含在计算装置100的片上系统(SoC)中。中断可由操作系统204处置,操作系统204又可调用虚拟GP1控制器驱动器206的适当函数以服务于中断。上面结合图4的框406进一步描述了固件中断的处置。该中断可使用与操作系统204兼容的任何适当技术触发。例如,中断可实施为由ACPI规范所定义的系统控制中断(SCI)。在触发中断之后,方法500环回到框502以继续监视GP1事件。
[0045]尽管方法400、500已经被描述为同步监视GP1事件,但应该理解,在一些实施例中方法400、500可以是事件驱动的或异步的。另外,方法400、500可在计算装置100上彼此、与操作系统204以及与计算装置100的任何应用202同时执行。
[0046]示例
下面提供了本文公开的技术的说明性示例。技术的实施例可包含下面描述的示例中的任一个或多个示例以及它们的任何组合。
[0047]示例包含用于仿真通用I/0(GP10)的计算装置,所述计算装置包括:虚拟GP1控制器驱动器;虚拟GP1控制器固件接口;以及虚拟GP1控制器,其中虚拟GP1控制器驱动器
(i)从所述计算装置的操作系统接收GP1命令,所述GP1命令规定将由GP1引脚实现的操作;以及(ii)响应于接收所述GP1命令而将所述GP1命令发送到虚拟GP1控制器固件接口 ;所述虚拟GP1固件接口从所述虚拟GP1控制器驱动器接收所述GP1命令;以及所述虚拟GP1控制器响应于所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述GP1命令而仿真虚拟GP1引脚来实现所述GP1命令。
[0048]示例2包含示例I的主题,并且其中所述GP1命令包括读命令;仿真所述虚拟GP1引脚来实现所述GP1命令包括确定所述虚拟GP1引脚的虚拟输入值;以及所述虚拟GP1控制器驱动器进一步响应于所述虚拟GP1引脚的仿真而将所述虚拟输入值返回到所述操作系统。
[0049]示例3包含示例I和示例2中任一示例的主题,并且其中所述GP1命令包括写命令;以及仿真所述虚拟GP1引脚来实现所述GP1命令包括确定所述虚拟GP1的虚拟输出值并在参考时段内将所述虚拟输出值保持在所述虚拟GP1引脚上。
[0050]示例4包含示例1-3中任一示例的主题,并且其中所述GP1命令包括控制命令;以及仿真所述虚拟GP1引脚来实现所述GP1命令包括根据所述控制命令来修改所述虚拟GP1的状态。
[0051]示例5包含示例1-4中任一示例的主题,并且其中所述虚拟GP1控制器驱动器进一步(i)接收第二GP1命令,所述第二GP1命令规定将由第二GP1引脚实现的操作;以及(ii)将所述第二 GP1命令发送到所述虚拟GP1控制器固件接口;所述虚拟GP1控制器固件接口进一步从所述虚拟GP1控制器驱动器接收所述第二GP1命令;以及所述虚拟GP1控制器进一步响应于所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述第二GP1命令而仿真第二虚拟GP1引脚来实现所述第二 GP1命令。
[0052]示例6包含示例1-5中任一示例的主题,并且其中仿真所述虚拟GP1引脚包括使用所述计算装置的微控制器作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。
[0053]示例7包含示例1-6中任一示例的主题,并且其中微控制器包括计算装置的嵌入式控制器。
[0054]示例8包含示例1-7中任一示例的主题,并且其中仿真所述虚拟GP1引脚进一步包括使用所述嵌入式控制器的物理GP1引脚作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。
[0055]示例9包含示例1-8中任一示例的主题,并且其中所述虚拟GP1控制器进一步使用所述计算装置的所述嵌入式控制器作为所述第二虚拟GP1引脚来仿真第二虚拟GP1引脚。
[0056]示例10包含示例1-9中任一示例的主题,并且其中仿真所述虚拟GP1引脚包括使用到所述计算装置的外围装置的接口作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。
[0057]示例11包含示例1-10中任一示例的主题,并且其中所述虚拟GP1控制器进一步保留存储器段以供所述虚拟GP1控制器使用;以及仿真所述虚拟GP1引脚包括使用所述保留存储器段作为后备存储器来仿真所述虚拟GP1引脚。
[0058]示例12包含示例1-11中任一示例的主题,并且其中虚拟GP1控制器进一步接收GP1事件,GP1事件与所述虚拟GP1引脚的状态相关;以及仿真所述虚拟GP1引脚以根据所述GP1事件来修改所述虚拟GP1引脚的状态。
[0059]示例13包含示例1-12中任一示例的主题,并且其中所述GP1事件包括从所述计算装置的微控制器接收的I/o事件;以及仿真所述虚拟GP1引脚包括根据所述GP1事件来修改所述虚拟GP1引脚的状态。
[0000]示例14包含示例1-13中任一示例的主题,并且其中微控制器包括计算装置的嵌入式控制器。
[0061]示例15包含示例1-14中任一示例的主题,并且其中所述虚拟GP1控制器进一步使用所述计算装置的所述嵌入式控制器作为所述第二虚拟GP1引脚来仿真第二虚拟GP1引脚。
[0062]示例16包含示例1-15中任一示例的主题,并且其中所述GP1事件包括从所述计算装置的外围装置接收的I/O事件;以及仿真所述虚拟GP1引脚包括根据所述GP1事件来修改所述虚拟GP1引脚的状态。
[0063]示例17包含示例1-16中任一示例的主题,并且其中所述虚拟GP1控制器进一步保留存储器段以供所述虚拟GP1控制器使用;接收GP1事件包括检测对保留的存储器段的存储器存取;以及仿真所述虚拟GP1引脚包括使用所述保留存储器段作为后备存储器来仿真所述虚拟GP1引脚。
[0064]示例18包含示例1-17中任一示例的主题,并且其中所述虚拟GP1控制器固件接口进一步响应于修改所述虚拟GP1引脚的状态而触发所述计算装置的I/O子系统对所述操作系统的物理中断。
[0065]示例19包含示例1-18中任一示例的主题,并且其中所述中断使所述操作系统将所述GP1命令发送到所述虚拟GP1控制器驱动器。
[0066]示例20包含示例1-19中任一示例的主题,并且其中由虚拟GP1控制器驱动器接收GP1命令包括从操作系统接收回叫方法。
[0067]示例21包含示例1-20中任一示例的主题,并且其中虚拟GP1控制器固件接口包括用于虚拟机的控制方法,所述控制方法由所述计算装置的字节码解释器解释。
[0068]示例22包含示例1-21中任一示例的主题,并且其中虚拟GP1控制器固件接口包括高级配置与电源接口( ACPI)装置,其包含多种ACPI控制方法。
[0069]示例23包含用于仿真计算装置上的通用I/0(GP10)的方法,所述方法包括:所述计算装置的操作系统的虚拟GP1控制器驱动器接收GP1命令,所述GP1命令规定将由GP1引脚实现的操作;响应于接收所述GP1命令而将所述GP1命令从所述虚拟GP1控制器驱动器发送到所述计算装置的虚拟GP1控制器固件接口;所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述GP1命令;以及所述计算装置的虚拟GP1控制器响应于所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述GP1命令而仿真虚拟GP1引脚来实现所述GP1命令。
[0070]示例24包含示例23的主题,并且其中接收GP1命令包括接收读命令;仿真虚拟GP1引脚来实现GP1命令包括确定虚拟GP1引脚的虚拟输入值;以及所述方法进一步包括:响应于仿真虚拟GP1引脚而将虚拟输入值从虚拟GP1控制器驱动器返回到操作系统。
[0071]示例25包含示例23和示例24中任一示例的主题,并且其中接收GP1命令包括接收写命令;以及仿真所述虚拟GP1引脚来实现所述GP1命令包括确定所述虚拟GP1的虚拟输出值并在参考时段内将所述虚拟输出值保持在所述虚拟GP1引脚上。
[0072]示例26包含示例23-25中任一示例的主题,并且其中接收GP1命令包括接收控制命令;以及仿真所述虚拟GP1引脚来实现所述GP1命令包括根据所述控制命令来修改所述虚拟GP1的状态。
[0073]示例27包含示例23-26中任一示例的主题,并且进一步包含:虚拟GP1控制器驱动器接收第二 GP1命令,第二 GP1命令规定将由第二 GP1引脚实现的操作;将所述第二 GP1命令从所述虚拟GP1控制器驱动器发送到所述虚拟GP1控制器固件接口;所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述第二GP1命令;以及所述计算装置的虚拟GP1控制器响应于所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述第二 GP1命令而仿真第二虚拟GP1引脚来实现所述第二 GP1命令。
[0074]示例28包含示例23-27中任一示例的主题,并且其中仿真所述虚拟GP1引脚包括使用所述计算装置的微控制器作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。
[0075]示例29包含示例23-28中任一示例的主题,并且其中使用微控制器仿真虚拟GP1引脚包括使用所述计算装置的嵌入式控制器作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。
[0076]示例30包含示例23-29中任一示例的主题,并且其中仿真所述虚拟GP1引脚进一步包括使用所述嵌入式控制器的物理GP1引脚作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。
[0077]示例31包含示例23-30中任一示例的主题,并且进一步包含:计算装置的虚拟GP1控制器使用计算装置的嵌入式控制器作为第二虚拟GP1引脚来仿真第二虚拟GP1引脚。
[0078]示例32包含示例23-31中任一示例的主题,并且其中仿真所述虚拟GP1引脚包括使用到所述计算装置的外围装置的接口作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。
[0079]示例33包含示例23-32中任一示例的主题,并且进一步包含:保留存储器段供虚拟GP1控制器使用;其中仿真虚拟GP1引脚包括使用所述保留存储器段作为后备存储器来仿真所述虚拟GP1引脚。
[0080]示例34包含示例23-33中任一示例的主题,并且进一步包含:所述虚拟GP1控制器接收GP1事件,所述GP1事件与所述虚拟GP1引脚的状态相关;以及所述虚拟GP1控制器仿真所述虚拟GP1引脚以根据所述GP1事件来修改所述虚拟GP1引脚的状态。
[0081]示例35包含示例23-34中任一示例的主题,并且其中接收所述GP1事件包括从所述计算装置的微控制器接收I/o事件;以及仿真所述虚拟GP1引脚包括根据所述GP1事件来修改所述虚拟GP1引脚的状态。
[0082I示例36包含示例23-35中任一示例的主题,并且其中接收I/O事件包括从计算装置的嵌入式控制器接收I/O事件。
[0083]示例37包含示例23-36中任一示例的主题,并且进一步包含:虚拟GP1控制器使用计算装置的嵌入式控制器作为第二虚拟GP1引脚来仿真第二虚拟GP1引脚。
[0084]示例38包含示例23-37中任一示例的主题,并且其中接收所述GP1事件包括从所述计算装置的外围装置接收I/o事件;以及仿真所述虚拟GP1引脚包括根据所述GP1事件来修改所述虚拟GP1引脚的状态。
[0085]示例39包含示例23-38中任一示例的主题,并且进一步包含:保留存储器段供虚拟GP1控制器使用;其中接收GP1事件包括检测对保留的存储器段的存储器存取;以及其中仿真虚拟GP1引脚包括使用所述保留存储器段作为后备存储器来仿真所述虚拟GP1引脚。
[0086]示例40包含示例23-39中任一示例的主题,并且进一步包含:所述虚拟GP1控制器固件接口响应于修改所述虚拟GP1引脚的状态而触发所述计算装置的I/O子系统对所述操作系统的物理中断。
[0087]示例41包含示例23-40中任一示例的主题,并且其中所述中断使所述操作系统将所述GP1命令发送到所述虚拟GP1控制器驱动器。
[0088]示例42包含示例23-41中任一示例的主题,并且其中由虚拟GP1控制器驱动器接收GP1命令包括从操作系统接收回叫方法。
[0089]示例43包含示例23-42中任一示例的主题,并且其中虚拟GP1控制器固件接口包括用于虚拟机的控制方法,所述控制方法由所述计算装置的字节码解释器解释。
[0090]示例44包含示例23-43中任一示例的主题,并且其中虚拟GP1控制器固件接口包括高级配置与电源接口( ACPI)装置,包含多种ACPI控制方法。
[0091 ]示例45包含计算装置,计算装置包括:处理器;以及存储器,其中存储有多个指令,所述指令当由处理器执行时使计算装置执行示例23-44中任一个的方法。
[0092]示例46包含一个或多个机器可读存储介质,其包括其上存储的多个指令,所述指令响应于被执行而导致计算装置执行示例23-44中任一个的方法。
[0093]示例47包含包括用于执行示例23-44中任一示例的方法的部件的电子装置。
[0094]示例48包含用于仿真通用I/0(GP10)的计算装置,所述计算装置包括:用于由计算装置的操作系统的虚拟GP1控制器驱动器接收GP1命令的部件,所述GP1命令规定将由GP1引脚实现的操作;用于响应于接收所述GP1命令而将所述GP1命令从所述虚拟GP1控制器驱动器发送到所述计算装置的虚拟GP1控制器固件接口的部件;用于由所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述GP1命令的部件;以及用于由所述计算装置的虚拟GP1控制器响应于所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述GP1命令而仿真虚拟GP1引脚来实现所述GP1命令的部件。
[0095]示例49包含示例48的主题,并且其中用于接收GP1命令的部件包括用于接收读命令的部件;用于仿真虚拟GP1引脚来实现GP1命令的部件包括用于确定虚拟GP1引脚的虚拟输入值的部件;以及所述计算装置进一步包括:用于响应于仿真虚拟GP1引脚而将虚拟输入值从虚拟GP1控制器驱动器返回到操作系统的部件。
[0096]示例50包含示例48和示例49中任一示例的主题,并且其中用于接收GP1命令的部件包括用于接收写命令的部件;用于仿真所述虚拟GP1引脚来实现GP1命令的部件包括用于确定所述虚拟GP1的虚拟输出值并在参考时段内将所述虚拟输出值保持在所述虚拟GP1引脚上的部件。
[0097]示例51包含示例48-50中任一示例的主题,并且其中用于接收GP1命令的部件包括用于接收控制命令的部件;以及用于仿真虚拟GP1引脚来实现GP1命令的部件包括用于根据所述控制命令来修改所述虚拟GP1的状态的部件。
[0098]示例52包含示例48-51中任一示例的主题,并且进一步包含:用于由所述虚拟GP1控制器驱动器接收第二 GP1命令的部件,所述第二 GP1命令规定将由第二 GP1引脚实现的操作;用于将所述第二GP1命令从所述虚拟GP1控制器驱动器发送到所述虚拟GP1控制器固件接口的部件;用于由所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述第二GP1命令的部件;以及用于由所述计算装置的虚拟GP1控制器响应于所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述第二 GP1命令而仿真第二虚拟GP1引脚来实现所述第二 GP1命令的部件。
[0099]示例53包含示例48-52中任一示例的主题,并且其中用于仿真所述虚拟GP1引脚的部件包括用于使用所述计算装置的微控制器作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚的部件。
[0100]示例54包含示例48-53中任一示例的主题,并且其中用于使用微控制器仿真虚拟GP1引脚的部件包括用于使用所述计算装置的嵌入式控制器作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚的部件。
[0101]示例55包含示例48-54中任一示例的主题,并且其中用于仿真虚拟GP1引脚的部件进一步包括用于使用所述嵌入式控制器的物理GP1引脚作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚的部件。
[0102]示例56包含示例48-55中任一示例的主题,并且进一步包含:用于由计算装置的虚拟GP1控制器使用计算装置的嵌入式控制器作为第二虚拟GP1引脚来仿真第二虚拟GP1引脚的部件。
[0103]示例57包含示例48-56中任一示例的主题,并且其中用于仿真所述虚拟GP1引脚的部件包括用于使用到所述计算装置的外围装置的接口作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚的部件。
[0104]示例58包含示例48-57中任一示例的主题,并且进一步包含:用于保留存储器段供虚拟GP1控制器使用的部件;其中用于仿真虚拟GP1引脚的部件包括用于使用所述保留存储器段作为后备存储器来仿真所述虚拟GP1引脚的部件。
[0105]示例59包含示例48-58中任一示例的主题,并且进一步包含:用于由所述虚拟GP1控制器接收GP1事件的部件,所述GP1事件与所述虚拟GP1引脚的状态相关;以及用于由所述虚拟GP1控制器仿真所述虚拟GP1引脚以根据所述GP1事件来修改所述虚拟GP1引脚的状态的部件。
[0106]示例60包含示例48-59中任一示例的主题,并且其中用于接收GP1事件的部件包括用于从计算装置的微控制器接收I/O事件的部件;以及用于仿真所述虚拟GP1引脚的部件包括用于根据GP1事件来修改所述虚拟GP1引脚的状态的部件。
[0107]示例61包含示例48-60中任一示例的主题,并且其中用于接收I/O事件的部件包括用于从计算装置的嵌入式控制器接收I/o事件的部件。
[0108]示例62包含示例48-61中任一示例的主题,并且进一步包含:用于由虚拟GP1控制器使用计算装置的嵌入式控制器作为第二虚拟GP1引脚来仿真第二虚拟GP1引脚的部件。
[0109]示例63包含示例48-62中任一示例的主题,并且其中用于接收GP1事件的部件包括用于从计算装置的外围装置接收I/O事件的部件;以及用于仿真所述虚拟GP1引脚的部件包括用于根据GP1事件来修改所述虚拟GP1引脚的状态的部件。
[0110]示例64包含示例48-63中任一示例的主题,并且进一步包含:用于保留存储器段供虚拟GP1控制器使用的部件;其中用于接收GP1事件的部件包括用于检测对保留的存储器段的存储器存取的部件;以及其中用于仿真虚拟GP1引脚的部件包括用于使用所述保留存储器段作为后备存储器来仿真所述虚拟GP1引脚的部件。
[0111]示例65包含示例48-64中任一示例的主题,并且进一步包含:用于由虚拟GP1控制器固件接口响应于修改所述虚拟GP1引脚的状态而触发所述计算装置的I/O子系统对所述操作系统的物理中断的部件。
[0112]示例66包含示例48-65中任一示例的主题,并且其中所述中断使所述操作系统将所述GP1命令发送到所述虚拟GP1控制器驱动器。
[0113]示例67包含示例48-66中任一示例的主题,并且其中用于由虚拟GP1控制器驱动器接收GP1命令的部件包括用于从操作系统接收回叫方法的部件。
[0114]示例68包含示例48-67中任一示例的主题,并且其中虚拟GP1控制器固件接口包括用于虚拟机的控制方法,所述控制方法由所述计算装置的字节码解释器解释。
[0115]示例69包含示例48-68中任一示例的主题,并且其中虚拟GP1控制器固件接口包括高级配置与电源接口( ACPI)装置,包含多种ACPI控制方法。
【主权项】
1.一种用于仿真通用I/0(GP1)的计算装置,所述计算装置包括虚拟GP1控制器驱动器、虚拟GP1控制器固件接口和虚拟GP1控制器,其中: 所述虚拟GP1控制器驱动器将(i)从所述计算装置的操作系统接收GP1命令,所述GP1命令规定将由GP1引脚实现的操作;以及(ii)响应于接收所述GP1命令而将所述GP1命令发送到所述虚拟GP1控制器固件接口 ; 所述虚拟GP1固件接口将从所述虚拟GP1控制器驱动器接收所述GP1命令;以及 所述虚拟GP1控制器将响应于所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述GP1命令而仿真虚拟GP1引脚来实现所述GP1命令。2.如权利要求1所述的计算装置,其中: 所述GP1命令包括读命令; 仿真所述虚拟GP1引脚来实现所述GP1命令包括确定所述虚拟GP1引脚的虚拟输入值;以及 所述虚拟GP1控制器驱动器进一步响应于所述虚拟GP1引脚的仿真而将所述虚拟输入值返回到所述操作系统。3.如权利要求1所述的计算装置,其中: 所述GP1命令包括写命令;以及 仿真所述虚拟GP1引脚来实现所述GP1命令包括确定所述虚拟GP1的虚拟输出值并在参考时段内将所述虚拟输出值保持在所述虚拟GP1引脚上。4.如权利要求1所述的计算装置,其中: 所述GP1命令包括控制命令;以及 仿真所述虚拟GP1引脚来实现所述GP1命令包括根据所述控制命令来修改所述虚拟GP1的状态。5.如权利要求1所述的计算装置,其中: 所述虚拟GP1控制器驱动器进一步(i)接收第二 GP1命令,所述第二 GP1命令规定将由第二GP1引脚实现的操作;以及(ii)将所述第二GP1命令发送到所述虚拟GP1控制器固件接口; 所述虚拟GP1控制器固件接口进一步从所述虚拟GP1控制器驱动器接收所述第二GP1命令;以及 所述虚拟GP1控制器进一步响应于所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述第二 GP1命令而仿真第二虚拟GP1引脚来实现所述第二 GP1命令。6.如权利要求1所述的计算装置,其中仿真所述虚拟GP1引脚包括使用所述计算装置的嵌入式控制器作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。7.如权利要求6所述的计算装置,其中仿真所述虚拟GP1引脚进一步包括使用所述嵌入式控制器的物理GP1引脚作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。8.如权利要求1所述的计算装置,其中仿真所述虚拟GP1引脚包括使用到所述计算装置的外围装置的接口作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。9.如权利要求1所述的计算装置,其中: 所述虚拟GP1控制器进一步保留存储器段以供所述虚拟GP1控制器使用;以及 仿真所述虚拟GP1引脚包括使用所述保留存储器段作为后备存储器来仿真所述虚拟GP1引脚。10.如权利要求1-9中任一项所述的计算装置,其中所述虚拟GP1控制器进一步: 接收GP1事件,所述GP1事件与所述虚拟GP1引脚的状态相关;以及 仿真所述虚拟GP1引脚以根据所述GP1事件来修改所述虚拟GP1引脚的状态。11.如权利要求10所述的计算装置,其中: 所述GP1事件包括从所述计算装置的嵌入式控制器接收的I/O事件;以及 仿真所述虚拟GP1引脚包括根据所述GP1事件来修改所述虚拟GP1引脚的状态。12.如权利要求10所述的计算装置,其中: 所述GP1事件包括从所述计算装置的外围装置接收的I/O事件;以及 仿真所述虚拟GP1引脚包括根据所述GP1事件来修改所述虚拟GP1引脚的状态。13.如权利要求10所述的计算装置,其中所述虚拟GP1控制器固件接口进一步响应于修改所述虚拟GP1引脚的状态而触发所述计算装置的I/O子系统对所述操作系统的物理中断。14.如权利要求13所述的计算装置,其中所述中断使所述操作系统将所述GP1命令发送到所述虚拟GP1控制器驱动器。15.如权利要求1-9中任一项所述的计算装置,其中所述虚拟GP1控制器固件接口包括高级配置与电源接口(ACPI)装置,所述高级配置与电源接口(ACPI)装置包含多种ACPI控制方法,其中每种ACPI控制方法都包括用于虚拟机的控制方法,所述控制方法由所述计算装置的字节码解释器解释。16.—种用于仿真计算装置上的通用I/0(GP10)的方法,所述方法包括: 由所述计算装置的操作系统的虚拟GP1控制器驱动器接收GP1命令,所述GP1命令规定将由GP1引脚实现的操作; 响应于接收所述GP1命令而将所述GP1命令从所述虚拟GP1控制器驱动器发送到所述计算装置的虚拟GP1控制器固件接口 ; 由所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述GP1命令;以及 响应于所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述GP1命令,由所述计算装置的虚拟GP1控制器仿真虚拟GP1引脚来实现所述GP1命令。17.如权利要求16所述的方法,进一步包括: 由所述虚拟GP1控制器驱动器接收第二 GP1命令,所述第二 GP1命令规定将由第二GP1引脚实现的操作; 将所述第二 GP1命令从所述虚拟GP1控制器驱动器发送到所述虚拟GP1控制器固件接口; 由所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述第二 GP1命令;以及 由所述计算装置的虚拟GP1控制器响应于所述虚拟GP1控制器固件接口从所述虚拟GP1控制器驱动器接收所述第二 GP1命令而仿真第二虚拟GP1引脚来实现所述第二 GP1命令。18.如权利要求16所述的方法,其中仿真所述虚拟GP1引脚包括使用所述计算装置的嵌入式控制器作为所述虚拟GP1引脚来仿真所述虚拟GP1引脚。19.如权利要求16所述的方法,其中仿真所述虚拟GP1引脚包括使用到所述计算装置的外围装置的接口作为所述虚拟GP1弓I脚来仿真所述虚拟GP1弓I脚。20.如权利要求16所述的方法,进一步包括: 由所述虚拟GP1控制器接收GP1事件,所述GP1事件与所述虚拟GP1引脚的状态相关;以及 由所述虚拟GP1控制器仿真所述虚拟GP1引脚以根据所述GP1事件来修改所述虚拟GP1引脚的状态。21.如权利要求20所述的方法,其中: 接收所述GP1事件包括从所述计算装置的嵌入式控制器接收I/O事件;以及 仿真所述虚拟GP1引脚包括根据所述GP1事件来修改所述虚拟GP1引脚的状态。22.如权利要求20所述的方法,其中: 接收所述GP1事件包括从所述计算装置的外围装置接收I/O事件;以及 仿真所述虚拟GP1引脚包括根据所述GP1事件来修改所述虚拟GP1引脚的状态。23.一种计算装置,包括: 处理器;以及 存储器,其中存储有多个指令,所述指令当由所述处理器执行时使所述计算装置执行如权利要求16-22中任一项所述的方法。24.—个或多个机器可读存储介质,包括在其上存储的多个指令,所述指令响应于被执行而导致计算装置执行如权利要求16-22中任一项所述的方法。25.—种计算装置,包括用于执行如权利要求16-22中任一项所述的方法的部件。
【文档编号】G06F9/455GK106062714SQ201580010920
【公开日】2016年10月26日
【申请日】2015年3月5日
【发明人】N.J.亚当斯, R.E.古夫, S.P.派萨拉巴拉甘加哈拉, P.杜塔
【申请人】英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1