赞
踩
上篇文章主要分享了操作PS端的GPIO控制开发板上的LED灯,这篇文章分享如何把程序固化到开发板的外部Flash中,实现断电重启程序能够加载运行。
首先我们在上篇工程中配置一路PS端的串口,使能串口是用来打印程序加载时的vlog信息。打开工程,双击ZYNQ7 Processing System IP核。
打开Peripheral I/O Pins选项,勾选UART 0选项,选择MIO[10]和MIO[11]对应的UART0,这里为什么要选择MIO[10]和MIO[11]对应的UART0呢?因为我们在硬件设计上,调试串口使用的就是MIO[10]和MIO[11]对应的UART0。
UART0一端接的是ZYNQ器件,另一端接的是开发板上的type-c调试USB口,在开发板上做了JTAG和UART集成在一个FT2232芯片的调试电路,通过一根type-c线缆,既可以实现ZYNQ器件的程序下载,也可以实现串口调试信息的打印。
在ZYNQ7 Processing System IP核中选择完UART0以及对应的引脚后,点击Ok退出界面,然后点击导航栏左上角的保存按钮。回到PROJECT MANAGER界面,生成bit文件。
生成bit文件后,导出硬件配置。运行SDK软件。
在SDK软件中,更新硬件配置信息,弹出的对话框中选择最新导出的xxx.hdf文件。
更新完硬件配置信息之后,双击打开bsp文件中的xxx.mss文件,重新生成bsp板级支持包。
等待生成编译成功之后,开始新建FSBL功能,该工程主要用在bootloader功能中。
输入FSBL工程的名称,然后点击Next。
接下来我们选择官方的FSBL模板,然后点击Finish完成工程创建。
在FSBL工程中,我们需要手动修改一个fsbl_debug.h文件,双击打开该文件后,加入一段宏定义#define FSBL_DEBUG_INFO。然后保存重新编译FSBL工程。
此时为了保证我们的点灯程序和FSBL程序编译的结果是最新的,点击导航栏的Project->Clean...,SDK软件会自动清除工程的编译结果并重新编译新的可执行文件。
编译完成生成新的可执行文件后,我们开始生成boot.bin文件。
首先输出文件路径我们选择ps_gpio_task下的Debug文件夹。
然后添加我们的可执行文件,首先添加fsbl的.elf文件。
然后添加我们在vivado中生成的bit文件。
最后添加我们的ps_gpio_task.elf文件,该文件为我们最终执行的应用程序。
最终文件全部添加完成后如下图所示,确认无误后,点击Create Image按钮,生成boot.bin文件。
生成完成后,我们开始下载boot.bin文件到Flash中。首先点击导航栏的Xilinx->Porgram Flash,Image File选择刚才生成的boot.bin文件,在刚才选择的Debug路径下。
FSBL File选择fsbl工程Debug路径下的fsbl_task.elf文件。
整个配置界面如下图所示,Flash Type选择qspi-x4-single,勾选Blank check after erase和Verify after flash选项。开发板上电,插上type-c线缆,然后点击Programa按钮。
Flash下载成功后,SDK界面打印信息如下。
然后给开发板断电,把启动模式拨动到QSPI启动模式。
打开串口调试助手,波特率设置为115200,给开发板上电。串口调试助手会打印以下vlog启动信息。并且开发板上的LED灯会隔一秒闪烁一次。
有时会出现Flash固化失败的问题,一般有两个思路解决,1,如果是首次烧写板子上的Flash器件,请将boot模式切换为JTAG,然后固化Flash程序;2,在电脑中添加环境变量:新建系统变量 变量名:XIL_CSE_ZYNQ_UBOOT_QSPI_FREQ_HZ 变量值:10000000。
以上就是今天的主要分享,如何对zynq的Flash进行固化操作。
本工作室推出的所有开发板,大家可加入下面所示微信群进行采购、讨论以及技术交流。大家可微信搜索“凌霄工作室”或者微信号“LingXiao_Studio”。
各位同仁需要该开发板的,可以联系凌霄工作室的市场销售:18691898395 史总。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。