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

背景技术

本发明涉及一种用于集成电路装置的总线系统及其操作方法。

集成电路处理装置(诸如片上系统(SoC)和片上无线电装置)通常使用总线系统(诸如Arm

此装置的存储器可以含有敏感信息,诸如数据或软件代码,应当限制对所述敏感信息的访问。类似地,一些外围设备(诸如密码加速器)可以处理敏感数据,或提供其它敏感功能。因此,可能希望将对某些存储器区域和/或对某些外围设备的访问仅限于“可信”软件代码(诸如由装置制造商开发的代码),并阻止其它代码(诸如由第三方开发的应用程序代码)的访问。

仅通过软件措施限制对存储器的某些区域或某些外围设备的访问不是特别安全的,并且可能易受黑客攻击和易于出现软件错误。硬件机制通常被认为是更安全的。

Arm

Arm

产品设计者可以将存储器的某些区域和/或某些外围设备(例如,密码处理器)指定为“安全世界”资源,而存储器的其它区域和外围设备未如此指定。外围设备可以是永久“安全”或“非安全”的,或者其状态可以由软件通过外围设备保护控制(PPC)寄存器来配置。总线结构中的硬件逻辑确保“安全世界”资源不能被“非安全世界”软件直接访问,由此提供围绕敏感资源的安全边界。总线基础设施组件可以支持存储器组件中的存储器空间的划分,以阻止对安全存储器的非安全访问。

安全事务只能由安全软件生成,或者在测试的情况下由授权的调试器生成。非安全(非信任)软件应用程序不能直接访问安全(信任)资源,而是必须通过由安全软件提供的API(应用编程接口)请求访问。这些API可以实施认证检查,以决定是否允许访问安全服务。这种方法使可能危及部分非安全软件代码的攻击者更难访问存储在此装置上的敏感信息或者使软件错误不经意地获得对安全资源的访问。

在此架构中,可以使用“安全归属单元”(SAU)和“实施定义归属单元”(IDAU)来实施访问限制,所述两个单元直接连接到Arm

基于安全状态使用此过滤可以为集成电路装置提供增强的安全性。然而,尤其是在具有多个总线主设备的系统上,这种现有方法并不总是提供有效和灵活的实施方式。

因此,本发明寻求提供一种保护集成电路装置上的总线事务的替代方法。

发明内容

根据第一方面,本发明提供了一种集成电路装置,其包括:

总线系统,所述总线系统被配置为承载总线事务并承载用于区分安全总线事务与非安全总线事务的安全状态信号;

多个主组件,每个主组件可在安全状态与非安全状态之间切换,并且被配置为当处于所述安全状态时发起安全总线事务,而当处于所述非安全状态时发起非安全总线事务;

多个从组件;以及

硬件过滤逻辑,

其中:

所述硬件过滤逻辑被配置为在所述总线系统内的拦截点处拦截总线事务,所述拦截点位于所述总线系统内,使得来自所述主组件中的至少两个的总线事务通过所述拦截点,并且使得来自所述从组件中的至少两个的总线事务通过所述拦截点;并且

所述硬件过滤逻辑被配置为针对每个拦截的总线事务使用i)所述拦截的总线事务的从地址以及ii)所述拦截的总线事务的安全状态来根据过滤规则集合确定是否允许所述拦截的总线事务,并且被配置为阻止被确定为不被允许的拦截的总线事务。

根据第二方面,本发明提供了一种操作集成电路装置的方法,其中所述集成电路装置包含:

总线系统,所述总线系统用于承载总线事务并且用于承载用于区分安全总线事务与非安全总线事务的安全状态信号;

多个主组件,每个主组件可在安全状态与非安全状态之间切换,并且被配置为当处于所述安全状态时发起安全总线事务,而当处于所述非安全状态时发起非安全总线事务;以及

多个从组件,

所述方法包含:

所述总线系统承载安全总线事务和非安全总线事务;

在所述总线系统内的拦截点处拦截总线事务,所述拦截点位于所述总线系统内,使得来自所述主组件中的至少两个的总线事务通过所述拦截点,并且使得来自所述从组件中的至少两个的总线事务通过所述拦截点;

根据过滤规则集合,使用拦截的总线事务的所述地址和所述拦截的总线事务的所述安全状态确定是否允许所述拦截的总线事务;以及

当确定不允许所述拦截的总线事务时,阻止所述拦截的总线事务。

