江山易改本性难移之ZYNQ SDK QSPI固化bug及其解决方法

news2024/11/20 3:27:42

         之前在Vivado2018.3通过QSPI方式固化程序时出现问题,显示flash擦除成功,但最后总是不能写入到flash中。

        查资料发现从VIVADO 2017.3版本开始,Xilinx官方为了使Zynq-7000和Zynq UltraScale +实现流程相同,在QSPI FLASH使用上做了变化,即Zynq-7000编程flash需要“指定的fsbl”。因为在QSPI引导模式下启动,则“指定的fsbl”将尝试从flash加载分区,从而导致flash编程的错误行为。导致不能下载flash或下载flash后不能启动。

           总结一下,就是需要建两个FSBL程序,也可以生成BOOT.BIT以后,修改当前FSBL工程(本例程),一个用于生成BOOT.bin文件,一个用于加载,即Program flash。完整步骤如下:

(1)新建系统环境变量:我的电脑—属性—高级系统设置—环境变量;之后重启一下电脑。

        变量名:XIL_CSE_ZYNQ_UBOOT_QSPI_FREQ_HZ

        变量值:10000000

(2)在vivado界面PS端选中QSPI方式,其中single SS 4bit IO与Dual Quad SPI方式要根据板卡上几颗QSPI flash以及位数选择,这里选择single SS 4bit IO;

(3)保存设计,编译生成bit文件;

(4)启动SDK,注意要将bit文件选中。新建fsbl程序,不用修改,此程序用于生成BOOT.bin文件。

        1)选择你的代码工程,右键选择 create boot image

                       

        2)弹出的窗口中可以看到生成的BIF文件路径,BIF文件是生成BOOT文件的配置文件,bif文件和bin文件放在同一个根目录下,并且再次确认是否是最新生成的文件;

之后点击Create Image,生成BOOT.bin文件。

当看到有这两文件时:说明已生成BOOT.bit文件

 (4)在不变的工程新建fsbl程序,先点击 Clean project,在main.c主程序中找到“Read bootmode register”的位置,并添加代码BootModeRegister = JTAG_MODE;再点击Build  project此处是为了将QSPI编程改为以JTAG模式启动,为了解决bug,

 也可以在fsbl_debug.h文件中加上#define FSBL_DEBUG_INFO语句,这是为了能够让串口打印出 Bootloader 的信息,之后保存并编译;

(5)QSPI flash固化

        1)FPGA板卡模式开关切换到QSPI启动模式;

        2)点击Xilinx—Program Flash,加载刚刚fsbl文件生成的BOOT.bin与fsbl_load文件生成的fsbl_load.elf,

其中Flash Type根据(2)中QSPI选中方式而定;

        3)点击Program,即可完成QSPI方式的程序固化。

重点+干货来了:

  环境实验:硬件板卡暂未有串口调试输出。 

当固化进去以后,如果你发现PL已经启动,但是PS暂未启动,那此时就需要修改这个选项:把这两个关闭。再重新固化以后,关机、重启,发现PL和PS均能正常运行。这就是妥妥的干货。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1371090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VSCode C/C++(gdb)调试指南

1、安装插件 2、F5开启调试 左侧侧边栏->确保打开回调栈 右键函数栈->查看反汇编 3、打印寄存器、函数反汇编等 命令: 查看main反汇编 -exec disassemble /m main 查看寄存器 -exec info r 打印某个变量 -exec print s 或者 --s 打印寄存器,如p…

Git删除远程仓库某次提交记录后的所有提交

1、鼠标右键->git bash here,然后cd切换到代码目录; 2、git log查看提交记录,获取commit id 3、git reset commit id(commit id指要保留的最新的提交记录id) 4、git push --force,强制push 如果出现…

来自一个系统的自白

天空一声巨响,小炫我闪亮登场!初次见面,给大家简单介绍下自己:我是炫我渲染私有云系统,是最新一代的智能渲染集群系统。可以进行私有化部署,在3dsmax、maya等软件中一键完成提交、上传、渲染、下载的任务&a…

强化学习第1天:马尔可夫过程

☁️主页 Nowl 🔥专栏 《强化学习》 📑君子坐而论道,少年起而行之 ​​ 一、介绍 什么是马尔可夫过程?马尔可夫过程是马尔可夫决策过程的基础,而马尔可夫决策过程便是大部分强化学习任务的抽象过程,本文…

人机交互不是人机融合智能

一、人机交互和人机融合智能是两个不同的概念 人机交互是指人类与计算机之间的信息交流和操作方式,包括输入和输出界面、交互技术、用户体验等方面。人机交互的目标是提供用户友好的界面和自然的交互方式,使人类能够与计算机更加高效地进行沟通和协作。 …

BOM简介

1.1 常用的键盘事件 1.1.1 键盘事件 键盘事件触发条件onkeydown按键被按下时触发onkeypress按键被按下时触发onkeyup按键被松开时触发 注意&#xff1a;addEventListener事件不需要加on <script>//1. keydown 按键按下的时候触发,按任意键都触发&#xff0c;也可以识…

PhpPythonC++圆类的实现(OOP)

