Xilinx ZYNQ 7000学习笔记一(复位和启动)

article/2025/11/8 10:00:35

一、复位系统

参考文献:Zynq-7000 SoC Technical Reference Manual (UG585)-ch26 Reset System

zynq7000复位信号源包括硬件复位、看门狗定时器、JTAG控制器复位信号和软件复位信号。其中,硬件复位引脚由上电复位信号PS_POR_B和系统复位信号PS_SRST_B驱动。在PS中,有3个看门狗定时器可用来产生复位信号;JTAG控制器产生的复位信号可产生系统级复位信号,或者只用于复位PS的调试部分;软件复位信号可用于单独子模块的复位,或者产生系统级的复位信号。

复位系统执行的是三段式的复位序列:上电——清除内存——系统使能,相关完成的上电流程见下图(RAM清除会被填充0)
在这里插入图片描述

复位源和影响域

PS_POR_B:该复位信号复位PS部分,直到所有的PS供电达到了所要求的的电平为止。
PS_SRST_B:复位包括PL在内的整个系统,需要注意的是系统复位不会重新采样启动模式引脚。
系统软件复位:效果同PS_SRST_B引脚(除了REBOOT_STATUS register value being different)
看门狗定时器复位:看门狗定时器复位是看门狗定时器在启动和超时时在内部产生的。PS中有三个不同的看门狗计时器:一个系统级计时器(SWDT)和两个Arm核心(AWDT0和AWDT1)中各有一个私有定时器。系统级定时器复位信号总是重置整个系统,而私有看门狗定时器可以重置它所在的Arm核心,也可以重置整个系统
安全违规锁定(Secure Violation Lock Down):当检测到安全违规时,整个PS复位并锁定。
调试复位:有两种类型的调试复位起源于调试访问端口(DAP)控制器;调试系统复位和调试复位。
Debug system reset is a command from the Arm DAP which is controlled by JTAG. This causes the system to reset, just like the external system reset.
Debug reset resets certain portions of the SoC debug block including the JTAG logic.
各个复位类型影响域见下图:
在这里插入图片描述

二、启动流程

参考文献:
Zynq-7000 SoC Technical Reference Manual (UG585)-ch6 Boot and Configuration
Zynq-7000 All Programmable SoC Software Developers Guide (UG821)-ch3 Boot and Configuration

1.启动模式

zynq-7000系列支持NAND flash、并行NOR flash、Serial NOR (Quad-SPI)、SD flash以及JTAG作为启动设备。

2.启动过程

对zynq-7000的启动过程至少包含两个阶段,通常要求3个阶段(分为两个必选阶段和一个可选阶段)。
阶段0:BootROM,简单来说就是固化到SOC的BootRom中的处理器执行的用户不可更改的代码,该阶段的作用是配置ARM处理器和必要的外设,然后从启动设备读取第一阶段Bootloader(FSBL)代码。BootROM并不会配置和初始化PL,也不会使能DDR和SCU。
注意:上电后,BOOTROM负责启动CPU1的代码,当上电复位后,BootROM使得CPU1处于复位状态,并且禁止所有东西,并通过修改寄存器使得CPU1处于WFE状态。
阶段1:FSBL,(First Stage Bootloader )FSBL代码通常存储在flash中,也可以通过JTAG下载到芯片中。BOOTROM把FSBL代码复制到OCM中,其中从FSBL加载到OCM的代码在192KB以内。在FSBL开始执行后,OCM整个256K才全部可用。(FSBL引导代码可以在用户控制之下,被称为用户引导代码)。FSBL可以在SDK中配置生成。需要注意的是,由于PS可以完全独立于PL独立运行,FSBL是否配置PL是非强制的。如果提供了FPGA的比特流文件,则FPGA可完成PL的配置.当然您可以自定义FSBL引导代码,以使用其他PS外设(如以太网、USB或STDIO)来引导或配置PL(比特流文件)。
如果存在阶段2的启动代码,则FSBL执行完毕之后会加载它。
如果不存在操作系统,则FSBL执行完毕之后会把相应裸机环境中的代码加载到DDR内存中。

阶段2:(可选)在这个阶段,通常执行用户自己编写的软件程序。当然也可以是第二级的启动引导程序(second stage boot loader,SSBL)。该阶段是完全在用户的控制下实现。

