ZYNQ开发学习笔记(一):BOOT.bin,fsbl文件,将程序固化到板上的QSPI_Flash中

2 篇文章 0 订阅
1 篇文章 0 订阅

1、环境介绍:

  • ZYNQ-7000 MZ7XA板卡
  • vivado 2020.1
  • vitis 2020.1

2、正文:

首先介绍一下镜像这个概念,下面是百度百科中的解释:

所谓镜像文件其实和rar ZIP压缩包类似,它将特定的一系列文件按照一定的格式制作成单一的文件,以方便用户下载和使用,例如一个操作系统、游戏等。它最重要的特点是可以被特定的软件识别并可直接刻录到光盘上。其实通常意义上的镜像文件可以再扩展一下,在镜像文件中可以包含更多的信息。比如说系统文件、引导文件分区表信息等,这样镜像文件就可以包含一个分区甚至是一块硬盘的所有信息。

额,理解了镜像的概念,接下来以在vivado vitis工程中的实际操作中学习BOOT.bin fsbl等内容。

vivado工程方面:

配置一下PS,生成一个HDL Wrapper.v,然后在Wrapper.v文件中加入一段4bit流水灯的代码,代码如下:

image-20211002162341338 image-20211002162649052

然后生成.bit文件,导出xsa文件,接下在切换到vitis开发。

vitis工程方面:

新建一个硬件工程,命名为run_led_hw_platform

image-20211002163328456 image-20211002163622228

指定刚vivado生成的xsa文件,上图中记得勾选Generate boot components,这个会在生成的硬件工程中产生一个zynq_fsbl文件夹,打开会发现有一堆fsbl相关的源文件,编译一下整个硬件工程,就会在下面图二的1处产生一个fsbl.elf文件。

image-20211002164114451

image-20211002164030549

接下来新建一个helloWorld的应用工程,命名为helloWorld,并编译一下。

image-20211002164344390

image-20211002164607517

接下来讲一下当我们成功固化程序到flash中后,ZYNQ板子启动的过程。

  • ZYNQ内部的BootROM存储有一段在CPU复位后固定执行的代码。称为stage-0启动代码。(这个ROM中的代码,掉电不丢失)

  • 这段代码用来配置一个ARM CPU和一些必要外设,从而能从一个启动设备中获取FSBL(first stage boot loader)执行。BootROM是一个ROM,不可写,PL的配置不是通过BootROM实现的。BootROM不能使用DDR和SCU,因为它们还没有初始化。

  • BOOT.bin是一个镜像文件,我们这里是将它存储在外部的QSPI-Flash中,BOOT.bin包含有fsbl.elf,PL部分配置文件(.bit),应用工程的可执行二进制文件(helloWorld.elf文件)

  • 当BootROM把flash中BOOT.bin中的fsbl装载到OCM后,接下来就开始执行fsbl了。

  • fsbl负责下面这些:

    image-20211002172924391

    对于基于zynq的嵌入式Linux系统,BootROM引导启动FSBL,FSBL引导启动U-Boot,U-boot引导启动Linux内核。

理解了上面这些,接下来继续创建Boot Image。

image-20211002171139341

上图中出现了好多文件,它们的关系详情请参考ug821的boot章节,这个BOOT.bin就是需要制作出来的镜像文件,它里面包含有下面fsbl.elf,run_lef.bit,helloWorld.elf文件。至于上面的helloWorld.bif文件,它是一个Boot Image Format 文件,用于制作BOOT.bin用的。

image-20211002173806240

制作好BOOT.bin后,接下来把它烧录到QSPI-Flash中:

image-20211002174044195

image-20211002174241139

在consol窗口中出现一系列消息后,就成功了。

image-20211002174408697

此时打开一个串口窗口,对板子重新上电,可看到流水灯在闪烁,串口打印成功。

image-20211002174626648

3、参考文献:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值