0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文详解ZYNQ器件的启动配置方法

Hx 作者:工程师陈翠 2018-07-12 08:27 次阅读

电子系统设计中,无任是用CPU作为系统的主要器件,还是用FPGA作为系统的主要器件,系统设计中首先要考虑到的问题就是处理器的启动加载问题。 XILINX推出的ZYNQ可扩展处理平台,片内包括两个高性能的ARM Cortex A9硬核(称为处理系统processing system (PS))和FPGA(称为可编程逻辑programmable logic (PL)),在基于该平台的系统设计时具有极大的灵活性,本文就ZYNQ系统设计时都会遇到启动加载问题作一个抛砖引玉的描述,如有不当之处还请高手斧正。

一、器件配置单元

ZYNQ器件都带有一个器件配置单元(device configuration unit (DEVCFG) ),该模块由PS控制,提供软件控制下的PS和PL的初始化和配置功能。以前单个FPGA器件提供的下载方法已经不在适用,PL的配置下载必须在PS的参与下进行。

Zynq-7000的器件配置单元包括下面的PS单元:

① CPU

② OCM(引导ROM和共享RAM)

③ 部分顶层总线和外设

④ PS器件配置模块

在PL侧,下面的单元也将参与:

① PLS器件配置逻辑和接口

② 解密/鉴权硬件

③存储在eFUSE单元或者电池备份RAM(BBRAM)内的解密密钥

下图为PS器件配置子系统框图:

一文详解ZYNQ器件的启动配置方法

提供的关键特性如下:

A.提供3种不同的PS配置方法,包括2种主模式和1种从模式。

① 加密主模式

② 非加密主模式

③ 非加密从模式

B.3种不同的主模式启动源

① NOR FLASH

② NAND FLASH

③ QSPI FLASH

C:JTAG非加密从模式

D:用AES-256和HMAC (SHA-256)进行PS/PL的加密下载

E:高速配置用的主DMA接口

F:100 MHz 32-bit PCAP流接口

H:SoC加密调试功能

在系统上电复位时,PS采样专用bootstrapping signals引脚电平来决定从什么方式引导器件。这个引导过程是由一个Cortex A9核执行片内的ROM code实现的,ROM code的功能是初始化L1 cache和基本的总线系统,加载相应的NAND, NOR, Quad-SPI, and PCAP驱动,从指定接口加载第一级BOOTLOADER(the first stage boot loader (FSBL))到片内执行。由于OCM RAM大小有限制,第一级BOOTLOADER大小最大为256KB。用户只需要按要求提供启动映像和设置正确的bootstrapping signals引脚电平,系统上电复位时由ROM code自动加载到片内并且程序调转到启动映像,此时系统的全部控制功能交由用户的启动映像控制,用户如要实现的第二级BOOTLOADER功能由启动映像的程序实现。

对于加密配置方法,需要用到AES-256解密代码和SHA-256签定(签名)算法, PS需要用PL内硬连线的AES-256 和SHA-256模块,这时就要求在加密配置情况下PL就必须上着电,既使系统并不配置PL部分也需上电。器件的加密密钥可以由用户选择是存储在片内的eFUSE单元(具有掉电非易失性)或者内部电池供电的BBRAM内(具有掉电易失性,适用于安全级别要求更高的场合), 下表总结了配置模式和相关信息

一文详解ZYNQ器件的启动配置方法

二、PS非加密主模式配置过程

这种模式下PS启动映像是直接从外部非易失存储器(NAND, NOR, Quad-SPI)内加载到片内OCM内,随后PL映像可以直接配置到PL内,整个过程如下图示:

一文详解ZYNQ器件的启动配置方法

PL映像的配置可由配置接口模块用DMA来高速实现,在非加密情况下速度可以达到400MB/s, 加密情况下速度可以达到100MB/s, 这在FPGA需要部分重配置时十分有用。

三、PS加密主模式配置过程

PS加密主模式用到了位与片内PL部分的硬件AES-256解密模块和SHA-256模块来对PS启动映像进行解密和完整性鉴定,器件密钥存储在片内的eFUSE单元或者内部BBRAM内,当PS加载成功后,用户可以选择用下面缺省的PL引导过程来配置PL部分,如下图示:

