首页 » FPGA » 正文

zynq 程序固化

直接抄别人写好的https://blog.csdn.net/fengyuwuzu0519/article/details/80411894

ZYNQ的启动流程

ZYNQ7000 SOC 芯片可以从 FLASH 启动,也可以从 SD 卡里启动, 本节介绍程序 FLASH 启动的方法。Zynq7000 SOC 芯片上电后,最先运行的是ARM端系统(PS)。然后再通过ARM系统软件部分加载FPGA的比特流文件.bit至FPGA(PL),配置FPGA PL端的逻辑功能。

如果是linux开发:
则只需固化uboot到boot.bin。这样系统启动后,除了配置FPGA端资源,ARM端则运行uboot,uboot负责加载内核到指定位置并启动内核开始运行。

ZYNQ启动分为两个阶段

第一阶段是 BOOT ROM(ZYNQ厂家固化代码)
第二阶段是 FSBL (First Stage Bootloader)SDK工具来制作。
经过以上两个阶段,PL端配置程序及arm端程序才开始运行。

第一阶段 (BOOT ROM)

上电后,Zynq7000 SOC 会首先执行片内 Boot ROM 代码,Boot ROM 代码读取 Boot mode 寄存器来判断是哪一种启动方式(SD card/QSPI Flash/JTAG)。
确定好哪种启劢方式后,Boot ROM 从相应的启动设备(SD Card/QSPI Flash)加载 First Stage Bootloader (FSBL) 到On Chip Memory(OCM) RAM,并且将执行权交付给 FSBL。

第二阶段 FSBL (First Stage Bootloader)

使用SDK 工具一步步生成 FSBL 代码和可执行文件,结合代码可知 FSBL 主要做了如下工作:

  • 初始化 CPU,初始化串口;
  • Processor System (PS) 一些控制器的初始化,如 MIO, PLL, CLK and DDR;
  • 禁止 L1 Data Cache;
  • 注册 ARM 中断向量;
  • 通过 Boot mode 寄存器,判断是哪种启动方式。

QSPI Flash 启动方式:

初始化 QSPI Flash 控刢器;
从 Flash 拷贝 system.bit 到 FPGA (如果 Flash 中存有 system.bit);
从 QSPI Flash 拷贝应用程序的代码到DDR3;
调转到应用程序执行;

SD Card 启动方式:

初始化 SD 控刢器;
从 SD Card 拷贝 system.bit 到 FPGA (如果 BOOT.BIN 中存有 system.bit);
从 SD card 拷贝应用程序的代码到 DDR3;
跳转到应用程序执行;

JTAG 启动方式

直接退出。

制作BOOT.bin

配置硬件

新建项目的ARM核里需要QSPI或SD卡等相应的配置(取决于要把程序固化到哪个外设),添加自已的硬件等.

然后生成bit文件并导出SDK

编写正常的软件

按正常的模式编写出自已的软件.会生成ELF文件

生成boot.bin

在eclipse中新建一个应用,用来专门生成fsbl用.如下图

编译此项目,然后选择菜单 Xilinx Tools->Create Boot Image:


如上图方法生成boot.bin

烧录boot.bin到flash

在 SDK开发环境里,选择菜单 Xilinx Tools->Program Flash。

没问题的话,就收工了

发表评论