随着ARM Cortex-A9多处理器和FPGA SoC的推出,可把现有的分立微控制器和数字逻辑功能集成到一个多核器件中。这减小了功耗和体积,而主要难点之一是在一个器件中同时实现安全关键和非安全关键软件单元。图1显示了使用三个分立器件实现的一个典型电机控制系统。系统有一个非安全网络/用户接口处理器,一个电机控制监控微控制器和一片用于实现硬核实时电机控制器的FPGA。图1中的阴影部分含有设计的安全关键单元,需要通过外部权威机构进行安全认证。
把一个电机控制系统合并到SoC中,支持使用一个器件来实现信号处理、监控和通信等应用。Altera的28 nm Cyclone V SoC便是适用于这方面应用的一个器件实例。它具有低功耗FPGA架构和硬核处理器系统(HPS),含有ARM Cortex-A9双处理器内核和外设。HPS包括对ARM TrustZone技术的支持;这也可以延伸到FPGA架构中。
ARM的TrustZone技术支持把多核系统划分成关键系统资源运行的安全的环境和其他系统资源运行的非安全环境。因此,TrustZone隔离系统的关键部分只能在安全环境下访问这些部分;其基础是Cortex-A9 MPCore硬件和AMBA AXI3总线标准。在TrustZone支持系统中,每一AXI会话包括一个非安全(NS)比特,用于表示此次会话来自非安全还是安全环境。每次会话利用这一信息,系统中的从机可以选择根据其TrustZone状态进行响应。例如,处于安全模式的一个系统复位控制器只响应来自安全环境的复位申请,忽略非安全环境的响应,否则会产生错误。这一方法可以延伸到系统中的所有从机,在SoC器件中提供一个安全环境子系统。这一安全子系统与非安全环境隔离,可以用于运行可信软件,或者,在我们的安全软件中,不会受到流氓软件的危害,也不会受到来自系统非安全部分AXI会话的影响。安全检查器可以接受这类保护。
可以使用Altera的Cyclone V SoC来开发电机控制实例。这些器件在Cortex-A9 MPCore处理器、HPS外设、SDRAM控制器和FPGA上采用了ARM的TrustZone技术,能够在SoC的所有外设中构建安全感知功能。在这个例子中,系统软件的控制部分运行在µC/OS-II RTOS上,用户接口软件运行在Linux上。为能够对此提供支持,Cortex-A9 MPcore处理器被配置为一个内核运行Linux,另一个内核运行µC/OS-II,实现AMP操作。
实时关键电机控制功能运行µC/OS-II,工作在内核1上,而Linux以及提供控制和通信通道的应用程序运行在内核0上。目的是提供一个隔离域,在处理器内核1中运行功能时不会受到内核0的干扰。对此,内核1 (µC/OS-II)运行在安全环境中,内核0 (Linux)运行在非安全环境中。两个处理器内核通过共享物理存储器通道进行通信,使用了OpenMCAPI标准。对YHPS系统进行了静态划分,每一操作系统(OS)只可访问到其分配资源中。存储器映射被划分为分配给µC/OS-II或者Linux的区域,以及由二者共享的区域。
同样的,在µC/OS-II和Linux之间划分了外设,外设是不共享的。主机配置表列出了HPS中的所有AXI主机及其TrustZone安全状态。可以设置状态,这样,外设总是产生安全或者非安全访问,或者在每次“会话”基础上进行安全访问(例如,专门在每一访问上设置安全状态)。