哎......被投诉了 &#x1f62d;&#x1f62d;&#x1f62d;&#x1f62d;&#x1f62d; 其实也不是小编不更&#xff0c;这不是期末了吗&#xff08;zhaojiekou~~&#xff09;&#xff0c;而且最近学的信息收集和ctf感觉好像没找到啥能更的&#xff08;不过最经还是在考虑更一…

Java中并发下的ThreadlocalRandom

1. 背景 在看同事写的代码的时候发现代码里有很多像&#xff1a; 如果我们想要生成一个随机数&#xff0c;通常会使用Random类。但是在并发情况下Random生成随机数的性能并不是很理想&#xff0c;今天给大家介绍一下JUC包中的用于生成随机数的类–ThreadLocalRandom.&#x…

领英Linkedin自动跳转中国站点的解决方案

linkedin放弃中国市场后&#xff0c;在国内打开linkedin.com&#xff0c;会自动跳转到 linkedin.cn&#xff0c;无法与国际友人在同一个平台上联系。 按照搜到的方法尝试解决&#xff0c;包括修改浏览器默认语言、清除浏览数据、使用软路由上的插件给 linkedin.com设置从国外线…

华为 1+X《网络系统建设与运维(高级)》认证模拟实验上机试题

华为 1X《网络系统建设与运维&#xff08;高级&#xff09;》认证模拟实验上机试题 一、考试背景二、考试说明2.1考试分数说明2.2考试要求2.3考试环境介绍2.4启动考试环境2.5保存答案(非常重要) 三、考试正文3.1注意事项3.2校区内&#xff08;LAN&#xff09;3.2.1任务 1&#…

深入浅出Go语言:匿名函数的原理和实践案例

深入浅出Go语言&#xff1a;匿名函数的原理和实践案例 引言匿名函数的基础实际应用案例一实际应用案例二性能考虑最佳实践与常见错误结语 引言 在Go语言的世界里&#xff0c;有一个功能强大且灵活的编程元素值得每位开发者深入了解——匿名函数。作为Go语言核心特性之一&#…

前端-基础 表格标签 - 基本使用及表头单元格 详解

基本使用 &#xff1a; 主要作用 &#xff1a; 即 主要 用于显示&#xff0c;展示数据&#xff0c;因为它可以让数据显示的非常的规整&#xff0c;可读性非常好。 特别是后台展示数据的时候&#xff0c;能够熟练运用表格就显得很重要。 一个清爽简约的表格能够把繁杂 的…

C2-4.3.1 多个决策树——随机森林

C2-4.3.1 多个决策树——随机森林 参考链接 1、为什么要使用多个决策树——随机森林&#xff1f; 决策树的缺点&#xff1a; A small change in the data can cause a large change in the structure of the decision tree causing instability 即&#xff1a;对数据集 中…

数据库:如何取消mysql的密码

因为调试MySQL数据接口&#xff0c;总是需要输入密码很烦&#xff0c;所以决定取消mysql的root密码&#xff0c; 网上推荐的有两种方法&#xff1a; 1、mysql命令 SET PASSWORD FOR rootlocalhostPASSWORD(); 2、运行 mysqladmin 命令 mysqladmin -u root -p password …

【源码阅读】交易池txs_pool

重要接口&#xff1a; ITxsPool的实现&#xff1a; type TxsPool struct {config TxsPoolConfigchainconfig *params.ChainConfigbc common.IBlockChaincurrentState *state.IntraBlockStatependingNonces *txNoncercurrentMaxGas uint64ctx context.Context //cance…

密码学(一)

文章目录 前言一、Cryptographic Primitives二、Cryptographic Keys2.1 Symmetric key cryptography2.2 asymmetric key cryptography 三、Confidentiality3.1 Symmetric key encryption algorithms3.2 asymmetric key block ciphers3.3 其他 四、Integrity4.1 secure hashing …

【语义解析:连接自然语言与机器智能的桥梁】

语义解析&#xff1a;连接自然语言与机器智能的桥梁 语义解析技术可以提高人机交互的效率和准确性&#xff0c;在自然语言处理、数据分析、智能客服、智能家居等领域都有广泛的应用前景。特别是在大数据时代&#xff0c;语义解析能够帮助企业更快速地从大量的数据中获取有用的…

Helix QAC 2023.4 新版支持C++20语言,带来更多性能提升!

Helix QAC 2023.4 新增功能 Helix QAC 2023.4全面支持MISRA C:2023规则&#xff0c;涵盖100%的指南。此版本还加强了对C20语言的支持&#xff0c;改进了数据流分析性能&#xff0c;并在整个产品中增加了多项用户体验改进。 增强的C20支持 此版本新增了对以下语言特性的支持&a…

永久关闭Windows更新的5种方法

很多家用电脑&#xff0c;如果系统自动更新的话&#xff0c;会变得越来越卡顿&#xff0c;且硬件型号兼容也并不完美。那么我们该如何彻底关闭Win11的自动更新呢&#xff1f;以下准备了5种方法&#xff0c;您可以根据自身实际情况选择合适的方法&#xff01; 一&#xff1a;使…

imgaug库指南(13):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此&#xff0c;数据增强技术应运而生&#xff0c;成为了解决这一问题的…