APP下载

使用ARM的TrustZone技术,针对安全和非安全应用划分系统

2013-04-29StefanoZammattioCliveDavies

电子产品世界 2013年9期

Stefano Zammattio Clive Davies

摘要:随着ARM Cortex-A9多处理器和FPGA SoC的推出,可把现有的分立微控制器和数字逻辑功能集成到一个多核器件中。这减小了功耗和体积,而主要难点之一是在一个器件中同时实现安全关键和非安全关键软件单元。本文网络版地址:http://www.eepw.com.cn/article/164382.htm

关键词:ARM;TrustZone;安全;FPGA

DOI: 10.3969/j.issn.1005-5517.2013.9.003

随着ARM Cortex-A9多处理器和FPGA SoC的推出,很多开发人员看到了合并现有系统的机会,这通过将分立微控制器(MCU)和数字逻辑集成到一个多核器件中来实现。最大的好处是减小了功耗和体积,而一个主要难点是在一个器件中同时实现安全关键和非安全关键软件单元。图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会话的影响。安全检查器可以接受这类保护。

每一Cortex-A9处理器都有自己的独立L1高速缓存,获取指令和数据,还有一个独立的定时器/看门狗模块。处理器共享L2高速缓存、通用中断控制器(GIC)以及探测控制单元(SCU)。GIC管理优先级、中断和MPCore处理器的连接。可以将其配置为连接每一中断和某一内核,还可以为每一中断分配一个TrustZone状态。

可以把L2高速缓存配置为以很多不同的方式进行工作。在我们的例子中,L2配置寄存器被设置为只能从安全主机进行写操作,意味着,Linux不能修改L2高速缓存配置,除非它通过安全状态监视器来访问寄存器。主机将L2高速缓存分开,两个分配给μC/ OS-II,六个分配给Linux内核。μC/ OS-II内核分配了1Mb的DDR、UART1以及FPGA中的所有外设。所有其他资源都分配给Linux内核。

Linux内核能够管理ARM处理器的存储器管理单元,而μC/OS-II不能,因此,修改μC/OS-II BSP代码以便在启动期间建立静态页面表。分配给μC/OS-II的资源被放置在页面表中,μC/OS-II被配置为只使用这一存储器映射。对于Linux,描述系统的器件树(在启动时传递给内核)不包括分配给μC/OS-II的存储器或者外设参考。

SoC的启动是一个三级过程。第一级涉及到片内启动ROM,完成内核0的最小配置,使能外部非易失存储器。在这一存储器中,它找到并验证装入到片内RAM中的“预装入”软件镜像,用于配置SDRAM和SoC器件的外设I/O。器件初始化完成后,预装入程序装入并执行第二级启动加载程序(例如,U-boot)。第二级启动加载程序负责装入并执行最终的OS。我们的AMP系统还有其他的要求,例如,把两个独立的操作系统装入到存储器中,在SoC中配置TrustZone安全选项等。内核1、UART1、看门狗定时器1中的本地定时器/看门狗外设以及μC/ OS-II使用的中断被配置为安全,因此,只能由μC/OS-II进行访问。所有其他外设和中断被配置为非安全。完成这一工作后,代码启动内核1运行μC/OS-II,然后在内核0上启动运行Linux。

使用这一例子中描述的方法,设计人员受益于Altera SoC带来的器件合并优势,同时满足了安全关键应用严格的(TrustZone/硬件要求)软件分离要求。

参考文献:

[1]SoC FPGA ARM Cortex-A9 MPCore Processor Advance Information Brief[R/OL].http://www.altera.com.cn/literature/ hb/soc-fpga/aib-01020-soc-fpga-cortex-a9-processor. pdf

[2]Functional Description—HPS Memory Controller[R/OL]. http://www.altera.com.cn/literature/hb/external-memory/ emi_fd_controller_HPS.pdf

[3]Cortex-A9 Microprocessor Unit Subsystem[R/OL].http:// www.altera.com.cn/literature/hb/arria-v/av_54006.pdf