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

对针对设备的设备驱动程序的验证

文献发布时间:2023-06-19 11:45:49


对针对设备的设备驱动程序的验证

技术领域

本发明涉及用于验证(鉴定资格,Qualifizieren)针对设备的设备驱动程序的方法、具有指令的计算机程序和装置。

背景技术

在许多应用领域中,需要针对设备驱动程序的鲁棒性/健壮性来检查设备驱动程序,即,验证设备驱动程序。为此,常常遵循硬件在环(Hardware-in-the-Loop)测试方法,特别是在汽车工业中。硬件在环在此表示一种方法,其中系统通过其输入端和输出端被连接到匹配的配对件上,该配对件用作系统的真实环境的复制系统。验证的一部分通常是对很少发生的情况,即,对所谓的极端情况进行的测试以及借助故障注入进行测试。为此,需要借助于诸如脉冲发生器、示波器或物理设备的模拟器之类的电气设施来引起为设备驱动程序所配备的设备中的故障。此外,可能需要在极端条件下在气候室中运行该设备,以便能够测试很少发生的情况。这种方法的缺点是,必须准备昂贵的设施。此外,测试是费时的。

发明内容

因此本发明的目的是,提供一种用于验证针对设备的设备驱动程序的改进的解决方案。

该目的通过具有权利要求1的特征的用于验证针对设备的设备驱动程序的方法、通过具有权利要求11的特征的具有指令的计算机程序以及通过具有权利要求12的特征的用于验证针对设备的设备驱动程序的装置来实现。本发明的优选实施例是从属权利要求的主题。

根据本发明的第一方面,一种用于验证针对设备的设备驱动程序的方法包括以下步骤:

-执行对设备驱动程序的测试;

-通过设备模拟器/仿真器模拟设备在预给定的条件下的行为;以及

-由设备模拟器执行对至少一种很少发生的情况的测试或故障注入。

根据本发明的另一方面,一种计算机程序包括指令,所述指令在被计算机执行时使计算机执行以下步骤以用于验证设备驱动程序:

-执行对设备驱动程序的测试;

-通过设备模拟器模拟设备在预给定的条件下的行为;以及

-由设备模拟器执行对至少一种很少发生的情况的测试或故障注入。

在此,术语计算机应广泛地理解。具体地,计算机还包括工作站和其他基于处理器的数据处理装置。

计算机程序例如可以被提供用于电子调用或被存储在计算机可读存储介质上。

根据本发明的另一方面,一种用于验证针对设备的设备驱动程序的装置包括:

-测试模块,其被配置成执行对设备驱动程序的测试;和

-设备模拟器,其被配置成模拟设备在预给定的条件下的行为,以及执行对至少一种很少发生的情况的测试或故障注入。

在根据本发明的一种解决方案中,为设备提供设备模拟器,其中应验证该设备的设备驱动程序,该设备模拟器模拟专用设备或设备行为。这些设备模拟器被实现为可执行文件,并可以代替实际硬件来使用。设备模拟器可以模拟在正常条件下在实际设备中仅很少发生的设备行为。设备模拟器因此允许测试设备驱动程序在特定条件下的行为,并且因此支持对很少发生的情况的测试和故障注入测试,如果这种情况是可能的话,则不必在极端条件下通过实际硬件执行测试。在本发明的解决方案中,在模拟器中——即基于相应的程序,而不是由环境或电气设施强制地——模拟对设备定时和设备功能的影响。因此,可以省去相应的电气设施或气候室。因此,根据本发明的解决方案纯粹基于软件。另一优点在于,可以在较短的时间内执行明显更多的测试,这是因为在软件中描绘的模拟器的时间响应特性、例如数据处理可以比实际设备快许多倍。此外,该方法可以在可自动化的测试流程中进行。

所描述的方法允许执行所有必要的测试来验证设备驱动程序,如在MCAL(MCAL:Microcontroller Abstraction Layer、微控制器抽象层)[1]、用于Linux[2]或一般用于设备操作的操作系统的板级支持包中所使用的测试。