因此,将看到,根据本发明,在完全位于总线系统内的拦截点处提供总线事务的至少一些过滤,而不是仅在总线系统的边缘处进行过滤(即,不只是在处理器附近或在从组件附近进行过滤)。在许多情况下,这可以允许更有效地实施过滤规则。

具体地,如本领域中已知的,在每个主组件处进行过滤可以要求每个主组件过滤单元为所述装置上的每个从组件实施其自己的过滤规则集合(例如,指定当主组件处于非安全状态时不允许主组件访问的从地址范围),即使一些或所有过滤规则对于主组件中的两个或更多个可以是相同的。这导致过滤逻辑的复制低效,这可以通过本发明的实施例来缓解,其中单个过滤单元可以被定位成拦截来自这两个或所有此类主组件的总线请求。

本发明的实施例还可以提供比在从组件提供相应过滤单元的原生实施方式更大的效率和灵活性。

首先,在位于总线系统内的拦截点处执行至少一些总线过滤与在从边缘处执行相同的过滤相比可能有利地导致用于总线系统的定时路径较短。这是因为此过滤可能导致较早地拒绝不允许的总线请求。

其次,本发明的实施例可以支持特别有效的集成电路设计,尤其是在一些过滤规则仅应用于主组件的子集的情况下(即,在过滤规则区分主组件的情况下,因此对于所有主组件来说不是相同的)。许多总线系统不将发起总线主设备的身份传送到接收从组件。这意味着从边缘过滤不能实施区分不同主组件的过滤规则。相反,通过在总线系统内的拦截点处拦截总线事务,本发明的实施例能够在所述拦截点处针对特定从组件实施过滤规则,所述过滤规则应用于一些而非全部主组件。硬件过滤逻辑还可以被配置为在第二拦截点处拦截来自其它主组件的总线事务,并在第二拦截点处对同一从组件应用不同的过滤规则。以此方式,应用于特定从组件的过滤规则可以取决于哪一主组件发起总线事务。如已经解释的,这可以在不必在每个主组件处复制所有过滤规则低效的情况下实现。因此,在一些实施例中,对于至少一个从组件,硬件过滤逻辑针对从第一主组件到从组件的总线事务实施第一过滤规则(即,由过滤逻辑作为整体实施的过滤规则的子集),并且针对从第二主组件到从组件的总线事务实施与第一过滤规则不同的第二过滤规则。

然而,过滤规则取决于哪一主组件发起总线事务而变化并不重要。例如,过滤规则可仅要求,对于从组件中的一个或多个的集合,不允许非安全总线事务(由任何主组件发起)到达这些从组件,但是所有安全总线事务(由任何主组件发起)可由所有从组件接收。如下文更详细解释,从组件中的每一个也可以具有固定的或可变的安全状态。因此,每个从组件可以处于安全状态(本文称为“安全从”)或者处于非安全状态(“非安全从”)。用于从组件的过滤规则可以取决于所述从组件的安全状态-例如,所述过滤规则可以指定所有非安全总线事务(由任何主组件发起)不应由任何安全从组件接收(即,过滤逻辑应阻止含有被指派给处于安全状态的从组件的从地址的所有非安全总线事务)。

在一些实施例中,所述过滤规则可以针对主组件与从组件的每次配对确定是否允许所述从组件接收由所述主组件发起的安全总线事务,以及所述从组件是否应接收由所述主组件发起的非安全总线事务。可在组件级(其中组件可以是特定的外围设备,或存储器的特定区域)而不是在地址级指定过滤规则。换句话说,可以由过滤逻辑以相同方式处理被指派到特定外围或存储器区域的每个地址的总线事务。这可以简化装置的设计和使用。

硬件过滤逻辑可以被布置成在总线系统中的一个或多个另外的拦截点处拦截总线事务。这些可以是相同的总线事务或不同的总线事务。多个拦截点可以使得对于拦截点中的每一个,来自至少两个相应主组件的总线事务通过拦截点,并且使得至少两个相应的从组件的总线事务通过拦截点。然而,另外的拦截点中的一个或多个可以与单个主组件相邻或者可以与单个从组件相邻,即,位于总线系统的边缘处。至少对于一些过滤规则集合,在总线边缘处进行过滤结合在完全位于总线系统内的一个或多个拦截点处进行过滤可以允许比仅仅完全在总线系统内进行过滤有更有效的实施方式。

硬件过滤逻辑可以包含用于在相应拦截点处拦截总线事务的一个或多个过滤单元。

