ZCU104 启动Boot模式终极指南 JTAG | SD | QSPI32

ZCU104 启动模式终极指南

https://docs.amd.com/v/u/en-US/ug1267-zcu104-eval-bd
https://docs.amd.com/v/u/en-US/ug1085-zynq-ultrascale-trm

1. 核心概念:什么是启动模式?

Zynq UltraScale+ MPSoC 是一款极其复杂的芯片,它集成了处理器系统 (PS) 和可编程逻辑 (PL)。启动模式 (Boot Mode) 简单来说,就是告诉芯片的处理器(PS部分),在通电后应该“睁开眼”去哪里寻找第一行指令(即初始启动代码)。

这就好比电脑的 BIOS/UEFI 设置,您可以选择从硬盘、U盘还是网络启动。在 ZCU104 上,这个“选择”是通过一个物理的拨码开关 SW6 来完成的。设置了不同的启动模式,就决定了 ZCU104 是成为一个等待指令的硬件开发平台,还是一个能独立运行复杂操作系统(如Linux)的嵌入式系统。

2. 关键钥匙:SW6 拨码开关

在这里插入图片描述

在 ZCU104 电路板上,SW6 是一个4位的拨码开关,它直接连接到 Zynq 芯片的 PS_MODE[3:0] 引脚。这四个引脚的电平组合(高电平/低电平)决定了芯片的启动模式。

  • 位置: 通常位于电路板边缘,需要您仔细查找。
  • 操作: 开关拨向印有 ON 的一侧代表 1,另一侧代表 OFF (或 0)。
  • 重要警告: 在调整 SW6 开关之前,必须确保 ZCU104 板卡已完全断电! 在带电状态下操作可能会损坏芯片或导致不可预测的行为。

下图展示了 SW6 开关及其对应的模式位。

开关引脚模式位 [3]模式位 [2]模式位 [1]模式位 [0]
SW6 编号4321
二进制值0/10/10/10/1

在这里插入图片描述

3. 主要启动模式详解

以下是 ZCU104 最常用和最重要的几种启动模式。

模式一:JTAG 模式

这是最基础、最底层的模式,是硬件工程师和底层软件开发者的核心工具。

  • SW6 设置 [4, 3, 2, 1]: OFF, OFF, OFF, OFF (二进制: 0000)
  • 工作原理: 在此模式下,Zynq 芯片的处理器在上电后不会执行任何代码。它会进入一种暂停状态,静静地等待来自 JTAG 调试端口的指令。
  • 为什么需要它?
    • 初始硬件开发与调试: 当您在 Vivado 中设计了新的硬件逻辑(PL部分),需要烧写 .bit 文件并使用 ILA (集成逻辑分析仪) 观察内部信号时,这是最直接的方式。
    • 裸机程序 (Bare-metal) 开发: 在没有操作系统的情况下,直接在 ARM 处理器上跑 C/C++ 程序时,您会通过 Vitis IDE 使用 JTAG 来下载和单步调试您的代码。
    • 系统恢复: 如果板子的闪存或 SD 卡中的启动程序损坏导致无法启动,JTAG 是唯一的“救砖”通道。您可以强制连接到处理器并重新烧写一个正常的启动镜像。
  • 如何操作与预期现象:
    1. 将板卡断电。
    2. 将 SW6 全部拨到 OFF
    3. 连接 Micro-USB JTAG 线缆。
    4. 给板卡上电。
    5. 此时,电源灯亮,但 DONE 灯(表示PL配置完成)不会亮,也不会有任何串口信息输出。
    6. 在 Vivado Hardware Manager 或 Vitis 中,您可以成功连接到 Target,并进行烧写、调试等操作。

模式二:SD 卡模式 (SD1_LS)

