用于FPGA远程更新的QuickBoot方法

news2024/11/15 14:07:36

用于FPGA远程更新的QuickBoot方法

用于FPGA远程更新的QuickBoot方法

  • 用于FPGA远程更新的QuickBoot方法
    • 1. 远程更新简介
    • 2 QuickBoot方案
      • 2.1 QuickBoot配置方法
      • 2.2 QuickBoot Flash 编程方法
    • 3.QuickBoot实现
      • 3.1 Critical Switch World (key point)
      • 3.2 QuickBoot存储映射
      • 3.3 Bitstream Image 大小与Flash存储大小选择
    • 4. QuickBoot参考设计实现指南
    • 参考

1. 远程更新简介

下图为具有FPGA远程更新功能的系统架构:
在FPGA设计中,FPGA固件主要烧录到flash中。
在这里插入图片描述

2 QuickBoot方案

QuickBoot远程更新方案是一种用于FPGA固件远程更新的解决方案;
该方案对固件更新过程的编程算法进行简单调整,将编程错误/中断复的责任置于编程操作上

下图展示了QuickBoot的系统架构框图:

  • Factory / Design Center:
    • Vivado 生成Bitstream
    • 将Bitstream 转换成 Memory Configuration File (.mcs)
    • 使用QuickBoot方案提供的Perl脚本添加CRC数据,并产生新的 Memory Configuration File
  • Remote System:
    • Remote Host, 远程更新接口(如以太网、PCIe、USB等)
    • QuickBoot Flash Progammer, VHDL code(QuickBoot提供)
  • Flash Memory: (QuickBoot 方案中 Flash模型)
    • QuickBoot Header Area
    • Golden Image Area
    • Update Image Area
      Fig 2

2.1 QuickBoot配置方法

在QuickBoot解决方案中,将Flash Memory划分为以下三个部分:

  • Special QuickBoot Head (特殊的QuickBoot头)
    • Critical Switch Word(详细介绍见章节3.1): QuickBoot配置方法的关键, Critical Switch WorldON时,FPGA加载Update Bitstream; Critical Switch WorldOFF时,FPGA加载Golden Bitstream
    • Warm Boot Jump Sequence
  • Golden Bitstream Image Area
  • Update Bitstream Image Area

QuickBoot 配置序列过程如下:

  1. 从Flash 地址0处开始读数据; 从Critical Switch World地址处读出Critical Switch World的值,若为ON,则执行Warm Boot Jump Sequence跳到步骤2加载Update Bitstream;反之Critical Switch WorldOFF,则忽略Warm Boot Jump Sequence, 跳到步骤3加载Golden Bitstream
  2. Configure with the update bitstream:
    1. Jump to update bitstream area
    2. Load the bitstream from the update bitstream area.
  3. Configure with the golden bitstream:
    1. 继续按照Flash存储器地址顺序读取 Golden bitstream area数据
    2. Load the bitstream from the golden bitstream area
      在这里插入图片描述
      总结: QuickBoot配置方法可以通过Critical Switch World快速确定加载哪个bitstream; 然后读取选中区域的bitstream来配置FPGA

2.2 QuickBoot Flash 编程方法

Update bitstream编程过程决定了QuickBoot方案的健壮性

为了确保QuickBoot方案可靠,Flash编程要确保

  • 在尝试对Update bitstream进行任何更改之前, Critical Switch World一定是OFF
  • 只有在验证Update bitstream已经被正确编程之后, Critical Switch World才设置为ON
  • 为了在所有情况下的完整性,不能修改QuickBoot Header 中Warm Boot Jump Sequence 以及 Golden Image

总结: QuickBoot 提供的 QuickBoot Flash Progammer行为说明(VHDL设计功能)

3.QuickBoot实现

3.1 Critical Switch World (key point)

关键开关字是一个特殊的字值。 只有当关键开关字位置包含一个精确的、预定的值时,关键开关字才被认为是ON

关键开关字的操作和其特殊的值 与FPGA bistream以及FPGA内建配置逻辑存在一定的关系

Xilinx FPGA配置通过一系列32-bit字完成,这些32-bit字包含:

  • Bus width auto detection word
  • Sync word
  • Packet header word
  • Packet command or data words for each packet.

由Xilinx 设计工具产生的所有bitstream按照顺序由以下部分组成:

  1. Bus width auto detection word
  2. Sync word
  3. data packets that define the FPGA configuration

