首页> 中国专利> 用于检测微控制器中的潜在故障的方法和系统

用于检测微控制器中的潜在故障的方法和系统

摘要

本发明涉及用于检测微控制器中的潜在故障的方法和系统。实施例涉及用于检测对相同的输入数据进行操作的CPU内的寄存器出错的系统和方法,其能够实现不同CPU的寄存器中的至少一组相应寄存器的内容的非侵入性读访问和比较以按照具有不一致的内容的相应寄存器的形式检测出错的寄存器。

著录项

  • 公开/公告号CN103473153A

    专利类型发明专利

  • 公开/公告日2013-12-25

    原文格式PDF

  • 申请/专利权人 英飞凌科技股份有限公司;

    申请/专利号CN201310220189.0

  • 发明设计人 S.布鲁尔顿;N.S.哈斯蒂;

    申请日2013-06-05

  • 分类号G06F11/16(20060101);

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人王岳;刘春元

  • 地址 德国瑙伊比贝尔格市坎芘昂1-12号

  • 入库时间 2024-02-19 22:05:54

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-12-07

    授权

    授权

  • 2014-01-22

    实质审查的生效 IPC(主分类):G06F11/16 申请日:20130605

    实质审查的生效

  • 2013-12-25

    公开

    公开

说明书

技术领域

本发明一般地涉及一种用于检测微控制器中的潜在故障的方法和系统,具体地讲,涉及一种用于检测由潜在故障导致的微控制器寄存器的出错(corruption)以避免微控制器(例如,汽车电子控制单元(ECU)中的高完整性微控制器)的意外操作的方法和系统。

背景技术

存在这样的趋势:现代汽车ECU集成越来越多的功能。一方面,这种趋势由技术进步推动,技术进步能够实现不断增加的集成水平。此外,汽车工业的高度成本驱动的本质也迫使开发者减少每辆汽车的ECU的总数。

在这种情况下,电子设备在提供高级驾驶辅助功能时起到越来越多的作用,所述高级驾驶辅助功能具体地有助于防止危险并且减少致命伤害的数量。

ECU里面的辅助功能的集成主要集中于通过托管关键的计算和控制功能而起到决定性作用的多CPU微控制器。这种多CPU微控制器可被视为具有定义的并且封装的任务的计算节点的群集。

在这种假设下 - 即与各种辅助功能相关的多个关键的计算和控制功能由同一多CPU微控制器执行 - 潜在故障的早期检测是待解决的主要问题以避免多CPU微控制器的操作实际受到影响的问题。

这种错误的典型起因可能是由可被概括为潜在故障的效应(诸如,阿尔法粒子撞击、电源尖峰等)导致的CPU寄存器的出错。结果,当接下来使用寄存器内容时,任何这种出错将会导致CPU的意外操作。这基于这样的事实:典型CPU包含保存确定它的未来操作的CPU的当前状态的许多寄存器。因此,实施例针对一种用于在由CPU使用出错的寄存器之前检测到这些寄存器的方法和系统。

此外,CPU寄存器可以是对于在CPU上运行的程序而言可见的架构寄存器,或者可以是由CPU用来控制操作但对于程序而言不可见的“隐藏”寄存器,例如分支预测表中的寄存器。

因为这两种类型的寄存器都可看见访问之间的长时间段(在该长时间段期间它们容易出错),所以对应CPU对潜在故障的敏感性增加。

用于检测出错的寄存器的典型解决方案包括下面的解决方案。第一已知方案基于由在CPU上运行的程序读出在架构上可见的寄存器并比较该值与保存在系统中别处的已知良好值。这需要已知良好值是可用的。然而,对于动态更新的寄存器,这种值可能不可用。

这种解决方案的另一问题在于:使程序读出架构状态是侵入性的,并且将会消耗CPU资源来执行。此外,隐藏寄存器通常对于程序而言是不可见的,因此不能被比较。

第二已知解决方案基于使用至少两个锁步的CPU。锁步的CPU允许在出错导致两个CPU的操作不同时检测到这种出错。然而,可能仅在出错实际发生之后的某一时间可检测到这种不同的操作,于是,对于系统而言可能太晚以致不能从这种出错恢复。

由于这些或其它原因,需要本发明。

发明内容

如权利要求中更完整所述,基本上如至少一个附图中所示和/或如结合至少一个附图所述,提供一种用于检测微控制器中的潜在故障的方法和系统。

通过下面参照附图进行的详细描述,实施例的另外的特征和优点将会变得清楚。

附图说明

