0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Zynq 在非 JTAG 模式下的启动配置流程

电子设计 来源:电子设计 作者:电子设计 2022-02-08 11:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:watchman,文章来源:ZYNQ微信公众号

Zynq的JTAG配置过程

初学 Zynq 的时候,都是按照惯例打开 Vivado 软件,然后实现 Zynq 可编程逻辑硬件部分PL的设置后,把硬件部署导出,再打开 SDK 进行 ARM 核的软件部分 PS 编程设计,最后再将硬件比特流文件(.bit)和软件的可执行链接文件(.elf)下载到 Zynq 开发板中,这样就可以对自己的软硬件设计进行调试和验证。

这种设计方式可以用下面的图很好的描述:

如上图所示,这其实是刚接触 Zynq 软硬件设计时需要了解的最基本开发流程,也是PL和PS设计结合的完美体现。

但是,上述开发的过程都有一个基本的前提,就是 Zynq 开发板是通过 JTAG 直接与电脑相连,然后实现程序的下载。

从另一个角度来说,PL和PS的配置都可以认为是电脑主机通过 JTAG 完成的。

但是,在实际中,Zynq 开发板不可能实时与电脑连接,当 JTAG 不起作用时,Zynq 芯片是怎样实现对自己的配置?

这也是本文将要和大家共同讨论的问题。

Zynq的启动流程

在无 JTAG 的模式下,Zynq 是通过片上CPU完成对芯片的配置,也就是PS和PL的配置是通过 PS 处理器 ARM 核来实现的。

需要注意的是,与传统的 Xilinx 7 系列 FPGA 芯片不同,Zynq 是不支持从 PL 端进行直接启动配置的,一定要通过 PS 部分来完成。

Zynq 的具体启动配置是分级进行的,一共可以分为3个阶段,可以用0~2来表示:

1. Stage 0:BootROM 阶段

2. Stage 1:FSBL (First Stage Boot loader)阶段

3. Stage 2:SSBL (Second Stage Boot loader)阶段

熟悉 ARM 开发的小伙伴应该对上面的启动过程感到很熟悉,但又有陌生的地方。不用急,下面对这三个阶段进行详细的分析。

Zynq启动阶段0——BootROM

阶段0,又称为 BootROM 阶段。ROM 相信大家都知道,Read-Only Memory,只读存储器的意思;而 Boot 是引导的含义,所以 BootROM 从字面的意思来看,就是只能去读取的引导存储器。

实际上,BootROM 的作用和它的字面意思完全一样,就是指 ARM 核在上电之后,需要第一时间去读取 BootROM 中固化的程序,完成对芯片的最初始化的配置。

因为是只读的,所以根据 ROM 的性质,BootROM 中的程序是无法修改的。有的朋友会问BootROM 这一部分代码主要完成了对 Zynq 的哪些配置?

在具体说明 BootROM 进行哪些配置之前,先要描述一下关于 Zynq 的启动引脚配置。

Zynq 拥有5个可以进行配置的 MIO 引脚,是 MIO[6:2],在硬件形式上就表现为5个跳线帽,可以分别接 GND 或 3V3 的高电平。它们的作用如下:

MIO[2] :选择 JTAG 模式

MIO[5:3] :选择启动方式,包括 SD 卡,QSPI Flash 等

MIO[6] :PLL 使能控制

通过不同的引脚作用说明可以发现,当 JTAG 不起作用时,就需要通过改变 MIO[5:3] 的连接来实现从 SD 卡等不同的存储介质启动。

而 BootROM 最重要的作用就是通过读取 MIO[6:2] 的引脚配置情况,决定从何种介质中加载阶段1需要使用的启动镜像。当然在加载之前,BootROM 会先完成对 SD 卡,NAND,NOR,QSPI Flash 等的初始化,从而使得ARM 核能够成功访问并使用这些外设。

BootROM 在完成以上任务的同时,也会对安全模式等运行模式进行配置,这部分博主暂时不太了解,所以不做过多叙述。