BPI Flash:

  • FPGA 配置逻辑保持在初始阶段,直到FPGA在BPI Flash D[0:7] 引脚上检测到0xBB 数据值(从总线宽度自动检测模式的第一个字开始)
  • 在FPGA初始搜索总线宽度自动检测模式期间,FPGA 会有效地忽略所有传入数据`,直到识别出有效的总线宽度自动检测模式
  • 因此,BPI类型的Flash,总线宽度自动检测模式 0x000000BB 的第一个字是 QuickBoot 方法的关键开关字
    (注:关键开关字位置不是总线宽度自动检测字时,FPGA内建配置程序就忽略warm boot jump sequence)

SPI Flash:

  • FPGA 配置逻辑保持在初始阶段,监视传入数据中的同步字 0xAA995566 ,以实现自身与传入比特流的 32 位字的边界同步
  • 在初始搜索同步字期间,FPGA 会有效地忽略所有传入数据,直到识别出同步字
  • 因此,SPI类型Flash, 将同步字作为QuickBoot方案的关键开关字
    (注:关键开关字位置不是同步字时,FPGA内建配置程序就忽略warm boot jump sequence)
    在这里插入图片描述

3.2 QuickBoot存储映射

由于Flash的修改需要擦除操作,并且擦除操作会影响整个Flash segment,因此Flash segment结构决定了 QuickBoot 各部分在Flash内的位置:

  1. QuickBoot Header
    a. QuickBoot Header part 1——Critical Switch World, 放置在单独的可擦除segment
    b. QuickBoot Header part 2——Warm Boot Jump Sequence, 紧随part1,但处于与part 1部分不同的可擦除segment
  2. Golden bitstream image在Flash存储阵列中紧随QuickBoot Header之后 , Xilinx设计工具产生的标准bitstream(即包含bus width auto detetced word and sync word)
  3. Update bitstream image存放在自己独立的可擦除segment; Update Bitstream image 和Golden bitstream image不共享任何可擦除segment

BPI Flash

下图所示为 BPI Flash 的 QuickBoot存储映射示例:

  • 第一列(最左侧)为 Good Update Bitstream情况
  • 第二列为Bad Update bitstream情形
  • 第三列为Flash 各Segment或地址内数据详细说明
  • 第四列为Flash 对应的QuickBoot Flash模型中的部分
    在这里插入图片描述

SPI Flash
在这里插入图片描述

3.3 Bitstream Image 大小与Flash存储大小选择

  • Flash存储至少要大于Line 10的结果;
  • 每个Bitstream image的大小要大于line 8的结果
    在这里插入图片描述

4. QuickBoot参考设计实现指南

待续…

参考

  1. https://docs.xilinx.com/v/u/en-US/xapp1081-quickboot-remote-update

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

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

相关文章

Django ORM中QuerySet常用接口汇总记录

存在模型数据 学生表 课程表 支持链式操作的接口 all接口:用于查询所有数据,相当于:select * from xxx filter接口:根据条件过滤数据 values接口:指定返回的字段,结果是包含 dict 的 QuerySet 对象 valu…

zabbix----代理服务器,高可用集群

文章目录 一、部署 zabbix 代理服务器1.1 设置 zabbix 的下载源,安装 zabbix-proxy1.2 部署数据库,要求 MySQL 5.7 或 Mariadb 10.5 及以上版本1.3修改 zabbix-proxy 配置文件1.4 启动 zabbix-proxy1.5 在所有主机上配置 hosts 解析1.6 在 Web 页面配置 …

Oracle批量生成供datax调用的json文件及可执行sh脚本

Oracle+DataX+存储过程实现异构库之间的数据同步资源-CSDN文库 背景: 项目需要做数据迁移(hive2oceanbase),两边的库有几百张表,人工生成json文件,工作量巨大,想来想去还是用Oracle存储过程的形式,批量生成json文件和shell脚本,及实现跑批的功能。 本次测试是Oracl…

免费插画网站

humaaans undraw iradesign fresh-folk delesign

MYSQL的体系结构

mysql体系结构可以分为四个层级:连接层,SQL层,插件存储引擎,物理文件层 补充: SQL层中: 管理服务和工具组件:从备份和恢复的安全性、复制、集群、管理、配置、迁移和元数据等方面管理数据库。…

开发环境可运行,发包后报错(nginx代理出现了问题)

场景: vue项目首次发包... 后端服务发包完毕,apifox测试接口没问题、前端开发环境连服务也没问题... 前端项目打包,提前配置nginx,前端发包... 打开网页,登录接口正常,登录后其他接口报错... 查看报错信息:…

Unity 编辑器-查找所有未被使用的Prefab

需求 接到一个需求,将Res里所有特效相关的prefab检查一下,没有使用的移除。 分析 先拆解一下需求,如下 #mermaid-svg-YiTzyE1BvQ0ZTgLj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#merm…

docke安装elasticsearch(ES)

docke安装elasticsearch(ES) 1.安装一个不带数据卷映射的ES docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" elasticsearch:7.6.22.创建es数据卷映射目录 mkdir -p data/elasticsearch3.将…

瑞芯微 RK356x 基于Android11移植usb接口rtl8723du wifi和蓝牙一体化

开发环境 平台: 瑞芯微RK356x 操作系统:Android11 WiFi、蓝牙芯片:RTL8723DU 通讯类型:USB协议 RTL8723du介绍 Realtek RTL8723DU是一个高度集成的单片机802.11b/g/n 1T1R WLAN,和一个集成的蓝牙2.1/4.2单片机,USB 2.0多功能。…

谈谈电机的FOC控制算法的特点以及应用场景

电机的FOC(Field-Oriented Control)控制算法是一种常用的电机控制策略。它的特点是将电机的控制分为两个部分:电流控制和转速控制。 首先,电流控制是FOC算法的关键部分。它通过控制电机的电流来实现对电机的力矩控制。具体来说&am…

maven引入jar包报红

maven引入jar包报红 1、检查自己的maven配置有无问题 2、检查是否没有子项目使用到当前引入的jar包,在根目录下引入的jar包如果没有子项目使用会报红,原因是在根目录下只是声明式引用,并没有实际引用到。 解决办法:找到要使用的子…

Leetcode-每日一题【1721.交换链表中的节点】

题目 给你链表的头节点 head 和一个整数 k 。 交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。 示例 1: 输入:head [1,2,3,4,5], k 2输出:[1,4,3,2,5] 示例 …

816. 数组翻转

链接: 链接 题目: 给定一个长度为 nn 的数组 aa 和一个整数 sizesize,请你编写一个函数,void reverse(int a[], int size),实现将数组 aa 中的前 sizesize 个数翻转。 输出翻转后的数组 aa。 输入格式 第一行包含两个整…

高德地图通过图层layer实现对海量点的可视化渲染

一、可视化海量点应用场景 在正文开始之前我先说说我为啥会使用这个技术来实现数据的可视化。 事情是这样的,我接手了一个项目,里面有个需求是在地图上标记出他们公司的产品的使用分布。我接手的时候呢,我前面的那位大哥是使用marker点覆盖物…

Spark(19):SparkSQL中数据的加载和保存

目录 0. 相关文章链接 1. 通用的加载和保存方式 1.1. 加载数据 1.2. 保存数据 2. Parquet 2.1. 加载数据 2.2. 保存数据 3. JSON 4. CSV 5. MySQL 5.1. 导入依赖 5.2. 读取数据 5.3. 写入数据 6. Hive 6.1. SparkSQL连接Hive 6.2. 内嵌的 HIVE 6.3. 外部的 HI…

FastDFS文件系统

FastDFS文件系统 环境代码实现 一.FastDFS 1.什么是FastDFS FastDFS:Fast Distributed File System,快速的分布式文件系统,是一款用c语言开发的开源的分布式文件系统. FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了…

前端漏洞xss

网络钓鱼、获取Cookie、强制弹窗获取流量、网站挂马(将恶意代码嵌入程序,用户浏览页面时计算机将被嵌入木马)、发送垃圾信息或广告、传播蠕虫病毒 漏洞原理 XSS(Cross Site Scripting),是一种跨站的脚本攻击,曾简称为CSS, 后改为XSS。 攻击…

springboot在线考试

在线考试系统的开发运用java技术,MIS的总体思想,以及MYSQL等技术的支持下共同完成了该系统的开发,实现了在线考试管理的信息化,使用户体验到更优秀的在线考试管理,管理员管理操作将更加方便,实现目标.

Dell服务器的iDRAC管理卡连接

Dell服务器的iDRAC管理卡图文教程 1、网线连接idrac口2、查看idrac地址3、匹配IP地址4、web登录idrac页面5、登录成功页面 带有集成戴尔远程访问控制器 (idrac)的系统具有默认用户名和密码,但您也可以使用安全密码对其进行配置。默认使用web浏…

在idea中添加mapper.xml文件模板

文章目录 1、创建模板2. 创建mapper.xml文件 1、创建模板 打开创建模板页面 位置:File-》Settings-》Editor-》File and Code Templates 点击号,新建模板,填入Name(随意)、Extension(必须为xml&#xff…