通常,过滤规则将使得,对于每个拦截点,将存在允许安全总线通过拦截点并且不允许非安全总线事务通过拦截点的至少一个相应从地址(并且任选地,对应的从安全状态)。(然而,在每个实施例中情况不一定如此)。

拦截点中的一个或多个可以在总线仲裁器处。拦截点中的一个或多个可以在第一总线与第二总线之间的桥接器处-例如,在第一AHB(高级高性能总线)与第二AHB之间的桥接器处,或者在AHB与APB(高级外围总线)之间的桥接器处,或者在第一APB与第二APB之间的桥接器处。

总线系统可以是多层总线系统(即,支持主设备与从设备之间的并行接入路径),并且拦截点中的一个或多个可以在(多层)总线系统的两个相应总线层之间。

硬件过滤逻辑可以被配置为在一个或多个总线仲裁器及/或一个或多个桥接器处拦截总线事务。

硬件过滤逻辑可以包含一个或多个主组件过滤单元,所述主组件过滤单元被配置为在相应的主组件内或附近应用至少一些过滤规则。此主组件过滤单元可以连接到主组件,或者可以位于主组件与总线系统之间(例如,在总线的主边缘处的拦截点处)。对于作为Arm

硬件过滤逻辑可以另外包含一个或多个从组件过滤单元,所述从组件过滤单元被配置为在一个或多个相应从组件内或附近应用至少一些过滤规则。从组件过滤单元可以位于总线系统与从组件之间(例如,在总线的从边缘处的拦截点处)。

多个主组件可以包括至少一个处理器,或者处理器与IDAU和/或SAU的组合。所述装置可以包含多个处理器。每个处理器可以是Arm

替代地,作为主组件中的一个的处理器组件可以包含结合硬件安全模块的非安全感知处理器。硬件安全模块可以在安全状态与非安全状态之间切换,并且可以被配置为对于由处理器发起的每个总线事务将安全状态信号输出到总线系统上,其中安全状态信号在硬件安全模块处于安全状态时指示安全总线事务,而在硬件安全模块处于非安全状态时指示非安全总线事务。以此方式,硬件安全模块使得非安全感知处理器能够形成作为安全感知主组件的处理器组件。硬件安全模块可以直接连接到处理器,或者可以位于处理器附近的总线系统的边缘处。

更一般地,此硬件安全模块可以与任何其它总线主设备(其设计可能不是固有地安全感知的)结合,以提供主组件,所述主组件可在安全状态与非安全状态之间切换并且被配置为当处于安全状态时发起安全总线事务,而当处于非安全状态时发起非安全总线事务。主组件可以包含核心和硬件安全模块,所述核心具有总线接口用于在没有安全状态信号的情况下发起总线事务,其中硬件安全模块位于总线接口与总线系统之间。

使用此硬件安全模块可以使得总线主设备能够在总线层中被指派安全属性。这意味着总线主设备可能无法意识到系统安全层。这可以具有许多益处,包括改善定时、简化总线主设备设计,以及允许在安全感知装置中使用传统的总线主设备设计。

多个主组件可以包括一个或多个外围设备(例如,无线电、串行连接或模数转换器),所述外围设备具有用于在总线系统上发起总线事务的一体式DMA(直接存储器访问)控制器。此类外围设备除了作为主组件之外还可以是从组件(例如,被配置为接收对寄存器接口的总线请求)。

除了支持安全状态和非安全状态的多个主组件之外,所述装置还可以包含一个或多个固定状态主组件,所述固定状态主组件被硬连线以始终处于安全状态(即,以其发起的每个总线事务输出表示安全状态的安全状态信号)或者始终处于非安全状态(即,以其发起的每个总线事务输出表示安全状态的安全状态信号)。过滤规则可以确定哪些从组件可以从此类固定状态主组件接收总线事务。

从组件可以包括一个或多个外围设备。它们可以包括一个或多个存储器或存储器区域。

外围设备可以具有可通过总线系统访问的相应的存储器映射寄存器接口。所述装置可以实施全局存储器映射,所述全局存储器映射将相应的地址指派给一个或多个存储器(例如,RAM和闪存)以及相应的外围设备。

所述装置可以包含存储器。存储器可以包含易失性存储器,诸如RAM,和/或非易失性存储器,诸如闪存。硬件过滤逻辑可以包含用于控制对存储器的访问的存储器控制器。存储器控制器可以被视为另一个过滤单元。

