ZYNQ程序固化

简介: 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 个模式引脚,分别为 MIO[8: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

相关文章
|
7月前
|
Linux 开发工具 异构计算
【ZYNQ】QSPI Flash 固化程序全攻略
【ZYNQ】QSPI Flash 固化程序全攻略
1159 0
|
7月前
|
存储 芯片
一种LED驱动专用控制电路方案
一、基本的概述 TM1651 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。本产品性能优良,质量可靠。采用SOP16/DIP16的封装形式。 二、特性说明 采用功率CMOS 工艺 显示模式(7字段×4 位),支持共阳数码管输出 键扫描(7×1bit),增强型抗干扰按键识别电路 辉度调节电路(占空比 8 级可调) 串行接口(CLK,DIO) 振荡方式:内置RC 振荡(450KHz±5%) 内置上电复位电路 内置自动消隐电路 封装形式:DIP16/SOP16 三、具体的应用
|
Windows Python
MicroPython 玩转硬件系列3:上电自动执行程序
MicroPython 玩转硬件系列3:上电自动执行程序
|
C语言 Python Windows
MicroPython 玩转硬件系列2:点灯实验
MicroPython 玩转硬件系列2:点灯实验
MicroPython 玩转硬件系列4:串口小实验
MicroPython 玩转硬件系列4:串口小实验
|
Linux 芯片
Linux驱动分析之SPI设备
前面我们对SPI控制器驱动进行了分析,接下来来分析SPI设备驱动。我们以DS1302驱动作为分析对象。DS1302是一款RTC芯片,估计很多人在学单片机时用到过。RTC芯片算是比较简单的,也方便分析理解。
Linux驱动分析之SPI设备
|
开发工具 内存技术
zynq程序固化补充篇: 不切换启动模式强制烧写
使用SDK2018.2第一次进行烧写 Flash,在qspi模式下会报错,只有切换至jtag模式下才可以进行烧录,后续的再次烧录不会出现类似问题。但是调试的时候必须切回jtag模式(将BOOT MODE 5拉低才可以调试)
2212 1
zynq程序固化补充篇: 不切换启动模式强制烧写
|
存储 安全 存储控制器
ZYNQ裸板:中断篇
中断对于单片机过来的我们来说,相对也算比较熟悉了,还是严谨一点从头开始说吧。中断是什么?是一种当满足要求的突发事件发生时通知处理器进行处理的信号。中断可以由硬件处理单元和外部设备产生,也可以由软件本身产生。对硬件来说,中断信号是一个由某个处理单元产生的异步信号,用来引起处理器的注意。对软件来说,中断还是一种异步事件,用来通知处理器需要改变代码的执行,当然,轮询所产生的中断的过程是同步的。
900 0
ZYNQ裸板:中断篇
|
安全 数据安全/隐私保护
西门子S7-200 SMART系统块的组态,如何组态CPU、信号板和扩展模块?
本篇我们来介绍如何在编程软件STEP7-Micro/WIN SMART中组态系统块。系统块可提供对S7-200 SMART CPU、信号板和扩展模块的组态,下面我们将分别进行介绍。
西门子S7-200 SMART系统块的组态,如何组态CPU、信号板和扩展模块?
|
安全 数据安全/隐私保护
西门子S7-200 SMART如何组态系统块,CPU、信号板和扩展模块的组态
上篇文章中我们学习了西门子S7-200 SMART查看符号名和绝对地址及符号表相关操作,本篇我们来介绍如何在编程软件STEP7-Micro/WIN SMART中组态系统块。系统块可提供对S7-200 SMART CPU、信号板和扩展模块的组态,下面我们将分别进行介绍。
西门子S7-200 SMART如何组态系统块,CPU、信号板和扩展模块的组态