EBAZ4205_NOTE

FSBL介绍

  1. FSBL的作用

​ FSBL是ZYNQ 7000启动过程中的第一阶段,其主要作用是初始化硬件资源、加载FPGA bit文件、配置DDR等。在FSBL执行完毕后,系统会进入第二阶段——uboot。

  1. FSBL的代码结构
  • fsbl.h:定义了FSBL的全局变量和函数原型。

  • fsbl_config.h:定义了FSBL的配置信息,如DDR的大小和地址、FPGA bit文件的地址等。

  • fsbl_hooks.c:定义了FSBL的钩子函数,如FSBL的初始化函数、DDR的初始化函数等。

  • fsbl_main.c:FSBL的主函数,包含了FSBL的启动过程。

  1. FSBL的启动过程

​ FSBL的启动过程主要包括以下几个步骤:

  • 初始化硬件资源:包括初始化PS和PL的时钟、GPIO、UART等。

  • 加载FPGA bit文件:从SD卡或QSPI Flash中读取FPGA bit文件,并将其加载到PL中。

  • 配置DDR:初始化DDR控制器,并配置DDR的大小和地址。

  • 初始化FSBL的全局变量:包括FSBL的启动模式、DDR的大小和地址、FPGA bit文件的地址等。

  • 执行FSBL的钩子函数:包括FSBL的初始化函数、DDR的初始化函数等。

  • 跳转到uboot:将控制权转交给uboot,进入第二阶段的启动过程。

  1. FSBL的钩子函数

​ FSBL的钩子函数包括:

  • FSBL的初始化函数:初始化FSBL的全局变量。
  • DDR的初始化函数:初始化DDR控制器,并配置DDR的大小和地址。
  • FSBL的打印函数:用于在启动过程中输出调试信息。
  1. FSBL的生成方式
  • vitis工具生成,New project选择Zynq FSBL模板生成fsbl.elf。
  • petalinux命令行生成。

zynq启动流程

​ xilinx zynq 7000系列的芯片中包括两个部分,PS和PL,也就是FPGA的逻辑编程的部分跟嵌入式ARM的部分,ARM部分是双核的A9处理器。关于FPGA的部分在这里就不说了。其实说的简单点,可以吧这个芯片看成一个带有FPGA外设的ARM处理器,下面详细分析一下启动流程。

​ 所有的芯片都是从0地址启动的,所以首先找到0地址的代码在..xxxx.sdk\standalone_bsp_0\ps7_cortexa9_0\libsrc\standalone_v5_1\src\asm_vectors.S中的开头也就是0地址的地方有这样得一段代码:

BOOT.bin

standalone BOOT.bin包含:

​ fsbl.elf文件

​ vivado生成的fpga的bit文件

​ app工程的elf文件(这里为led工程的elf)

linux BOOT.bin包含:

​ fsbl.elf文件

​ vivado生成的fpga的bit文件

​ u-boot.elf文件

​ system.dtb设备树文件

​ 注:linux的内核镜像 文件系统在BOOT.bin之外。

ubuntu 16.04

1
2
3
#ubuntu server缺少库,最好直接用desktop
sudo apt-get install openssh-server
sudo service ssh start

PetaLinux 2017.2

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo apt-get install tofrodos  iproute2 gawk
sudo apt-get install gcc git make
sudo apt-get install xvfb
sudo apt-get install net-tools libncurses5-dev tftpd
sudo apt-get install zlib1g-dev zlib1g-dev:i386 libssl-dev flex bison libselinux1
sudo apt-get install gnupg wget diffstat chrpath socat xterm
sudo apt-get install autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev
sudo apt-get install screen pax gzip tar

#直接在home目录下建
mkdir -p opt/pkg/petalinux1702
#千万不要使用root或者sudo
./petalinux-v2017.2-final-installer.run /home/dnsnat/opt/pkg/petalinux1702
1
2
3
4
5
#自己以普通用户模式下
vi ~/.bashrc
#在末尾添加:
source /home/dnsnat/opt/pkg/petalinux1702/settings.sh
source ~/.bashrc
1
2
3
4
5
6
mkdir EBAZ4205
#sync -azP system_wrapper.hdf 192.168.122.197:/home/dnsnat/EBAZ4205
cd EBAZ4205
petalinux-create -t project --template zynq -n project
cd project
petalinux-config --get-hw-description ../

配置参考正点原子文档

1
2
petalinux-config -c kernel
petalinux-config -c rootfs
1
2
petalinux-build
petalinux-package --boot --format BIN --fsbl ./images/linux/zynq_fsbl.elf --fpga system_wrapper.bit --u-boot --force

参考:

petalinux 2017.2安装指南

https://blog.csdn.net/u013457167/article/details/77914069

EBAZ4205矿板petalinux开发 LINUX工程

https://blog.csdn.net/qq_36322990/article/details/107845484

zynq-7000系列板卡

https://www.fpgadeveloper.com/list-of-zynq-7000-dev-boards/

boot.scr、script.bin文件介绍

https://blog.csdn.net/qq_28877125/article/details/124724089

the PetaLinux Tools Documentation: Reference Guide (UG1144)

Zynq-7000 SoC Technical Reference Manual (UG585)


EBAZ4205_NOTE
http://witbit.cn/EMBEDDED/EBAZ4205/EBAZ4205_NOTE.html
作者
朝彻
发布于
2025年2月13日
许可协议