FPGA Xilinx Zynq 系列(五)

2020-12-30 10:37:42 浏览数 (1)

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来FPGA Xilinx Zynq 系列第五篇,本篇内容目录简介如下:

2. Zynq 芯片(“ 是什么?”)

2.4 安全

2.4.1 安全引导

2.4.2 硬件支持

2.4.3 运行时刻安全

2.5 Zynq-7000 系列成员

2.6 第二篇至第五篇本章回顾

2.7 架构参考指南

2.7 参考文献

本系列分享来源于《The Zynq Book》,Louise H. Crockett, Ross A. Elliot,Martin A. Enderwitz, Robert W. Stewart. L. H. Crockett, R. A. Elliot, M. A. Enderwitz and R. W. Stewart, The Zynq Book: Embedded Processing with the ARM Cortex-A9 on the Xilinx Zynq-7000 All Programmable SoC, First Edition, Strathclyde Academic Media, 2016。

Zynq 芯片(“ 是什么?”)

2.4 安全

传统意义上,使用安全的、防窃取的芯片主要是考虑到用于防卫或安保领域的 应用。不过,最近以来,随着定制 IP 资源的开发和市场的发展趋势,使用具有对其内部软件和硬件 IP 提供安全防护能力的芯片,成为像航空、汽车、广播、工业和有线 / 无线网络及通信这样的市场中日益增长的需求 [28]。Zynq-7000芯片实现了大范围的安全功能,能对你的系统的内部功能提供保护, 这种保护包括支持多种加密标准的专用硬件、安全系统引导措施和软件执行保护。这一节主要介绍 Zynq 的安全功能。要给出 Zynq 的每一项具体的安全措施的详 细细节超出了本章的范畴,我们只会介绍相应的功能。关于这些特性的进一步的信息可以在参考文献中找到。

2.4.1 安全引导

Zynq-7000 芯片值得一提的主要架构点之一,是它的引导方法只限于一种来源 —— 芯片引导必须由处理器驱动。当芯片上电或重启的时候,PS 的第一个核从外 部存储器中引导,然后才会去配置 PL[28]。通过限制引导方法为单一来源,就确保了就不可能在 PL 已经配置之后再有人工的方法来装载恶意的软件,同时在处理器已经初始化之后也没有办法再装载恶意的映像到 PL 中去。Zynq-7000 芯片里嵌入了不少功能来实现安全引导。其中之一是引导 ROM,它被 设计来处理多种形式的安全问题。芯片支持第一阶段引导装载程序 (First-StageBoot Loader,FSBL)、U-Boot、PL 位流及用户软件 (OS 和应用程序)的非对称和 对称认证。在非对称认证情况下,用了 RSA-2048 主从公钥,而对称认证用了 HMAC(SHA-256)。进一步地,前面所提到的引导文件还支持用 256 位 AES/CBC 键加密,这个键可以是易失的 (电池后备电源)或非易失的 (eFuse)。另一项支持安全引导的特性是 OCM,它实现了足够大(256kB)的 OCM 来从内部 位置运行 FSBL,这样就避免了任何外部探测攻击。OCM 还足够大到安全地存储TrustZone® 软件程序(在下面的小节里有更多的关于 Zynq-7000 和 ARM TrustZone 技术的内容)。

2.4.2 硬件支持

所有的 Zynq-7000 芯片都受益于内置的硬件安全 IP,这个安全 IP 既可以是 PS 内的硬 IP 包,也可以是 PL 内的软 IP。这些安全 IP 的功能包括防窃取、信任和信息保证,从而从上电到整个运行过程对系统提供保护 [28]。除了已有的安全 IP,Zynq-7000 芯片还有一些嵌入式模块,可以支持创建安全 的系统。这样的模块包括认证机制、加密引擎、键码存储和唯一芯片识别机制。

下面列出了 Zynq 芯片和安全有关的一些特性 [28]:

• ARM TrustZone 支持 (PS 及 PL)

• AES-256 加密 (BBRAM 保存键码和 eFUSE 键码保存)

