[ZYNQ随笔] uboot移植中bitstream比特流加载问题:zynq_validate_bitstream: Bitstream is not validated yet

2023-11-16

问题介绍

由于项目设计需要,需要频繁的更换比特流文件,之前使用petalinux生成的boot.bin每次都需要合并比特流,比较麻烦,遂换了一个uboot版本(米联客默认的u-boot),将bitstream放到了独立于boot.bin的文件中,如图所示。
petalinux的uboot
现在的启动结构
但是在配置好对应的文件之后,启动系统却发现比特流文件无法被正常的加载,部分日志如下:

reading uEnv.txt
17 bytes read in 11 ms (1000 Bytes/s)
Loaded environment from uEnv.txt
Importing environment from mmc 0...
[INFO] Trying to boot from mmc 0
reading uImage
4176536 bytes read in 274 ms (14.5 MiB/s)
reading devicetree.dtb
14739 bytes read in 16 ms (899.4 KiB/s)
reading system.bit.bin
13321514 bytes read in 825 ms (15.4 MiB/s)
zynq_validate_bitstream: Bitstream is not validated yet (diff 6e)
fpga - loadable FPGA image support

其中**zynq_validate_bitstream: Bitstream is not validated yet (diff 6e)**则代表了bit文件验证失败的情况。然而这个比特流文件之前的启动方式都用的好好的,为什么呢?

问题分析

进一步追寻源头,在设备启动的时候不停的按住回车,停留在uboot的手动启动环节,通过printenv查找对应的启动指令,发现出现验证信息的指令是uboot指令集中的fpga指令,其用法如下:

Usage:
fpga [operation type] [device number] [image address] [image size]
fpga operations:
  dump  [dev] [address] [size]  Load device to memory buffer
  info  [dev]                   list known device information
  load  [dev] [address] [size]  Load device from memory buffer
  loadp [dev] [address] [size]  Load device from memory buffer with partial bitstream
  loadb [dev] [address] [size]  Load device from bitstream buffer (Xilinx only)
  loadbp        [dev] [address] [size]  Load device from bitstream buffer with partial bitstream(Xilinx only)
Load device from filesystem (FAT by default) (Xilinx only)
  loadfs [dev] [address] [image size] [blocksize] <interface>
        [<dev[:part]>] <filename>
  loadmk [dev] [address]        Load device generated with mkimage
        For loadmk operating on FIT format uImage address must include
        subimage unit name in the form of addr:<subimg_uname>

可以看到,fpga指令中提供了多种加载方式,如load loadp loadb loadbp等。
而我当前的uboot则使用的是load方式。注意到loadb是有一个提示(xilinx only)的,而我恰好就是使用xilinx生成的bitstream文件,所以在这里试图将load指令改为对应的loadb指令。使用setenv来修改环境变量,使用saveenv保存环境变量。
保存,重新启动。最后bitstream可以正常的被加载!
正常加载图片

问题总结

解决了问题,有空还是得想想为什么。
经过资料的查找,可以发现,bitstream存在两种封装格式,一种是直接描述硬件的纯二进制文件,一种是除了纯硬件描述码外,文件头部还封装了比特流信息的,就如上图正常加载比特流文件之后,我们还可以看到芯片型号,生成日期,版本号,名字等信息,这些就是xilinx的特有的比特流文件头部。如果以正常的load方式加载,这些不属于硬件描述的文件头部被当成了硬件描述加载,当然会加载的一塌糊涂。而loadb则会正确的读取出文件头信息,把剩下的硬件描述正确的加载,所以可以正常的被启动起来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[ZYNQ随笔] uboot移植中bitstream比特流加载问题:zynq_validate_bitstream: Bitstream is not validated yet 的相关文章