根据本发明的一个方面,设备模拟器模拟符合可应用于设备的标准的设备行为。设备模拟器如此设计,使得设备符合标准地工作,也就是说,如在可应用于设备的标准中所规定的那样工作。这种标准的一个例子是JEDEC 5.1[3]。由于实际的设备必须满足相应标准的要求,所以这种方法足以模拟真实设备的行为。然而,在设备驱动程序的随后使用中可能发生设备不像在测试期间的情况那样表现,例如因为在实际使用中发生设备的过热,这在实验室中不是测试的组成部分。然而,这种与符合标准的行为的偏差随后会对设备供应商造成负担,但这不是设备驱动程序的责任。

根据本发明的一个方面,设备模拟器模拟环境影响对设备的影响/作用。除了对很少发生的情况的测试和故障注入测试之外,设备模拟器可用于在不断变化的环境条件——例如不同的环境温度——下更普遍地模拟设备行为。这样,设备驱动程序可以适合于设备的整个指定的运行范围。

根据本发明的一个方面,设备模拟器是虚拟化环境的组成部分。虚拟化环境可以例如是管理程序/虚拟机监视程序(hypervisor)。除了使用设备模拟器之外,根据本发明的解决方案的另一方面是合适的虚拟化环境,例如由QEMU[4]或EB corbos Hypervisor[5]提供的虚拟化环境。本发明的解决方案允许基于管理程序的处理器虚拟化和设备模拟的合并。以这种方式以软件在环测试的形式实现验证测试。

根据本发明的一个方面,虚拟化环境在虚拟地址与物理地址之间进行关联。虚拟化环境能够以透明的方式操纵虚拟地址与物理地址的关联,并且因此使得设备驱动程序能够与设备模拟器透明地关联。因此,设备驱动程序保持隐藏,以使得该设备驱动程序耦合到另外的软件组件并且不与实际设备或不与软件组件通信。换句话说,输入/输出存储器不是由在固定地址处具有自己的输入/输出存储器的设备来操作,而是由模拟器来操作。设备模拟器又可以在接收到设备驱动程序的操作序列时回送任意预期的故障状态。

上述说明的目的在于要被测试的设备驱动程序通常被嵌入在操作系统中,诸如Linux、QNX[6]、Autosar OS、FreeRTOS[7]等,或者直接被嵌入到虚拟化环境中。因此,根据本发明的一个方面,设备驱动程序不必一定是包括模拟器的虚拟化环境的直接部分。设备驱动程序也可以在外部运行,例如作为上述操作系统之一的一部分。这在测试运行期间和在测试运行之外应当是相同的。这种在虚拟化环境外部的、具有或不具有自己的操作系统的软件现在可以自身集成到虚拟化环境中。在这种情况下,在虚拟化环境的意义上,将具有虚拟机的设备驱动程序称为容器对象,该设备驱动程序是所谓的访客操作系统的一部分并且被视为所谓的虚拟机的组成部分。

另选地,设备驱动程序和必要时其操作系统也可以在虚拟化环境之外运行。与上述方案相反,在此,设备驱动程序及其相关操作系统在计算单元上运行,该计算单元不在虚拟化环境的控制之下。但是,在设备驱动程序或其操作系统的这种所谓的裸机运行(Bare-Metal-Betrieb)中,必须相应地配置设备驱动程序的操作系统和虚拟化环境,使得公共的输入/输出存储器和要使用的信号是唯一的或一致的。

然而,下面根据本发明的解决方案的描述集中在第一种方案,即设备驱动程序是虚拟机的组成部分或者直接集成到虚拟化环境中,这与后面在验证后的使用完全一样。外部运行的方案相应类似地处理。

根据本发明的一个方面,设备驱动程序直接嵌入到虚拟化环境中。设备驱动程序不必一定是诸如访客操作系统之类的虚拟机的一部分。在此,如果要运行的设备同时由多个访客操作系统使用,并且该设备本身不具有虚拟化支持系统,则需要以软件实现虚拟化功能。在此,通过嵌入到虚拟化层中的设备驱动程序来实现真正的设备访问。这要求虚拟机及其访客操作系统使用相应地适配于虚拟化层的设备驱动程序。这种驱动程序在下面被称为具有虚拟化能力的设备驱动程序。

因此,带有具有虚拟化能力的驱动程序的测试结构不仅包括原始设备驱动程序、即实际驱动物理设备的驱动程序的能力,而且包括虚拟机中具有虚拟化能力的设备驱动程序及其在虚拟化层中的配对件的测试。