• 安全认证和启动 (PS 及 PL)

• HMAC 位流认证• FSBL RSA-2048 认证

• 禁止强硬回读

• JTAG 禁止 / 监视

• SEU 检查器

2.4.3 运行时刻安全

即使在引导过程完成后,仍然需要防止对内部芯片数据或存储器的不应有的访 问,因此就需要提供运行时刻安全。如果在芯片上没有部署运行时刻安全机制,用户或系统数据的私密性可能受到损害,系统的稳定性和有效运作也会受到影响。为了防止对你的系统的这种损害,对内部数据、存储器或外设的任何恶意访问必须被排除在外。

运行时刻安全可以被分成三个保护领域,以下概述之:

处理器系统到可编程逻辑 — 防止运行在 Zynq PS 上的软件访问基于硬件的 IP 和 PL 里运行的从机。Zynq 芯片有两个办法来实现这个防护:(一)一种Zynq 特有的 ARM TrustZone 技术的实现(见下面专门的关于 Zynq-7000 和 ARM TrustZone 技术的小节),和(二)基于对于从主机来的 AXI 端口会话和对应的从机地址的监视。

处理器系统到处理器系统 — 前代的嵌入式系统,是融合多个独立的子系统 而构成的,每一个子系统进而又是由专门的硬件、操作系统和软件所组成的。从运行时刻安全的角度看,这样的架构天生就是安全的,因为每个子系统是用它自己专门的硬件 (CPU、总线、存储器和外设)所做出来的。可是现今的嵌入式系统,诸如基于 Zynq-7000 芯片这样的,是用共享的资源,如 PS、PL 和可配置的互联做出来的,因此运行时刻安全是很大的问题。因此确保共享资源在那里具有充分的安全性是十分重要的。其中必须具有足够安全性的这样一个地方就是 MMU:- 内存管理单元(Memory Management Unit,MMU)安全 — 通过以安全的方 式来配置 MMU 的页表 (Page Table),就限制了未经授权的软件应用和硬 件驱动程序访问特定的内存区域、设备、配置寄存器和 IP 核,从而提升了系统安全 [28]。Zynq-7000系列所有的成员都为每个 Cortex-A9配备了专门的 MMU。每个 MMU的页表可以被精细调整来控制对 DDR 存储器、OCM、系统级控制寄存器、PS内的存储映射块和 PL 内的存储映射 IP 包的访问。

可编程逻辑到处理器系统或可编程逻辑 — Zynq PL 的主要优势之一就是能轻 易地实例化出多个可以表现为 AXI 主机的 IP 包 (比如一个 MicroBlaze 处理器)。这样的 AXI 主机会受到多个层次上的限制,限制它们访问与 PS 所关联的从机设备 (诸如 CAN、以太网、GPIO 和 USB),以及在 PL 中实例化出来的其他软 IP[28]。不仅于此,在系统开发过程中,开发者可以自由地控制哪个从机地址可以被PL 中的某一个主机 IP 所访问。这个功能降低了一个有问题的主机 IP 访问受限的硬件的可能性。

Zynq-7000 和 ARM TrustZone 技术

Zynq 芯片上可以避免这一缺陷的特性之一,是 Zynq 特有的对 ARM TrustZone 技术的实现 [28]。TrustZone 架构使得嵌入式系统内受信任的计算成为可能,它建立了一个硬件架构,能在系统设计的整个过程中建立起安全框架。能做到这样,是因为它在 “ 普通世界 ” 或 “ 安全世界 ” 中运行特定的子系统,而不是把整个系统资产保护在一个单一、专门的硬件资源中 [34]。通过以这个方式运作,加上能充分使用所提供的这个优势的软件,TrustZone 就实现了一个能从系统的一端运行到另一端的安全解决方案。对于 Zynq 芯片而言,普通世界被定义为硬件的一个子集,包含了存储器和二级 cache 区域,以及特定的 AXI 设备 [34]。非受信任的软件可以运行在普通世界中,但是它对其他硬件的访问和感知是受限的,因为那些硬件是专用于安全世界下的TrustZone 架构的。那些被归类为受信任的软件应用会在安全世界里执行,那是一个单独的、受信任的环境,与主操作系统是隔绝的,以防止任何对嵌入式系统的恶意访问。

