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

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

3天内不再提示

ZYNQ的启动原理和配置

e9Zb_gh_8734352 来源:fqj 2019-05-15 11:41 次阅读

启动过程

设备配置包含用于初始化和配置ps和pl的所有方法及过程。在软件控制下,ps内的DevC提供用于初始化和配置ps和pl的手段和方法,在zynq中提供两个模块用于控制配置过程:

BootROM,一个静态存储块器块,当上电复位和暖复位后,有Cortex-A9的CPU执行这个内置程序;

设备配置单元:用于控制JTAG调试访问和提供连接到AES、HMAC和PCAP模块的接口,用于实现对芯片内的pl的配置及数据的解密。

在ps的控制下,可以实现安全或非安全的配置所有ps和pl。通过zynq提供的JTAG接口,用户可以在外部主机的控制下对zynq进行配置,zynq不支持最开始就配置pl的过程。对zynq的配置过程至少包含两个阶段,但是通常要求3个阶段。

阶段0:该阶段也称为BootROM,该阶段控制初始设备的启动。BootROM是上电复位或暖复位后,处理器所执行的用户不可修改的代码,该代码已经固化到zynq的BootROM中;

阶段1:在该阶段,通常执行第一级启动引导程序。但是,它也可以是任何用户控制的代码;

在该阶段,通常执行用户自己编写的软件程序,但是,也可以是第二级的启动引导程序,该阶段完全是在用户的控制下实现的。

zynq的BootROM

BootROM特性:

提供3种不同的方法,用于配置PS:两个主模式和一个从模式,即安全、加密的镜像、主模式;非安全的主模式;通过JTAG的非安全从模式;

支持4种不同的外部启动源:Quad-SPI Flash、NAND Flash、NOR Flash、SD

支持使用AES-256和HMAC(SHA-256)的PS安全配置;

支持Soc调试安全性;

从NOR和QSPI芯片内执行配置过程。

当上电复位后,启动PS配置过程,当禁止JTAG模式时,zynq内的Cortex-A9处理器从片内的BootROM开始执行代码,BootROM包含用于驱动NADN、NOR、Quad-SPI、SD和PCAP的基本程序代码

在BootROM中并不执行对外设的初始化操作,在阶段1或该阶段之后zynq才对其他外设进行初始化操作,考虑到安全因素,当脱离复位状态后,Cortex-A9处理器总是PS内所有其他主设备模块内的第一个设备,当正在执行BootROM时,禁止执行JTAG,以保证安全性操作。

BootROM代码也负责加载第一启动镜像文件,zynq内的硬件支持加载多级用户启动镜像,在第一级启动之后,用户负责进一步实现用户启动镜像的加载,当BootROM将控制权移交给fsbl后,用户负责进一步实现用户启动镜像的加载,当复位操作时,才会重新执行BootROM内的代码。

BootROM支持加密和不加密的镜像,此外,当使用芯片内执行特性时,当从线性flash、NOR或QSP直接复制镜像或执行后,BootROM支持从OCM开始执行阶段1镜像。

在安全启动CPU时,从安全BootROM运行代码,并且,对进入的用户PS镜像镜像解码和认证,将其保存到OCM RAM中,然后,分支进入它,在非安全启动CPU时,从BootROM运行代码,如果使用了XIP特性时,在分支跳转到OCM ROM或Flash内的用户镜像时,禁止所有的安全启动特性,除非使用带有XIP的启动,一般将PS启动镜像限制到192KB范围内。

随后用于PS/PL启动阶段的过程,都是用户的责任,并且处于用户的控制下。在zynq中,不允许用户访问BootROM中的代码,在完成阶段1安全启动的过程后,用户可以继续执行后续的安全/非安全启动阶段,如果一开始执行的就是非安全的第一个阶段,随后只能执行非安全阶段的启动。

通过PL内硬接线的AES-256和SHA-256模块,PS实现解密和认证,由于这个原因,在安全启动任何阶段,即使只对PS进行配置,也必须给PL上电,这样,用户就可以通过片上的eFUSE单元或片上BRAM,选择器件的密钥。

