当前位置:   article > 正文

ZYNQ7000 uboot实现两级引导及加载FPGA程序_zynq下uboot

zynq下uboot

ZYNQ7000 uboot实现两级引导及加载FPGA程序

​ 这里主要是针对qspi flash启动,然后uboot源码为xilinx-v2019.2版本。

一、启动介绍

​ zynq一般情况下,我们是通过xilinx的sdk生成fsbl,然后和fpga程序、uboot一起,生成boot.bin文件,最后固化到spi flash。这样,我们每次更新uboot或者fpga程序,都要重新生成boot.bin,比较麻烦。因此这里可以用uboot secondary program loader即uboot spl来取代xilinx sdk的fsbl, 并且uboot spl很小,可以完全从zynq的 OCM启动。

​ uboot spl为uboot的第二阶段加载器,一般用来引导真正的uboot,在zynq中可以用来替换fsbl作为第一阶段的引导。这样每次更新了uboot,只需要将新的uboot通过网络或者jtag固化到指定的spi flash位置即可。当设备上电,uboot spl起来后,会从固定的位置去加载uboot。

二、uboot spl

​ 要实现uboot secondary program loader,则需要PS端启动初始化代码,可以从xilinx sdk的hw platform工程获得。如图所示:

在这里插入图片描述

只需要上图中的ps7_init_gpl.cps7_init_gpl.h文件拷贝到{uboot源码}/board/xilinx/zynq 目录下对应的目录即可,如下图所示。比如,我目前是通过zynq_zed 这个改的,所以只需要把ps7_init_gpl.cps7_init_gpl.h文件拷贝到zynq_zed 目录。
在这里插入图片描述

​ 如果是从qspi启动,需要在zynq-common.h 里面修改CONFIG_SYS_SPI_U_BOOT_OFFS 宏,来指定uboot在spi flash中存放的位置,当uboot spl程序起来后,则会从这个位置去引导uboot。

​ 最后编译uboot源码,则会在uboot源码根目录下生成一个spl目录,然后将spl目录的boot.bin 固化到spi flash,这里已经生成了boot.bin文件,因此不需要xilinx sdk再来生成boot.bin文件。其中uboot spl引导的uboot文件为u-boot.img,因此在固化uboot时,应该固化编译生成的u-boot.img文件(u-boot.img比u-boot.bin多64字节的头)。

##三、加载FPGA程序

​ zynq主要用Device Configuration Interface (devcfg)来加载FPGA程序,而在uboot下提供了fpga加载相关的指令,都是基于devcfg 控制器驱动实现的。如图所示:

在这里插入图片描述

​ 因此fpga程序也没必要每次和fsbl一起,生成boot.bin文件。完全可以通过uboot的命令来实现加载,并且通过uboot来更新fpga程序也更方便。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/172415
推荐阅读
相关标签
  

闽ICP备14008679号