搜索
bottom↓
回复: 1

【正点原子FPGA连载】第七章程序固化实验--摘自【正点原子】领航者 ZYNQ 之嵌入式开发指南

[复制链接]

出0入234汤圆

发表于 2020-7-23 11:43:15 | 显示全部楼层 |阅读模式
本帖最后由 正点原子 于 2020-10-24 10:21 编辑

1)实验平台:正点原子领航者ZYNQ开发板
2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz_linhanz.html
4)对正点原子FPGA感兴趣的同学可以加群讨论:876744900
QQ群头像.png
5)关注正点原子公众号,获取最新资料


100846rel79a9p4uelap24.jpg

100846f1ce1fg14zbg0va4.png

第七章程序固化实验



在前面的几个实验中,我们都是通过JTAG接口将FPGA配置文件和应用程序下载到ZYNQ器件中。接下来我们将尝试把程序存储在非易失性存储器中,在上电或者复位时让程序自动运行,这个过程需要启动引导程序(Boot Loader)的参与。Boot Loader会加载FPGA配置文件,以及运行在ARM中的软件应用。
本章包括以下几个部分:
11.1简介
1.2实验任务
1.3硬件设计
1.4软件设计
1.5下载验证


简介
在ZYNQ SoC的启动和配置过程中,既需要PS的配置信息,又需要PL的配置信息。为了简化配置PS和PL的处理过程,ZYNQ的配置顺序与Xilinx FPGA的配置顺序有所不同。差异来源于以下两种类型的文件:
1、FPGA BIT文件——定义PL的行为
2、软件ELF文件——运行在PS中的程序
在ZYNQ中,PS作为主器件,PL可以看作是PS的一个外设,因此需要由PS来配置PL。这个配置顺序的优势是它允许对PS单独上电的时候,此时PL不上电,以减小功耗。不过也有例外,就是我们在使用JTAG下载程序的时候,此时是使用电脑作为主机来配置PL。
软件代码和配置FPGA的BIT文件可以存储在连接到PS端的配置存储器件中。PS支持多种片外非易失性存储器(Quad SPI Flash,NAND Flash,NOR Flash或SD卡)。领航者ZYNQ开发板从硬件上支持SD卡和QSPI作为配置器件。
ZYNQ SoC的启动由片上的BootROM开始。片上BootROM是ZYNQ芯片上的一块非易失性存储器,它包含了ZYNQ所支持的配置器件的驱动,而且里面的代码是不可修改的。BootROM中的代码首先会在片外的非易失性存储器中寻找一个头文件,头文件里定义了一些启动信息,用于配置BootROM的运行。这些启动信息包括是程序是否就地执行(excute in place),FSBL的偏移地址以及是否为安全模式等。头文件的存在确保BootROM能够按照配置器件被格式化后的方式操作。
BootROM执行之后,下一个配置阶段被称为First-Stage Boot Loader(FSBL),它是由设计者所创建的。FSBL可以配置DDR存储器和硬件设计过程中所定义的一些外设。这些器件需要在加载软件应用及配置PL之前就初始化完毕。
总结一下FSBL的工作内容:
1、初始化PS;
2、如果提供了BIT文件,则配置PL;
3、加载裸机应用程序到DDR中,或者加载Second-Stage Boot Loader(SSBL);
4、开始执行裸机应用程序,或者SSBL。
PL的配置是通过处理器配置访问接口(Processor Configuration Access Port,PCAP)进行的,它允许对PL进行部分配置或者完全配置。有关PL的部分配置我们会在其他章节予以介绍。一旦PS启动运行之后,PL可以在任意时刻被配置,FSBL和应用程序可以清除、配置以及使能PL。
要重建一个ZYNQ的启动镜像我们需要执行以下文件:
1、Boot ROM头文件:控制Boot ROM设置,比如就地执行、加密、FSBL偏移量、镜像文件大小等;
2、First-Stage Boot Loader;
3、PL配置文件,即BIT文件;
4、运行在PS上的软件应用程序。
ZYNQ SoC使用多个模式引脚来决定配置器件的类型,软件的存储位置以及其他的系统设置,这些引脚共享PS端的MIO引脚。总共有7个模式引脚,分别为MIO[8:2]。其中,前四个引脚定义启动模式,第五个引脚定义是否使用PLL,第六个和第七个引脚定义上电过程中MIO bank0和bank1的bank电压。如下图所示:
110101527.jpg