这是运行高层操作系统(如 PetaLinux, PYNQ, Ubuntu)时最常用、最灵活的模式。

  • SW6 设置 [4, 3, 2, 1]: OFF, OFF, OFF, ON (二进制: 0001)
  • 工作原理: 芯片的内部引导程序 (BootROM) 会去寻找连接在 SD 卡插槽 (J100) 上的 Micro-SD 卡。如果找到,它会读取卡上特定分区内的启动镜像文件(通常是 BOOT.BIN),并执行它。
  • 为什么需要它?
    • 运行完整操作系统: PYNQ 和 PetaLinux 提供了丰富的软件生态和易用的开发环境。SD 卡容量大,可以轻松容纳完整的 Linux 系统和您的应用程序。
    • 开发和迭代方便: 您可以轻松地在电脑上修改 SD 卡中的文件,然后插回板子上启动,极大地方便了软件应用的开发和测试。
    • 动态硬件加载: 在 PYNQ 环境下,您可以在 Python 中动态加载不同的硬件设计 (Overlays),而不需要重新启动整个系统,这都依赖于从 SD 卡文件系统读取设计文件。
  • 如何操作与预期现象:
    1. 准备一张烧写好 PYNQ 或 PetaLinux 镜像的 Micro-SD 卡。
    2. 将板卡断电。
    3. 将 SW6 设置为 0001 (只有1号位是 ON)。
    4. 将 SD 卡插入卡槽。
    5. 给板卡上电。
    6. 板卡将开始启动过程,您可以通过连接到 Micro-USB 的串口终端观察到 Linux 的启动日志。几分钟后,系统启动完成,DONE 灯会亮起,您可以通过网络 SSH 登录系统。

模式三:QSPI 闪存模式 (QSPI32)

当您的产品开发完成,需要部署为一个稳定、可靠的嵌入式设备时,这个模式是最佳选择。

  • SW6 设置 [4, 3, 2, 1]: ON, OFF, ON, OFF (二进制: 1010 for QSPI32)
  • 工作原理: 与 SD 卡模式类似,但 BootROM 会去板载的 QSPI 闪存芯片中寻找启动镜像。QSPI 是一种非易失性存储器,速度快且稳定。
  • 为什么需要它?
    • 产品部署: 最终产品不应该依赖于可随意插拔的 SD 卡。将系统固化在 QSPI 中,可以实现开机自启,更加稳定可靠。
    • 快速启动: QSPI 的读取速度通常比 SD 卡在引导阶段更快,可以缩短系统的启动时间。
    • 系统安全性: 固化在板载 Flash 中的系统不易被篡改。
  • 如何操作与预期现象:
    1. 首先,您需要通过 JTAG 模式连接到板卡,使用 Vitis 或其他工具将一个有效的启动镜像 (BOOT.BIN) 烧写到 QSPI 闪存中。这是一个一次性的编程步骤。
    2. 烧写完成后,将板卡断电。
    3. 将 SW6 设置为 QSPI 模式。
    4. 移除 SD 卡(如果有的话)。
    5. 给板卡上电。
    6. 板卡会像从 SD 卡启动一样,开始加载并运行系统,但这次所有数据都来自于内部的闪存芯片。

4. 总结与开发流程建议

下表总结了主要的启动模式:

启动模式SW6 设置 [4,3,2,1]二进制值主要用途
JTAGOFF, OFF, OFF, OFF0000硬件开发、底层调试、系统恢复
SD CardOFF, OFF, OFF, ON0001运行 Linux/PYNQ、应用开发、灵活测试
QSPI32ON, OFF, ON, OFF1010最终产品部署、快速可靠启动

典型的开发工作流如下:

  1. 阶段一:硬件设计与验证
    • 使用 JTAG 模式。在 Vivado 中完成 PL 设计,烧写 bitstream,用 ILA 进行调试,确保硬件逻辑正确无误。
  2. 阶段二:软件与系统开发
    • 使用 SD 卡模式。创建 PetaLinux 或 PYNQ 镜像,将第一阶段验证好的硬件(作为 Overlay)集成进来。在 Linux/Python 环境中开发上层应用,并与硬件进行交互。
  3. 阶段三:产品固化与部署
    • 将第二阶段最终确认的软件和硬件打包成一个完整的启动镜像。
    • 切换到 JTAG 模式,将该镜像烧写到板载的 QSPI 闪存中。
    • 最后,切换到 QSPI 模式,将板卡部署为最终产品,实现上电自启动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值