ZYNQ程序固化

文章目录

将程序存储在非易失性存储器中,在上电或者复位时让程序自动加载运行。
这个过程需要启动引导程序( Boot Loader)参与,Boot Loader会加载FPGA配置文件,以及运行在ARM中的软件应用。

一、简介

ZYNQ Soc的启动和配置过程中,既需要PS的配置信息,又需要PL的配置信息。

ZYNQ系列是没有办法只固化PL的程序的(NorFlash、SD卡等是连接在PS端的)。

PS 支持多种片外非易失性存储器(Quad SPI Flash,NAND Flash,NOR Flash 或 SD 卡)。

ZYNQ SoC 的启动由片上的 BootROM 开始。

片上 BootROM 是 ZYNQ 芯片上的一块非易失性存储器, 它包含了 ZYNQ 所支持的配置器件的驱动,里面的代码是不可修改的。

BootROM 中的代码首先会在片外的非易失性存储器中寻找一个头文件,头文件里定义了一些启动信息,用于配置 BootROM 的运行。

BootROM 执行之后,下一个配置阶段被称为 First-Stage Boot Loader(FSBL),它是由设计者所创建的。 FSBL 可以配置 DDR 存储器和硬件设计过程中所定义的一些外设。这些器件需要在加载软件应用及配置 PL 之前就初始化完毕。

FSBL 的工作内容:

  1. 初始化 PS
  2. 如果提供了 BIT 文件,则配置 PL
  3. 加载裸机应用程序到 DDR 中
  4. 开始执行裸机应用程序

PL 的配置是通过处理器配置访问接口(Processor Configuration Access Port,PCAP)进行的,它允许对 PL 进行部分配置或者完全配置。

ZYNQ 的启动镜像需要如下文件:

  1. Boot ROM 头文件,控制 Boot ROM的设置
  2. First-Stage Boot Loader,FSBL文件
  3. PL 配置文件,即 BIT 文件
  4. PS软件应用程序,即ELF文件

Boot ROM Header文件是自动生成的。

ZYNQ SoC 使用多个模式引脚来决定配置器件的类型、软件的存储位置以及其他的系统设置,这些引脚共享PS 端的MIO 引脚。

总共有 7 个模式引脚,分别为 MIO8:2,前四个引脚定义启动模式,第五个引脚定义是否使用 PLL,第六个和第七个引脚定义上电过程中 MIO bank0 和 bank1 的 bank 电压。

通常模式下,锁相环PLL是启动的,PS-CLK提供时钟信号,经过三路PLL:

  • ARM PLL,产生时钟用于CPU和互联
  • IO PLL,产生时钟用于IO外围设备
  • DDR PL,产生时钟用于DDR、DRAM 控制器和AXI-HP接口

在上电复位(Power On Reset,POR)之后,硬件会采集模式引脚的状态,禁用器件内部的模块,并根据模式引脚的设置选择是否使能 PS 的时钟锁相环。

整个系统的启动过程如下图

二、固化操作

2.1 生成固化文件

在Block Design 的ZYNQ Processing System模块中要使能SD外设和QSPI外设。

  • 使能SD外设,将程序固化到SD卡中。
  • 使能QSPI外设,将程序固化到Flash中。

在创建platform的步骤中需要勾选Generate boot components (生成启动组件)选项,勾选之后,软件会自动在硬件平台工程里生成 fsbl 的相关文件。

工程编译后,在系统工程和应用工程下会各自生成一个Debug文件夹。

  • 系统工程下的 Debug 文 件里包含的是 BOOT.BIN(固化文件)
  • 应用工程下的 Debug 文件里包含的是 elf文件(应用工程烧录文件)

同时,硬件平台工程文件夹下也生成了 fsbl.elf(启动引导文件)

也可以手动生成BOOT.BIN文件

bif文件是BOOT.BIN文件的参数描述。

3个文件的添加顺序不能乱。

2.2 固化到SD卡

将生成的 BOOT.bin 文件拷贝到 SD 卡根目录下。(SD卡文件系统为FAT32格式)。

将板卡启动模式设置为从SD卡启动。

2.3 固化到Flash

将程序固化到 QSPI Flash 需要使用 JTAG 下载器。( 此时要设置为从JTAG启动 )

Vitis 软件的菜单栏中点击"Xilinx->Program Flash"。

在弹出的 Program Flash Memory 界面中中配置BOOT.BIN文件路径和FSBL文件路径。

点击"Program",开始对 Flash 进行编程。

Flash编程完成后,将板卡启动模式设置为从QSPI Flash启动。

参考

【正点原子】启明星ZYNQ之嵌入式Vitis开发指南v1_2

相关推荐
Hello-FPGA15 小时前
基于RFSOC FPGA ZCU216 的CoaXPress 采集demo
fpga开发
9527华安17 小时前
FPGA基于ADV7182解码PAL视频,Video Processing Subsystem去隔行,提供6套工程源码和技术支持
fpga开发·音视频·pal·adv7182
hahaha601617 小时前
数字图像时域滤波或者3D降噪算法FPGA实现
算法·计算机视觉·fpga开发
GateWorld17 小时前
Xilinx 7系列FPGA时钟网络详解
fpga开发·时钟网络·xilinx 7系列
szxinmai主板定制专家1 天前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
szxinmai主板定制专家2 天前
AMR 项目落地:机器人控制器硬件定制化需求复盘
arm开发·单片机·fpga开发·系统架构·机器人·am62x
FPGA小迷弟3 天前
FPGA 与卫星:从星载硬件到在轨智能的完整技术解析
fpga开发·架构·fpga·1024程序员节·无线电
NamoAmitabha1283 天前
CPU 内部结构是什么?---deepseek
fpga开发
abc light3 天前
ARM 裸机开发(6)——时钟树与定时器
arm开发·单片机·fpga开发
156082072193 天前
JFMZQ28DR、JFMZQ68DR、RFsoc XCZU47DR、XCZU48DR 信号处理板
fpga开发·信号处理