BootRom在非安全模式下简化逻辑流程见下图:
在这里插入图片描述
FSBL的作用:
1)使用Xilinx提供的硬件配置工具对PS配置数据进行初始化。具体而言
使用Zynq-7000 AP SoC配置界面,Xilinx硬件配置工具生成用于初始化DDR、MIO和SLCR寄存器的代码。在工程文件夹下,需要关注的文件的有:
a:ps7_init.c和ps7_init.h,用于初始化CLK、DDR和MIO。(依据Vivado中的配置,完成PS端的初始化
b:ps7_init.tcl脚本文件,功能和ps7_init.c实现相同。是用来我们通过SDK进行debug是代替FSBL 进行初始化操作的。这样debug时使用该文件将应用程序加载到DDR并进行调试,不需要运行FSBL。(这就是使用SDK debug配置中initization file是ps7_init.tcl原因)
c:Ps7_init.html,它描述初始化数据。
在这里插入图片描述2)配置PL使用bitstream文件(假如提供)
3)加载裸核应用程序或者第二级引导程序到DDR中。
4)切换到第二阶段引导加载程序或裸金属应用程序。

注意:在切换到第二阶段引导加载程序或裸金属应用程序之前,FSBL会使指令缓存失效并禁用缓存和MMU,因为U-Boot假定它在启动时是禁用的。FSBL的初始化顺序请参见SDK自带的FSBL代码
FSBL流程示例见下图
在这里插入图片描述

三、创建镜像文件

您使用Bootgen程序将FSBL、bitsteam、应用程序文件拼接在一起。SDK有一个创建引导映像向导选项,如下图所示,用于添加分区镜像并创建一个可引导镜像(BOOT.BIN文件),然后进行烧写flash运行。
在这里插入图片描述总结:**在flash中运行的镜像文件是将FSBL、bitsteam、应用程序一起打包生成的。关于镜像文件的顺序必须是首先FSBL、然后bitsteam(可选,只有在使用PL才需要)、然后应用elf文件。由于FSBL不重映射DDR;

查看内存地址控件分配,低于1Mb的DDR不能被使用(应用程序ELF的执行地址必须大于1Mb)**
在这里插入图片描述

注意:bit文件只用来配置PL端,FSPL只是用来配置PS端,划分是很独立的。硬件配置FPGA时对PS端(如DDR和flash)和PL端会分别在FSBL和bit文件中,不会混合在一起


http://chatgpt.dhexx.cn/article/RsHDKESe.shtml

相关文章

zynq7000系列芯片介绍

ZYNQ从架构上可以划分为两大模块,一个是PS(处理器系统),另一个是PL(可编程逻辑) PS由APU、内存接口、IO外设、互连线4大模块组成。 1、APU(Application Processor Unit)应用处理单元 即PS【可编…

xilinx zynq-7000 基本知识

Zynq-7000 采用可扩展式处理平台架构(Extensible Processing Platform、EPP),是 Xilinx 用 28nm HKMG工艺制成的低功耗,高性能,高扩展性的新型芯片,这款新品里面集成了ARM CORTEX-A9 MPSOC 硬核以及相应的S…

ZYNQ-7000概述

摘要 Xilinx推出的ZYNQ-7000被称为全可编程片上系统(SOC),它由FPGA与ARM组合构成,硬件可编程,软件也可编程,在众多应用场合有一定优势。本文根据Xilinx官网的介绍并结合ZYNQ-7000的多份数据手册总结了此产品…

ZYNQ学习笔记(一)---初识ZYNQ-7000系列

前几日刚入手一款ZYNQ-7000系列的板卡,之前我也没用过FPGA,直接跨越到ZYNQ的原因主要是某宝上这款板卡相较于其他片上仅有一块FPGA的板卡性价比更高。作为入门,在学习过程中,笔者选择先单独学习ZYNQ上的FPGA部分,也就是…

ZYNQ7000 Vivado详细教学步骤

ZYNQ7000 Vivado开发 ZYNQ7000 Vivado详细教学步骤 ZYNQ7000 Vivado开发1.建立工程项目2.创建Block Design3.配置IO BANK4.配置DDR和CLOCK5.配置PS外设6.测试PS外设7.增加PL外设 1.建立工程项目 Xilinx提供了一系列开发工具,其中包括Vivado平台工具,它是…

mongodb客户端 robo 3T 查询突破50行限制

robo 3T的小bug 这个mongodb客户端,每次查询数据只有50行,虽然有向下翻页的功能 但实际上点击后会被重置,还是只有前50条 解决办法 DBQuery.shellBatchSize 500; 当前窗口最大查询数量修改到500(只有当前窗口生效)…

centos7仅安装mysql/mongodb客户端

1、仅安装MySQL客户端 # 添加rpm源 [rootk8s-master ~]# rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm [roottest1 ~]# # 通过yum搜索 [roottest1 ~]# yum search mysql-community [roottest1 ~]# # 安装x64位的 mysql客户端 [roottest1 ~]…