附图被包括以提供进一步理解,并且被包括在本说明书中并构成本说明书的一部分。附图涉及例子和实施例并与描述一起用于解释本发明的原理。其它实施例和实施例的许多预期优点将会被容易地理解,因为它们通过参照下面的详细描述而变得更好理解。

图1示出用于检测潜在故障的两个锁步的CPU中的CPU状态寄存器扫描的系统的实施例;

图2示出用于检测对相同的输入数据进行操作的冗余CPU的寄存器出错的方法的实施例。

具体实施方式

在下面的“具体实施方式”中,参照附图,附图形成“具体实施方式”的一部分,并且在附图中作为说明而示出特定实施例。应理解,在不脱离本发明的范围的情况下,可使用其它实施例并且可做出结构或其它改变。因此,不应在限制性的意义上进行下面的详细描述,并且本发明的范围由所附权利要求定义。

在下面,为了说明目的,将参照汽车电子控制单元中的微控制器描述本发明。然而,本发明不限于此,并且可结合微控制器的任何其它类型的故障检测找到它的应用。

关于多CPU或多核微控制器的一个问题是系统完整性。系统完整性的前提在于:在潜在错误可能使多CPU或多核微控制器的进一步操作出错之前,检测到潜在错误。

对于高完整性安全微控制器,关于系统完整性的现有技术的状态是对于计算群集使用双工系统,也称为两个CPU的锁步执行。CPU的锁步执行描述这样的事实:例如,两个CPU执行被延迟例如两个时钟周期的相同过程以缓解共因失效。

因此,在以上例子中的第一锁步CPU中的错误的情况下,也存在用于检测该错误的至少两时钟周期延迟。这是由这样的事实所引起的:通常通过比较第二锁步CPU的因此延迟两个时钟周期的输出与第一锁步CPU的延迟的输出来检测错误。然而,同时,直至检测到错误,对于锁步CPU的系统而言可能太晚以致不能从CPU寄存器的出错恢复。

因此,实施例涉及一种用于优选地在CPU或微控制器中的状态寄存器出错影响CPU或微控制器的进一步操作之前并且在不干扰CPU或微控制器的正常操作的情况下检测这些出错的新颖的系统和方法。

当前,汽车ECU通常以这种方式设置,即关键错误导致进入失效安全模式。然而,在这种情况下,几乎未定义再次进入正常模式的过程。换句话说,错误恢复现今刚处于定义中。

由于上述驾驶辅助功能的实际复杂性通常反映在支持软件的复杂性中,所以迄今为止在研究和开发方面未关注对应的微控制器架构及其例如通过潜在故障的早期检测来支持错误恢复的能力。因此,现今没有电路可用来在实际应用中允许在CPU状态寄存器出错影响CPU的进一步操作之前检测到它们。

因此,实施例包括一种适应于允许以非侵入性方式读多CPU微控制器的架构寄存器和隐藏寄存器的系统和方法。读访问的结果可被传送到输出以用于例如在锁步的系统中的比较。为了这个目的,实施例可包括位于多CPU微控制器中的每个CPU中的内部总线系统,允许读每个寄存器(即,架构寄存器和隐藏寄存器)。

在一个实施例中,每个寄存器可在内部总线上被给予独一无二的访问地址,并且可在不扰乱多CPU微控制器的状态或者不干扰多CPU微控制器的正常操作的情况下读每个寄存器。

程序装置可用于依次读每个寄存器并把结果放在专用CPU扫描输出上。多CPU微控制器可被用在锁步的系统中,并且扫描输出可被与锁步的一对CPU中的对应CPU上的相同扫描输出进行比较。

程序装置可用于反复地扫描多CPU微控制器的寄存器,允许在寄存器的进一步使用导致系统失效之前发现潜在故障。扫描寄存器的速度可变化以平衡访问频率与功耗和失效反应时间。在一个实施例中,与多CPU微控制器的非关键寄存器相比,可更频繁地读关键寄存器。

如前所示,通常在由诸如延迟的双工系统中的至少一个第二CPU进行的相同输入信号的延迟的处理的基础上以及在第一CPU和所述至少一个第二CPU的合适的输出信号的随后比较的基础上执行这种错误检测以产生对应的错误信号。

图1示出用于检测潜在故障的两个锁步的CPU中的CPU寄存器扫描的系统的实施例。在这个系统中,第一CPU 110包括:第一CPU状态寄存器111、第二CPU状态寄存器112、第三CPU状态寄存器113和第n CPU状态寄存器119。在图1中的实施例的情况下,所有CPU寄存器被称为“CPU状态寄存器”。然而,虽然在更广泛的意义上CPU的所有寄存器的特征在于它的当前状态,但在严格意义上一些上述状态寄存器不需要是“CPU状态”寄存器。

