首页 > 技术 > 内容

ZYNQ7020的程序固化

时间:2026-01-27  作者:Diven  阅读:0

一、启动流程介绍

普通的 FPGA 一般是可以从 flash 启动,或者被动加载,但是ZYNQ不行,ZYNQ必须PS端参与

ZYNQ 的启动是由 ARM 主导的,包括 FPGA 程序的加载, ZYNQ 启动一般为3个阶段,最少2个阶段:

1、阶段0:Stage-0 Boot (BootROM)

阶段0,主要是运行芯片内部固化的BootROM程序,这个BootROM主要是识别启动模式(spi/sd/nand/nor/)是哪?

1)、根据启动模式,设置相应的外设,当然有引脚复用了,还有时钟;

2)、将FSBL从启动介质中搬移到OCM(On-Chip Memory)中

3)、跳转到FSBL处执行,将控制权交给FSBL程序

2、阶段1:FSBL(First Stage Bootloader )

FSBL(第一阶段引导加载程序)在BootROM之后启动,这个BootROM将FSBL加载到OCM(On-Chip Memory )

FSBL负责下面的几项工作:

1)、初始化PS端的配置数据(使用Xilinx硬件配置工具提供的);

完成MIO分配、时钟PLL、DDR控制器初始化,SD、QSPI控制器初始化

2)、通过启动模式从启动介质读取bitsttream文件,并用烧写PL端程序

3)、加载第二阶段BootLoader或者逻辑代码到DDR内存

4)、切换到第二阶段BootLoader或者逻辑代码运行

下图是一个简单的FSBL流程图:

3、第二阶段启动流程:Second Stage Bootloader

第二阶段引导加载程序是可选的,并由用户设计,一般是在跑系统的情况下使用,比如 linux 系统的u-boot(用petalinux 工具制作 linux 系统 )
 

二、制作FSBL第一阶段的启动代码

1、新建一个名为 fsbl 的 APP,特别注意硬件平台选择我们自己配置的ps_uart_warpper_hw_platform_0 ,点击next

2、在弹出的对话框选择Zynq FSBL,点击Finish

3、然后软件会自动的进行编译FSBL,时间看电脑的性能

4、等编译完成,修改代码,添加调试宏定义 FSBL_DEBUG_INFO

这个宏可以在启动输出 FSBL 的一些状态信息,有利于调试,但是会导致启动时间变长。
 

5、修改后保存, SDK 默认会自动编译,生成 fsbl.elf 文件。也可以右键点击build project手动编译

6、我们的工程文件夹包含很多外设文件ps7_init.c, nand, nor, qspi, sd 等 

7、fsbl的 main.c 中,第一个运行的函数就是 ps7_init ,这个fsbl内容也可以根据自己需要进行更改,例如加点自己的打印信息

8、创建 BOOT 文件 

8.1、选择 APP (就是我们的应用:ps_uart_hello)工程,右键选择 Create Boot Image

8.2、在弹出的对话框中可以看到BIF文件和BOOT.bin的生成路径

BIF文件是生成BOOT.bin文件的配置文件;

BOOT.bin是我们需要的启动文件,可以烧写到SD卡、QSPI里

8.3、在弹出的对话框,Boot image partitions 列表中有要合成的文件 

第一个文件一定是 bootloader 文件,就是上面生成的 fsbl.elf 文件;

第二个文件是 FPGA 配置文件 bitstream,本实验没有PL端程序,所以bitstream,不需要添加;

第三个是应用程序,在本实验中为 ps_uart_hello.elf

8.4、由于没有 bitstream,在本实验中只添加 bootloader 和应用程序。点击 Create Imag
 

8.5、在生成的目录下可以找到BOOT.bin文件

三、SD卡烧写及测试

1、格式化 SD 卡,只能格式化为 FAT32 格式,其格式无法启动 

2、放入 BOOT.bin 文件,放在根目录 

3、D 卡插入开发板的 SD 卡插槽 

4、启动模式调整为 SD 卡启动 

开发板设置拨码为【 101001(1~6 SD卡 模式)】

5、打开串口,开发板上电

6、可以看到SD卡启动成功,红色部分为FSBL打印信息,绿色为我们的APP打印信息

7、SD卡固化成功

四、QSPI程序固化

QSPI 烧写有2种方式:xSDK软件烧写、或者Vivado软件烧写

五、QSPI烧写及测试(xSDK软件烧写)