在zynq内支持5种可用的启动设备,包括NAND、NOR、SD、Quad-SPI和JTAG,其中前4种启动源用于主模式启动。

在主模式启动过程中,Cortex-A9处理器负责将镜像文件从外部非易失性存储器加载到片内的PS中。

JTAG只能用于从模式启动过程,JTAG只支持非安全启动,一个外部的电脑作为一个主设备,通过JTAG连接,将启动镜像加载到OCM,当加载启动镜像时,PS CPU保持空闲模式。

BootROM的高层次配置流程如图所示。

ZYNQ的启动原理和配置

zynq的器件配置接口

设备配置接口结构DevC模块由3个独立操作的主模块构成:

用于连接PL配置逻辑的AXI-PACP接口;

设备安全性管理单元;

一个XDAC接口;

设备配置接口包含一个APB接口,主机使用APB接口配置这3个模块,并且访问整个状态以及实现与PL XADC通信

AXI-PCAP桥:

AXI-PCAP桥将32位AXI格式的数据转换成32位的PCAP协议,反之亦然,这个桥支持配置数据,以并发和非并发的方式下载和上传,如图所示。

ZYNQ的启动原理和配置

在AXI和PCAP接口之间存在一个发送和接收FIFO缓冲区,图中的DMA引擎用于在FIFO和存储器设备(OCM、DDR存储器,或者外设存储器的一个)之间移动数据。

当通过PCAP接口移动数据时,必须给zynq的PL一端供电,通过DevC控制器寄存器的PCAP MODE和PCAP PR比特位,使能PCAP接口,如果发送加密数据,还应该设置QUARTER PCAP RATE EN比特位。

通过DevC模块内建的DMA引擎,在PCAP接口之间传输数据。为了启动一个数据传输过程,必须按照下面的顺序写4个DMA寄存器:DMA源地址寄存器;DMA目的地址寄存器;DMA源长度寄存器;DMA目的长度寄存器。

为了通过PCAP将数据传输到PL,目的地址应该设置为0xffffffff。类似的,通过PCAP接口从PL读数据,源地址应该设置为0xffffffff,必须通过PCAP接口发送加密的PS镜像,这是由于AES和HMAC引擎都驻留在PL一端。在该情况下,DMA源地址应该设置为一个外部的存储器接口,而目标地址应该设置为OCM。

DevC的DMA引擎能用于加载不安全的PS镜像,在加载以前,在杂项控制寄存器内设置PCAP LPBK比特位,这个比特位使能内部的环路,旁路掉PCAP接口,在使用PCAP前,需要再次禁止该比特位,DMA源地址应该设置为一个外部存储器,而目的地址应该设置为一个OCM或一个有效的外部存储器接口,如DDR。

PCAP接口也用来回读PL配置。为了执行回读操作,PS必须运行软件代码,使能产生正确的PL回读指令,使用两个DMA访问周期,回读一个PL配置。

设备安全性管理:

DevC包含着一个安全策略模块,提供如下功能:

监控系统安全性,当检测到冲突的状态时,能确认一个安全复位,这个状态能表示不一致的系统配置或篡改;

通过APB接口控制和监视PL配置逻辑;

控制ARM CoreSight的调试器访问端口DAP和调试级;

提供片上ROM控制。

XADC接口:

读和写XADC寄存器;

15个深度的写命令FIFO和15个深度的读FIFO(32位宽度);

编程的FIFO级中断;

报警中断;

过温度中断;

PS主设备非安全启动

在这个启动模式下,PS作为主设备。BootROM从选择的外部存储器加载一个纯文本PS镜像,如图3.2所示,在这种情况下,并不要求PL上电,可以使用PS镜像立即加载或以后加载PL比特流。

ZYNQ的启动原理和配置

配置流程主要步骤如下:

设备上电复位;

BootROM执行:1,读自举程序,以确定外部存储器接口类型;2,读启动头部信息,以确定加密的状态和镜像目标;

BootROM使用DevC的DMA,将FSBL加载到OCM或其他有效的目的地址;