2.5 Zynq-7000 系列成员

在写本书的时候,Zynq 产品线包括了六种不同的通用 Zynq-7000 芯片,每种都与其他的在特性和尺寸上略有所不同。表 2.3 总结了他们的显著特性(进一步的详细内容在 [32] 可以找到)。

表 2.3: Zynq-7000 系列成员

a. 与具体的封装有关,这里列的是最大数量。HR= 大范围 (High Range), HP= 高性能 (High Performance)。

b. 与具体选择的封装有关。

c. 与芯片的速度等级有关。

正如表中所列举的,Zynq 系列中不同的芯片之间的主要差异是可编程逻辑的类 型和数量(或者说 “ 密度 ”)。对于通用 Zynq 系列成员来说,较小的芯片是基于Xilinx 的 Artix-7 FPGA 逻辑部分的,而较大的芯片是基于 Kintex-7 逻辑部分的。

这六个系列成员中的每一个都提供了不同数量的通用逻辑单元、块 RAM 和 DSP48E1,当然 PL 部分的整个处理能力与它的资源数量是成正比的。所有系列成员的 PS 是标准的,唯一的区别是 ARM 核的最大频率:基于 Artix-7 的芯片的 PS 的时钟可以高达866MHz,而基于 Kintex 的芯片可以高达 1GHz。还有一些不同的因素。

特别是在某些芯片的 PL 部分中所集成的 PCI Express 块 和高速通信接口,它们实现了能以几个 Gbps 的速率运作的收发器。除了通用的 Zynq 芯片,还有两个自动车级的 Zynq 系列 (基于 Z-7010 和 Z- 7020)和三个军用级的 Zynq 系列 (基于 Z-7020、Z-7030 和 Z-7045)。和主系列相同的型号相比,自动车级和军用级的芯片有更宽的温度范围,而且军用级还有更坚固的封装和增强的安全特性。

基于所有这些因素,可见 Zynq 是有很多种类的选择的,确保了 Zynq 可以适用 于多种应用。

2.6 第二篇至第五篇本章回顾

本章概述了 Zynq 芯片的总体架构,并详述了它的两个组成部分:PS 和 PL,以 及介于这两部分之间的接口资源。处理器系统包含了一个双核 ARM Cortex-A9 处理器,带有合成在一个 APU 单元 里的 SIMD 和浮点运算的扩展,另外还有存储器资源。着重介绍了 APU 的能力及其与处理器系统中其他部分的接口。同时也解释了 PS 整体的内部结构,及其与可编程逻辑的连接。概述了可编程逻辑部分的结构和资源,包括逻辑部分、块 RAM 和 DSP48E1 资源, 及接口资源,并说明了 PL 和 PS 之间用 AXI 构成的接口的重要问题。最后,还比较了 Zynq-7000 系列的不同芯片。

2.7 架构参考指南

2.8 节以可视化的方式给出了参考文献列表的指南,放在这里是为了帮助厘清 与本章所表达的 Zynq 基础架构相关的详细数据的有用的来源。

图 2.11: 总的 Zynq 架构和参考指南

图 2.12: 应用处理器单元 — 参考指南

图 2.13: 可编程逻辑 — 参考指南

2.8 参考文献

说明:所有的 URL 在 2014 年 6 月最后访问过。

[1] ARM, “AMBA 4 AXI4-Stream Protocol Specification”, v1.0, March 2010. 位于 : http://www.arm.com/products/system-ip/amba/ ( 然后 “Download Specifications”).

[2] ARM, “AMBA AXI and ACE Protocol Specification: AXI3, AXI4, and AXI-Lite, ACE and ACE-Lite”, February 2013. 位于 : http://www.arm.com/products/system-ip/amba/ ( 然后 “Download Specifications”).

