ZYNQ几种boot模式下sdk文件区别

ZYNQ有多种启动模式,每种模式对应的SDK生成文件有所不同。以下是主要启动模式及其SDK文件区别:

1. JTAG模式

  • 用途:调试和开发
  • 生成文件
    • FSBL.elf(First Stage Bootloader)
    • xxx.bit(FPGA比特流文件)
    • 应用程序.elf(用户应用程序)
  • 启动过程:通过JTAG直接加载到内存执行

2. QSPI Flash启动

  • 生成的关键文件BOOT.bin

  • 文件组成

    1. Boot Header(引导头,包含配置信息)
    2. FSBL.elf(第一阶段引导程序)
    3. bitstream.bit(可选,FPGA配置)
    4. 应用程序.elf(用户程序)
  • SDK操作

    bash 复制代码
    Create Boot Image → 生成 BOOT.bin

3. SD卡启动

  • 生成文件BOOT.bin
  • 文件结构
    • SD卡FAT32分区只需包含:

      复制代码
      BOOT.bin
      [可选] system.bit (如果未集成到BOOT.bin中)
      [可选] uImage (Linux内核)
      [可选] devicetree.dtb (设备树)
      [可选] uramdisk.image.gz (根文件系统)

4. NAND Flash启动

  • 生成文件BOOT.bin
  • 额外考虑
    • NAND需要坏块管理
    • FSBL需支持NAND控制器
    • 可能生成.mcs文件用于烧录

5. NOR Flash启动

  • 生成文件BOOT.bin
  • 特点
    • 支持XIP(eXecute In Place)
    • 启动速度较快

SDK中创建启动镜像的区别

通用步骤

bash 复制代码
1. 编译FSBL.elf
2. 导出硬件bit文件
3. 编译应用程序.elf
4. 使用"Create Boot Image"工具打包

模式特定的差异

启动模式 输出文件 FSBL配置差异 烧录工具
QSPI BOOT.bin 配置QSPI控制器 Vivado/SDK Flash Programmer
SD卡 BOOT.bin 配置SD/eMMC控制器 直接复制到SD卡
NAND BOOT.bin 配置NAND控制器,支持坏块处理 Flash Programmer
NOR BOOT.bin 配置NOR控制器,支持XIP Flash Programmer
JTAG 无需打包 直接调试 JTAG下载器

关键配置区别

FSBL配置

c 复制代码
// bsp设置中的差异
#define FSBL_DEBUG_INFO  // 调试信息
#define QSPI_BOOT        // QSPI启动配置
#define SD_BOOT          // SD卡启动配置

BIF文件示例

bash 复制代码
// QSPI启动的BIF文件
the_ROM_image:
{
    [bootloader] fsbl.elf
    system.bit
    application.elf
}

实用建议

  1. SD卡模式最适合开发和原型验证
  2. QSPI模式适合产品部署(成本低)
  3. JTAG模式仅用于调试
  4. 生产时考虑:
    • QSPI:小容量,低成本
    • eMMC/SD:大容量,易更新
    • NAND:大容量,需坏块管理

文件生成命令示例

bash 复制代码
# 生成BOOT.bin
bootgen -image bootimage.bif -arch zynq -o BOOT.bin -w on

# 生成QSPI烧录文件
bootgen -image bootimage.bif -arch zynq -format mcs -o output.mcs

不同启动模式主要影响FSBL的配置和最终镜像的打包方式,但用户应用程序代码通常无需修改。

相关推荐
Saniffer_SH10 小时前
【高清视频】笔记本电脑出现蓝屏、死机、慢、不稳定是这样连接分析M.2 SSD的
运维·服务器·网络·人工智能·驱动开发·嵌入式硬件·fpga开发
Z22ZHaoGGGG10 小时前
Verilog实现对采样信号有效值(RMS)的计算
fpga开发
简简单单做算法11 小时前
基于FPGA的图像形态学腐蚀处理Verilog开发与开发板硬件测试
fpga开发·腐蚀·形态学处理·硬件调试
hong_fpgaer13 小时前
XILINX ZYNQ FPGA PS端DMA握手流程
fpga开发·vivado
北城笑笑14 小时前
FPGA 50 ,Xilinx Vivado 2020 版本安装流程,以及常见问题解析,附中文翻译( Vivado 2020 版本安装教程 )
fpga开发·fpga
GateWorld1 天前
主流FPGA厂商对SystemVerilog的支持现状
fpga开发·system verilog
Smart-佀2 天前
FPGA入门:CAN总线原理与Verilog代码详解
单片机·嵌入式硬件·物联网·算法·fpga开发
凯子坚持 c2 天前
C++大模型SDK开发实录(一):spdlog日志封装、通用数据结构定义与策略模式应用
数据结构·c++·sdk·策略模式
陈奕昆2 天前
保姆级教程!零基础解锁大疆无人机开发:MSDK/PSDK/ 上云 API 实战指南[特殊字符]
无人机·sdk·大疆·企业级大疆二次开发
丁劲犇2 天前
B205mini FPGA工程粗浅解析:从架构到Trae开发介绍
ai·fpga开发·架构·ise·trae·b210·b205mini