澎湖县网站建设_网站建设公司_Linux_seo优化
2026/1/16 12:55:22 网站建设 项目流程


一、说明
硬件设计为JTAG模式”,实际上是指通过MIO引脚将 BOOT_MODE[3:0] 配置为了 0011 或 1011,这个模式更准确地称为“JTAG 优先”模式,而不是“JTAG 唯一”模式。在这个模式下,ZYNQ的启动过程会首先尝试从JTAG启动,如果失败,则会自动回退到从Flash启动。

二、流程说明
进入“JTAG优先”流程:BootROM会主动等待并监听JTAG接口,看是否有外部调试器(如Vivado Hardware Manager)试图连接并下发指令。

如果JTAG有连接并下发指令:BootROM会将控制权交给JTAG调试器。此时,您可以通过JTAG直接下载并运行程序(如FSBL),或者直接配置PL。这是调试阶段最常用的方式。

如果等待超时(约2秒)JTAG无响应:BootROM会认为“JTAG启动失败”,然后自动进行模式回退。回退的路径取决于 BOOT_MODE 的具体值:

0011: 回退到 主启动模式。BootROM会去读取 MIO[5:8] 所指示的非易失性存储器(比如QSPI Flash)中的内容。

1011: 回退到 备用启动模式。BootROM会去尝试从SD卡等备用设备启动。


三、为什么能成功从Flash启动?
关键在于 Boot Header 中的 FSBL_EXEC 字段。这个字段有两个主要选项:

FSBL_EXEC = 0x0: “JTAG不等待”模式。即使BOOT_MODE设置为JTAG优先,BootROM在检测到这个值后,也会跳过JTAG等待阶段,直接进入下一阶段(从Flash加载FSBL)。

FSBL_EXEC = 0x1: “JTAG等待”模式。这就是上面描述的行为,BootROM会先等待JTAG连接。

在您的场景中,您烧写到Flash中的镜像文件(通过SDK或Vitis生成的 BOOT.bin),其Boot Header里的 FSBL_EXEC 字段极有可能被设置成了 0x0(JTAG不等待)。因此,虽然硬件引脚设为了“JTAG优先”,但芯片一读取Flash头,发现指令是“别等JTAG了,直接跑吧”,于是就直接从Flash加载并运行FSBL了,从而实现了“从Flash启动”。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询