[3] ARM, “AMBA Open Specifications”, 网页 . 位于 : http://www.arm.com/products/system-ip/amba/amba-open-specifications.php

[4] ARM, “Architectures, Processors and Devices Development Article”, May 2009. 位于 :http://infocenter.arm.com/help/topic/com.arm.doc.dht0001a/DHT0001A_architecture_processors_and_devices.pdf

[5] ARM, “ARM Architecture Reference Manual: ARMv7-A and ARMv7-R edition”, July 2012. 位于 : https://silver.arm.com/download/ARM_and_AMBA_Architecture/AR570-DA-70000-r0p0-00rel1/ DDI0406C_b_arm_architecture_reference_manual.pdf ( 需要注册账号 )

[6] ARM 白皮书 , “The ARM Cortex-A9 Processors”, v2.0, September 2009. 位于 : http://www.arm.com/files/pdf/ARMCortexA-9Processors.pdf

[7] ARM, “Cortex-A9 Floating-Point Unit Technical Reference Manual”, r3p0 版 , July 2011. 位于 :http://infocenter.arm.com/help/topic/com.arm.doc.ddi0408g/DDI0408G_cortex_a9_fpu_r3p0_trm.pdf

[8] ARM, “Cortex-A9 MPCore Technical Reference Manual”, r3p0 版 , July 2011. 位于 :http://infocenter.arm.com/help/topic/com.arm.doc.ddi0407g/DDI0407G_cortex_a9_mpcore_r3p0_trm.pdf

[9] ARM, “Cortex-A9 NEON Media Processing Engine Technical Reference Manual”, r3p0 版 , July 2011. 位于 :http://infocenter.arm.com/help/topic/com.arm.doc.ddi0409g/DDI0409G_cortex_a9_neon_mpe_r3p0_trm.pdf

[10]Freescale Semiconductor, “Reference Manual - M68HC11” (Section 8. Synchronous Serial Peripheral Interface), Rev. 6.1, 2007. 位于 : http://www.freescale.com/files/microcontrollers/doc/ref_manual/M68HC11RM.pdf

[11]“IEEE Standard for Floating-Point Arithmetic”, IEEE Computer Society, revision IEEE Std. 754-2008, August 2008.

[12]“IEEE Standard Test Access Port and Boundary-Scan Architecture”, IEEE Computer Society, revision IEEE Std. 1149.1-1990 including IEEE Std 1149.1a-1993, February 1990 and June 1993.

[13]David A. Patterson and John L. Hennessy, Computer Architecture and Design: The Hardware / Software Interface, 4th Ed., Morgan Kaufmann, 2012.

[14]Philips, “I2C Bus Specification and User Manual”, UM10204, Rev. 5, October 2012.位于 : http://www.nxp.com/documents/user_manual/UM10204.pdf

[15]Qin, Leon, “Using NEON for Parallel Data Processing; Zynq-7000 Hardware Architecture”, Xilinx presentation, October 2012.位于 : http://www.xilinx.com/Attachment/53775/Neon_Introduction_for_Avnet_training.pdf

[16]R. Wilson, “Truth About Xilinx Love Affair with AMBA”, Electronics Weekly, 28th June 2010. 位于 : http://www.electronicsweekly.com/articles/28/06/2010/48931/truth-about-xilinx-love-affair-withamba.htm

[17]Xilinx, Inc., “7 Series DSP48E1 Slice User Guide”, UG479, v1.7, May 2014. 位于 : http://www.xilinx.com/support/documentation/user_guides/ug479_7Series_DSP48E1.pdf

[18]Xilinx, Inc., “7 Series FPGAs and Zynq-7000 All Programmable SoC XADC Dual 12-Bit 1 MSPS Analogto-Digital Converter User Guide”, UG480, v1.4, May 2014. 位于 : http://www.xilinx.com/support/documentation/user_guides/ug480_7Series_XADC.pdf