根据本发明的一个方面,设备模拟器用作被模拟的设备的前端。该方案具有如下优点:例如简化了系统的启动,特别是访客操作系统的启动,这是因为在软件中设计的模拟器的时间响应特性可以比实际的设备快得多。

附图说明

结合附图,从以下描述和所附权利要求中明确本发明的其他特征。

图1示意性地示出了用于验证针对设备的设备驱动程序的方法;

图2示意性地示出了用于验证针对设备的设备驱动程序的装置的第一实施方式;

图3示意性地示出了用于验证针对设备的设备驱动程序的装置的第二实施方式;

图4示出了根据本发明的解决方案的一个实施方式,其中,设备驱动程序是访客操作系统的一部分;

图5示出了根据本发明的解决方案的一个实施方式,其中,设备驱动程序是虚拟化环境的一部分;以及

图6示出了根据本发明的用于验证针对设备的设备驱动程序的示意图。

具体实施方式

为了更好地理解本发明的原理,下面借助附图对本发明的实施方式进行详细说明。相同的附图标记在附图中用于相同的或起相同作用的元件并且不必对于每个附图重新描述。不言而喻,本发明不局限于所示的实施方式,并且所描述的特征也可以组合或修改而不脱离如在所附权利要求中所限定的本发明的保护范围。

图1示意性地示出了用于验证针对设备的设备驱动程序的方法。在启动10测试环境之后,执行11对设备驱动程序的测试。在此,设备模拟器模拟12设备在预给定的条件下的行为。在此,优选地模拟12设备行为,该设备行为符合可应用于该设备的标准。特别是也可以模拟环境影响对设备的影响。在测试期间,设备模拟器执行13对至少一种很少发生的情况的测试或故障注入。设备模拟器可以是虚拟化环境、例如管理程序的一部分。虚拟化环境在此进行虚拟地址与物理地址之间的关联。设备模拟器还可以用作被模拟的设备的前端。设备驱动程序可以是虚拟化环境的组成部分,或者可以被集成到在虚拟化环境中运行的访客操作系统中。

因此,根据上述实施例,测试系统的软件部分包括设备驱动程序、设备模拟器、例如为管理程序形式的虚拟化层、虚拟化层的应用程序以及必要时还包括一个或多个访客操作系统。

图2示出了用于验证针对设备的设备驱动程序的装置20的第一实施方式的简化示意图。装置20具有输入端21,通过该输入端可以接收数据,例如要验证的设备驱动程序。测试模块22被配置为执行对设备驱动程序的测试。设备模拟器DE被配置成在测试期间模拟设备在预给定的条件下的行为并且执行对至少一种很少发生的情况的测试或故障注入。在此,设备模拟器DE优选地配置成模拟符合可用于该设备的标准的设备行为。特别地,设备模拟器DE还能够模拟环境影响对设备的影响。设备模拟器DE可以例如在处理器23上运行。该设备模拟器可以特别是虚拟化环境的组成部分,例如管理程序的组成部分。虚拟化环境在此进行虚拟地址与物理地址之间的关联。设备模拟器DE还可以用作被模拟的设备的前端。设备驱动程序也可以是虚拟化环境的组成部分。所确定的测试结果可以经由装置20的输出端26输出。

测试模块22和处理器23可以由控制单元24控制。通过用户接口27在必要时可以改变测试模块22、处理器23或控制单元24的设置。出现在装置20中的数据可以在需要时存储在装置20的存储器25中,例如用于随后的分析或者由装置20的部件使用。测试模块22、处理器23以及控制单元24可以作为专用的硬件、例如作为集成电路实现。但是,当然,测试模块、处理器以及控制单元也可以部分地或完全地组合,例如组合在GPU或CPU中。输入端21和输出端26可以被实现为单独的接口或被实现为组合的双向接口。

图3示出了用于验证针对设备的设备驱动程序的装置30的第二实施方式的简化示意图。装置30包括处理器32和存储器31。例如,装置30是计算机或图形芯片。存储器31中存储有指令,该指令在被处理器32执行时使装置30执行根据所描述的方法之一的步骤。因此,存储在存储器31中的指令体现为能够由处理器32执行的程序,该程序实现根据本发明的方法。装置30具有用于接收信息的输入端33。由处理器32生成的数据经由输出端34提供。此外,该数据可以存储在存储器31中。输入端33和输出端34可以被组合为双向接口。

处理器32可以包括一个或多个处理器单元,例如微处理器、数字信号处理器或其组合。

