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

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

3天内不再提示

ZYNQ的启动流程

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-05-07 09:41 次阅读

最近由于项目需要,要将bit文件固化到zedboard的flash中,使程序上电自启,断电不丢失。

我们知道,一般板级调试的时候都是直接下载bit流到FPGA就行,固化到Flash的话,也是先生成.mcs文件,然后下载到Flash即可。

但是在经过反复尝试之后,发现对zynq系列好像行不通。

why?这得从zynq的启动流程说起。

一、ZYNQ的启动流程

ZYNQ7000 SOC 芯片可以从 FLASH 启动,也可以从 SD 卡里启动, 本节介绍程序 FLASH 启动的方法。Zynq7000 SOC 芯片上电后,最先运行的是ARM端系统(PS)。然后再通过ARM系统软件部分加载FPGA的比特流文件.bit至FPGA(PL),配置FPGA PL端的逻辑功能。ZYNQ 系统的启劢流程如下:

ZYNQ启动分为两个阶段

  • 第一阶段是 BOOT ROM(ZYNQ厂家固化代码)

  • 第二阶段是 FSBL (First Stage Bootloader)SDK工具来制作。

经过以上两个阶段,PL端配置程序及应用程序才开始运行。

1.1 第一阶段 (BOOT ROM)

  • 上电后,Zynq7000 SOC 会首先执行片内 Boot ROM 代码,Boot ROM 代码读取 Boot mode 寄存器来判断是哪一种启动方式(SD card/QSPI Flash/JTAG)。

  • 确定好哪种启劢方式后,Boot ROM 从相应的启动设备(SD Card/QSPI Flash)加载 First Stage Bootloader (FSBL) 到On Chip Memory(OCM) RAM,并且将执行权交付给 FSBL。

1.2 第二阶段 FSBL (First Stage Bootloader)

使用SDK 工具一步步生成 FSBL 代码和可执行文件,结合代码可知 FSBL 主要做了如下工作:

  • 初始化 CPU,初始化串口;

  • Processor System (PS) 一些控制器的初始化,如 MIO, PLL, CLK and DDR

  • 禁止 L1 Data Cache;

  • 注册 ARM 中断向量;

  • 通过 Boot mode 寄存器,判断是哪种启动方式。

1.2.1 QSPI Flash 启动方式:

  • 初始化 QSPI Flash 控刢器;

  • 从 Flash 拷贝 system.bit 到 FPGA (如果 Flash 中存有 system.bit);

  • 从 QSPI Flash 拷贝应用程序的代码到DDR3;

  • 调转到应用程序执行;

1.2.2 SD Card 启动方式:

  1. 初始化 SD 控刢器;

  2. 从 SD Card 拷贝 system.bit 到 FPGA (如果 BOOT.BIN 中存有 system.bit);

  3. 从 SD card 拷贝应用程序的代码到 DDR3;

  4. 跳转到应用程序执行;

1.2.3 JTAG 启动方式,直接退出。

因此,对于Zynq系列的FPGA芯片来说,固化到Flash中的bit文件需要一个引导程序(也就是FSBL),才能被用来配置PL。实际上,FSBL会作为BootLoader和bit文件一起合成一个.bin或者.mcs文件,然后下载到Flash中,过程如下:

dfbfc284-cd9e-11ec-bce3-dac502259ad0.png

二、生成BOOT.bin或者BOOT.mcs

2.1 VIVADO操作

你应该已经有了一个完整的工程,接下来你需要添加并配置PS端,生成新的bit文件:

(1)建立一个新的块设计(Create Block Design)

dfdaea82-cd9e-11ec-bce3-dac502259ad0.png

(2)添加ZYNQ7 Processing System

dff03734-cd9e-11ec-bce3-dac502259ad0.png

(3)双击所添加的zynq7,配置peripheral I/O,我们只保留Quad SPI Flash

e00a8058-cd9e-11ec-bce3-dac502259ad0.jpg

(4)在 Diagram 界面里点击"Run Block Automation"完成对 ZYNQ7 Processing System IP核的配置,生成外部 ZYNQ 系统的外部链接 IO 管脚。

e024a776-cd9e-11ec-bce3-dac502259ad0.png

(5)在 Source 窗口中选中 design_1.bd,右键并先后选择Generate Output Projects 和 Create HDL Wrapper 选项,生成顶层文件design_1_wrapper。

(6)在顶层文件中例化我们原来的工程;(特别注意:要将原来工程的外部引脚也例化为现在顶层工程的I/O,并配置好约束)。