BootROM 在从外部存储设备读取了启动镜像后,通常会把进行加载到 OCM 中。OCM,On Chip Memory,是Zynq 中 ARM 内核的片上存储器,也叫片上内存。

自此之后,BootROM 阶段的启动任务就算是圆满结束了,接下来 BootROM 阶段就把控制权转移到了阶段1手中。

pIYBAGAJ-CSALXl1AACcMejzs1I317.png

注:BootROM 阶段不对 PL 进行配置

Zynq启动阶段1——FSBL

FSBL,(First Stage Boot Loader),就是 BootROM 加载到 OCM 中的启动镜像。FSBL 完成的任务是 Zynq 启动过程中的关键一环,可以分为以下4项:

1. 完成 PS 的初始化

2. 加载 PL 的bit流文件,完成 PL 配置

3. 加载 SSBL 引导程序或是ARM的裸跑程序到 DDR

4. 跳转执行 SSBL 或裸跑程序

FSBL 的任务如上所示,整个思路还是非常清晰的。

第1步就是对 PS 端初始化,包括 DDR,MIO 等。

第2步就是PL的配置,也就输传统的 FPGA 下载 bit 流的过程,但要注意的是,在 Zynq 的非 JTAG 模式下,PL 是无法直接自行配置的。

第3步是加载 SSBL 或裸跑程序到 DDR 内存中,其中 SSBL,Second Stage Boot Loader,是在 Zynq 需要运行操作系统时才进行加载。而像我们入门学习时做的点亮 LED 灯实验,就只是属于裸跑程序。

最后第4步,ARM 会跳转到 DDR 中执行所加载的程序。所以 FSBL 阶段的运行思路是很好理解的。

在这里插入图片描述

Zynq启动阶段2——SSBL

SSBL 在 Zynq 的启动过程中是可选的一个阶段,就像所提到的点亮 LED 实验,包括一些其他的比较小型的程序,如果不需要用到操作系统的话,那么 Zynq 的启动流程到 FSBL 阶段就足够了。

因此,SSBL 是面向于需要运行操作系统的应用场合。相信熟悉操作系统启动知识的朋友到这里应该很清楚了,SSBL 就是操作系统在启动过程中的引导程序 boot loader。

对于 Linux 而言,Zynq 的 SSBL 阶段和 u-boot 的作用是相同的。具体来说,SSBL 的作用就是将 Zynq 所需要的操作系统加载到 DDR 内存之中。

到此,Zynq 的启动与配置就算完成了。Zynq 启动过程其实与传统的 ARM 开发过程类似,区别就在于它是PS + PL 的架构,所以在启动过程中,额外需要加载二进制 bit 流文件。Xilinx 将 Zynq 的启动划分为3个阶段,从结构上看也是科学合理的。

总结