首先将开发板设置为JTAG模式【 010101(1~6 JTAG 模式)】

1、在 SDK 菜单 Xilinx -> ProgRAM Flash 

2、参数配置

<1>、Hardware Platform 选择我们自己定制的平台;

<2>、Image FIle 文件选择要烧写的 BOOT.bin;

<3>、FSBL file 选择创龙定制的 fsbl.elf,只有用这个 fsbl 才能烧写(我会另写一篇博客单独写怎么定制fsbl.elf文件);

<4>、选择 Verify after flash,在烧写完成后校验 flash 

3、注意:第一次固化的时候,里面有uboot在执行,烧写不成功,所以要先在软件点固化,然后快速给开发板上电

4、将启动设置为QSPI【 100101(1~6 QSPI 模式)】,验证固化有没有成功

5、打印的信息和我们在DUBUG的时候一致,代表我们固化成功

五、QSPI烧写及测试(vivado软件烧写)

1、在 HARDWARE MANGER 下选择器件,右键 Add Configuration Memory DevIC

2、选择尝试 Winbond,类型选择 qspi,宽度选择 x4-single,这时候出现 w25q128

选择红框型号,开发板使用 MT25QL256ABA1EW9-0SIT,但是不影响烧录

3、在弹出的对话框,提示我们是否立即烧写,点击OK

选择ps_uart_hello/bootimage/目录的BOOT.bin,选择fsbl/debug/目录下的fsbl.elf文件

4、提示我们当前是处于QSPI模式的,如果编程失败,请更改模式,再次重试

5、我们将启动模式改为JTAG模式【 010101(1~6 JTAG 模式)】

6、断电上电,再次尝试烧写,没有刚才的警告信息了

7、再将启动模式切换为QSPI模式,QSPI【 100101(1~6 QSPI 模式)】,验证固化有没有成功

六、到此PS端的程序固化成功

审核编辑 :李倩

 

猜您喜欢


精密电阻作为基础元件,应用于各种高精度电子设备中。美磊(Mag.Layers)作为国内知名的精密电阻品牌,优异的性能和稳定的质量赢得了市场的高度认可。本文将详细...
2018-08-03 16:06:30
随着电子设备的普及,微型保险丝作为保护电路安全的重要元件,应用越来越。微型保险丝在电路中起到防止过流、过载的重要作用,一旦保险丝损坏,电路就无法正常工作。学会如...
2025-12-01 14:00:05
现代电子产品设计中,封装技术的选择对整体性能和可靠性至关重要。QFN(QuadFlatNo-lead)封装因其优越的散热性能和小型化特性而受到广泛关注。本文将重...
2025-02-24 12:15:50
发光二极管(LED)作为高效、环保的光源,已经在照明、显示屏、背光等领域得到了应用。随着科技的发展,市场上涌现出众多LED品牌,各具特色和优势。本文将为您介绍当...
2025-04-10 02:00:05
分离器是工业生产中常见的设备,应用于石油、化工、食品等行业。了解分离器的规格和尺寸,对于选择合适的设备非常重要。分离器的规格通常根据其工作原理、处理能力和应用场...
2023-12-05 00:00:00
2512贴片电阻的封装尺寸并非随意制定,而是遵循EIA(美国电子工业协会)标准。2512中的「25」和「12」分别代表其长度和宽度,单位是英寸的百分之一。因此,...
2024-11-26 11:29:40
碳化硅二极管(SiC二极管)是新型半导体器件,因其优越的物理特性和的应用前景而受到越来越多的关注。与传统的硅二极管相比,碳化硅二极管在高温、高电压和高频率等极端...
2025-03-29 11:00:34
配件的应用领域非常,涵盖了日常生活的多个方面。在电子产品领域,手机壳、耳机、充电器等配件不仅提升了设备的功能性,也增强了用户体验。在汽车行业,各种配件如座椅套、...
2010-01-07 00:00:00
套筒延长杆是应用于各类工具和设备的配件,主要用于延长套筒的使用距离,提高操作的灵活性。根据不同的需求,套筒延长杆可分为几种主要类型。首先是标准延长杆,这种延长杆...
2008-02-25 00:00:00
随着电子设备的不断发展,功率电感作为电子元器件中不可少的重要组成部分,应用于电源管理、信号滤波和能量存储等领域。选择高质量的功率电感,对于提升设备性能和稳定性非...
2025-11-05 19:30:05