所描述的装置的存储器25、31既可以具有易失性存储区域也可以具有非易失性存储区域,并且可包括各种存储设备和存储介质,例如硬盘、光学存储介质或半导体存储器。

图2和图3示出了测试系统的黑匣子视图,即,在此抽象化了测试系统的软件部分的具体构造。

图4和图5现在涉及测试系统的软件部分的具体构造,该软件部分包括设备驱动程序、设备模拟器、例如为管理程序形式的虚拟化层、虚拟化层的应用程序、必要时还包括一个或多个访客操作系统及其可虚拟化的设备驱动程序。

图4示出了本发明解决方案的一个实施方式,其中设备驱动程序DuT是在虚拟机VM中在虚拟化层上运行的访客操作系统OS的组成部分。测试脚本TS由访客操作系统OS执行。待验证的设备驱动程序DuT在访客操作系统OS的地址空间中运行,也就是说,在由虚拟化环境为访客在工作存储器中预留的区域中运行。在那里还可以运行针对非虚拟化的另外的设备WG的、另外的设备驱动程序D,这些另外的设备驱动程序不是验证的主题。在此,根据本发明的解决方案不限于完全虚拟化的操作系统。就是说,访客还可以在虚拟化层旁边的其自身的合适硬件上运行,并且通过存储器和信号与该虚拟化层通信。

图4示出了一般情况,其中设备驱动程序DuT是访客操作系统OS的核心或内核的一部分,因此在访客的内核空间中运行。因此,根据本发明的解决方案也涉及这样的结构,其中,设备驱动程序DuT也在访客操作系统的所谓的用户空间中执行,这在下面没有明确地讨论,但也可以被采用。

用于待验证的设备驱动程序DuT的设备模拟器DE是虚拟化环境HV的组成部分,在该示例中是管理程序的组成部分,并且因此在访客操作系统OS的由虚拟化环境HV规定的地址范围中运行。该图示再次示出了常见的情况,其中模拟器DE在其自身的地址空间中作为用户地址空间的组成部分被实施。如在访客操作系统OS的情况下那样,在此也可能的是,设备模拟器DE被嵌入到虚拟化环境HV的核心的地址空间、HV内核空间中。该图示与上述类似并且与所使用的虚拟化环境HV有关。对于模拟器DE在虚拟化环境HV的地址空间内被实施的情况,未被明确地说明,但是可以另选地实施。

对于所有由未被测试的设备WG和设备驱动程序D形成的配对来说,可以将设备WG直接映射到访客操作系统OS的相应地址空间中,这也被称为设备透传(device-passthrough)。在设备透传的情况下,将设备WG递送给访客。对于这些另外的设备WG,除了中断处理之外,行为实际上就像虚拟化环境HV或管理程序不存在一样。

相反,对于待验证的设备驱动程序DuT,设备模拟器DE被映射到访客操作系统OS的地址空间中,就是说,访客和模拟器DE通过公共的输入/输出存储器通信。这允许简单地注入预期的设备行为或者例如故障。在此,设备模拟器DE或者反映物理设备G的完整行为,或者用作相应设备G的前端。

模拟器DE和设备G的组合在以下情况下是有意义的:如果模拟器DE不覆盖设备G的完整的行为范围或者设备G必须回送对于系统行为重要的数据,例如在访客操作系统OS的启动过程期间所需的程序数据或者不能由模拟器DE产生的复杂计算结果等。

图5示出了本发明解决方案的一个实施方式,其中待验证的设备驱动程序DuT是虚拟化环境的组成部分。在其他方面,该结构类似于图4的结构,设备模拟器DE也可以在此用作设备G的前端或完全模拟该设备的行为。如前所述,设备模拟器DE可以被映射到设备驱动程序的地址空间中,并且可以由设备模拟器DE注入故障。与图4不同,具有虚拟化能力的设备驱动程序DV在访客操作系统中运行,而其包括真实设备驱动程序DuT的配对件在虚拟化环境HV的用户空间中运行。因此,虚拟化环境的设备驱动程序本身可以针对模拟器DE进行测试,并且可以由访客操作系统OS促起设备G的实际的使用行为。