存储器可以包含一个或多个安全区域和一个或多个非安全区域。

存储器控制器可以被配置为通过总线系统接收存储器访问请求,并确定所接收的存储器访问请求是否为安全总线传输。存储器控制器可以被配置为响应于接收到安全状态存储器访问请求而授予对存储器的安全区域的访问;它可以被配置为响应于接收到非安全存储器访问请求而拒绝对存储器的安全区域的访问。存储器控制器可以接收总线事务的地址和总线事务的安全状态,以确定是允许还是阻止总线事务。

存储器的区域的定义可以是硬连线的-例如,存储器被划分为多个相同大小的区域,所述区域中的每一个可以被配置为安全区域或非安全区域。替代地,区域的定义可以是可配置的-例如,取决于一个或多个配置参数(诸如开始地址值和长度或结束地址值),所述配置参数可以被存储在装置的非易失性存储器中。

从组件中的一个或多个可以被指派相应的安全状态-例如,安全或非安全。过滤规则可以另外取决于从组件的安全状态。硬件过滤逻辑可以在确定从组件是否应接收总线事务和/或从组件是否应接收由主组件发起的非安全总线事务时使用一个或多个从组件安全状态。因此,硬件过滤逻辑可以在确定是允许还是阻止拦截的总线事务时另外使用与拦截的总线事务的地址相关联的从组件的安全状态。

一个或多个从组件可以具有固定(即,硬连线)的安全状态。然而,替代地或另外,一个或多个从组件可以在安全状态与非安全状态之间切换。从组件的状态可以取决于存储在装置的存储器中的配置数据。所述状态可以通过在装置上执行的软件来控制。

通常,可以使用主组件的安全状态和非安全状态以及任选地从组件的安全状态和非安全状态,然而设计者希望如此。通常,在处理器(作为主组件中的一个)上执行的软件代码将被划分为安全代码和非安全代码,当处理器处于非安全状态时执行非安全代码,并且不能访问存储器的一个或多个安全从组件和/或一个或多个安全区域,而当处理器处于安全状态时执行安全代码,并且能够访问存储器的一个或多个安全从组件和/或一个或多个安全区域(并且潜在地访问装置上的所有外围设备和/或存储器,这取决于装置是如何配置的)。通常,装置很可能将其大部分执行时间花费在非安全状态上,例如,在冷复位或热复位之后,或者当在密码处理器从组件中存储新的密码私钥时,仅偶尔切换到安全状态-尽管这不是必需的。

安全状态信号涉及总线系统,并且可能潜在地影响连接到总线系统的每个组件。注意,这些状态以及安全/非安全组件状态不同于处理器模式,诸如特权/内核和正常/用户执行模式,它们在一个处理器内实施以限制对特权处理器指令和系统资源的访问。除了安全状态和非安全状态之外,本装置的实施例还可以支持特权和非特权处理器模式-即,所述装置可以包含支持特权和非特权执行模式的处理器-但这不是必需的。

被阻止的总线事务可仅仅被丢弃而无需任何进一步动作,或者硬件过滤逻辑可以向发起总线事务的主组件或向另一主组件(诸如处理器)发信号通知违反过滤规则。当拦截的总线事务破坏过滤规则时,硬件过滤逻辑可以触发中断或使装置复位。

硬件过滤逻辑可以被配置为拦截通过拦截点的所有总线请求。过滤可以取决于拦截的总线事务的从(目标)地址。然而,过滤规则优选地在组件级指定访问标准-即,相同的过滤规则应用于被指派给特定从组件的寄存器接口的所有存储器地址(对于从组件的给定安全状态)。硬件过滤逻辑可以被配置为根据拦截的总线事务确定从地址。硬件过滤逻辑可以包含用于将拦截的总线请求的地址与地址值的预定集合或范围进行比较的逻辑。

过滤规则可以进一步取决于每个总线事务的类型-例如,取决于总线事务是数据读取请求还是数据写入请求还是指令提取请求。硬件过滤逻辑可以被配置为从拦截的总线请求中读取总线访问属性以确定所述请求是数据读取、数据写入还是指令提取。

主组件中的一个或多个可以被配置为确定其自身何时在安全状态与非安全状态之间切换。然而,在一些实施例中,所述装置包含安全保护单元(SPU)以用于将至少一些主组件在安全状态与非安全状态之间切换。安全保护单元还可以允许从组件中的一个或多个在安全状态与非安全状态之间切换。它可以使得存储器区域能够被设置为安全区域或非安全区域。