图 7.1.1 启动模式引脚

整个系统的启动过程如下图所示:
110101603.jpg

图 7.1.2 ZYNQ系统启动过程

在上电复位(Power On Reset,POR)之后,硬件会采集模式引脚的状态,禁用器件内部的模块,并根据模式引脚的设置选择是否使能PS的时钟锁相环。而在其他的复位条件下,比如通过PS的复位按键,硬件不会执行上述的动作。
实验任务
本章的实验任务是在“AXI GPIO按键控制LED实验”的基础上创建FSBL,实现程序上电自启动,包括从SD卡启动和从QSPI Flash启动两种方式。
硬件设计
本次实验在“AXI GPIO按键控制LED实验”的基础上进行,因此我们需要先打开该实验的工程,并启动SDK,首先在SDK中验证程序的功能。
功能验证之后,需要对系统的硬件设计进行修改。在Vivado界面左侧选择Open Block Design,然后在右侧的Diagram界面中双击ZYNQ Processing System模块修改其配置。主要包括使能QSPI以及SD控制器外设,并分别设置Bank0和Bank1的电平标准,如下图所示:
110102086.jpg

图 7.3.1 使能QSPI Flash控制器

110102155.jpg

图 7.3.2 使能SD卡控制器

上面两幅图中具体每个外设所连接的MIO引脚可以通过查看核心板原理图得知,设置完成后点击“OK”。然后在Diagram窗口空白处右击,然后选择“Validate Design”验证设计。验证完成后弹出对话框提示“Validation Successful”表明设计无误,点击“OK”确认。最后按快捷键“Ctrl + S”保存设计。
接下来在Source窗口中右键点击Block Design设计文件“system.bd”,执行“Generate Output Products”。最后在左侧Flow Navigator导航栏中找到PROGRAM AND DEBUG,点击该选项中的“Generate Bitstream”,对设计进行综合、实现、并生成Bitstream文件。
在生成Bitstream之后,在菜单栏中选择 File > Export > Export hardware重新导出硬件,并在弹出的对话框中,勾选“Include bitstream”。导出硬件会弹出一个对话框,提示我们是否覆盖之前导出的硬件设计文件,如下图所示:
110102687.jpg

图 7.3.3 覆盖已经导出的文件

在对话框中点击“Yes”,确认导出硬件并覆盖之前的文件。注意,在导出硬件之前,我们已经启动了SDK软件,打开并验证了本次实验的软件工程。
软件设计
在重新导出硬件之后,我们在SDK软件中会看到如下图所示的警告信息:
110102858.jpg

图 7.4.1 SDK警告信息

图 7.4.1提示我们硬件设计文件发生了改变,点击“Yes”继续,然后软件会对程序重新进行编译。
接下来在BSP工程上右击,然后在菜单中选择“Board Support Package Settings”,如下图所示:
110103069.jpg

图 7.4.2 设置BSP工程

在弹出的BSP设置界面中,勾选“xilffs”,以使用FAT文件系统,如下图所示:
110103172.jpg

图 7.4.3 勾选Xilffs

BSP设置完成后我们就可以生成一个FSBL用来加载应用程序并配置PL。这个过程非常简单,因为SDK已经提供了一个FSBL的示例。在菜单栏中选择“File->New->Application Project”,然后在弹出的新建工程界面中设置工程名,并选择工程中的BSP,如下图所示:
110103375.jpg

图 7.4.4 新建工程

接下来点击Next,并在示例工程中选择“Zynq FSBL”,最后点击“Finish”,如下图所示:
110103484.jpg

图 7.4.5 创建FSBL

FSBL工程创建完成之后,SDK软件会自动执行编译过程,生成FSBL.elf文件。
接下来我们就可以使用FSBL、BIT文件和C应用程序来创建启动镜像。在SDK菜单栏中选择“Xilinx -> Create Boot Image”,如下图所示:
110103667.jpg

图 7.4.6 创建Boot Image

在弹出的创建Boot Image对话框中,设置输出文件的路径,如下图所示:
110103771.jpg

图 7.4.7 设置输出路径

