本帖最后由 FPGA课程 于 2024-9-5 18:24 编辑
软件版本:VIVADO2021.1
操作系统:WIN10 64bit
硬件平台:适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA
登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!
本教程使用了米联客-MLK-H3-CZ08-7100开发板,购买链接:https://milianke.tmall.com/
1概述基于ZYNQ的启动方式包括了ZYNQ的加载流程、支持的加载模式、裸机启动、LINUX启动等。其中加载模式有常用的JTAG模式、QSPI模式、SD卡模式、NAND FLASH模式、QSPI+EMMC模式。如果需要详细了解其中的原理需要阅读大量资料和一些XILINX的FSBL代码以及LINUX启动部分的源码。 对于SDK开发的初级读者来说在刚开始入门的时候,掌握复杂的启动原理相对比较困难,所以对于初级读者关键还是掌握主要的启动模式方法、基本的启动流程原理,比如QSPI启动、SD启动、如何制作BOOT.BIN文件的能力,满足一般的项目要求。对于需要更加深入掌握比如精简定制fsbl、multiboot方式、QSPI+EMMC启动方式、JTAG启动方式等,则可以详细阅读ug585、ug821、阅读fsbl代码、分析linux中相关的uboot启动流程和参数设置。 实验目的: 1:熟悉ZYNQ启动模式类型和硬件设置 2:熟悉ZYNQ启动的过程 3:掌握ZYNQ IP SD接口启动和QSPI FLASH启动的设置 4:利用SDK产生或者制作BOOT.BIN文件 5:完成SD卡启动实验 6:完成QSPI启动实验 2ZYNQ的启动2.1启动模式的设置ZYNQ支持JTAG启动模式、NOR BOOT模式、NAND FLASH启动模式、QSPI启动模式、SD卡启动模式。这里我们的硬件只支持SD卡启动模式、QSPI启动模式、JTAG启动模式。使用对应的启动模式前,请务必将开发板上的模式开关拨到对应模式的启动位置。
2.2上电时序要求上电需要满足PS_POR_B应该一直保持低电平,并且在PS_SRST_B引脚拉高 2us后拉高。很多上电启动异常的情况应该排查电源的启动顺序顺序是否满足要求。
2.3ZYNQ的启动流程下图展示了ZYNQ上电复位或者非上电复位后,进入BOOTROM程序执行的状态框图。
阶段0: BootROM中包含了一段芯片出厂前就带的启动代码,当上电复位 (POR) 或非 POR 系统复位(PS_SRST_B、调试、看门狗、软件)后, BootROM程序在主CPU (CPU 0) 上开始执行。BootROM程序读取外部存储器中的BOOT.BIN文件,并且查找其中的BootROM Heard参数,以确认程序如何切换到下阶段1。如果是QSPI FLASH中没有找到BOOT.BIN文件,BootROM会跳到下一个32KB的位置重新搜索BOOT.BIN 在以下流程图中,展示了第一个阶段的复制FSBL到OCM的流程图。其中XIP模式我们这里不涉及。
阶段1: 阶段0把FSBL拷贝到OCM(On-chip memory)中后,CPU0开始从OCM运行FSBL代码。包括: 1:初始化PS的配置参数包括MIO、DDR等 2:使用BIT流对PL进行编程 3:加载第二阶段的引导程序或者裸机程序到DDR存储器中 4:阶段到阶段2
阶段2: 该阶段一般运行的是应用程序比如裸机的应用程序、或者LINUX 的boot.elf。也可能是第二阶段引导程序,比如QSPI+EMMC模式,从QSPI完成fsbl加载后可以对eMMC分区识别,把剩余的加载项放到EMMC中,这样只需要一个很小的QSPI FLASH就可以了。当然一般我们开发板都采用了足够达的QSPI FLASH,一般不需要这么节约使用。等LINUX部分我们再探讨这方面的问题。 3纯FPGA工程下载3.1直接选择bit文件下载很多时候我们仅仅是想测试一下代码的功能,或者是我们有多个Bit文件下载的时候,我们不需要打开相应的工程,仅仅打开我们的VIVADO软件便可以下载我们的Bit文件。 1:在打开的VIVADO软件界面,单击Open Hardware Manager。
2:点击Auto Connect,在此之前,请确保开发板拨码开关为JTAG模式,且开发板已上电。
3:右键FPGA芯片信号选择Program device或者点击上方的Program device按钮
4:选择对应的Bit文件,如果你在工程中有使用在线逻辑分析仪的话,会在下方自动添加.ltx文件。如果ltx文件与bit文件不匹配,会报错。
注意图片中的文件目录,一般我们工程默认的Bit文件就是生成在该路径下
5:点击Program下载完成 3.2工程中下载对应BIT文件1:在打开的Vivado软件界面,单击Open Project。
2:找到我们工程对应的.xpr文件
3:点击Open Target,选择Auto Connect,在此之前,请确保开发板拨码开关为JTAG模式,且开发板已上电。
3:右键FPGA芯片信号选择Program device或者点击上方的Program device按钮
4:选择对应的Bit文件,如果你在工程中有使用在线逻辑分析仪的话,会在下方自动添加.ltx文件。如果ltx文件与bit文件不匹配,会报错。
注意图片中的文件目录,一般我们工程默认的Bit文件就是生成在该路径下
5:点击Program下载完成 4使用VITIS-SDK打开SDK工程1:打开Xilinx Vitis软件,指向预先设置好的路径到soc_sdk
米联客资料中的路径规范如下图: soc_prj里面是基于SOC的硬件工程源码 soc_hw里面是xsa格式文件,soc_prj编译会导出system_wrapper.xsa到这个文件 soc_sdk里面是裸机的sdk工程,sdk工程创建依赖soc_hw中的system_wrapper.xsa
2:打开后由于路径发生改变需要重新设置下路径
3:删除默认的错误路径(吐槽软件不能识别相对路径)
4:选择新的soc_baes文件夹的路径
5:进入调试前,需要给开发板通电;连接好开发板上的串口(USB-232),查看串口号(设备管理器中查看); 5固化及启动5.1SDK程序固化使用SDK完成基本的固化方法甚至不需要掌握ZYNQ的启动原理。只需要正确产生BOOT.BIN文件,正确设置模式开关,掌握烧录流程即可,所以以下关键还是软件的操作流程。 5.2SDK产生BOOT.BIN方法1:首先我们认识下以下这种图中的关键源码分别是: a:soc_base路径下的zynqmp_fsbl源码(前面已经编译过这里不用重复编译,如果看到感叹号就是需要编译) b: helloworld SDK APP应用程序源码
右击soc_base可以编译 fsbl,如下图所示
2:第一种方法直接右击编译
3:第二种右击后选择Create Boot Image
默认在boot image partitions中有fsbl.efl、system_wrapper.bit、helloworld.ef,如果没有依次单击Add按钮,添加fsbl.efl文件、system_wrapper.bit文件、helloworld.elf文件,之后单击Create Image。
BOOT.BIN保存在bootimage文件夹
以上两种方法产生的BOOT.BIN是一样的。 5.3SD卡启动直接复制路径下的BOOT.BIN文件并且放到SD卡中,之后插入开发板,设置SD卡模式启动(核心板上模式开关全部设置OFF OFF)
为了观察实现结果,需要打开PS串口
如果不清楚串口号的,可以查看下设备管理器,如果发现没装串口驱动的安装上驱动
同时也可以看到流水灯运行了。 5.4QSPI的启动支持JTAG模式的核心板下载很便捷,首先把模式开关全部设置成JTAG模式,具体可以参考硬件手册
断电设置模式开关为QSPI启动模式,具体设置拨码方式请查看硬件手册或者原理图 (设置模式开关请务必断电完成)
为了观察实现结果,需要打开串口
如果不清楚串口号的,可以查看下设备管理器,如果发现没装串口驱动的安装上驱动
同时我们可以看到PL端4个流水灯闪烁。 6总结本节课作为我们接触FPGA开发软件的第一课,我们重点是教大家学习Vivado以及Vitis软件的下载bit文件、SD卡启动以及固化Flash的方法。如果有想具体学习如果在一个全新的工程中完成固化的的用户,可以自行阅读《附录2程序的生成、固化和下载》。
|