如前所示,CPU状态寄存器111、112、113、119中的任何一个可以是对于在第一CPU 110上运行的程序而言可见的架构寄存器,或者可以是由第一CPU 110用来控制它的操作但对于程序而言不可见的“隐藏”寄存器。

在任何情况下,可通过非侵入性读总线的地址总线部分114上的独一无二的寄存器地址访问CPU状态寄存器111、112、113、119中的每一个。响应于这种访问,CPU状态寄存器111、112、113、119中的对应一个可经由非侵入性读总线的数据总线部分116把它的数据内容发送给第一CPU 110的专用CPU扫描输出118。在一个实施例中,非侵入性读总线可包括位于第一CPU 110内的单独总线,该单独总线使得能够在不影响第一CPU 110的状态或者不干扰第一CPU 110的正常操作的情况下访问CPU状态寄存器111、112、113、119。

如同图1的实施例中一样,位于第一CPU 110内的程序装置115可用于依次读第一CPU 110的第一CPU状态寄存器111、第二CPU状态寄存器112、第三CPU状态寄存器113和第n CPU状态寄存器119中的每一个,并把结果放在第一CPU 110的专用CPU扫描输出118上。此外,在一个实施例中,程序装置115可配置为改变访问第一CPU 110的第一CPU状态寄存器111、第二CPU状态寄存器112、第三CPU状态寄存器113和第n CPU状态寄存器119的频率或顺序以平衡CPU状态寄存器111、112、113、119中的或多或少关键的状态寄存器之间的访问频率和失效反应时间。

另外,图1中的实施例包括与第一CPU 110一起在锁步模式下操作的第二CPU 190。换句话说,第二CPU 190提供对与第一CPU 110相同的输入数据进行操作的冗余CPU以便能够实现第一CPU 110和第二CPU 190的各组相应寄存器的内容的比较以检测出错的寄存器内容。

第二CPU 190包括:第一CPU状态寄存器191、第二CPU状态寄存器192、第三CPU状态寄存器193和第n CPU状态寄存器199。

此外,关于第二CPU 190,CPU状态寄存器191、192、193、199中的任何一个可以是对于在第二CPU 190上运行的程序而言可见的架构寄存器,或者可以是由第二CPU 190用来控制它的操作但对于程序而言不可见的“隐藏”寄存器。

类似于第一CPU 110,可通过另一非侵入性读总线的地址总线部分194上的独一无二的寄存器地址访问CPU状态寄存器191、192、193、199中的每一个。响应于这种访问,CPU状态寄存器191、192、193、199中的对应一个可经由所述另一非侵入性读总线的数据总线部分196把它的数据内容发送给第二CPU 190的专用CPU扫描输出198。在一个实施例中,所述非侵入性读总线可包括位于第二CPU 190内的单独总线,该单独总线使得能够在不影响第二CPU 190的状态或者不干扰第二CPU 190的正常操作的情况下访问CPU状态寄存器191、192、193、199。

如同图1的实施例中一样,位于第二CPU 190内的另一程序装置195可用于依次读第二CPU 190的第一CPU状态寄存器191、第二CPU状态寄存器192、第三CPU状态寄存器193和第n CPU状态寄存器199中的每一个,并把读结果放在第二CPU 190的专用CPU扫描输出198上。此外,程序装置195可配置为改变访问第二CPU 190的第一CPU状态寄存器191、第二CPU状态寄存器192、第三CPU状态寄存器193和第n CPU状态寄存器199的频率或顺序以平衡CPU状态寄存器191、192、193、199中的或多或少关键的状态寄存器之间的访问频率和失效反应时间。

图1示出比较器150可连接第一CPU 110的专用CPU扫描输出118与第二CPU 190的专用CPU扫描输出198。以这种方法,比较器150可用于比较第一CPU 110和第二CPU 190的各组相应寄存器的内容以检测出错的寄存器内容。例如,第一CPU 110的第一寄存器111的内容可被与第二CPU 190的第一寄存器191的内容进行比较,第一CPU 110的第二寄存器112的内容可被与第二CPU 190的第二寄存器192的内容进行比较,第一CPU 110的第三寄存器113的内容可被与第二CPU 190的第三寄存器193的内容进行比较,并且第一CPU 110的第n寄存器119的内容可被与第二CPU 190的第n寄存器199的内容进行比较。作为用于潜在故障的检测的这种过程的一部分,第一CPU 110的专用CPU扫描输出118的端口可被与第二CPU 190的专用CPU扫描输出198的对应的锁步端口进行比较。