通过PCAP,FSBL加载PL比特流。

PS主设备安全启动

在该启动模式下,PS作为主设备,BootROM从所选择的外部存储器加载一个加密的PS镜像,如图3.3所示,由于AES和HMAC引擎驻留在PL中,因此要求PL上电来初始化启动序列,在尝试解密FSBL前,BootROM验证PL已经上电,当启动PS后,可以使用一个加密的比特流配置,或者断电以后再配置PL。

ZYNQ的启动原理和配置

下面给出了配置流程的详细步骤:

设备上电复位;

BootROM执行:1,读自举程序,以确定外部存储器接口;2,读启动头部,以确定加密的状态(安全);3,确认PL上电,开始解密FSBL;

BootROM使用DevC DMA引擎,通过PCAP,将加密的FSBL发送的PL内的AES和HMAC;

PL使用PCAP将解密的FSBL返回到PS,然后,在此将其加载到片内OCM;

关闭BootROM,释放CPU用于控制FSBL;

FSBL使用一个加密流配置PL。

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

    关注

    9

    文章

    598

    浏览量

    46609

原文标题:ZYNQ的启动原理和配置

文章出处:【微信号:gh_873435264fd4,微信公众号:FPGA技术联盟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详解Zynq的两种启动模式

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

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

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

    使用Vitis 在EBAZ4205(ZYNQ)矿机上实现"Hello World!"

    的 Done 引脚未拉高。这个问题在 Vivado 2017.4 中并未出现,还需确认下是否是由于ZYNQ启动配置导致该问题。目前的解决方法,可以先通过 Vivado 把 bit 文件先下载给FPGA
    发表于 03-06 22:59

    Zynq无法设置为从QSPI闪存启动怎么解决?

    为了确保正确回退到金启动,AR#67221规定QSPI闪存的D2和D3数据条应连接到4K7上拉。但是看看Zynq xc7z030fbg676,这些引脚也可用作配置模式引脚。QSPI D2 =模式引脚
    发表于 06-09 17:24

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

    是怎样实现对自己的配置?  这也是本文将要和大家共同讨论的问题。  Zynq启动流程  在无 JTAG 的模式下,Zynq 是通过片上CPU完成对芯片的
    发表于 01-08 16:33

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

    本文主要与大家分享了Zynq在非JTAG模式下的启动配置流程,旨在让大家对Zynq的三阶段启动模式有一个具体的认识,希望大家多多交流。
    发表于 03-17 07:36

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

    ZYNQ 7系列所有可编程器件均可以在安全模式下通过静态存储器配置或者在非安全模式下通过JTAG或者静态存储器配置。 (1)JTAG模式主要用于开发和调试 (2)NAND、并行NOR、串行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>方法

    ZYNQ-7000如何生成从Flash和SD卡启动的镜像文件

    ZYNQ-7000如何生成从Flash和SD卡启动的镜像文件 将PL与PS部分一起使用,并且通过JTAG下载到板子运行。对于ZYNQ,有多种启动方式
    的头像 发表于 12-01 08:38 7330次阅读
    <b class='flag-5'>ZYNQ</b>-7000如何生成从Flash和SD卡<b class='flag-5'>启动</b>的镜像文件

    详解zynq启动步骤

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

    ZYNQ开发双核运行原理及过程

    ZYNQ是一个可扩展平台,就是有FPGA作为外设的A9双核处理器,它的启动流程与FPGA完全不同,而与传统的ARM处理器类似,ZYNQ启动配置
    的头像 发表于 12-05 10:48 5478次阅读

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

    初学 Zynq 的时候,都是按照惯例打开 Vivado 软件,然后实现 Zynq 可编程逻辑硬件部分PL的设置后,把硬件部署导出,再打开 SDK 进行 ARM 核的软件部分 PS 编程设计,最后再将
    的头像 发表于 02-08 11:48 1061次阅读
    <b class='flag-5'>Zynq</b> 在非 JTAG 模式下的<b class='flag-5'>启动</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>过程详解

    ZYNQ启动流程

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

    ZYNQ启动流程介绍

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

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

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