用单个外围设备应用代码控制多个外围设备的系统和方法

文档序号:6423263阅读:193来源:国知局
专利名称:用单个外围设备应用代码控制多个外围设备的系统和方法
技术领域
本发明总体上涉及硬件控制应用,尤其是,涉及增强受控硬件外围设备的BIOS以管理多个外围装置。
背景技术
产业界已经投资了数十亿美元来开发用于过多的计算机控制的外围装置的控制系统软件,以便增强经济生产率。通常,该软件被开发成控制单个外围装置。这对于独特或受限目的的外围装置而言尤其如此。为了控制多个装置,对应用程序软件控制代码的费用昂贵的修改是必需的,以便使该软件适应那些需要对多个外围装置进行控制和协调的环境。例如,控制代码中涉及每个外围设备的每个参数和每个变量都必需在具体问题具体分析的基础上为每个外围设备进行复制。可能会花费数周来为每个外围装置复制一个变量,并且可能花费数年来为每个外围装置定位和重新配置参考命令。此外,由技术人员在数年的时间跨度上从无休止的实验和经验数据搜集所获得的应用程序控制代码中的大多数可能不再可用。一旦良好的控制代码正确工作,那么对它进行修改是一个令人不愿意采纳的选项。常规做法是,必须对应用程序软件本身进行定制修改,或扩展由应用程序软件包含的跳转表,或者进行所述两者。在任意一种情形中,都会导致额外的费用和复杂的操作问题。跳转表是指向可执行函数或者是指向一组机器代码跳转指令的指针数组。如果应用程序处理相对静态的函数组(例如系统调用或者用于类的虚拟函数),那么该表可以一次生成。然后,可以使用该数组中的简单索引来调用函数。取决于所用的表的类型,这可能需要获取指针并调用函数,或者可能需要跳转到机器代码。在对硬件外围设备进行控制的上下文中,经常对外围设备的基本输入/输出系统(BIOS)中的函数进行跳转。重新编写软件应用程序以便处理多个外围装置是费用昂贵的。而且,修改BIOS或 BIOS接口以处理多个外围装置具有下述缺点,例如数据冲突、在I/O资源之间的共享问题、或者需要对各种BIOS严格结构化以便以锁定步骤操作。这些问题中的每一个都导致了性能速度的降低或费用的增加。因此,期望经济地扩展现有外围设备应用的灵活性。另外,期望简化多个外围装置之间的接口,并且流线化其操作。此外,结合附图和前述技术领域和背景技术,本发明的其它期望特征和特性将由随后的详细描述和所附权利要求书而变得清楚
发明内容
提供了一种方法,其用于配置处理器以操作多个外围装置,而不改变被设计以驱动一个外围装置的外围设备应用程序。该方法包括为多个外围装置的每个外围装置复制外围设备应用程序的一个实例以及相关联的BIOS,并且将存储装置分区成包括一个或多个存储块的分区,外围设备应用程序的每个实例及其相关联的BIOS与一个分区相关联。每个存储块包括与多个外围装置中的一个外围装置相关联的BIOS函数的入口点地址。该方法还包括保留一个区(range)的存储器地址用于存储与多个外围装置中的每个外围装置相关的数据指针,该数据指针配置成在多个外围装置之间进行上下文切换期间使用,该方法包括随后对多个外围装置中的每一个进行初始化。提供了一种逻辑装置,用于同时执行外围设备应用程序的多个实例。该逻辑装置包括逻辑控制单元和与该逻辑控制单元通信的存储器,其中该存储器被分区成多个区。每个区包括一个或多个存储块。外围设备应用程序的每个实例以及相关联的BIOS与一个区相关联,并且一个区被保留用于存储与多个外围设备应用程序实例的每个外围设备应用程序有关的数据指针。提供了一种计算机可读的存储介质,其存储有指令,当由计算装置执行时,该指令为多个外围设备的每个外围装置复制外围设备应用程序的一个实例以及BIOS,并且将存储装置分区成包括一个或多个存储块的分区。外围设备应用程序的每个实例与一个分区相关联。每个存储块包括与多个外围装置的一个外围装置相关联的BIOS函数所用的入口点地址。所述指令将一个BIOS改变成主BIOS。这通过创建主BIOS中的虚拟代码(dummy code) 来实现,该虚拟代码配置成生成非主BIOS块中的已知入口点地址。所述指令还保留了一个区的存储器地址,用于存储与多个外围装置中的每个外围装置有关的数据指针。该数据指针配置成在多个外围装置之间进行上下文切换期间使用。然后,所述指令对多个外围装置中的每个外围装置进行初始化。此外,本发明还包括以下技术方案。1. 一种用于配置处理器的方法,用于在不改变被设计成驱动单个外围装置的外围设备应用程序的情况下操作多个外围装置,所述方法包括
为所述多个外围装置中的每个外围装置复制所述外围设备应用程序的一个实例以及相关联的基本输入/输出系统(BIOS);
将存储装置分区成包括一个或多个存储块的多个区,所述外围设备应用程序的每个实例及其相关联的BIOS与一个区相关联;
保留额外的存储区用于储存数据指针,每个数据指针与所述多个外围装置的一个外围装置及BIOS相关联,所述数据指针配置成用于在所述多个外围装置之间进行上下文切换; 以及
初始化所述多个外围装置的每个外围设备应用程序以及相关联的BIOS。2.如技术方案1所述的方法,其中,与所述外围设备应用程序的每个实例相关联的一个或多个存储块中的每一个都包括用于每个BIOS的特定BIOS函数的入口点地址,所述每个BIOS与所述多个外围装置的一个外围装置相关联。3.如技术方案1所述的方法,其中,与所述多个外围装置的每个外围装置有关的每个BIOS经由共用操作数据链接在一起,所述共用操作数据位于已知的存储器地址处,所述已知的存储器地址位于存储器的一个或多个块内。
4.如技术方案1所述的方法,其中,所述分区步骤进一步包括
将易失性存储器分区成与所述多个外围装置的一个外围装置相关联的区;以及将非易失性存储器分区成与所述多个外围装置的一个外围装置相关联的区。5.如技术方案4所述的方法,其中,所述易失性存储器的区和所述非易失性存储器的区的地址在编译时是绝对且已知的。6.如技术方案4所述的方法,其中,用于存储与所述多个外围装置的每个外围装置有关的数据指针的存储器地址的每个区是所述易失性存储器的一部分,并且在编译时是绝对且已知的。7.如技术方案1所述的方法,其中,对所述多个外围装置中的每一个进行初始化的步骤进一步包括
将与所述多个外围装置中的每一个有关的数据指针加载和存储到用于存储数据指针的存储器地址的区中;以及
对与所述多个外围装置中的每个外围装置相关联的外围设备应用程序的一个或多个控制特征进行初始化。8.如技术方案7所述的方法,进一步包括监督软件对象,所述监督软件对象配置成对所述外围设备应用程序的全部复制实例进行初始化和控制。9.如技术方案8所述的方法,进一步包括
在加载和存储数据指针的步骤之前,存储先前对所述多个外围装置中的一个外围装置的初始化所用的数据指针;以及
在初始化一个或多个控制特征的步骤之后,恢复在先前初始化中所用的数据指针。10. 一种逻辑装置,所述逻辑装置配置成同时执行外围设备应用程序的多个实例,所述逻辑装置包括
逻辑控制单元;以及
与所述逻辑控制单元通信的存储器,其中所述存储器被分区成多个区,所述多个外围设备应用程序实例中的每个实例及其相关联的基本输入/输出系统(BIOS)与一个区相关联,并且额外的区被保留用于存储与所述多个外围设备应用程序中的每个外围设备应用程序及其有关的BIOS相关联的数据指针。11.如技术方案10所述的逻辑装置,其中,所述数据指针配置成用于在所述多个外围设备应用程序的每个实例之间进行上下文切换。12.如技术方案11所述的逻辑装置,其中,存储器的每个区都包括用于一个BIOS 的入口点地址,所述BIOS与所述多个外围设备应用程序的每个实例相关联。13.如技术方案11所述的逻辑装置,其中,与所述外围设备应用程序的多个实例有关的每个BIOS通过对共用数据地址进行寻址而链接到所述多个BIOS中的其它BIOS。14.如技术方案9所述的逻辑装置,其中,所述逻辑控制单元配置成初始化所述外围设备应用程序中的每一个。15.如技术方案14所述的方法,其中,对所述多个外围设备应用程序中的每个外围设备应用程序进行初始化包括
将与所述外围设备应用程序中的每个实例相关联的数据指针加载和存储到为存储所述数据指针而保留的存储器的区中;以及对所述多个外围设备应用程序实例中的每一个实例的一个或多个控制特征进行初始化。16.如技术方案15所述的方法,其中,初始化所述多个外围设备应用程序实例中的每一个是顺序完成的,一次初始化一个外围设备应用程序实例。17. 一种计算机可读存储介质,所述计算机可读存储介质配置成存储指令,当由计算装置执行时,所述指令执行下述步骤
为多个外围装置中的每个外围装置复制外围设备应用程序的一个实例和BIOS ; 复制多个外围装置的每个外围装置的基本输入/输出系统(BIOS); 将存储装置分区成包括一个或多个存储块的多个区,所述外围设备应用程序的每个实例与一个区相关联;
通过创建主BIOS内的虚拟代码将所述多个BIOS中的一个BIOS改变成所述主BIOS,所述虚拟代码配置成生成非主BIOS块中的已知入口点地址;
保留存储器地址的区,用于存储与多个外围装置中的每个外围装置有关的数据指针, 所述数据指针配置成用于在所述多个外围装置之间进行上下文切换;以及初始化所述多个外围装置中的每一个。18.如技术方案17所述的计算机可读存储介质,其中,所述分区步骤进一步包括
将易失性存储器分区成用于所述多个外围设备中的每个外围设备的至少一个区;以及将非易失性存储器分区成用于所述多个外围设备中的每个外围设备的至少一个区。19.如技术方案18所述的计算机可读存储介质,其中,所述易失性存储器的区和所述非易失性存储器的区的地址在编译时是绝对且已知的。20.如技术方案19所述的计算机可读存储介质,其中,用于存储与所述多个外围设备中的每一个外围设备有关的数据指针的存储器地址的区是所述易失性存储器的一部分,并且在编译时是绝对且已知的。