SPU可以通过线集合连接到硬件过滤逻辑,所述线将相应组件的安全状态传播到装置。可以存在从SPU到不是固有地具有安全感知的每个总线主设备-即,到每个这样的主组件的相应硬件安全模块的相应线。对于每个可切换从组件,可以存在从SPU到硬件过滤逻辑的相应线。可能的是,线可以分支,使得单个从组件的安全状态影响多个拦截点处的多个过滤单元。

SPU可以提供可通过总线系统访问的寄存器接口,总线主设备(诸如处理器)可以写入所述寄存器接口以便控制每个可切换部件(包括每个单独的存储器区域)的状态。每个可切换组件或存储器区域可以在寄存器接口中具有相关联的安全配置寄存器(其可以是位字段),其值确定组件的安全状态。在SPU上提供此寄存器接口可以有利地使得两个或更多个主组件(诸如两个不同的处理器)都能够在装置上配置安全属性;它使得这能够在没有矛盾或冲突的情况下发生,否则如果安全状态信息被本地保存在装置上的不同点,则可能发生矛盾或冲突。

存储在装置上的软件可以包含用于设置安全配置寄存器的值的指令。例如,引导程序软件可以在装置的每次复位之后执行的引导例程期间设置一些或所有主组件和从组件的安全状态。状态可以在装置复位之间保持不变(例如,仅在新固件加载到装置上时才改变),或者软件可以在复位之间改变一个或多个主组件的状态。

硬件过滤逻辑或SPU本身可以是可配置的,以防止改变安全配置值,至少直到装置下一次复位为止。例如,在SPU的寄存器接口中可以存在锁定寄存器,所述锁定寄存器在被设置时使SPU忽略对一个或多个对应的安全配置寄存器的写入。

尽管过滤逻辑基于地址应用过滤决定,但是过滤规则优选地确定组件级的访问规则。换句话说,对于每个从组件,过滤规则优选地同等应用于被指派给特定从组件的每个存储器地址。(然而,注意,过滤可以另外取决于从组件的安全状态)。

应当理解,过滤规则不必被存储为例如被编码在装置的存储器中(例如,在ROM或闪存中)的数据,而是可以至少部分地硬连线到装置的过滤逻辑中。与可切换用于至少一些组件的组件的安全状态不同,过滤规则可以是固定的,尽管这不是必需的。

硬件过滤逻辑可以是硬件状态机。它可以包含任意数量的逻辑门。它优选地未含有通用处理器。它可以包含可以通过总线系统寻址的一个或多个输入或输出寄存器,尽管这不是必须的。安全保护单元可以类似地为硬件状态机。

安全状态信号可以通过总线系统中的安全状态信号线发送。安全状态信号线可以是仅用于指示安全状态的专用线。所述线可以是单位线。在一些实施例中,安全状态信号线可以被断言以指示安全总线事务,并且被解除断言以指示非安全总线事务。在其它实施例中,事实可能并非如此。通常,应当理解,在一些实施例中,输出表示非安全状态的安全状态信号由不输出表示安全状态的信号(即,保持静默)组成,反之亦然。

在一些实施例中,总线系统是AMBA总线系统。它可以包含一个或多个AHB和/或一个或多个APB。总线系统可以实施AHB 3、AHB 5或更高的规范。安全状态信号可以通过AHBHNONSEC信号线发送-例如通过对HNONSEC解除断言来传送安全状态信号。

总线系统可以包含主总线(例如,AHB)和外围总线。外围总线可以包含安全状态信号线以用于将安全状态信号承载到附接到外围总线的一个或多个从组件。在一些实施例中,APB PPROT[1]信号可以用于传达安全状态或非标准(非APB)信号。外围总线上的安全状态信号线可以传播由外围总线从主总线接收的安全状态信号。在外围总线上提供安全状态信号线允许硬件过滤逻辑包含一个或多个过滤单元,所述过滤单元被定位以拦截完全位于外围总线(其可以是多级总线)内或在外围总线的边缘处的从组件附近的总线事务,其中过滤单元接收安全状态信号并且可以使用拦截的总线事务的安全状态来确定是阻止还是通过总线事务。

应当理解,一些实施例可以支持主组件和/或从组件的两个以上的安全状态-例如,具有三个状态:非安全状态、安全状态和非常安全状态。总线系统可以被配置为承载区分每个总线事务的三个或更多个安全状态的安全状态信号。