为了这个目的,第一CPU 110和第二CPU 190可在锁步的系统中操作。即,第二CPU 190可执行被延迟例如两个时钟周期的与第一CPU 110相同的过程。以这种方法,第二CPU 190不会以与第一CPU 110相同的方式受到引起寄存器出错的效应影响的可能性增加。

因此,每当利用相同输入数据执行相同过程的锁步的第一CPU 110和第二CPU 190的对应寄存器的上述比较导致相应寄存器的不一致的CPU状态寄存器内容时,CPU状态寄存器可被检测为出错。为了防止CPU状态寄存器的出错影响对应CPU的进一步操作,第一CPU 110和第二CPU 190都可被重置为没有第一CPU 110和第二CPU 190之间的任何寄存器不一致的扫描状态,并被指示重复被执行直至寄存器出错发生的时间点的指令。在替代实施例中,不一致的CPU状态寄存器内容中的正确的CPU状态寄存器内容能够通过三个或更多的锁步的CPU的相应寄存器之间的多数决定而被确定以在对应的一组锁步的CPU上执行任何另外的处理命令之前替代对应CPU状态寄存器中的不正确的CPU状态寄存器内容。

图2示出用于检测对相同的输入数据进行操作(即,对相同的一组指令和数据进行操作)的冗余CPU的寄存器出错的方法的实施例。在该方法的步骤60中,至少两个微控制器可对相同的输入数据进行操作。每个微控制器可包括多个寄存器。

在该方法的步骤61中,可由总线系统读微控制器中的不同微控制器的所述多个寄存器中的至少一组相应寄存器的内容。

此外,在如图2中所示的该方法的可选步骤62中,程序装置可用于确定读所述多个寄存器中的至少两组相应寄存器的顺序。

在如图2中所示的该方法的另外步骤63中,可比较微控制器中的不同微控制器的所述多个寄存器中的至少一组相应寄存器的内容。

在该方法的步骤64中,作为以上比较的结果,可按照具有不一致的内容的相应寄存器的形式检测微控制器的出错的寄存器。

关于与附图相关的上述实施例,强调的是,实施例基本上用于增加可理解性。除此之外,下面的另外的实施例试图表示更一般的概念。然而,也不应在限制性的意义上理解下面的实施例。相反地,如前所示,本发明的范围由所附权利要求定义。

在这个方面,第一实施例涉及一种用于检测对相同的输入数据进行操作的冗余CPU的寄存器出错的系统,该系统包括:单独总线,位于冗余CPU中的每个CPU中,用于以非侵入性方式读冗余CPU中的各CPU的至少一个预定寄存器。这个实施例包括:比较器,用于比较冗余CPU中的不同CPU的至少一组相应寄存器的内容以检测出错的寄存器内容。

一个实施例还包括:程序装置,位于冗余CPU中的每个CPU中,用于确定读所述至少一个预定寄存器的频率和/或读冗余CPU中的各CPU的至少两个预定寄存器的顺序。

在一个实施例中,冗余CPU是锁步的CPU。

在另一实施例中,冗余CPU中的每个CPU中的单独总线配置为以非侵入性方式访问冗余CPU中的各CPU的所有架构寄存器和至少一个隐藏寄存器子集。

在一个实施例中,每个程序装置配置为与不太关键的寄存器相比更频繁地读所述至少一个预定寄存器中的至少一个关键的寄存器。

在另一实施例中,每个程序装置配置为响应于预定事件读所述至少一个预定寄存器中的至少一个关键的寄存器。

另一实施例涉及一种系统,该系统包括对相同的输入数据进行操作的至少两个微控制器。在这个系统中,每个微控制器包括控制微控制器中的各微控制器的操作的多个寄存器。

此外,这个系统包括:总线系统,用于以非侵入性方式读并比较微控制器中的不同微控制器的所述多个寄存器中的至少一组相应寄存器的内容以按照具有不一致的内容的相应寄存器的形式检测出错的寄存器。

在一个实施例中,该系统配置为输出至少一个读访问地址并比较所述至少一个读访问地址与开始由总线系统对所述多个寄存器中的对应一个寄存器的对应非侵入性读访问的访问地址以确保在对应非侵入性读访问期间未发生对应地址字段的出错。

一个实施例还包括:程序装置,用于确定读所述多个寄存器中的至少一组相应寄存器的频率和/或读所述多个寄存器中的至少两组相应寄存器的顺序。

