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的配置和最终镜像的打包方式,但用户应用程序代码通常无需修改。

相关推荐
weixin_461769407 小时前
机械臂SDK运行日志
conda·sdk
FPGA小徐13 小时前
数字IC/FPGA设计基础_ILA原理与使用
fpga开发
FPGA小徐15 小时前
FPGA 部署 YOLO 完整指南:从模型量化到 Zynq PS+PL 硬件加速
yolo·fpga开发
dadaobusi19 小时前
学习:chiesel,scala
学习·fpga开发·scala
爱吃汽的小橘20 小时前
异步FIFO核心揭秘:格雷码与指针同步
fpga开发
艾莉丝努力练剑21 小时前
【AI大模型接入SDK】ChatSDK 集成测试概述
jvm·c++·人工智能·学习·面试·集成测试·sdk
艾莉丝努力练剑21 小时前
【AI大模型接入SDK】ChatSDK:CMake构建静态库完整实现
java·开发语言·网络·c++·人工智能·学习·sdk
璞致电子21 小时前
基于 P201Pro | 接收端基础知识——Costas环锁定后为何仍会错?DQPSK与前导码相位校正(6)
经验分享·fpga开发·ad9361·软件无线电·sdr·qpsk·pzsdr
璞致电子2 天前
基于 AD9361 (PZSDR‑P201Pro) 软件无线电实战综述:从板卡选型、硬件平台升级到 GNU Radio QPSK 完整收发链路
经验分享·嵌入式硬件·fpga开发·软件无线电·sdr·璞致电子
炎龙铠甲会合体2 天前
从 SPEC 到上板:在 Zynq-7020 上用 RTL 手写一个 YOLO 卷积加速器(完整教程)
yolo·fpga开发·axi·芯片验证