集成电路装置可以是片上系统、多处理器片上系统、片上无线电装置或任何其它形式的集成电路。

在本文描述的任何方面或实施例的特征可以在适当时应用于在本文描述的任何其它方面或实施例。在参考不同实施例或实施例集合的情况下,应当理解这些实施例不一定是不同的,而是可以重叠。

附图说明

现在将参考附图仅以举例的方式描述本发明的某些优选实施例,其中:

图1是实施本发明的集成电路装置的示意图;并且

图2是示出总线系统和总线过滤的进一步细节的集成电路装置的示意图。

具体实施方式

图1示出了根据本发明的实施例的片上系统(SoC)集成电路装置1。

装置1包括总线互连系统2,所述总线互连系统将处理器4和其它总线主设备6连接到RAM 8、闪存10和示范性外围设备12、14、16、17。外围设备12、14、16、17具有可通过总线系统2寻址的输入和/或输出寄存器(即,存储器映射的I/O)。

总线系统2可以包含多个互连总线。在一些实施例中,它是Arm

主组件4、6被配置为在总线互连系统2上发出总线请求。总线主设备6可以是其它处理器、具有内置DMA控制器的外围设备或者任何其它总线主设备。取决于主组件4、6的安全属性,总线请求可以是安全的或非安全的总线请求。处理器4的安全属性是可变的,这取决于处理器4的当前状态-它通常在处理器4上执行的软件的控制下。其它总线主设备6的安全属性可以是固定的(即,硬连线的)或可变的。

存储器8、10和外围设备12、14、16、17被配置为取决于存储器或外围设备的相应安全属性来响应某些请求。RAM 8和闪存10可以被划分成被指派有不同的相应安全属性的区域(即,“安全”存储器区域和“非安全”存储器区域)。

各种存储器区域和外围设备可以响应于安全请求、非安全请求或者这两种类型的请求。每个存储器区域或外围设备的安全属性在设计阶段处可以是固定的,或者可以是可动态配置的。

一些外围设备12可以被指定为(永久地或可切换地)“非安全”外围设备,并且其所有功能对于处于非安全状态的总线主设备4、6可用。一些外围设备14可以被指定为(永久地或可切换地)“安全”外围设备,并且其所有功能仅对处于安全状态的总线主设备4、6可用。还有其它外围设备16可以是“分离安全”外围设备,并且当被指定(永久地或可切换地)为“非安全”时,此类外围设备16将具有非安全总线主设备4、6可访问的一些功能以及仅安全总线主设备4、6可访问的其它功能。

一些外围设备17是总线系统2上的从组件,而且还含有DMA(直接存储器访问)控制器,所述DMA控制器允许所述外围设备充当总线主设备-例如,用于在不涉及处理器4的情况下从RAM 8中读取或写入数据。

装置1还包括通用输入/输出(GPIO)控制器30,其控制对GPIO引脚31、32的访问,装置1外部的装置可以连接到所述GPIO引脚。每个GPIO引脚31、32可以具有被指派给它的安全属性,如下文更详细描述。GPIO控制器30具有寄存器接口,并且充当另一外围设备。

装置1还包括分布式可编程外围设备互连(DPPI)28。DPPI 28提供与总线系统2分离的互连矩阵,所述互连矩阵连接外围设备12、14、16并且允许一个外围设备向一个或多个其它外围设备发信号通知“事件”。由订阅接收方外围设备通过DPPI 28接收“事件”信号可以触发另一外围设备的任务。

DPPI 28提供多个信道34、36(图1中示出了两个示范性信道,但是可以存在两个以上的信道),其将事件输出连接到任务输入。外围设备12至16含有多路复用器,其可由处理器4通过相应的寄存器接口来控制,用于将外围设备的事件输出订阅到特定信道,以及用于将外围设备的任务输入订阅到特定信道。

DPPI 28提供用于配置总线系统2上的信道的寄存器接口,并且实际上是另一从外围设备。

当处理器4处于睡眠状态时,DPPI 28可以用于支持外围设备到外围设备通信,由此与总线系统2上的处理器介导通信相比提供大量功率节省。

每个信道34、36可以被定义为安全34或非安全36。只有“安全”外围设备14可以访问安全信道,以向另一外围设备发出事件,或者订阅所述信道。如果“非安全”外围设备12(当被设置为“非安全”状态时,其可以是分离安全外围设备16)尝试在安全信道34上推送事件,则将保持不变。如果非安全外围设备12、16尝试订阅安全信道34,则它将看不到该信道上的任何事件。