专业级MongoDB桌面客户端:MongoBooster for Mac

mongobooster mac破解版是适用于MongoDB的最智能IDE,也是以shell为中心的跨平台GUI工具,它提供了流畅的查询构建器,SQL查询SQL查询,就地更新,ES2017语法支持和真正的智能感知体验。MongoBooster下载可以帮助用户能够连接到选项卡式用户界面中的多个数据库,并通过shell命令…

mongodb官方客户端可视化工具Compass,免费,官方值得信赖

之前一直用的客户端是nosqlbooster4mongo,基本操作还都是挺好用的,但是有一些命令在这个客户端上运行不了,以后要慢慢的替换到compass上。 下载compass 官方下载:https://downloads.mongodb.com/compass/mongodb-compass-1.26.1…

Centos下mongodb的安装

方法一 可以使用yum命令直接安装MongoDB服务端和客户端。 sudo yum install mongodb-server # 安装MongoDB服务端 sudo yum install mongodb # 安装MongoDB客户端 sudo mongod -f /etc/mongod.conf # 加载配置项,启动mongodb服务器 mongo #启动客户端方法…

linux下MongoDB客户端shell基本操作

MongoDB 是一款NoSql数据库,没有固定的模式,即同一个集合中的不同文档结构可以不同,如:第一条记录{name:”xiaoming”},第二条记录:{name:”xiaoli”,age:15},这在关系型数据库中是无法实现的。…

MongoDB 客户端 MongoVue

直接上图片,图片是按顺序来的 软件下载地址(Windows下的MongoDB客户端MongoVUE 这是最后一个全功能的不收费的版本): http://pan.baidu.com/s/1skYIEq5

mongoDB介绍与客户端认证权限

mongoDB简介 Mongo 是 humongous 的中间部分,在英文里是“巨大无比”的意思。所以 MongoDB 可以翻译成“巨大无比的数据库”,更优雅的叫法是“海量数据库”。 Mongodb是一款非关系型数据库,说到非关系型数据库,区别于关系型数据库…

MongoDB客户端Robo 3T安装使用

MongoDB客户端Robo 3T安装使用 MongoDB安装 MacBook解压安装MongoDB Linux解压安装MongoDB Robo 3T下载和安装 官网下载Robo 3T 官网下载地址: https://robomongo.org/download 有解压版本和安装版本 下载成功后,点击安装,这里不多做说明 Robo 3T使用 打开Ro…

linux/centos单独安装mysql、mongodb客户端

安装mysql客户端 下载想要版本mysql客户端 带client https://downloads.mysql.com/archives/community/ rpm卸载已安装mysql rpm -qa | grep -i mysql 查询出来的rpm -e 全部卸载 rpm -e mysql57-community-release-el7-9.noarch rpm -e mysql-community-server-5.7.17-1…

最佳的MongoDB客户端管理工具

《最佳的MongoDB客户端管理工具》 作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一个好的MongoDB客户端管理工具,可以大大提高MongoDB应用的开发效率。MongoDB自带的Shell是一个很好的工具,但是它在操纵大数据集时就没…

CentOS 安装 MongoDB 客户端(命令行shell)

目录 问题 解决 首先,登陆官网 其次,下载对应的安装包 然后,删除安装包 最后,测试命令行 问题 最近公司新申请的CentOS云服务器都缺少MongoBD客户端工具,用命令行登陆MongoBD数据库时,都需要自己安装…

mongodb客户端

查看当前数据库 db切换数据库 通过db变量访问集合 这会返回当前数据库中的 movies 集合。既然可以通过 shell 访问集合,就意味着可以在 shell 中执行大部分数据库操作。 crud操作 新增 insertOne 函数可以将一个文档添加到集合中 查看数量 查看 使用find查看…

安装mongodb客户端

1.从mongodb官网下载安装包 下载路径:MongoDB Shell Download | MongoDB 2.创建存放mongosh服务目录 mkdir /etc/mongodb 3.将此安装包放到mongdb目录下解压 tar -zxvf /etc/mongodb/mongosh-1.8.1-linux-x64.tgz /etc/mongodb 4.mongodb客户端使用 cd /etc/mo…

系列十、MongoDB客户端连接

一、Docker方式连接 说明:Docker安装默认配置了端口映射,直接连接即可。 二、传统方式连接 2.1、传统方式启动后连接 ./mongod --port27017 --dbpath/usr/local/mongodb5/data --logpath/usr/local/mongodb5/logs/mongo.log 2.2、开启远程连接 启动时…