随机推荐

  • 【B类比赛】 第十一届蓝桥杯 省国赛经历

    Now 拿起键盘写下这段话的时候 已经是第12届蓝桥杯省赛前的一天了 2021 4 17 距离上次蓝桥杯省赛正好6个月了 如今的我仍在ACM里 这半年经历了挺多事情 退ACM已经势在必行 且行且珍惜吧 未来的我将会接触一些新的领域 在算法之
  • 进程间通信之共享内存分析

    零拷贝技术 https strikefreedom top linux io and zero copy 一 内存映射和共享内存的区别 1 1 内存映射之mmap函数 将一个文件或者其它对象映射到进程的地址空间 实现文件磁盘地址和进程虚拟地
  • iView中Form表单的验证(自定义验证、动态增减项验证)

    记录 iView中Form表单的验证 自定义验证 动态增减项验证
  • java.sql.SQLException: Network error IOException: Connection refused

    发生原因的问题是 数据库从服务器换到本地 项目启动就报错 1 程序和功能 启用或关闭Windows功能 2 Telnet客户端打个勾 3 win R cmd 输入 services msc 找到SQL SERVER的服务 重启一下 4 重启
  • SQLserver2008 R2连接服务器异常(error:26-定位指定的服务器/实例时出错)

    SQLserver2008 R2连接服务器异常 error 26 定位指定的服务器 实例时出错 笔者的系统环境 Windows7旗舰版安装VMware workstations pro后在Windows8 1专业版操作系统上安装SQLser
  • C语言实现抽签小功能

    相信大家都玩过微信小程序抽签的经历 现在我们就用C语言实现简单的抽签函数 简单方便 思考难度不大 各位试试吧 include
  • css line height无效,为什么设置span的line-height属性无效?

    不知道为什么span 中line height设置大小小于18px的话都是无效的 18之后才看到效果 不知道是怎么回事求大佬解答一下 http codepen io 1206189299 直接给答案 给 span 设置 display in
  • Cannot change version of project facet Dynamic Web Module to 2.5 错误

    问题 新建maven webapp项目后 出现Cannot change version of project facet Dynamic web module to 3 0或者2 5 分析 使用Maven新建Web项目时使用的是Artif
  • 和数集团聚焦区块链人才培养推动数字经济场景落地

    随着互联网时代的不断推进 全球经济结构已呈现多元化形态 尤其是大数据 云计算 人工智能等技术革新进步 数字经济迎来了快速发展的时期 从更深层次方面理解 数字经济也契合创新 协调 绿色 开放 共享的新发展理念 为我们国家经济社会发展注入了新动
  • Hive(八)Hive的Shell操作与压缩存储

    一 Hive的命令行 1 Hive支持的一些命令 Command Description quit Use quit or exit to leave the interactive shell set key value Use this
  • node.js如何封装一个接口

    用到的应用 1 webstorm 2 Navicat for MySQL 3 postman 一 使用express创建项目 1 npm install express generator g 2 express myapp 二 使用Nav
  • Openwrt下ipk包的安装、卸载与更新

    一 环境说明 Openwrt version 17 01 4 Linux version 4 4 92 二 安装ipk 将编译好的 ipk传到开发板上 使用命令 opkg install xxxxx ipk 安装成功的界面如下 再进入 li
  • 【软件工程期末复习内容】

    前言 时不可以苟遇 道不可以虚行 一 软件工程的概念 软件是计算机系统运行的 指令 数据 和 相关文档 的集合 即软件等于程序 数据 加上文档 程序 是事先按照预定功能性能等要求设计和编写的指令序列 数据 是使程序正常处理信息的数据结构及信
  • 远程计算机内部错误,Win10系统远程桌面连接出现内部错误怎么办?

    Win10系统远程桌面连接出现内部错误该怎么办 大家在使用Win10系统的时候总是会出现这样那样的问题 Win 10 远程桌面连接偶尔提示 出现了内部错误 刚刚明明还好好的 有时连接久了会突然断开 提示出现了内部错误 我们遇到这个问题该怎么
  • 生态系统过程模型

    生态系统过程模型 根据生态系统的生理生态学特性 结合影响生态系统过程的观测指标 提出的能够反映生态系统过程的机制模型 统计模型 stochasticmodel statisticmodel probabilitymodel 指以概率论为基础
  • qt 动态库的创建和使用教程(step by step)

    一般大型项目中 会将实现特定功能的函数或类 封装成链接库 供应用程序代码调用 下面我将一步步教你如何在qt 中创建动态库 并使用它 目录 创建多子目录项目 创建动态链接库 编辑链接库内容 创建应用工程并连接动态链接库 创建多子目录项目 首先
  • React基础入门

    系统学习React 一 基础知识 邂逅React开发 React系列一 核心JSX语法一 React系列二 核心JSX语法二 React系列三 阶段案例练习 React系列四 React脚手架 React系列五 组件化开发 一 React系
  • mysql8.0.30用户与权限管理

    文章目录 用户管理 登录mysql服务器 创建用户 修改用户 删除用户 查看用户 修改用户密码 权限管理 查看权限 授予权限的原则 授予权限 查看权限 收回权限 查看user 信息表结构和信息 db表 其他表信息 角色管理 创建角色 给角色
  • Python之NumPy(axis=0/1/2...)的透彻理解

    前言 在numpy的使用中 对axis的使用总是会产生疑问 如np sum函数 在多维情况下 axis不同的取值应该做怎样的运算呢 返回的是什么形状的数组呢 在网上查了很多资料 总是似懂非懂 查阅了官方文件 以及多次试验后 我总结出一种能深
  • [ZYNQ随笔] uboot移植中bitstream比特流加载问题:zynq_validate_bitstream: Bitstream is not validated yet

    问题介绍 由于项目设计需要 需要频繁的更换比特流文件 之前使用petalinux生成的boot bin每次都需要合并比特流 比较麻烦 遂换了一个uboot版本 米联客默认的u boot 将bitstream放到了独立于boot bin的文件