总线系统2还包含实施定义归属单元(IDAU)18、主侧安全控制逻辑20和从侧安全控制逻辑22。总线系统2与该安全控制逻辑20、22和归属单元18一起在本文被称为装置1的安全系统逻辑24。

该硬件安全系统逻辑24实施过滤规则,对于主组件4、6和从组件12、14、16的每次配对,所述过滤规则确定来自主组件的安全总线请求是否可被从组件接收,以及来自主组件的非安全总线请求是否可被从组件接收。过滤规则还可以确定主组件4、6对RAM 8和/或闪存10的定义区域的访问许可。

这些过滤规则的设计通常是固定的(即,硬连线的)以用于i)安全主设备到安全外围设备或存储器区域,ii)安全主设备到非安全外围设备或存储器区域,iii)非安全主设备到安全外围设备或存储器区域,以及iv)非安全主设备到非安全外围设备或存储器区域的每次可能配对。然而,在一些实施例中,过滤规则可以是可配置的-例如,至少部分地取决于存储在闪存10中的配置数据。过滤规则可以相对简单-例如,每个安全总线主设备可以访问每个从组件(即,每个外围设备和每个存储器区域),而不管从装置是处于安全状态还是非安全状态,而每个非安全总线主设备只能访问非安全从组件,并且被阻止访问任何安全从组件。替代地,过滤规则可以更复杂-例如,将不同的访问权限指派给不同的总线主设备和/或不同的从组件,使得例如第一处理器可以在第一处理器处于安全状态时访问安全外围设备,而第二处理器根本不能访问同一安全外围设备。

装置1还包含系统保护单元(SPU)26。SPU 26用作系统中的中心点来控制对存储器、外围设备和其它资源的访问。SPU 26和安全系统逻辑24一起提供以下特征:

-Arm

-保护存储器区域和外围设备免受诸如DMA控制器之类的非处理器主装置的影响;

-DPPI 28访问保护,防止非安全代码发布或订阅安全DPPI信道;

-GPIO引脚访问保护,防止非安全代码和外围设备读取或改变安全引脚31、32的状态;以及

-外部域访问保护,控制来自其它微控制器的访问权限。

SPU 26提供包含配置寄存器集合的寄存器接口,以用于控制安全系统逻辑24的各种内部逻辑块18、20、22,所述各种内部逻辑块监视对存储器映射的从装置(RAM 8、闪存10、外围设备12至17等)和其它资源(装置引脚31、32、DPPI信道...)的访问。SPU 26的状态确定所有非安全感知总线主设备6和从组件8、10、12至17的安全状态。SPU 26还提供用于将DPPI信道和GPIO引脚设置为安全或非安全的接口。SPU的寄存器接口本身可以仅由来自处理器4的安全总线请求写入。寄存器接口还可以含有“锁定”位,其一旦被设定,就防止对SPU寄存器接口的相应部分的内容的进一步改变,直到装置1下一次复位为止。以此方式,安全引导代码可以在引导过程期间配置SPU 26,然后锁定装置1的安全状态直到其下次复位为止。

主侧安全控制逻辑20和从侧安全控制逻辑22提供多个过滤单元(或防火墙),其拦截总线传输并实施过滤规则。这些监视对RAM 8、闪存10、存储器映射外围设备12、14、16、17(包括GPIO控制器30和DPPI 28)的访问。

过滤单元可以位于总线系统2的边缘处和/或总线矩阵内的点处,诸如位于单独的总线之间的桥接器处和/或位于总线仲裁器处和/或位于总线系统2的两个层之间。至少一个防火墙位于总线系统2内,远离总线系统2的边缘。过滤单元将每个拦截的总线传输的地址、安全状态(安全或非安全)和访问类型(数据读取、数据写入、指令提取)与在SPU 26中提供的安全定义进行比较。总线传输的安全状态由发起总线传输的主组件的安全状态确定,所述安全状态可以是“安全的”或“非安全的”。在其它实施例中,可以支持多个安全状态或级别(即,两个以上的状态)。

当检测到禁止访问时,防火墙阻止传输(如果是读取访问,则通过返回零或者阻止写入操作来阻止传输)。在一些实施例中,过滤单元可以通过总线系统2提供错误信号和/或可以触发处理器中断或系统复位。