本文主要与大家分享了 Zynq 在非 JTAG 模式下的启动配置流程,旨在让大家对 Zynq 的三阶段启动模式有一个具体的认识,希望大家多多交流。

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Zynq
    +关注

    关注

    10

    文章

    633

    浏览量

    49598
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    IMX95LPD5EVK-19 单启动模式的 eMMC 闪存和启动问题求解

    : boot -f flash.bin 但是,它返回一个错误信息. USB错误 如果我切换到低功耗启动模式 (M33)我可以从 eMMC 正常刷新和启动. 谁能帮我理解为什么 A
    发表于 04-02 07:46

    NRF54L15DK串行恢复模式没有了蓝牙功能,应该怎样蓝牙模式进行ota

    MCUboot 的串行恢复(Serial Recovery)模式,是 只有串口 DFU 功能,没有应用和蓝牙协议栈在运行的 ,所以你看不到蓝牙功能,这是正常现象。 原因是: 串行恢复
    发表于 02-12 10:06

    掌握 LuatIO:GPIO 复用模式初始化配置流程解析

    使用 LuatIO 进行嵌入式应用开发时,合理配置 GPIO 的复用功能是实现外设控制的前提。本文全面解析 GPIO 引脚由普通 IO 转换为复用功能引脚的初始化流程,包括时钟使能、模式
    的头像 发表于 01-23 15:28 2653次阅读
    掌握 LuatIO:GPIO 复用<b class='flag-5'>模式</b>初始化<b class='flag-5'>配置</b>全<b class='flag-5'>流程</b>解析

    如何在Zynq UltraScale+ MPSoC平台上通过JTAG启动嵌入式Linux镜像

    之前文章中,我们介绍了如何使用 XSCT 工具通过 JTAG Zynq SoC 上启动嵌入式 Linux 镜像(从
    的头像 发表于 01-13 11:45 5128次阅读

    瑞萨RA系列FSP库开发实战指南之DMAC重复传输模式配置代码

    上面使用完正常传输模式,下面我们来试一重复传输模式,其实无非就是正常模式多了可以指定重复传
    的头像 发表于 12-15 11:15 5259次阅读

    请教大神,labview里面对实时扫描资源中的C系列模块NI9234进行配置发生预期错误

    labview里面对实时扫描资源中的C系列模块NI9234进行配置发生预期错误,采用的设备时cRIO-9033,使用扫描模式
    发表于 11-26 23:34

    Linux识别不到JTAG是怎么回事?

    Linux识别不到JTAG
    发表于 11-06 07:24

    d1哪吒开发板的启动流程分析

    需要理解的是fel模式对SRAM,DDR等操作,这样在做裸机开发的时候,才能将程序下载进去。有了这些理解,在做riscv的底层编程的时候,才能透彻的理解其启动流程和原理。
    发表于 10-29 06:44

    基于FPGA平台的蜂鸟E203 JTAG debug出错问题的解决思路

    大概花了三天时间完成了蜂鸟E203 SOCzynq7100 FPGA的移植工作,并完成了hello world程序的在线debug调试。 蜂鸟E203的移植在网上有大把的demo,其中bit文件
    发表于 10-28 07:38

    为什么Config0/1 中的 Boot Select 设置 Keil ICE 调试模式无效呢?

    ICE 调试模式,代码将在 Flash Select 字段(APROM 或 LDROM)选择的区域中进行编程,并从该区域启动,而不是从 Config0/1 中的 Boot Sel
    发表于 08-20 06:27

    ElfBoard技术贴|【RK3588】ELF 2开发板开机自启动详解

    嵌入式系统开发中,合理管理开机自启动项目能够优化系统启动流程,确保关键服务和应用按时加载运行。本文将详细介绍ELF2开发板Linux5.
    的头像 发表于 06-27 16:20 2249次阅读
    ElfBoard技术贴|【RK3588】ELF 2开发板开机自<b class='flag-5'>启动</b>详解

    如何配置模式的 BT 芯片?

    我需要以双模式设置 CYBW20721B2 蓝牙模块。 我们现在使用的蓝牙芯片配置为仅作为外围设备工作。 并且我想将其配置为双模式(BT 需要同时作为中央和外围设备工作的应用程序)。
    发表于 06-27 08:10

    使用USB转TTL串口板和ST-LINK调试下载器给STM32单片机下载程序

    本文详细介绍如何使用ST-LINK/V2和USB转TTL串口板为STM32单片机下载程序,包括STM32启动模式JTAG与SWD接口对比、驱动安装及官方软件STM32ST-LINKUtility和FlashLoaderDemo
    的头像 发表于 06-20 17:26 3306次阅读
    使用USB转TTL串口板和ST-LINK调试下载器给STM32单片机下载程序

    宽温启动失败?聚徽揭秘防爆显示屏-40℃低温启动的加热膜配置技术

    防爆显示屏的低温启动难题,解析加热膜配置的核心技术,为工业场景提供可靠解决方案。 一、低温启动失败的核心挑战 1. 液晶材料性能衰减 -40℃环境
    的头像 发表于 06-18 16:17 1142次阅读

    UIAbility组件启动模式:实例启动时的不同呈现状态

    ()和onWindowStageCreate()生命周期回调。 如果需要使用singleton启动模式module.json5配置文件中的launchType字段
    发表于 05-16 06:10