首页| 行业标准| 论文文档| 电子资料| 图纸模型
购买积分 购买会员 激活码充值

您现在的位置是:团子下载站 > 可编程逻辑 > Zynq的启动与配置过程详解

Zynq的启动与配置过程详解

  • 资源大小:276.4KB
  • 上传时间:2021-10-17
  • 下载次数:0次
  • 浏览次数:80次
  • 资源积分:1积分
  • 标      签: Zynq

资 源 简 介

作者:watchman,文章来源:ZYNQ微信公众号Zynq的JTAG配置过程初学Zynq的时候,都是按照惯例打开Vivado软件,然后实现Zynq可编程逻辑硬件部分PL的设置后,把硬件部署导出,再打开SDK进行ARM核的软件部分PS编程设计,最后再将硬件比特流文件(.bit)和软件的可执行链接文件(.elf)下载到Zynq开发板中,这样就可以对自己的软硬件设计进行调试和验证。这种设计方式可以用下面的图很好的描述:如上图所示,这其实是刚接触Zynq软硬件设计时需要了解的最基本开发流程,也是PL和PS设计结合的完美体现。但是,上述开发的过程都有一个基本的前提,就是Zynq开发板是通过JTAG直接与电脑相连,然后实现程序的下载。从另一个角度来说,PL和PS的配置都可以认为是电脑主机通过JTAG完成的。但是,在实际中,Zynq开发板不可能实时与电脑连接,当JTAG不起作用时,Zynq芯片是怎样实现对自己的配置?这也是本文将要和大家共同讨论的问题。Zynq的启动流程在无JTAG的模式下,Zynq是通过片上CPU完成对芯片的配置,也就是PS和PL的配置是通过PS处理器ARM核来实现的。需要注意的是,与传统的Xilinx7系列FPGA芯片不同,Zynq是不支持从PL端进行直接启动配置的,一定要通过PS部分来完成。Zynq的具体启动配置是分级进行的,一共可以分为3个阶段,可以用0~2来表示:1.Stage0:BootROM阶段2.Stage1:FSBL(FirstStageBootloader)阶段3.Stage2:SSBL(SecondStageBootloader)阶段熟悉ARM开发的小伙伴应该对上面的启动过程感到很熟悉,但又有陌生的地方。不用急,下面对这三个阶段进行详细的分析。Zynq启动阶段0——BootROM阶段0,又称为BootROM阶段。ROM相信大家都知道,Read-OnlyMemory,只读存储器的意思;而Boot是引导的含义,所以BootROM从字面的意思来看,就是只能去读取的引导存储器。实际上,BootROM的作用和它的字面意思完全一样,就是指ARM核在上电之后,需要第一时间去读取BootROM中固化的程序,完成对芯片的最初始化的配置。因为是只读的,所以根据ROM的性质,BootROM中的程序是无法修改的。有的朋友会问BootROM这一部分代码主要完成了对Zynq的哪些配置?在具体说明BootROM进行哪些配置之前,先要描述一下关于Zynq的启动引脚配置。Zynq拥有5个可以进行配置的MIO引脚,是MIO[6:2],在硬件形式上就表现为5个跳线帽,可以分别接GND或3V3的高电平。它们的作用如下:MIO[2]:选择JTAG模式MIO[5:3]:选择启动方式,包括SD卡,QSPIFlash等MIO[6]:PLL使能控制通过不同的引脚作用说明可以发现,当JTAG不起作用时,就需要通过改变MIO[5:3]的连接来实现从SD卡等不同的存储介质启动。而BootROM最重要的作用就是通过读取MIO[6:2]的引脚配置情况,决定从何种介质中加载阶段1需要使用的启动镜像。当然在加载之前,BootROM会先完成对SD卡,NAND,NOR,QSPIFlash等的初始化,从而使得ARM核能够成功访问并使用这些外设。BootROM在完成以上任务的同时,也会对安全模式等运行模式进行配置,这部分博主暂时不太了解,所以不做过多叙述。BootROM在从外部存储设备读取了启动镜像后,通常会把进行加载到OCM中。OCM,OnChipMemory,是Zynq中ARM内核的片上存储器,也叫片上内存。自此之后,BootROM阶段的启动任务就算是圆满结束了,接下来BootROM阶段就把控制权转移到了阶段1手中。注:BootROM阶段不对PL进行配置Zynq启动阶段1——FSBLFSBL,(FirstStageBootLoader),就是BootROM加载到OCM中的启动镜像。FSBL完成的任务是Zynq启动过程中的关键一环,可以分为以下4项:1.完成PS的初始化2.加载PL的bit流文件,完成PL配置3.加载SSBL引导程序或是ARM的裸跑程序到DDR4.跳转执行SSBL或裸跑程序FSBL的任务如上所示,整个思路还是非常清晰的。第1步就是对PS端初始化,包括DDR,MIO等。第2步就是PL的配置,也就输传统的FPGA下载bit流的过程,但要注意的是,在Zynq的非JTAG模式下,PL是无法直接自行配置的。第3步是加载SSBL或裸跑程序到DDR内存中,其中SSBL,SecondStageBootLoader,是在Zynq需要运行操作系统时才进行加载。而像我们入门学习时做的点亮LED灯实验,就只是属于裸跑程序。最后第4步,ARM会跳转到DDR中执行所加载的程序。所以FSBL阶段的运行思路是很好理解的。在这里插入图片描述Zynq启动阶段2——SSBLSSBL在Zynq的启动过程中是可选的一个阶段,就像所提到的点亮LED实验,包括一些其他的比较小型的程序,如果不需要用到操作系统的话,那么Zynq的启动流程到FSBL阶段就足够了。因此,SSBL是面向于需要运行操作系统的应用场合。相信熟悉操作系统启动知识的朋友到这里应该很清楚了,SSBL就是操作系统在启动过程中的引导程序bootloader。对于Linux而言,Zynq的SSBL阶段和u-boot的作用是相同的。具体来说,SSBL的作用就是将Zynq所需要的操作系统加载到DDR内存之中。到此,Zynq的启动与配置就算完成了。Zynq启动过程其实与传统的ARM开发过程类似,区别就在于它是PS+PL的架构,所以在启动过程中,额外需要加载二进制bit流文件。Xilinx将Zynq的启动划分为3个阶段,从结构上看也是科学合理的。总结本文主要与大家分享了Zynq在非JTAG模式下的启动配置流程,旨在让大家对Zynq的三阶段启动模式有一个具体的认识,希望大家多多交流。
VIP VIP