一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于隔离互不信任的安全域的访问控制系统和方法与流程

2023-02-04 15:00:39 来源:中国专利 TAG:

用于隔离互不信任的安全域的访问控制系统和方法


背景技术:

1.便携式计算设备(“pcd”)正成为个人和专业层面上的人们的必需品。这些设备可以包括蜂窝电话、平板电脑、掌上电脑、便携式数字助理(“pda”)、便携式游戏机和其他便携式电子设备。pcd通常包含集成电路或片上系统(“soc”),集成电路或片上系统包括被设计用于一起工作以向用户提供功能的众多组件。例如,soc可以包含任何数量的处理引擎,诸如调制解调器、具有多个核心的中央处理单元(“cpu”)、图形处理单元(gpu)等。soc可以被耦合到pcd内的其他组件,诸如系统存储器、无线通信收发器(也被称为调制解调器)、相机、麦克风、扬声器等。soc和其他组件可以通过一个或多个总线或其他互连组件(interconnect)来耦合,以在它们之间提供数据通信。术语“资源”可以被用于指代处理器可以经由总线事务来获取对其的访问的组件或组件的一部分,诸如存储器区域、寄存器、端口等。
2.在soc设计中,维护安全性防止对未经授权资源的访问是一个重要的考虑因素。soc的复杂性提出了相冲突的安全要求。例如,一方面,在soc中的处理器上运行的高级操作系统(“hlos”)可能需要能够限制对来自其他soc处理器上运行的实体的资源进行访问。另一方面,soc供应商可能希望限制hlos对此类其他soc处理器的访问,因为此类访问可能会暴露soc供应商的知识产权。主存储器或系统存储器通常是最重要的资源,并且通常hlos管理整个系统存储器。还可能需要不同安全域中的实体进行协作,并且拆分系统存储器映射使将系统存储器的各部分专用于不同安全域可能是不期望的。
3.通常以两种通用方式之一在基于soc的设备中提供安全性。一种方法是提供跨所有子系统控制安全性的soc硬件。该方法的缺点是不可扩展。添加新的安全域是不灵活的,并且其可能包括子系统安全性。另一方法是通过提供超级用户实体的形式来使得hlos能够跨所有子系统控制安全性。该方法的一个缺点是,安全性可能暴露给开源(open source)并且可能受到损害。这两种常规解决方案均不能解决上述相冲突的安全问题。


技术实现要素:

4.公开了用于soc中的资源访问控制的系统、方法和计算机程序产品。
5.一种用于soc中的资源访问控制的示例性方法可以包括将包括存储器区域的资源分配给访问域。诸如hlos的代理可以控制或执行这样的分配。方法还可以包括将与访问域相关联的软件映像(software image)加载到存储器区域中。hlos或其他代理可以控制或执行这样的加载。方法还可以包括锁定资源,防止由除访问域以外(other than)的任何实体访问。信任管理引擎可以控制或执行这样的锁定。方法还可以包括验证与访问域相关联的软件映像。信任管理引擎可以控制或执行这样的验证。方法还可以包括响应于软件映像的成功验证而发起访问域的启动(booting)。信任管理引擎可以发起启动。
6.一种用于soc中的资源访问控制的示例性系统可以包括信任管理引擎和在处理器上执行的代理。代理可以被配置为将包括存储器区域的资源分配给访问域,并将与访问域相关联的软件映像加载到存储器区域中。信任管理引擎可以被配置为:锁定资源,防止由除
访问域以外的任何实体访问;验证与访问域相关联的软件映像;以及响应于与访问域相关联的软件映像的成功验证而发起访问域的启动。
7.另一种用于soc中的资源访问控制的示例性系统可以包括用于将包括存储器区域的资源分配给访问域并且用于将与访问域相关联的软件映像加载到存储器区域中的装置(means)。示例性系统还可以包括用于锁定资源防止由除访问域以外的任何实体访问、用于验证与访问域相关联的软件映像并且用于响应于软件映像的成功验证而发起访问域的启动的装置。
8.一种用于soc中的资源访问控制的示例性计算机程序产品可以包括其上存储有指令的计算机可读介质,该指令在soc的一个或多个处理器上执行时控制方法。该方法可以包括将包括存储器区域的资源分配给访问域。方法还可以包括将与访问域相关联的软件映像加载到存储器区域中。方法还可以包括锁定资源,防止由除访问域以外的任何实体访问。方法还可以包括验证与访问域相关联的软件映像。方法还可以包括响应于软件映像的成功验证而发起访问域的启动。
附图说明
9.在图中,除非另有说明,否则在各个图中,相似的附图标记指代相似的部分。对于具有字母字符名称(诸如“102a”或“102b”)的附图标记,字母字符名称可以区分同一图中存在的两个相似部分或要素。当附图标记旨在涵盖所有图中具有相同附图标记的所有部分时,可以省略附图标记的字母字符名称。
10.图1是根据示例性实施例的包括用于资源访问控制的系统的soc的框图。
11.图2是示出了根据示例性实施例的系统中用于资源访问控制的总线主设备(bus master)和总线从设备(bus slave)的框图。
12.图3是示出了根据示例性实施例的资源组的示例的系统存储器映射。
13.图4是示出了根据示例性实施例的用于与启动访问域有关的资源访问控制的方法的流程图。
14.图5是示出了根据示例性实施例的用于启动访问域的方法的另一流程图。
15.图6是示出了根据示例性实施例的用于与分配附加资源有关的资源访问控制的方法的流程图。
16.图7是图示了根据示例性实施例的用于分配附加资源的方法的另一流程图。
17.图8是图示了根据示例性实施例的用于与取消分配附加资源有关的资源访问控制的方法的流程图。
18.图9是图示了根据示例性实施例的用于取消分配附加资源的方法的另一流程图。
19.图10是根据示例性实施例的pcd的框图。
20.图11是根据示例性实施例的用于保护单元的应用程序接口的框图。
具体实施方式
21.本文中使用的词语“示例性”是指“用作示例、实例或说明”。本文中的词语“说明性”可以与“示例性”同义地使用。本文中描述为“示例性”的任何方面不一定被解释为优选于其他方面或比其他方面有利。
22.如图1所示,在说明性或示例性实施例中,pcd 100可以包括soc102。soc 102可以包括一个或多个处理器104以及一个或更多个其他总线主设备106。尽管为了清楚起见,图1中未示出总线或类似系统互连组件,但是术语“总线主设备(bus master)”在本公开中用于表示能够发起总线事务的任何组件。一个或多个总线主设备的组在本公开中可以被称为访问域或“ad”。例如,图1中的两个总线主设备106的组可以形成ad 108。
23.pcd 100仅作为在其中可以包括soc 102的设备的示例。更一般地,可以包括根据本公开的soc的设备的示例包括:计算系统(例如,服务器、数据中心、台式计算机)、移动或便携式计算设备(例如,笔记本电脑、手机、车辆等)、物联网(“iot”)设备、虚拟现实(“vr”)系统、增强现实(“ar”)系统等。
24.处理器104也可以被称为cpu、应用处理器等,因为在本示例性实施例中,处理器104可以执行高级操作系统(“hlos”)110以及其他软件元件(为清晰起见未示出)。本公开中使用的术语“hlos”旨在不仅广泛地涵盖hlos,而且还包括管理程序(hypervisor)、与管理程序组合的hlos等。为了描述的简洁,在本公开中,由在hlos110的执行的控制下或者由hlos 110的执行来配置的处理器104执行或控制的动作可以被称为由hlos 110执行的动作。类似地,为了描述的简洁,由在任何其他软件实体的执行的控制下或由任何其他软件实体的执行来配置的其他处理硬件执行或控制的动作,在本公开中可以被称为由这样的其他软件实体执行的动作。此外,尽管为了清楚起见,hlos 110在图1中与其他总线主设备106分开地示出,但是应当注意,hlos 110也是总线主设备(并且因此也是ad的类型)。
25.soc 102可以包括系统资源112。系统资源112包括pcd 100的组件及其部分,总线主设备(诸如hlos 110、其他总线主设备106等)可以将总线事务导向到pcd 100。换言之,本公开中使用的术语“总线事务”涉及对系统资源112的请求,诸如读取请求或写入请求。因此,系统资源112可以通过系统地址空间内的地址或地址范围来标识。尽管在图1中为了清楚起见,系统资源112被描绘为在soc 102内,但是在其他实施例中,任何或所有这样的系统资源均可以在soc外部。系统资源112可以包括例如动态随机存取存储器(“dram”),诸如双数据速率dram(“ddr-dram”)。这样的ddr-dram(或为简洁起见,“ddr”)可以提供pcd 100的主系统存储器,并且cpu或其他处理器104可以执行这样的ddr中的应用程序(即,软件)。系统资源112可以包括其他类型的存储器,诸如例如闪存存储器、静态ram(“sram”)等。系统资源112可以包括各种寄存器、端口和其他可寻址组件。注意,由于系统资源112是来自总线主设备的事务请求的主体,所以系统资源112也可以被称为来自ad的事务请求的主体,因为ad是包括一个或多个总线主设备的实体。
26.例如,第一系统资源112a可以包括第一存储器区域,第二系统资源112b可以包括第二存储器区域等。虽然为了示例的目的仅示出了两个系统资源112a和112b,但是可以在系统地址空间中分配任意数量的系统资源112。除非本公开中另有描述,否则系统资源112可以根据本领域普通技术人员熟知的常规计算原理来请求、分配和取消分配。例如,响应于某些操作条件,总线主设备106可以发起对系统资源112的请求。本公开涉及如由图1中虚线箭头概念性地指示的、用于控制对这样的系统资源112的访问的系统和方法。
27.信任管理引擎(“tme”)116是访问控制系统和方法中涉及的组件。为了提高安全性,tme 116可以主要被实现在与在其上执行hlos 110的处理器104分开的硬件中,诸如另一处理器、只读存储器(“rom”)等(图1中未单独示出)中。tme 116可以采用使用加密方法来
验证软件映像的验证代理(未单独示出)。这样的验证代理可以是常规类型的并且因此在本公开中没有描述。尽管为了清楚起见,tme 116在图1中与其他总线主设备106和hlos 110分开示出,但是应当注意,tme 116也是总线主设备(并且因此也是ad的类型)。
28.保护单元118可以被配置为选择性地保护系统资源112。可能存在各种类型的保护单元,每个保护单元与能够充当或提供资源的组件相关联。术语“xpu”可以在本公开中广泛地指代与对应类型的组件相关联的多种类型(“x”)的保护单元中的任何保护单元。例如,与存储器相关联的xpu可以被称为存储器保护单元。
29.如图2所示,系统200可以包括两个或更多个总线主设备202a、202b、202c等。虽然总线主设备202a、202、202c等中的每个总线主设备的一部分可以包括硬件,但是总线主设备202、202b和202c等中的一个或多个总线主设备也可以包括软件部分。例如,第一总线主设备202a可以包括cpu 204a,cpu 204a可以执行hlos 206a。cpu 204a可以是上述处理器104(图1)的示例。例如,第二总线主设备202b可以包括硬件引擎204b和软件部分,软件部分在本公开中可以被称为智能和可信实体(“ite”)206b。类似地,第三总线主设备202c可以包括硬件引擎204c和软件部分206c。第二和第三总线主设备202b和202c可以一起形成访问域或ad 208b,诸如上文关于图1描述的ad 108。在具有两个或更多个总线主设备的ad中,至少一个总线主设备的软件部分是ite;其他总线主设备的软件部分不需要是ite。例如,ad 208b可以是调制解调器,其中总线主设备202b和202c分别是标量和矢量调制解调器核心。尽管在该示例性实施例中,调制解调器包括两个总线主设备202b和202c,但是在其他实施例中,调制解调器可以像其他ad一样,仅由一个总线主设备组成。注意,第一总线主设备202a还形成ad 208a。由于ad208a的特征在于执行中的hlos 206a,因此为了方便起见,在本公开中可以将这样的ad称为hlos,类似于图1中的hlos 110。
30.总线主设备202a、202b、202c等可以被配置为经由对应的存储器管理单元(“xmmu”)210a、210b、210c等来访问资源。术语“xmmu”可以在本公开中广泛地指代与对应类型的组件(诸如例如,系统存储器(与另一级别或类型的存储器形成对比))相关联的多个类型(“x”)的mmu中的任何类型的mmu。尽管在图2中为了清楚起见,总线主设备202a、202b和202c中的每个总线主设备被示出为耦合到恰好一个对应的xmmu 210a、210b和210c,但是在其他示例(未示出)中,可以存在总线主设备可以通过其访问资源的附加元件,诸如两级或更多级的xmmu。
31.多个总线从设备212中的每个总线从设备(诸如总线从设备212a和212b)可以充当或提供对应的系统资源112(图1),诸如存储器、寄存器、端口等。尽管示出了两个总线从设备212a和212b,但是系统200可以包括任何数量的总线从设备212。总线从设备212a、212b等中的每个总线从设备可以被耦合到系统互连组件(例如,总线系统)216。上述xmmu 210a、210b、210c等也被耦合到系统互连组件216。每个ad 208a、208b等因此可以通过经由系统互连组件216参与总线事务来访问资源。
32.可以提供系统资源112(图1)的每个总线从设备212由对应的xpu 214(诸如xpu 214a和214b)保护。xpu 214可以是以上关于图1描述的保护单元118的示例。xpu 214可以被配置为以以下描述的方式保护或防止对总线从设备212提供的系统资源112的访问。
33.如图3所示,系统存储器映射300表示系统存储器中的区域,在本公开中可以被称为资源组(“rg”)302。系统存储器(例如,ddr)中的区域是系统资源112(图1)的示例。注意,
术语“资源”、“系统资源”和“资源组”(或“rg”)在本公开中可以基本上同义地使用,在某些情况下使用术语“资源组”(或“rg”)更具体地指代已分配给ad的资源。如下文进一步详细描述,通过设置允许ad访问rg(即,完成与rg的读取或写入事务)的访问许可,rg可以被分配给ad。在本公开中,术语“由