在图 7.4.7中,设置了两个文件的输出路径,路径中的“bootimage”是我们在FSBL目录下新建的文件夹。红色方框中的BIF是Boot Image的配置文件,BIN是启动文件。
接下来,点击图 7.4.7中红色圆圈所指示的Add按钮来添加用于生成Boot Image的文件,弹出如下图所示的界面:
110104031.jpg

图 7.4.8 添加FSBL

首先添加的是FSBL,在Partion type一栏默认的文件类型为bootloader,然后指定FSBL.elf所在的文件路径。点击“OK”后返回图 7.4.7所示的界面,再次点击“Add”按钮,添加FPGA配置文件,如下图所示:
110104232.jpg

图 7.4.9 添加BIT文件

        从图 7.4.9可以看到,Partion type一栏的文件类型变成了datafile,而BIT文件在我们创建SDK应用时已经导入到SDK工程中了。需要注意的是,BIT文件必须跟在FSBL后面,文件添加的顺序不能弄错。
再次点击“OK”,返回图 7.4.7所示的界面,然后点击“Add”按钮,添加应用软件,如下图所示:
110104502.jpg

图 7.4.10 添加ELF文件

点击“OK”。ELF文件添加完成后,创建Boot Image界面如下图所示:
110104603.jpg

图 7.4.11 添加文件完成

在图 7.4.11中点击“Create Image”,完成BIN文件的创建。创建完成后,在我们指定的文件夹下可以看到生成的两个文件,如下图所示:
110104761.jpg

下载验证

我们首先来验证如何从SD卡中启动程序。将Micro SD卡插入读卡器,然后在电脑上将其格式化为FAT32格式,如下图所示:
110104830.jpg

图 7.5.1 格式化SD卡

然后将生成的BOOT.bin文件拷贝到SD卡根目录下,最后将SD卡从读卡器中取出,并插入领航者底板背面的Micro SD卡的卡槽中。
接下来将领航者底板上的启动模式开关BOOT_CFG的两个开关均拨到下面(都置为OFF),即设置为从SD卡启动。不同的启动方式与两个拨码开关的状态对应关系如下图所示:
110105040.jpg

图 7.5.2 启动模式设置

最后连接开发板的电源线,并打开电源开关。
电源开关打开后,核心板上PL配置完成的绿色指示灯点亮。然后每次按下底板上PL_KEY0,可以改变核心板上LED2的显示状态,说明程序能够实现从SD卡中自启动。开发板实物如下图所示:
110105212.jpg

图 7.5.3 SD卡启动

SD卡启动验证完成后拔下Micro SD卡。接下来我们来介绍如何将程序固化到QSPI Flash中。
将程序固化到QSPI Flash需要使用JTAG下载器。首先我们将下载器与领航者底板上的JTAG接口连接,下载器另外一端与电脑连接。接下来将领航者底板上的启动模式开关BOOT_CFG的两个开关均拨到上面(都置为ON),即设置为JTAG模式。最后连接开发板的电源,并打开电源开关。
在SDK软件的菜单栏中点击“Xilinx->Program Flash”,如下图所示:
110105506.jpg

图 7.5.4 打开Program Flash

在弹出的对话框中指定前面所生成的镜像文件BOOT.bin以及FSBL.elf文件,如下图所示:
110105623.jpg

图 7.5.5 Program Flash 界面

在图 7.5.5中点击“Program”,开始对Flash进行编程,这个过程需要花费一段时间。
FLASH编程结束后,控制台提示信息如下图所示:
110105790.jpg

图 7.5.6 QSPI Flash下载成功

接下来关闭开发板电源开关,并拔掉JTAG接口。然后将领航者底板上的启动模式开关左边的1号开关拨到上面(置为ON),右边的2号开关拨到下面(置为OFF),即设置为由QSPI Flash启动,然后再次打开电源开关。
电源开关打开后,核心板上PL配置完成的指示灯点亮。然后每次按下底板上PL_KEY0,可以改变核心板上LED2的显示状态,说明程序能够实现从QSPI Flash中自启动。实物图如下所示:
110106057.jpg

图 7.5.7 QSPI Flash启动

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出16170入6148汤圆

发表于 2020-8-1 02:52:10 来自手机 | 显示全部楼层
打赏!

庆祝论坛“打赏”功能实施, 现在开始发技术主题,可以获得打赏
https://www.amobbs.com/thread-5735948-1-1.html
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 13:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表