在一个实施例中,程序装置配置为被调节(throttle)以仅微控制器的每第n时钟周期读所述多个寄存器中的至少一组相应寄存器以减少功耗,其中n是预定自然数并且n≥2。

另一实施例包括:比较器,用于比较在微控制器中的不同微控制器的所述多个寄存器中的所述至少一组相应寄存器的内容。在这个实施例中,每个微控制器包括:输出端口,用于输出由总线系统以非侵入性方式读的微控制器中的对应一个微控制器的所述多个寄存器的内容。

此外,根据这个实施例,所述多个寄存器是m位宽,其中输出端口的宽度仅为m/n位宽,这提供比较器的减少的宽度以进一步减少功耗。在这个实施例中,m是预定自然数并且m=n﹒i,并且i是预定自然数并且i≥2。

另一实施例涉及一种用于检测对相同的输入数据进行操作的CPU内的寄存器出错的系统,该系统包括用于不同CPU的寄存器中的至少一组相应寄存器的内容的非侵入性读访问和比较以按照具有不一致的内容的相应寄存器的形式检测出错的寄存器的装置。

在一个实施例中,该装置包括:提供对寄存器的非侵入性读访问的至少一个总线、控制非侵入性读访问的频率和/或顺序的至少一个程序装置和用于寄存器的内容的比较的比较器。此外,在这个系统中,每个CPU包括用于把CPU中的对应一个CPU的寄存器的内容输出到比较器的扫描输出。

在一个实施例中,该系统配置为通过把CPU的多个寄存器分成多个子块来在CPU的每个时钟周期中读并输出所述多个寄存器的内容。

在另一实施例中,该系统配置为根据CPU的应用的需要的失效反应时间改变非侵入性读访问的速度。

另一实施例涉及一种用于检测对相同的输入数据进行操作的冗余CPU的寄存器出错的方法。这种方法包括下述步骤:由位于冗余CPU中的每个CPU中的单独总线以非侵入性方式读冗余CPU中的各CPU的至少一个预定寄存器。

此外,该方法包括下述步骤:由比较器比较冗余CPU中的不同CPU的至少一组相应寄存器的内容以检测出错的寄存器内容。

在该方法的一个实施例中,非侵入性读包括:使用位于冗余CPU中的每个CPU中的程序装置来确定读所述至少一个预定寄存器的频率和/或读冗余CPU中的各CPU的至少两个预定寄存器的顺序。

根据一个实施例,冗余CPU是锁步的CPU。

在一个实施例中,冗余CPU中的每个CPU中的单独总线配置为以非侵入性方式访问冗余CPU中的各CPU的所有架构寄存器和至少一个隐藏寄存器子集。

在另一实施例中,使用程序装置包括:更频繁地读所述至少一个预定寄存器中的至少一个关键的寄存器。

另一实施例涉及一种包括使至少两个微控制器对相同的输入数据进行操作的步骤的方法。在这种方法中,每个微控制器包括控制微控制器中的各微控制器的操作的多个寄存器。

此外,这种方法包括下述步骤:由总线系统以非侵入性方式读并比较微控制器中的不同微控制器的所述多个寄存器中的至少一组相应寄存器的内容以按照具有不一致的内容的相应寄存器的形式检测出错的寄存器。

一个实施例还包括下述步骤:输出至少一个读访问地址并比较所述至少一个读访问地址与开始由总线系统对所述多个寄存器中的对应一个寄存器的对应非侵入性读访问的访问地址以确保在对应非侵入性读访问期间未发生对应地址字段的出错。

在一个实施例中,以非侵入性方式读包括:使用程序装置来确定读所述多个寄存器中的至少一组相应寄存器的频率和/或读所述多个寄存器中的至少两组相应寄存器的顺序。

在另一实施例中,使用程序装置包括:调节非侵入性读以仅微控制器的每第n时钟周期读所述多个寄存器中的至少一组相应寄存器以减少功耗,其中n是预定自然数并且n≥2。

另一实施例涉及一种用于由对相同的输入数据进行操作的冗余CPU检测CPU寄存器出错的方法。这种方法包括下述步骤:以非侵入性方式读并比较冗余CPU中的不同CPU的CPU寄存器中的至少一组相应CPU寄存器的内容以按照具有不一致的内容的相应CPU寄存器的形式检测出错的CPU寄存器。

虽然已在这里表示并描述了特定实施例,但本领域普通技术人员将会理解,在不脱离本发明的范围的情况下,可用各种替代和/或等同实现方式替换示出并描述的特定实施例。本申请旨在覆盖这里讨论的特定实施例的任何修改或变化。因此,旨在本发明仅由权利要求及其等同物限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号