因此,原则上在该结构中测试设备驱动程序,所述设备驱动程序假定,其在物理上具有设备G、设备驱动程序DuT和设备驱动程序DV,该设备驱动程序DuT和设备驱动程序DV特别是为了在访客操作系统中的使用而具有相应的虚拟化支持系统。后一个设备驱动程序DV已经在上面作为具有虚拟化能力的设备驱动程序DV而被引入。在虚拟机中使用虚拟化驱动程序DV具有以下优点,即,可以从上面通过软件如在真实运行中那样模拟设备使用,也就是说可以启动设备G的真实的应用情况。

图4和图5因此示出了测试结构的两个示例,其中,待测试的设备驱动程序被集成在不同的位置。但是,原则上对于根据本发明的解决方案来说无关紧要的是,设备驱动程序是在虚拟机中作为访客操作系统的核心的一部分、作为访客操作系统的用户空间的一部分,还是在虚拟化环境中被执行。设备驱动程序在集成到虚拟化环境中的情况下是在虚拟化环境的核心还是在虚拟化环境的用户空间中运行并不重要。

除了在图4和图5中所示的使用类别之外,还可以区分另一类别。该类别说明了,使用本身具有内置虚拟化支持系统的设备。对此的示例是GPU或其他以硬件实现的计算加速器。在这种情况下,设备驱动程序在访客操作系统中被设计为,该设备驱动程序能够独立地并且与其他访客操作系统同时使用该设备。该设备本身能够处理多个客户端。因此从访客操作系统中的设备驱动程序的角度来看,看起来如同设备被设备驱动程序独占地使用。在此对于设备驱动程序也看起来如同设备驱动程序在物理上具有设备。因此,在这种情况下,也可以针对模拟器测试设备驱动程序,因为在此设备驱动程序结束时也总是仅访问分配给设备驱动程序的输入/输出存储器。无论是由真实的设备还是模拟器来操作该输入/输出存储器,模拟器在此也是透明的。因此,该结构也允许测试如下的设备驱动程序,该设备驱动程序被实施用于具有内置虚拟化支持系统的设备。对于模拟器无关紧要的是,模拟器相对于如下的设备驱动程序运行,无论该设备驱动程序是针对具有还是针对不具有虚拟化支持系统的设备来实现的,以及无论设备驱动程序是被嵌入访客操作系统中还是直接嵌入虚拟化层中。

图6示出了根据本发明的对针对设备的设备驱动程序进行验证的示意图。设备驱动程序DuT在此是操作系统或访客操作系统OS的组成部分。设备模拟器DE和故障注入测试或测试场景在虚拟化环境HV中实现。虚拟化环境HV和访客操作系统OS被配置为使得设备——对于该设备要验证设备驱动程序DuT——和设备模拟器DE被映射到相同的物理地址。对于访客操作系统中的可能的其他设备WG可以实现设备透传。但是另选地,也可以进行其他设备的模拟。在该图示中,访客操作系统OS是虚拟化环境HV的一部分还是运行在不由虚拟化环境HV控制的其自身的计算单元上的裸机并不重要。

为了使测试自动化,以应用软件AS的形式提供测试环境,例如作为Jenkins[8]的组成部分,等等。在测试期间,应用软件AS以及操作系统OS和虚拟化环境HV可以创建测试过程的协议P,可以在测试完成后对该测试过程进行评估。当然,图6中的示意图也可以在没有设备模拟器DE的情况下被使用,以便使设备本身经受应力测试。测试本身可以作为脚本在访客操作系统OS上执行,例如作为使用配置文件(Nutzungsprofile)。被模拟的预期行为、例如故障行为或正确的行为存储在模拟器DE中或在模拟器DE中执行。相反,在使用模拟器DE时不需要实际存在设备G。为此模拟器DE必须能够模仿设备G的整个输入/输出特性。如果既使用设备G又使用模拟器DE,则可以实现混合形式,这同样也可以是有利的。

参考文献:

[1]https://www.autosar.org

[2]https://en.wikipedia.org/wiki/Board_support_package

[3]https://www.jedec.org

[4]https://www.qemu.org

[5]https://www.elektrobit.com/products/ecu/eb-corbos/hypervisor/

[6]https://blackberry.qnx.com/de

[7]https://www.freertos.org/

[8]https://jenkins.io/

相关技术
  • 对针对设备的设备驱动程序的验证
  • 针对慢速的数字证书验证设备缓存其验证结果的加速方法
技术分类

06120113047875