一文详解ZYNQ器件的启动配置方法

其中配置PL时的比特流既可以是已经经过AES-256加密的比特流,也可以是先经过PS先进行解密后成为明文比特流送到PL内,这个过程的保密性由用户选择使用。

在保密ROM引导阶段如果PS完整性鉴定失败,CPU就立即断言PROG_B信号而清除PL内容,同时发出一个加密复位信号,这使PS内部的RAM和寄存器进行复位,然后CPU进入睡眠模式,系统只有重复上电才能复位。PL配置发生在BOOT的第二阶段,这个过程完成可以由用户选择自己的方法在任何时间内来配置一次或多次,并不需要一定按缺省的PL引导过程来配置PL部分。

四、启动模式引脚

ZYNQ器件有5个启动模式信号mode[4:0],用来指出从哪里启动,是否是JTAG模式,PLL是否旁路等。另外有两个电压模式信号vmode[1:0]用来指明MIO BANK的电压模式,vmode[1:0] 信号和mode[4:0] 信号通过上拉和下拉来确定电平值,上拉和下拉电阻建议为20k欧姆,上拉是连接到VCCO_MIO0电压,下拉是连接到地。系统在释放PS_POR_B复位脚后这些启动模式引脚信号会被采样3个PS_CLK时钟用来确定启动方式。vmode[1:0] 信号和mode[4:0] 信号对应的I/O管脚为MIO[8:2],各信号具体含义如下:

① Mode[0] 用来指明是否是JTAG 模正。

② Mode[3:1]用来选择启动源,是从NOR Flash还是从NAND Flash还是从QSPI启动。

③ Mode[4]用来使能PLL。

④ Vmode[1:0] 用来配置I/O BANK电压。

这些信号和MIO管脚的对应关系如下表表示:

一文详解ZYNQ器件的启动配置方法

注:上表中X表示不关心。

实际设计中,由于MIO管脚数量有限(只有54个),且只分为两个BANK(MIO Bank 0对应管脚为PS_MIO[15:0],PS_CLK,PS_POR_B;MIO Bank 1对应管脚为PS_MIO[53:16],PS_VREF_MIO和PS_SRST_B),并不建议系统设计为从并行的NOR Flash启动,因为这种方式NOR Flash占用的MIO管脚数量大多(大于40个管脚),系统设计为从NAND Flash或QSPI启动都可以,这两种方式占用的MIO管脚数量要少些,NAND Flash的优点是容量比较大,缺点是读写速度要慢些(典型速度 10MB/s), QSPI也是一种NOR Flash,不过接口是四线串行接口,可以获得比较高的读写速度(典型速度 50MB/s),如果系统希望从其它方式如USBEthernetSD/SDIO等方式启动,这都需要用户在第一级启动映像内自行设计启动引导代码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PS
    PS
    +关注

    关注

    0

    文章

    72

    浏览量

    36267
  • Zynq
    +关注

    关注

    9

    文章

    600

    浏览量

    46658