下面将结合附图对本发明进行描述,其中相同的附图标记指示相同元件,并且 图1是示例性处理器的框图2A是常规外围设备应用程序及其BIOS控制架构的功能框图2B是外围设备以及示例性BIOS控制架构的功能框图3是对处理器进行配置以操作两个或更多个外围装置的示例性方法的流程图4A是初始化硬件外围设备应用程序的常规方法的流程图4B是初始化硬件外围设备应用程序的示例性方法的流程图5是被配置成操作多个外围设备应用程序的示例性前台循环的流程图;以及
图6是被配置成以多个应用程序实例操作的示例性中断服务例程(ISR)的流程图。
具体实施例方式以下详细描述在本质上仅仅是示例性的,并不意图限制本发明、或本发明的应用和用途。此外,本发明也不意图由前述技术领域、背景技术、发明内容、或以下详细描述中所
7提到的任何明示或暗示的理论界定。图1是示例性处理器100的功能框图,处理器100可用于执行外围设备软件程序以及与硬件外围设备相关联的BIOS。在实践中,处理器可以是本领域中已知的任何适当配置的处理器,或者可以是未来将要开发的处理器。处理器的非限制性示例可包括中央处理单元、专用处理器、通用处理器、协处理器、数据信号处理器、以及诸如现场可编程阵列之类的可编程逻辑器件。处理器的一个具体的非限制性示例是来自Freescale Semiconductor of Phoenix, Arizona 的 Power PC 处理器。示例性处理器100包括逻辑控制单元160、指令单元190、输入-输出管理单元 140、用于指令的存储器180、数据存储器130、以及辅助存储器150。指令单元190可以包括执行算术和逻辑操作的算术逻辑单元(ALU)llO、设计成实现对浮点数进行操作的浮点单元 (FPU) 120、以及存储器缓存170。存储器缓存是其内容能够比在别处的可用存储器(例如辅助存储器150或数据存储器130)被更快速地访问的小量存储器。通常,这种专门的存储器并不被认为是用于处理器100的标准存储器范围的一部分。大多数(但不是全部)现代计算机采用所谓的加载-存储架构。在该模式下,数据从次级存储器(例如,辅助存储器150)传输到一个或多个寄存器中,数据在这里通过运行来自指令存储器180的指令而被处理。然后,数据经由1/0管理单元140传输到别处。在本领域中任何给定种类的特定处理器的构造和功能都是已知的。因此,为简洁和清楚起见,省略了对处理器100的操作以及其部件的详细描述。尽管外围设备控制软件在本文被详述为驻留在处理器100内,但是本领域普通技术人员将会认识到外围设备控制软件110和/或其任何构件可以存在于与处理器100通信的任何计算机可读储存介质上。本领域中的普通技术人员将会认识到,在不背离本文公开内容的设想范围的情况下,计算机可读储存介质可以是能够储存电子数据的任何装置。计算机可读储存介质的非限制性示例包括处理器、电子存储装置、磁盘、光盘等等。图2A是在处理器100上执行的现有技术的外围设备应用程序软件1000的功能框图,该外围设备应用程序软件被修改以控制多个外围设备,如本领域中常规实践的那样。在这个简化的示例中,硬件外围设备应用程序的单个实例1000在处理器100上执行,并且控制多个外围设备(A、B、N)。单个外围设备应用程序1000经由相关联的BIOS 1002 (A)与外围设备(A)通信。 外围设备应用程序1000A与BIOS 1002A都通过储存在被称为引导加载程序的可执行代码中的命令加载到处理器100中,所述引导加载程序驻留在只读存储器(ROM)(未示出)中。 弓I导加载程序通常存在于低存储器地址中,例如0x4000。在引导时刻,引导加载程序代码搜索ROM代码块,以搜索块的底部的签名,该签名告诉处理器特定块包含了可执行代码,以及每个块都存在并且完好。如果发现全部存储器块都是令人满意的,那么引导加载程序使控制行进到外围设备(A)的启动代码,其开始对外围设备初始化,如下面关于图4A的现有技术的处理器400更加详细地描述的那样。初始化之后,为了发送信息给外围设备(A),或者为了从外围设备(A)取回信息, 外围设备应用程序1000调用相关联的BIOS 1002 A_N。然后,BIOS读取来自硬件外围设备 (A-N)的信息,或者将信息写入到硬件外围设备(A-N)中。本领域技术人员将会认识到,被写入以控制单个硬件外围设备(例如,硬件外围设备A)的外围设备应用程序1000的单个实例必须重新写入以扩展单个外围设备应用程序1000内的每个函数和子例程的能力,以便处理多个外围设备。图2B是根据本文公开的实施例的替代性软件架构的功能框图,其对多个外围设备进行操作。外围设备应用程序1000可以驻留在ROM内,从其中可以生成外围设备应用程序1000 A-N的多个相同实例。如果没有,那么在引导期间,处理器100可以加载并初始化来自非易失性存储器位置的外围设备应用程序(1000 A-N)的多个相同实例。外围设备应用程序1000 A-N的每个实例都可以包含其自己的跳转表(1001A-N)。外围设备应用程序1000 A-N的每个实例都是未修改的实例,并且仅仅与所安装的硬件外围设备(A-N)之一相关联。通过加载外围设备应用程序1000的多个实例,不会发生对外围设备应用程序1000进行修改的费用,并且在对一个跳转表进行修改以便与多个相关联的外围设备BIOS 1002 A-N通信中不也不会产生有问题的复杂性。对于所产生的外围设备应用程序1000 A-N的每个实例而言,其相关联的BIOS 1002 A-N也被产生,以便与其相关联是外围装置(A-N)通信。此外,多个BIOS 1002 A_N中的一个BIOS可以被修改,以便包括一些BIOS扩展 1005,从而产生主BIOS,正如将在下面关于图4B、图5和图6进一步描述的那样。BIOS扩展1005是额外的BIOS命令,其允许控制命令被转发到外围装置A-N,并且反馈被从外围装置A-N返回以便透明地经过。然而,由主BIOS生成的中断服务例程调用和任务调用可以被 BIOS扩展1005拦截并引导至合适的BIOS 1002 B-N用于执行。在一些实施例中,取代主BIOS,可以生成监督软件对象1010,其可以在外围设备 A-N之间调节协调和上下文切换。作为示例,监督软件对象1010可以驻留在存储器的低地址处(例如,0x20000)。在引导时,引导加载程序代码将找到存储块0x20000,以及含有初始化代码的其它存储块。然而,取代了如图2A中所详述的那样将控制转向主BIOS中的外围设备启动代码,而是控制将行进到监督软件对象1010,其可以配置以合适的中断向量地址集,其允许监督软件对象1010然后在每个BIOS 1002 A-N与其相关联的外围设备应用程序 1000 A-N之间控制命令、任务调用和反馈。例如,监督软件对象1010可以运行命令前台任务循环,其在需要时调用每个特定BIOS 1002 A-N的实际前台任务。为了实施图2B的软件架构,处理器100的存储器需要进行适当的分区,每个硬件外围设备一个分区。以下关于分区的讨论是简化的,并且仅仅是示例性的。在已经阅读了本文的公开内容后,本领域的技术人员将会认识到,在不背离本发明范围的情况下,对处理器的分区可以通过实际上许多种变型来完成。此外,这里使用的具体存储器地址也仅仅是示例性的。对图1中或别处描述的特定存储装置或特定存储地址块的任何暗含的引用都可能仅仅是巧合的,且并不意在以任何方式加以限制。图3是用于配置处理器存储器以操作两个外围装置A和B的简化的、示例性流程图。然而,能够以相同的方式来控制任意数量的硬件外围设备。本领域中的普通技术人员将会认识到下述方法可以被分解成几个组成步骤,在不背离本文所陈述的公开内容的范围的情况下,这些步骤可以组合,或者它们的顺序可以被重新安排。本领域中的普通技术人员还将认识到,图3中所示的存储器地址仅仅是示例性的,具体的数据可以存储在任何特定存储器装置中的任何存储器地址处,或者可以在各种存储器装置的组合之间分配。
在本文所提及的存储装置的类型也是示例性的。任何合适的存储装置或存储装置类型都可以被用在处理器100内,以便满足本领域中已知的任何特定目的。这种存储装置的非限制性示例包括随机存取存储器(RAM)、非易失性RAM (NV RAM)、只读存储器(ROM)、可编程ROM (PROM)、电可擦除PROM (EEI3ROM)、静态RAM (SRAM)、闪存等等。在过程320处,指令存储器180的全部RAM段以及处理器100的数据存储器130 都可以被分区为多个区,每个安装的硬件外围设备a-n关联一个区。表1示出了示例性分区,其关于仅仅和两个硬件外围设备a和b相关联的示例性实施例。这些区在编译时是绝对且已知的。
0000 - 3fff4000 - 7fff8000-bfffcooo-ffff0x4000xxxxnvramanvrambramarama0x4001xxxxramaramaramarama0x4002xxxxrambrambrambramb0x4003xxxxrambrambNoCacheANoCacheB表1 示例性RAM分区
在一些实施例中,分区(例如,0x40000000到0x40007FFF)可以留给非易失性RAM (NV RAM)使用,并且可以是电池驱动的。然而,在其它实施例中,该分区可以是易失性RAM。在过程340,处理器100的任意闪存寄存器的全部区段可以被分区为用于每个硬件外围设备a和b的区,其中每个安装的硬件外围设备a和b用一个区。本领域的技术人员将会认识到,本文所讨论的用于分区的闪存寄存器的使用仅仅是示例性的。其它存储装置也可以被使用,包括但不限于磁盘驱动器。表2示出了关于硬件外围设备A和B的存储器的示例性分区,指示了可能存储在其中的示例性BIOS函数。这些区在编译时是绝对且已知的。
0x00100000代码ROMA0x00180000校准ROMA0x00200000校准ROMA0x00280000代码ROMB0x00300000校准ROMB0x00380000校准ROMB表2 示例性闪存存储器分区
在进一步行进之前,要注意的是,代码ROM可以是可执行指令能够被直接访问的存储器位置。在一些实施例中,代码ROM可以包含外围设备应用程序1000 A-N的实例和/或其相关的BIOS 1002 A-N。校准ROM可以是其中存储有非可执行代码的数据或其它信息的存储器位置,例如,校准数据。校准数据是特定于特定外围设备(例如,电动机、致动器、或其它硬件装置/系统)的数据。一些实施例可以包括监督软件对象1010 (参见图2B),其可以包括向量表,该向量表在用于外围设备应用程序1000A的BIOS 1002A与用于外围设备应用程序实例IOOO(B-N) 的BIOS 1002 B-N之间协调一些基本功能。在这些实施例中,监督对象本身不是BIOS,这是因为它不直接与特定外围设备相关联。然而,因为监督对象1010可以提供对多个外围设备 A-N的控制,所以监督对象可以驻留在低存储器地址中(例如,0x20000),因为在引导期间运行监督可能是优选的。在其它实施例中,监督软件对象1010的功能可以集成到硬件外围设备A-B之一 (例如,外围设备A)的“代码ROM”中。这样,监督对象将外围设备BIOS 1002A之一功能性地转变到与其它BIOS 1002 B-N相互作用的主BIOS中,所述其它BIOS 1002 B-N与外围设备应用程序1000 B-N的其它实例相关联。这样的转变可以通过在主BIOS 1002A中创建虚拟代码模块1004来实现,其可以配置成生成其它BIOS实例块1002 B-N中的已知入口点地址。在利用主BIOS的实施例中,表2可以不包括用于主BIOS 1002A的代码ROM块和校准ROM块,这是因为它们可以被链接到与主BIOS A相关联的外围设备应用程序1000A中。 外围设备应用程序1000和其相关联的BIOS 1002可以在构建过程中通过链接器(未示出) 将它们一起构建为单一模块而链接。这可以通过强制使非主BIOS (S卩,1002B)的功能入口地址为存储器区内包含调用函数的已知位置来实现。仅包含用于非主BIOS函数的地址但没有可执行代码的虚拟代码模块1004然后可以链接到主BIOS 1002A中。这种连接的一个优点在于全部调用都是直接的,并且比使用跳转表1001更快,但是跳转表1001也可以被使用。现在返回到对方法300的描述,在过程360中,代码ROM A和代码ROM B被进一步分区为存储器块。这些地址在编译时都是绝对且已知的。表3A示出了在一些实施例中所用的分区,其中假定存在监督软件对象1010。这样,代码ROM A和代码ROM B的底部可以被进一步分区。
权利要求
1.一种用于配置处理器的方法,用于在不改变被设计成驱动单个外围装置的外围设备应用程序的情况下操作多个外围装置,所述方法包括为所述多个外围装置中的每个外围装置复制所述外围设备应用程序的一个实例以及相关联的基本输入/输出系统(BIOS);将存储装置分区成包括一个或多个存储块的多个区,所述外围设备应用程序的每个实例及其相关联的BIOS与一个区相关联;保留额外的存储区用于储存数据指针,每个数据指针与所述多个外围装置的一个外围装置及BIOS相关联,所述数据指针配置成用于在所述多个外围装置之间进行上下文切换; 以及初始化所述多个外围装置的每个外围设备应用程序以及相关联的BIOS。
2.如权利要求1所述的方法,其中,与所述外围设备应用程序的每个实例相关联的一个或多个存储块中的每一个都包括用于每个BIOS的特定BIOS函数的入口点地址,所述每个BIOS与所述多个外围装置的一个外围装置相关联。
3.如权利要求1所述的方法,其中,与所述多个外围装置的每个外围装置有关的每个 BIOS经由共用操作数据链接在一起,所述共用操作数据位于已知的存储器地址处,所述已知的存储器地址位于存储器的一个或多个块内。
4.如权利要求1所述的方法,其中,所述分区步骤进一步包括将易失性存储器分区成与所述多个外围装置的一个外围装置相关联的区;以及将非易失性存储器分区成与所述多个外围装置的一个外围装置相关联的区。
5.如权利要求4所述的方法,其中,所述易失性存储器的区和所述非易失性存储器的区的地址在编译时是绝对且已知的。
6.如权利要求4所述的方法,其中,用于存储与所述多个外围装置的每个外围装置有关的数据指针的存储器地址的每个区是所述易失性存储器的一部分,并且在编译时是绝对且已知的。
7.如权利要求1所述的方法,其中,对所述多个外围装置中的每一个进行初始化的步骤进一步包括将与所述多个外围装置中的每一个有关的数据指针加载和存储到用于存储数据指针的存储器地址的区中;以及对与所述多个外围装置中的每个外围装置相关联的外围设备应用程序的一个或多个控制特征进行初始化。
8.一种逻辑装置,所述逻辑装置配置成同时执行外围设备应用程序的多个实例,所述逻辑装置包括逻辑控制单元;以及与所述逻辑控制单元通信的存储器,其中所述存储器被分区成多个区,所述多个外围设备应用程序实例中的每个实例及其相关联的基本输入/输出系统(BIOS)与一个区相关联,并且额外的区被保留用于存储与所述多个外围设备应用程序中的每个外围设备应用程序及其有关的BIOS相关联的数据指针。
9.如权利要求8所述的逻辑装置,其中,所述数据指针配置成用于在所述多个外围设备应用程序的每个实例之间进行上下文切换。
10. 一种计算机可读存储介质,所述计算机可读存储介质配置成存储指令,当由计算装置执行时,所述指令执行下述步骤为多个外围装置中的每个外围装置复制外围设备应用程序的一个实例和BIOS ; 复制多个外围装置的每个外围装置的基本输入/输出系统(BIOS); 将存储装置分区成包括一个或多个存储块的多个区,所述外围设备应用程序的每个实例与一个区相关联;通过创建主BIOS内的虚拟代码将所述多个BIOS中的一个BIOS改变成所述主BIOS,所述虚拟代码配置成生成非主BIOS块中的已知入口点地址;保留存储器地址的区,用于存储与多个外围装置中的每个外围装置有关的数据指针, 所述数据指针配置成用于在所述多个外围装置之间进行上下文切换;以及初始化所述多个外围装置中的每一个。
全文摘要
提供了增强硬件外围装置的BIOS以同时管理多个外围装置而不修改外围装置的应用程序软件的方法和设备。设备包括逻辑控制单元和与其通信的存储器。存储器被分区成多个区,每个区包括一个或多个存储块,外围设备应用程序的每个实例与一个区相关联,且一个区被保留用于存储与多个外围设备应用程序中的每一个有关的数据指针。逻辑控制单元配置成通过复制多个外围装置中的每个所用的一个外围设备应用程序的实例并且将存储装置分区成包括一个或多个存储块的分区来操作控制应用程序的多个实例,其中外围设备应用程序的每个实例与一个分区相关联。然后,该方法保留一个区的存储器地址用于存储与多个外围装置中每一个有关的数据指针,并且初始化多个外围装置中的每一个。
文档编号G06F13/10GK102236615SQ20111010837
公开日2011年11月9日 申请日期2011年4月28日 优先权日2010年4月28日
发明者R·M·兰索姆 申请人:通用汽车环球科技运作有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1