(ad)拥有”也可以用于指代已分配给ad的rg。由ad拥有的或分配给ad的资源也可以指代属于ad、是ad的一部分等。如本公开中使用的术语,将rg“分配给ad”不仅意味着在常规意义上分配rg(例如,通过限定或留出存储器空间),而且意味着使ad成为rg的拥有者。rg只能由拥有该rg的ad访问。除rg拥有者以外的任何实体访问rg的尝试都会被相关联的xpu防止或阻止。在本文描述的示例性实施例中,默认或初始状态(例如,在启动pcd 100时)可以是hlos 110(图1)拥有所有系统资源112;包括tme 116的其他ad不能访问任何资源,直到资源可以被分配给这样的其他ad时。
34.在图3中,系统存储器映射300图示了一个示例,其中各种rg302a、302b等至302n(统称为rg 302)已被分配给ad。系统存储器映射300的剩余部分表示尚未明确分配给ad的系统资源,并且因此,根据本文描述的示例性实施例,系统资源仍由hlos拥有。rg 302可以位于存储器地址范围中的任何位置,并且图3中所示的位置仅作为示例。
35.如图11所示,以概念形式示出的xpu应用程序接口(“api”)1100表示ad可以向xpu提供以配置或控制xpu如何操作的各种配置设置的示例。xpu api 1100可以具有两个部分:每个rg(per-rg)配置部分1102和全局配置部分1104,ap可以通过每个rg配置部分1102为xpu提供针对每个rg的配置设置(即,特定于每个rg),并且不特定于任何rg的xpu操作的各方面可以通过全局配置部分1104来配置。
36.每个rg配置部分1102为xpu提供rg配置1106或利用rg配置1106来对xpu进行编程,rg配置1106为多个rg(例如,“rg_0”到“rg_m”,其中m是定义最大支持rg数量(m 1)的固定数量)之一配置xpu。每个rg配置1106可以包括地址范围1108、包括读取许可1110和写入许可1112的访问许可、以及rg使能设置1114。在该示例性实施例中,xpu仅允许hlos设置rg配置1116,并且这种允许受限于以下描述的锁定特征。该实施例中的xpu阻止由除hlos以外的任何实体设置rg配置1106的任何尝试。例如,xpu阻止另一ad、tme等设置地址范围1108、读取许可1110、写入许可1112或rg使能设置1114的任何尝试。在其他实施例中(本文中未描述),可以提供允许其他ad设置rg配置的特征。例如,尽管在本文中描述的示例性实施例中,hlos默认拥有由xpu保护的所有未分配的系统资源,但是在其他实施例中,模式设置可以在全局配置部分1104中被提供,hlos可以借助模式设置来选择这样的所有权是默认发生还是必须通过向hlos显式分配rg来发生。
37.使用由hlos提供的地址范围1108,xpu可以标识或定义xpu要保护的rg。例如,hlos可以通过提供rg 302跨越(span)的起始地址和结束地址来定义以上关于图3描述的rg 302之一。
38.rg使能设置1114可以是单个位,hlos可以提供该单个位以使得xpu能够开始保护由地址范围1106定义的rg。例如,值为“1”的rg使能设置1114可以使得xpu应用如下所述的许可1110和1112,而具有值“0”的rg使能设置1114可以向xpu指示rg已被禁用,即,许可1110和1112不适用(或不再适用)。此外,实际上,hlos可以通过设置rg使能设置1114来指示许可1110和1112不再适用,从而将rg返回到可用资源池。在本文描述的示例性实施例中,在hlos可以将rg分配给另一ad之前,rg必须返回到可用资源池。
39.读取许可1110和写入许可1112可以分别以每个ad一个读取使能(“rd_en”)位以及每个ad一个写入使能(“wr_en
””
)位的形式提供。例如,rg的读取许可1110可以包括对应ad的位“ad_0:rd_en”到“ad_n:rd_en”(其中n是限定ad的最大支持数量(n 1)的固定数量)。同样,写入许可1112可以包括对应ad的位“ad_0:wr_en”到“ad_n:wr_en”。例如,具有值“1”的读取使能位可以配置xpu以使得能够(或不防止)完成由指向rg的对应ad发起的读取事务,并且具有值“0”的读取使能位可以配置xpu以防止完成由指向rg的对应ad发起的读取事务。同样,值为“1”的写入使能位可以配置xpu以使得能够完成由指向rg的对应ad发起的写入事务,并且值为0的写入使能位可以配置xpu以防止完成由指向rg的对应ad发起的写入事务。
40.如果读取许可1110中的至少一个位或写入许可1112中的至少一个位指示允许ad访问rg,则ad拥有或已被分配rg。注意,通过读取许可1110和写入许可1112,可以向ad提供读取和写入许可、只读许可等,从而控制ad可以对特定rg进行的访问的类型。
41.ad生成的每个事务请求可以包括ad标识符,即,唯一地对该ad进行标识的值。读取和写入许可1110和1112的位可以由ad标识符索引。当xpu接收事务请求时,xpu可以将事务请求中包括的ad标识符与读取许可1110或写入许可1112中的对应的位值进行比较,并且然后基于比较来使能或防止被请求的事务的完成。
42.每个rg配置部分1102还为xpu提供rg配置锁定位组1116。每个rg配置锁定位组1118对应于上述rg配置1106之一。每个rg配置锁定位组1116可以由与ad数量相等数量的锁定位1118组成。即,每个ad对应于一个锁定位1118。例如,第一锁定位1116(“ad_0:lock”)对应于第一ad,第二锁定位1117(“ad_1:lock”)对应第二ad等,而第n锁定位(“ad_n:lock”)对应于第n ad。由于hlos和tme是ad的类型,锁定位1118中的一个锁定位(诸如例如,第一锁定位1114)可以对应于hlos,并且锁定位1118中的另一个锁定位(诸如例如,第二锁定位1115)可以对应于tme。
43.xpu允许锁定位1118仅由对应的ad设置。即,xpu阻止或忽略由除与该锁定位1118相对应的ad以外的任何实体设置锁定位1118的任何尝试。每个锁定位1118可以具有指示“锁定”状态或“取消锁定”状态的值。术语“锁定”和“取消锁定”指代rg配置1106;将rg配置锁定位组1116中的一个或多个锁定位1118设置为指示“锁定”状态的值将xpu配置为防止任何实体修改对应的rg配置1106。即,当组1116中的与rg配置1116相对应的任一个或多个锁定位1108被设置时,rg配置1126被锁定或不能被修改。通过设置其对应的锁定位1118,ad可以通过防止任何其他ad(包括hlos、tme等)此后修改rg配置1106来在rg配置中建立信任。
44.只有当ad拥有与组1116相对应的rg时,xpu才允许对应ad设置组1116中的锁定位1118。如果ad试图锁定在其中ad无权访问rg的rg配置1106,则xpu阻止该尝试成功。
45.soc 102(图1)可以执行冷启动或基于硬件的复位,以准备好进行正常或“任务模式”操作,这可以包括以以下方式提供资源访问控制。这样的冷启动可能涉及与本公开不直接相关的实体,诸如一个或多个启动加载程序。因此,本文中不描述这些细节。然而,理解一个或多个启动加载程序(bootloader)(其可以被存储在rom中)在cpu 104上被执行以将hlos 110加载到系统存储器中(即,在系统资源112中)并启动hlos 110可能是有用的。启动加载程序可以通过例如从闪存或其他非易失性存储器复制hlos 110(软件映像)来将hlos加载到系统存储器中。结果,hlos 110开始执行。在一些示例中,启动加载程序可以加载安全执行环境(“see”)或其他中间软件,其进而加载并启动hlos 110。如本领域普通技术人员
所理解的,see(有时被称为可信执行环境或“tee”)包括通常与安全处理器硬件结合来将see中运行的可信应用程序与主(不可信)hlos上运行的不可信应用程序隔离的软件。然而,在本公开的上下文中,see仅被提及作为可以在加载hlos之前加载的中间软件的示例,并且实施例不需要包括see或其他中间软件。然后,如下文所述,hlos110进而可以加载和启动一个或多个其他ad 108。tme 116可以与hlos 110同时启动。应注意,tme 116(以及任何see)可以以与下文关于任何其他ad 108描述的基本相同的方式获得资源的所有权。以这种方式,hlos 110可以建立对tme 116(以及任何see)的信任。
46.如图4所示,用于soc中的资源访问控制的方法400可以包括启动ad,诸如例如上述ad 108(图1)或208b(图2)中的任何ad。如框402所示,hlos 110或其他代理可以将资源分配给ad。如上所述,资源可以是例如ad要执行的存储器区域。在一个示例性实施例中,根据框402分配资源可以包括在保护资源的xpu中配置访问许可,以使得ad能够访问资源。例如,访问许可可以被配置为给予ad读取许可、写入许可或读取和写入许可。分配资源还可以包括配置访问许可,使得tme 116(图1)具有足够的访问许可(例如,只读)来执行以下描述的验证。对于tme 116的该例外,访问许可被配置为防止由除正在被启动的ad以外的任何ad访问资源。
47.尽管在本文描述的示例性实施例中,执行或控制资源分配的代理是hlos 110,但在其他实施例中,除hlos以外的代理可以执行或控制资源分配或这样的分配的一部分。例如,在其他实施例中,hlos可以执行本文中描述的资源分配的一些方面,诸如分配地址范围,而另一代理配置访问许可。
48.如框404所示,hlos 110或其他代理可以将与ad相关联的软件映像加载到存储器区域(资源)中。软件映像可以是ite,并且可以从rom或其他源获得。
49.如框406所示,tme 116(图1)然后可以锁定资源,防止由除正被启动的ad以外的任何实体访问,不同之处在于tme 116可以具有足够的访问许可来执行以下描述的验证。在一个示例性实施例中,根据框406锁定资源防止访问可以包括通过在保护资源的xpu中设置锁定位来锁定资源配置。由于访问许可可能已由hlos 110或如上所述的其他代理配置(框402),因此锁定资源配置从而根据这些访问许可来锁定资源本身防止访问。注意,以这种方式锁定资源配置对访问许可进行锁定,从而防止由hlos 110(图1)修改。
50.如框408所示,tme 116可以验证与已加载到存储器中并被锁定的ad相关联的软件映像。如框410所示,在该软件映像的成功验证之后,tme 116可以发起(或者如果启动已开始,则不采取任何行动来阻止其继续)ad的启动。如框412所示,启动ad然后可以锁定资源,防止由除其自身以外的任何实体访问。因此,资源可以被锁定,防止由tme 116和hlos 110访问。在以下关于图5描述的示例性方法中,锁定资源的ad可以在ad成功验证资源并且在移除tme访问资源的许可之后进行调节。
51.在ad包括两个或更多个总线主设备的示例中,每个总线主设备具有软件部分,以上关于框402-412描述的操作可以对作为ite的软件映像(诸如上述ite 206b(图2))执行。在这样的示例中,启动ad可以导致ite 206b开始在与其相关联的硬件引擎上操作或执行(其中ite 206a和相关联的硬件引擎204b一起用作第一总线主设备202b),并且ite进而通过在第二软件映像上执行上文关于框402-412描述的操作来发起第二总线主设备202c的启动。在ad包括三个总线主设备(未示出)的示例中,第二总线主设备可以启动第三总线主设
备等。注意,在这样的示例中的第二和第三总线主设备可以独立于tme启动;tme只需要启动第一总线主设备。
52.如图5所示,用于soc中的资源访问控制的方法500可以包括启动ad。方法500可以是上述方法400(图4)的示例。
53.如框502所示,hlos可以读取ad启动要求,诸如例如,针对ad的存储器要求(例如,分区的数量和每个分区的尺寸)、针对ad的时钟/功率要求等。如框504所示,hlos可以为ad分配一个存储器分区。此时,存储器分区是hlos拥有的,并且在物理上连续。如框506所示,hlos可以将ad软件映像从非易失性存储器加载(即,复制)到ad存储器分区中。hlos还可以将与ad相关联的任何启动加载程序加载到存储器分区中。
54.ad可以是或可以不是具有私密特性的类型。该上下文中的“私密性”指代只有ad才能读取的第三方内容。该内容可以以加密形式存储在闪存存储器中,并且hlos可以将加密内容加载到系统存储器中的专用分区中。该区域可以在ad启动之后由ad的主启动加载程序解密。如果ad具有私密性,则如框508所示,hlos可以创建两个rg:一个rg用于ad的主启动加载程序,另一rg用于剩余的ad存储器分配。如果ad不具有私密性,则如框510所示,hlos可以创建一个rg用于ad的整个存储器分配。
55.如框512所示,hlos然后可以配置ad的启动矢量寄存器。hlos还可以配置保护ad寄存器空间的(一个或多个)xpu。例如,hlos可以使用xpu api 1100(图11),利用rg配置1106来配置(一个或多个)xpu。rg配置可以包括针对ad具有对rg的读写访问的访问许可。rg配置还可以包括针对tme具有对rg的读取访问的的访问许可,使得tme可以执行以下描述的验证。如框514所示,hlos然后可以向tme发送启动ad的请求。如上所述,启动ad涵盖启动ad中的所有总线主设备。
56.如框516所示,tme通过在对应的xpu中设置其锁定位来锁定ad的一个或多个rg配置。在锁定特征的上下文中,“设置”锁定位意味着将rg配置设置为“锁定”状态,并且“清除”锁定位则意味着将rg配置设置为“取消锁定”状态。tme可以读取存储器分配信息并确认xpu配置正确。注意,设置tme的锁定位可以防止任何实体(包括hlos、tme等)修改rg配置。
57.如框518所示,tme然后可以诸如例如通过验证软件映像的签名来验证软件映像。如本领域普通技术人员所理解的,验证可以使用密码技术(例如,密钥)以常规方式来执行。如果tme确定验证成功,则如框520所示,tme可以发起ad的启动。这可以包括使得能够启动资源并从复位释放ad的tme,使得ad被使能或允许启动。如上所述,ad通常包括具有专用处理器和时钟/功率域的子系统。“从复位释放ad”意味着进行所有必要的硬件配置,以使得ad子系统和处理器脱离复位状态。当ad的硬件部分以上述方式变为活动时,ad的ad软件映像或软件部分开始在其加载到的存储器区域或分区中启动或执行。
58.如框522所示,一旦ad开始执行,它可以通过检查(inspect)xpu中的rg配置来确认(validate)其一个或多个rg有效。始终允许ad检查(即,读取)rg配置,诸如上述rg配置1106(图11),包括rg访问许可。如果rg配置的验证成功,ad可以设置其对应的锁定位。如果ad确认其rg访问许可符合ad的期望,则验证成功。例如,ad通常可以期望rg访问许可指示rg仅由该ad拥有,即,不允许除该ad以外的任何实体访问该rg。如果rg访问许可允许对rg的未预期实体访问,则ad将拒绝rg配置,认定为无效(即,验证失败),并停止启动。由于该示例中的ad刚刚开始启动(即,执行),ad可能期望tme仍然具有对rg的读取访问(但不具有写入访问)。
59.在rg配置验证成功之后并且在ad已设置其对应的锁定位之后,ad可以通知tme。如框523所示,当tme从ad接收到该通知时,tme可以清除其锁定位。清除tme针对rg的锁定位可以触发xpu自动(即,在没有hlos或其他实体干预的情况下)删除tme对该rg的访问许可,因为tme对其锁定位的清除指示tme不再需要访问rg。由于ad的锁定位保持置位,rg配置被锁定,不允许tme、hlos和不拥有rg的任何其他ad访问。如框524所示,ad然后可以继续启动。
60.如果tme确定(框518)验证失败,则如框526所示,tme可以取消锁定与包含ad软件映像的rg相关联的一个或多个rg配置,并向hlos发出启动操作失败的信号。tme还可以控制应用于ad硬件引擎的硬件复位信号(未示出)并且仅当验证成功时才可以释放硬件复位信号。
61.如图6所示,用于soc中的资源访问控制的方法600可以包括将附加资源分配给ad(诸如例如上述ad 108(图1)或208b(图2)中的任何ad)。如框602所示,ad可以向hlos传输对一个或多个附加资源的请求。在该上下文中,“附加”是指附加于ad的软件映像驻留在其中的存储器空间以及在ad被启动时分配给ad的存储器空间。如框604所示,hlos然后可以将一个或多个附加资源分配给请求ad(requesting ad)。如框606所示,ad然后可以通过设置对应xpu的锁定位来锁定与附加资源相关联的rg配置,防止由请求ad以外的任何实体访问。注意,以该方式锁定资源将锁定资源,以防止除hlos、tme和请求ad以外的任何其他实体访问。
62.如图7所示,用于soc中的资源访问控制的方法700可以包括将附加资源分配给ad。方法700可以是上述方法600(图6)的示例。
63.如框702所示,ad可以向hlos传输对一个或多个附加资源的请求。例如,请求可以包括被请求的存储器空间量以及被请求的访问许可。如框704所示,hlos可以确定被请求的资源是否可用。如果被请求的资源不可用,则如框706所示,hlos可以通知ad请求被拒绝。如果被请求的资源可用,则如框708所示,hlos可以分配新的rg。分配新的rg可以包括为保护资源的xpu提供rg配置或者利用rg配置对保护资源的xpu进行编程,rg配置可以包括rg地址范围、访问许可等。例如,hlos可以使用xpu api 1100(图11)来利用rg配置1106来配置xpu。然后,如框710所示,hlos可以将指向新创建的rg的指针返回到请求ad。
64.如框712所示,请求ad可以锁定rg并检查rg配置来确定其是“有效”还是“无效”。如上文关于框522(图5)所述,如果rg访问许可符合ad的期望,则ad可以认为rg配置有效。例如,如果ad期望没有其他实体可以访问资源,则rg访问许可应仅允许该ad访问资源。如果rg访问许可允许任何其他实体访问资源,则ad拒绝rg配置,认定为无效。如果rg配置“无效”,则如框716所示,ad可以移除锁定并向hlos通知rg被拒绝。如果rg配置“有效”,则如框714所示,ad可以开始使用rg。
65.如图8所示,用于soc中的资源访问控制的方法800可以包括诸如通过上述方法600(图6)或700(图7),取消分配已分配给ad的附加资源。如框802所示,ad可以对资源取消锁定。如框804所示,ad然后可以通知hlos资源现在空闲。
66.如图9所示,用于soc中的资源访问控制的方法900可以包括取消分配已分配给ad的附加资源。方法900可以是上述方法800(图8)的示例。
67.如框902所示,ad可以将分配给rg的存储器空间清零。将存储器空间清零擦除以其他方式可能容易受到未授权访问的数据,从而提供在一些实施例中可能期望的附加安全性或私密性。如框904所示,ad可以取消锁定rg。如框906所示,ad然后可以向hlos通知,rg现在
空闲并且可以被返回到“未使用”rg的池或列表。如框908所示,hlos可以禁用rg并将其返回到池。“禁用rg”表示xpu不再使用该rg进行访问控制。hlos可以使用xpu api 1100(图11)的rg使能设置1114来禁用rg。
68.如图10所示,用于资源访问控制的系统和方法的示例性实施例可以被实现在pcd 1000中。pcd 1000包括soc 1002。soc 1002可以包括cpu 1004、gpu 1006、dsp 1007、模拟信号处理器1008或其他处理器。cpu 1004可以包括多个核心,诸如第一核心1004a、第二核心1004b等至第n核心1004n。cpu 1004或其任何核心可以是上述处理器104(图1)或cpu 204a(图2)的示例。
69.显示器控制器1010和触摸屏控制器1012可以被耦合到cpu1004。soc 1002外部的触摸屏显示器1014可以被耦合到显示器控制器1010与触摸屏控制器1012。pcd 1000还可以包括耦合到cpu 1004的视频解码器1016。视频放大器1018可以被耦合到视频解码器1018和触摸屏显示器1014。视频端口1020可以被耦合到视频放大器1018。通用串行总线(“usb”)控制器1022也可以被耦合到cpu 1004,并且usb端口1024可以被耦合到usb控制器1022。用户标识模块(“sim”)卡1026也可以被耦合到cpu 1004。
70.一个或多个存储器可以被耦合到cpu 1004。一个或多个存储器可以包括易失性和非易失性存储器。易失性存储器的示例包括静态随机存取存储器(“sram”)1028和动态ram(“dram”)1030和1031。dram 1030和1031或其部分可以是上述系统存储器112(图1)的示例。这样的存储器可以在soc 1002外部,诸如dram 1030,或者在soc 1004内部,诸如dram 1031。被耦合到cpu 1004的dram控制器1032可以控制向dram 1030和1031写入数据并且从dram 1030和1031读取数据。在其他实施例中,这样的dram控制器可以被包括在处理器(诸如,cpu 1004)内。cpu 1004可以执行任何前述存储器中存储的hlos或其他软件。
71.立体声音频codec 1034可以被耦合到模拟信号处理器1008。此外,音频放大器1036可以被耦合到立体声音频codec 1034。第一和第二立体声扬声器1038和1040可以分别被耦合到音频放大器1036。另外,麦克风放大器1042可以被耦合到立体声音频codec1034,并且麦克风1044可以被耦合到麦克风放大器1042。调频(“fm”)无线电调谐器1046可以被耦合到立体声音频codec 1034。fm天线1048可以被耦合到fm无线电调谐器1044。此外,立体声耳机1050可以被耦合到立体声音频codec 1034。可以耦合到cpu1004的其他设备包括一个或多个数字(例如,ccd或cmos)相机1052。
72.调制解调器或rf收发器1054可以被耦合到模拟信号处理器1008。调制解调器或rf收发器1054或其一部分可以是上述ad 108(图1)或208b(图2)的示例。rf开关1056可以被耦合到rf收发器1054和rf天线1058。另外,键盘(keypad)1060、具有麦克风的单声道耳机1062和振动器设备1064可以被耦合到模拟信号处理器1008。
73.电源1066可以经由功率管理集成电路(“pmic”)1068耦合到soc 1002。电源1066可以包括可充电电池或dc电源,dc电源来自耦合到ac功率源的ac-dc变压器。
74.soc 1002可以具有一个或多个内部或片上热传感器1070a并且可以被耦合到一个或多个外部或片外热传感器1070b。模数转换器(“adc”)控制器1072可以将热传感器1070a和1070b产生的电压降转换为数字信号。
75.在该示例性实施例中,触摸屏显示器1014、视频端口1020、usb端口1024、相机1052、第一立体声扬声器1038、第二立体声扬声器1040、麦克风1044、fm天线1048、立体声耳
机1050、rf开关1056、rf天线1058、键盘1060、单声道耳机1062、振动器1064、热传感器1050b、adc控制器1052、pmic 1068、电源1066、dram 1030以及sim卡1026在soc 1002的外部。然而,应当理解,在其他实施例中,这些设备中的一个或多个设备可以被包括在这样的soc中。
76.soc 1002可以包括tme 1074,tme 1074可以是上述tme 116(图1)的示例。tme 1074可以包括处理器硬件,并且因此可以执行固件或软件来控制上述方法的各部分。
77.soc 1002中被配置为总线主设备的任何组件可以是上述总线主设备106(图1)、202a、202b或202c(图2)的示例。调制解调器1054或其一部分是可以用作总线主设备的组件的示例。总线主设备可以包括处理器硬件,并且相应地可以执行固件或软件来控制上述关于ad描述的方法的各部分。类似地,soc 1002中被配置为总线从设备的任何组件可以是用作或提供资源的上述总线从设备212(图2)的示例。尽管为了清楚起见在图10中未示出,但是总线从设备可以被耦合到xpu。尽管同样未在图10中未示出,但是如上文关于图2所述,soc 1002的总线主设备、总线从设备和其他组件可以经由互连组件或总线系统进行通信。
78.固件或软件可以被存储在上述存储器中的任何存储器中,诸如dram 1030或1031、sram 1028等,或者可以被存储在可由执行软件或固件的处理器硬件直接访问的本地存储器中。如在专利词典(patent lexicon)中所理解的,具有以计算机可读形式存储在其中以供处理器硬件(例如,cpu、tme、ad等)执行的固件或软件的任何这样的存储器可以是“计算机程序产品”、“计算机可读介质”等的示例。
79.对于本发明所属领域的普通技术人员来说,在不脱离其精神和范围的情况下,替代实施例将变得显而易见。因此,虽然已详细图示并描述了选定方面,但是应当理解,在不脱离由所附权利要求所定义的本发明的精神和范围的情况下,可以在其中进行各种替换和改变。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献