(7)重新生成bit流。

(8)Export to Hardware(包含bitstram 文件),Launch SDK,暂时告别VIVADO,进入SDK进行操作。

2.1 SDK操作

(1)进入SDK 开发环境后,点击菜单 File -> New -> Application Project。

e05da774-cd9e-11ec-bce3-dac502259ad0.png

(2)点击next,选择Zynq FSBL

e071cbdc-cd9e-11ec-bce3-dac502259ad0.png

(3)接下去我们要把 FSBL 可执行文件,FPGA PL的bit比特流文件和PS应用程序结合成一个 Bin 文件或Mcs文件。

选择菜单 Xilinx Tools->Create Boot Image:

e0874b74-cd9e-11ec-bce3-dac502259ad0.png

选择output.bif的存放地址,选择生成bin文件还是mcs文件,然后依次添加zynq_fsbl.elf(BootLoader)、bit文件、应用程序elf文件(这个如果没有可以省略),最终生成用于固化的bin或者mcs文件。

e09af78c-cd9e-11ec-bce3-dac502259ad0.jpg

(4)将生成的bin或者mcs文件下载到Flash(经过验证,这两种类型的文件都可以

开发板上电,选择菜单 Xilinx Tools->Program Flash:

e0ce526c-cd9e-11ec-bce3-dac502259ad0.png

加载文件:

e0e2f0d2-cd9e-11ec-bce3-dac502259ad0.png

(5)点击Program,出现如下信息,则成功。然后断电,切换板子的启动方式,然后重新上电就会发现板子自动配置完成的灯亮了,搞定!

e0f66fd6-cd9e-11ec-bce3-dac502259ad0.png

注意:若出现以下信息,排除掉Jtag线缆的问题之后,可能的原因是之前同时连接过多个开发板,导致识别出来的芯片型号有不止一个,然后它就检测到JTAG断开(我就是这个问题)。

e10a64b4-cd9e-11ec-bce3-dac502259ad0.png

解决方法很简单:关掉SDK,重新打开,重新Program Flash即可。

审核编辑 :李倩


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

    关注

    1611

    文章

    21393

    浏览量

    595536
  • 寄存器
    +关注

    关注

    30

    文章

    5186

    浏览量

    118369

原文标题:二、生成BOOT.bin或者BOOT.mcs

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详解Zynq的两种启动模式

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

    【Z-turn Board试用体验】+板上资源Zynq7000启动流程的学习

    做一遍也不害怕!Zynq7000,是一个可扩展处理平台,简单说就是有个FPGA做外设的A9双核处理器。所以,它的启动流程自然也和FPGA完全不同,而与传统的ARM处理器类似。Zynq7
    发表于 05-27 20:50

    【Z-turn Board试用体验】+Zynq7000启动流程介绍

    Zynq-7000 Extensible Processing Platform,是一个可扩展处理平台,简单说就是有个FPGA做外设的A9双核处理器。所以,它的启动流程自然也和FPGA完全不同,而与
    发表于 07-22 20:42

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

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

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

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

    ZYNQ芯片开发流程的简介

    PS和PL互联技术ZYNQ芯片开发流程的简介
    发表于 01-26 07:12

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

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

    ZYNQ嵌入式系统的开发流程

    部分的始发点。通过本次实验我们将了解 ZYNQ 嵌入式系统的开发流程,熟悉 ZYNQ 嵌入式最小系统的搭建。本章包括以下几个部分:1.1 简介1.2 实验任务1.3 硬件设计1.4 软件...
    发表于 10-27 07:50

    ZYNQ学习 —— 启动流程分析及各环节文件生成流程(ZedBo

    网络资料收集,关于启动流程的一些注意点,关于开发板ZYNQ系列的包括MIZ702
    发表于 05-11 17:30 3次下载

    启动流程分析及各环节文件生成流程(ZedBoard为例)

    1. ZYNQ启动流程 Zynq7000就如同他的名字一样,Zynq-7000 Extensible Processing Platfor
    发表于 02-09 09:52 1290次阅读

    详解zynq启动步骤

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

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

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

    ZYNQ启动流程介绍

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

    ZYNQ7020的PS端的基本开发流程

    这篇文章记录ZYNQ7020的PS端的基本开发流程,关于PL端的开发流程,参考之前文章,这里放个超链接。
    的头像 发表于 07-24 18:12 6508次阅读

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

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