FSBL的全称是 First Stage Boot Loader,是Bootloader(引导程序)的一种。它是在FPGA上运行的软件程序,用于在启动时为处理器准备好一些必要的环境和配置。
在FPGA启动之前,FSBL首先被执行,通过设置一些寄存器和参数,为系统的启动做好准备,如初始化DDR、设置IO的电压和IO模式等。
比如Vivado FSBL就是Xilinx公司在Vivado开发环境下提供的FSBL。
FSBL主要有以下几个功能:
(1)初始化PS和PL:初始化PS和PL的设置,初始寄存器、外设等设置。主要功能有初始化DDR、设置时钟、根据用户的FPGA设计文件生成动态载入代码、初始化各种外部设备等。
(2)设置启动时间:修改启动时间、硬件信息以及用户信息
(3)启动应用程序:启动ARM内核并执行用户应用程序(包括操作系统)
FSBL的实现流程如下:
(1)FSBL启动后,会先检测几个IP核,如硬件系统控制模块、时钟、DDR3等是否存在和工作正常。
(2)然后设置PL的引脚,配置PL,比如使能中断。
(3)然后初始化一些硬件资源,如UART、GPIO、USB等,以便后面的系统调试和应用开发。
(4)最后是启动boot.bin程序文件,将boot.bin装载到DDR中,然后跳转到DDR中的开头地址(offset=0x00000000)开始执行。
注:boot.bin是一个由FSBL生成的二进制文件,其中包含的是需要在启动后运行的应用程序,如操作系统。
在Vivado中,生成FSBL的方法如下:
(1)建立新的工程,选择Zynqmp Processing System IP并完成设置。
(2)在Design Sources页面,打开Block Design设计窗口
(3)添加Processing System模块,进行板级设置,并选择生成FSBL
(4)生成FSBL项目文件。