IDAU 18可以用于在SPU 26的控制下向处理器4指示特定存储器地址是安全的还是非安全的。对于支持用于Cortex-M

-用于Cortex-M

-非安全可调用(NSC)区域,以实施来自非安全代码的安全入口点。

图2示出了与图1相同的许多组件,所有相同的部分用与图1中相同的附图标记标记。

总线系统2被示为包括第一AHB 201、第二AHB 202、第一APB 208和第二APB 208。第一AHB 201通过桥接器204连接到第二AHB 202。各种示范性从外围设备13a至13f(其可以与图1所示的外围设备12、14、16、17重叠)被示为连接到总线系统2。具有一体式DMA控制器的一个示范性外围设备17作为总线主设备连接到第一AHB 201。当然,可以存在比所示出的更多的总线主设备(例如,十个、二十个、五十个或更多个)和比所示出的更多的从外围设备(例如,一百个、二百个或更多个)。

图2提供了图1中示意性表示的控制逻辑20、22如何与总线系统2集成的更多细节。控制逻辑20、22通过位于总线系统的边缘处的边缘过滤单元集合212a至212e以及位于总线系统2内的各点处的内部过滤单元集合214a至214d来实施,所有过滤单元都由控制线210连接。一些边缘过滤单元212位于诸如处理器4和示范性的配备DMA的外围设备17之类的主组件附近,而其它边缘过滤单元位于诸如从外围设备13a之类的从组件附近。内部过滤单元214位于AHB 201、202和APB 206、208的仲裁器处或者位于总线系统2中的层对之间。以此方式,内部过滤单元214可以实施应用于一个以上总线主设备的主-从过滤规则,这比使用相应总线主设备附近的边缘过滤单元212实施这些规则的情况更有效。

过滤单元212、214被配置为阻止不符合过滤规则的总线传输。对于主设备的给定安全状态和从设备的给定安全状态,每个主-从对的过滤规则由控制逻辑20、22硬连线。

然而,至少一些主设备2、17和从设备(RAM 8、闪存10和示范性外围设备13a-f)的安全状态是可配置的,由组件本身设置(其中组件是安全感知的),或者通过系统保护单元(SPU)26针对所有非安全感知的组件进行设置。对于管理其自身安全状态的组件,其当前安全/非安全状态通过线分布到过滤逻辑20、22中的相关点;这种分布可以直接从组件到过滤逻辑20、22,或者可以经由SPU 26发送状态。SPU 26是其中可以配置并非固有地安全感知的组件的安全性属性的唯一位置。

在一些实施例中,RAM 8和闪存10内的安全区域的大小和位置可以通过写入到SPU26中的寄存器来定义-例如,通过写入开始和结束地址来定义。在其它实施例中,RAM 8和闪存10被预划分为固定区域,每个固定区域可以具有通过SPU 26设置的相应安全状态。例如,RAM 8可以被划分为各自具有8KiB的16个区域,并且闪存10可以被划分为各自具有32KiB的32个区域。

对于每个存储器区域,可以通过SPU 26独立配置四种不同类型的许可:

-“读取”:允许对区域进行数据读取访问(从该区域提取的代码不受读取许可的控制,而是受下文描述的执行许可的控制);

-“写入”:允许对所述区域进行写入访问;

-“执行”:允许从该区域提取代码(即使数据读取被禁用);以及

-“安全”:只允许安全总线访问。

对于每个安全管理组件,存在离开SPU 26的至少一个相应的线,其将所述组件的安全状态作为一位值传送到控制逻辑20、22(即,传送到适当的过滤单元212、214)。SPU 26还可以将总线系统2内的路径和组件组的安全状态传送到总线系统中的过滤逻辑20、22、212、214。

SPU 26允许软件开发者将非安全感知处理器和非安全感知外围设备视为安全感知组件,即使它们不具有固有安全感知。可以通过存储在SPU配置寄存器中的配置设置来确定SPU 26为非安全感知组件输出的安全状态。这些配置寄存器可以在每次复位之后由引导程序写入,或者可以由任何其它适当的机制来配置。

本领域技术人员应当理解,本发明通过描述其一个或多个特定实施例进行示出,但本发明不限于这些实施例;在所附权利要求的范围内,许多变化和修改是可能的。

相关技术
  • 安全感知总线系统
  • 安全总线系统和总线系统安全方法
技术分类

06120112549001