以前工程都是通过 JTAG 先下载 bit 流文件,再下载 elf 文件,最后点击 Run As 来运行程序。JTAG 的方法是通过 TCL 脚本来初始化 PS,然后用 JTAG 收发信息,用于在线调试。但是这样只要一断电,程序就会丢失,掉电不保存。
本文详细介绍如何制作镜像文件。将镜像文件拷贝到 SD 卡,设置拨码开关,使系统从 SD 启动。那么每次断电重启后,系统都会从 SD 启动。这样将程序做固化,掉电重启后就不会丢失。
1.固化的流程

2. 固化准备
首先,想到的两个文件就是 PL 部分需要的 bit 文件,以及 PS 需要的 elf 文件。但是仅有这两个文件不够的。我们还需要一段代码把 bit 文件以及 elf 文件安置好。这段代码FSBL.elf。
因此要制作一个镜像文件需要三个文件:
1、FSBL.elf 2、.bit 3、.elf。
最后得到一个等式就是:BOOT.bin = FSBL.elf+该工程.bit+该工程.elf。
(我们利用SDK生成FSBL.elf 文件)
2. zynq 的从 SD 卡的启动的过程
zynq 和大多数 arm 启动过程一样,启动过程也分为 3 个阶段,这三个阶段分别称之为阶段 0、阶段 1 和阶段 2。
阶段 0:即传统的 BootROM 过程。zynq 芯片 rom 里面固化了一段不可修改的程序,只要 zynq 一上电,这段程序就会执行。它将对 zynq 的 NAND、NOR、SD 等基本外设控制器进行初始化。把 SD 卡这类易失的存储器件初始化后,就会把其中的程序拷贝到 zynq 的 OCM(On-chip memory)。这个被拷贝到片上 RAM 执行的程序就是我们制作的文件——BOOT.bin。
阶段 1:BOOT.bin 加载到 OCM 上开始执行。BOOT.bin 由 FSBL.elf+该工程.bit+该工程.elf 构成。阶段 1 要做的就是:首先配置 PS 部分,PS 完成初始化后,会去配置 PL 部分,最后去加载阶段 2 的代码。
阶段 2:这一阶段是可选的,主要是为了完成 Linux 系统启动过程。
2. BOOT.bin 制作过程
打开工程,双击打开原理图。

双击 ZYNQ Processing System,对其进行配置:
选择 MIO Configuration 选项,然后如下图所示配置:
MIO ConfigurationàMemory Interfaces 配置:
1、 勾选 Quad SPI Flsh
2、 勾选 Feedback Clk
MIO ConfigurationàI/O Peripherals 配置:
1、 勾选 SD 0
2、 勾选 CD,并设置 MIO 47
3、 勾选 WP,并设置 MIO 46
Clock ConfigurationàIO Peripheral Clocks 配置:
QSPI 时钟设置为 125
点击 OK 完成配置。
右击 system.bd, 单击 Generate Output Products。
右击 system.bd 选择 Create HDL Wrapper 这步的作用是产生顶层的 HDL 文件
选择 Leave Let Vivado manager wrapper and auto-update 然后单击 OK
生成 Bit 文件。
导出到硬件。
启动 SDK
新建一个应用工程
填写工程名 FSBL,点击 Next
工程类型选择 Zynq FSBL。
按快捷键 Ctrl+B 编译一下工程。
选中其中一个工程(记住是哪一个工程,等会儿好找 Boot.bin),然后右单击,选择 Creat Boot Image。
在新窗口中,一共出现三个文件,分别是 FSBL.elf、.bit、.elf 文件,如图所示。制作镜像文件需要这三个文件。直接单击 Create Image 即可完成 Boot.bin 的创建,此文件可作为 SD 卡启动文件和 SPI 启动文件。
在之前设定的文件夹下找到 BOOT.bin 文件,并且将其拷到 SD 卡中,再将 SD 卡插到开发板,最后打开电源。开机后系统从 SD 卡启动,程序掉电不消失。
最后提醒下放大 SD 卡的 bin 文件,文件名必须是 BOOT.bin,否则不识别。
编辑:jq
-
SD卡
+关注
关注
2文章
592浏览量
69681 -
JTAG
+关注
关注
6文章
415浏览量
75274 -
TCL
+关注
关注
11文章
1815浏览量
91809
原文标题:ZYNQ SOC设计---BOOT.bin制作
文章出处:【微信号:VOSDeveloper,微信公众号:麻辣软硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
画原理图没镜像、已安排打板?一文讲清补救与预防
使用Dockerfile构建镜像的详细步骤
深入解析U-Boot image.c:RK平台镜像处理核心逻辑
【服务器数据恢复】EVA存储硬盘离线,LUN丢后数据如何“重生”?
别再装系统了!Linux 镜像到底是什么?一篇讲到你怀疑人生
开发者指南 | 华为昇腾Ascend310B启动镜像制作与烧写全攻略
【教程】一文教会你CE31-MD01X从绑定到场景控制
【创龙TLT113-MiniEVM开发板试用体验】启动卡制作+上电启动
【创龙TL3562-MiniEVM开发板试用体验】1、从系统启动卡制作开始
Oracle数据恢复—格式化分区导致Oracle数据库报错的数据恢复案例
【Milk-V Duo S 开发板免费体验】1-开箱和烧写镜像
【VisionFive 2单板计算机试用体验】+ 烧写系统
ElfBoard技术贴|如何在ELF 2开发板中适配 AX200NGW WiFi模块
服务器数据恢复—ocfs2文件系统被格式化为Ext4文件系统的数据恢复案例
一文教大家如何制作镜像文件
评论