收藏 人收藏

    评论

    相关推荐

    详解Zynq的两种启动模式

    Zynq-7000AP SOC器件有效利用了片上CPU来帮忙配置,在没有外部JTAG的情况下,处理系统(PS)与可编程逻辑(PL)都必须依靠PS来完成芯片的初始化配置
    发表于 08-02 09:33 813次阅读
    <b class='flag-5'>详解</b><b class='flag-5'>Zynq</b>的两种<b class='flag-5'>启动</b>模式

    通过JTAG启动Linux的方法和脚本

    在 AMD SoC 器件(AMD Zynq 7000 SoC,AMD Zynq UltraScale+ MPSoC,AMD Versal Adaptive SoC),常见的启动方式是
    的头像 发表于 12-22 10:27 611次阅读
    通过JTAG<b class='flag-5'>启动</b>Linux的<b class='flag-5'>方法</b>和脚本

    玩转Zynq连载1——Zynq的linux启动过程

    `玩转Zynq连载1——Zynq的linux启动过程更多资料共享 链接:https://share.weiyun.com/5s6bA0s1概述 简单的,以ug585中的张图来看,从大
    发表于 04-16 06:56

    Zynq在非JTAG模式下的启动配置流程

    ARM 核来实现的。  需要注意的是,与传统的 Xilinx 7 系列 FPGA 芯片不同,Zynq 是不支持从 PL 端进行直接启动配置的,定要通过 PS 部分来完成。  
    发表于 01-08 16:33

    Zynq在非JTAG模式下的启动配置流程

    本文主要与大家分享了Zynq在非JTAG模式下的启动配置流程,旨在让大家对Zynq的三阶段启动模式有
    发表于 03-17 07:36

    ZYNQ器件启动配置方法

    无任是用CPU作为系统的主要器件,还是用FPGA作为系统的主要器件,系统设计中首先要考虑到的问题就是处理器的启动加载问题。
    发表于 02-11 19:01 1056次阅读

    ZYNQ 7系列FSBL的启动过程与配置方法

    ZYNQ 7系列所有可编程器件均可以在安全模式下通过静态存储器配置或者在非安全模式下通过JTAG或者静态存储器配置。 (1)JTAG模式主要用于开发和调试 (2)NAND、并行NOR、
    发表于 11-17 10:25 2.2w次阅读
    <b class='flag-5'>ZYNQ</b> 7系列FSBL的<b class='flag-5'>启动</b>过程与<b class='flag-5'>配置</b><b class='flag-5'>方法</b>

    Xilinx FSBL如何操作启动Zynq器件

    了解Xilinx FSBL如何操作以启动Zynq器件。 包括程序执行概述,调试技巧以及有关特定引导设备的信息。 还包括FSBL角度的启动安全性简要概述。
    的头像 发表于 11-23 06:32 4287次阅读

    ZYNQ启动原理和配置

    在ps的控制下,可以实现安全或非安全的配置所有ps和pl。通过zynq提供的JTAG接口,用户可以在外部主机的控制下对zynq进行配置zynq
    的头像 发表于 05-15 11:41 7280次阅读
    <b class='flag-5'>ZYNQ</b>的<b class='flag-5'>启动</b>原理和<b class='flag-5'>配置</b>

    详解zynq启动步骤

    本文主要介绍zynq启动过程,主要包括BootROM和FSBL等的执行过程。
    发表于 10-27 10:47 7037次阅读
    <b class='flag-5'>详解</b><b class='flag-5'>zynq</b>的<b class='flag-5'>启动</b>步骤

    Zynq启动配置过程详解

    初学 Zynq 的时候,都是按照惯例打开 Vivado 软件,然后实现 Zynq 可编程逻辑硬件部分PL的设置后,把硬件部署导出,再打开 SDK 进行 ARM 核的软件部分 PS 编程设计,最后再将
    发表于 01-26 07:30 20次下载
    <b class='flag-5'>Zynq</b>的<b class='flag-5'>启动</b>与<b class='flag-5'>配置</b>过程<b class='flag-5'>详解</b>

    如何在 Vitis 中调试 Zynq UltraScale 器件启动镜像

    在本篇博文中,我们将探讨如何在 Vitis 中调试 Zynq UltraScale 器件启动镜像。这些启动镜像包括 ARM 可信固件 (ATF) 和 U-boot。 本篇博文乃是系列博
    的头像 发表于 06-01 15:35 2791次阅读
    如何在 Vitis 中调试 <b class='flag-5'>Zynq</b> UltraScale <b class='flag-5'>器件</b><b class='flag-5'>启动</b>镜像

    ZYNQ启动流程

    ZYNQ7000 SOC 芯片可以从 FLASH 启动,也可以从 SD 卡里启动, 本节介绍程序 FLASH 启动方法
    的头像 发表于 05-07 09:41 5215次阅读

    ZYNQ启动流程介绍

    普通的 FPGA 一般是可以从 flash 启动,或者被动加载,但是ZYNQ不行,ZYNQ必须PS端参与
    的头像 发表于 07-22 10:10 5563次阅读

    Zynq在非JTAG模式下的启动配置流程

    在无 JTAG 的模式下,Zynq 是通过片上CPU完成对芯片的配置,也就是PS和PL的配置是通过 PS 处理器 ARM 核来实现的。需要注意的是,与传统的 Xilinx 7 系列 FPGA 芯片不同,
    的头像 发表于 10-19 09:11 1029次阅读