[19]Xilinx, Inc., “7 Series FPGAs Clocking Resources User Guide”, UG472, v1.10, May 2014. 位于 : http://www.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf

[20]Xilinx, Inc., “7 Series FPGAs Configurable Logic Block User Guide”, UG474, v1.5, August 2013. 位于 : http://www.xilinx.com/support/documentation/user_guides/ug474_7Series_CLB.pdf

[21]Xilinx, Inc., “7 Series FPGAs GTX/GTH Transceivers User Guide”, UG476, v1.10, February 2014. 位于 : http://www.xilinx.com/support/documentation/user_guides/ug476_7Series_Transceivers.pdf

[22]Xilinx, Inc., “7 Series FPGAs Integrated Block for PCI Express Product Guide”, PG054, v3.0, June 2014. 位于 : http://www.xilinx.com/support/documentation/ip_documentation/pcie_7x/v3_0/pg054-7seriespcie.pdf

[23]Xilinx, Inc., “7 Series FPGAs Memory Resources User Guide”, UG473, v1.10.1, May 2014. 位于 : http://www.xilinx.com/support/documentation/user_guides/ug473_7Series_Memory_Resources.pdf

[24]Xilinx, Inc., “7 Series FPGAs SelectIO Resources User Guide”, UG471, v1.4, May 2014. 位于 : http://www.xilinx.com/support/documentation/user_guides/ug471_7Series_SelectIO.pdf

[25]Xilinx, Inc., “AXI Reference Guide”, UG761, v14.3, November 2012. 位于 : http://www.xilinx.com/support/documentation/ip_documentation/axi_ref_guide/latest/ug761_axi_reference_guide.pdf

[26]Xilinx, Inc., “LogiCORE® IP 7 Series FPGAs Transceivers Wizard v2.6 User Guide”, UG769, June 2013. 位于 : http://www.xilinx.com/support/documentation/ip_documentation/gtwizard/v2_6/ ug769_gtwizard.pdf

[27]Xilinx, Inc., “LogiCORE IP MicroBlaze Micro Controller System, Product Specification, DS865, v1.1, April 2012. 位于 : http://www.xilinx.com/support/documentation/sw_manuals/xilinx14_1/ds865_microblaze_mcs.pdf

[28]Xilinx, Inc., “Security Solutions” 网页 .位于 : http://www.xilinx.com/products/silicon-devices/soc/zynq-7000/security.html

[29]Xilinx, Inc., “Xilinx and ARM Announce Development Collaboration”, press release, 19th October 2009. 位于 : http://press.xilinx.com/2009-10-19-Xilinx-and-ARM-Announce-Development-Collaboration

[30]Xilinx, Inc., “Zynq-7000 All Programmable SoC Overview”, Preliminary Product Specification, DS190, v1.6, December 2013. 位于 : http://www.xilinx.com/support/documentation/data_sheets/ds190-Zynq-7000-Overview.pdf

[31]Xilinx, Inc., “Zynq-7000 All Programmable SoC Packaging and Pinout Product Specification”, UG865, v1.3, November 2013. 位于 : http://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf

[32]Xilinx, Inc., “Zynq-7000 All Programmable SoCs Product Table”, XMP087, v1.7. 位于 : http://www.xilinx.com/publications/prod_mktg/zynq7000/Zynq-7000-combined-product-table.pdf

[33]Xilinx, Inc., “Zynq-7000 Technical Reference Manual”, UG585, v1.7, February 2014. 位于 : http://www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf

[34]Y. Gosain and P. Palanichamy, “TrustZone Technology Support in Zynq-7000 All Programmable SoCs”, Xilinx 白皮书 , WP429, v1.0, May 2014.位于 : http://www.xilinx.com/support/documentation/white_papers/wp429-trustzone-zynq.pdf

第五篇到此结束,明日将会带来第六篇,第六篇将介绍Zynq 设计指南 (“ 如何使用它?”)之入门设计及相关工具获取等相关内容。欢迎各位大侠一起交流学习,共同进步。

END

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

0 人点赞