Xilinx远程固件升级(一)——QuickBoot方案

news2025/5/13 16:38:03

Xilinx 7系FPGA远程更新方案——QuickBoot方式远程更新bit

一、远程更新背景和架构

对于非ZYNQ系列的常规FPGA来说,对于bit的更新一般使用JTAG进行烧录。而作为商用产品,想要进行OTA升级时,使用JTAG的升级方式显然不适合,因此,采用了Xilinx官方提供的QuickBoot方式进行能够更新固件,根据xapp1081的描述得知该方式的系统结构图如图1所示。
在这里插入图片描述

图1 远程升级结构图
在这里插入图片描述

图2 系统构成图
由图1可以看出,该远程升级方案支持以太网、PCIe、USB、SD卡、串口等方式实现,通过这些通信方式将需要更新的bit文件发送到FLASH中,当重新上电后,FPGA会自动从FLASH中读取新的bit文件。

二、远程更新工作原理

FLASH中存储两套可执行文件,分别为GOLDEN bits和UPDATE bits文件,其中GOLDEN bits和UPDATE bits都具备远程更新功能。
可执行文件initial.mcs中包含header 、GOLDEN bits和UPDATE bits文件,header文件中具备开关切换和地址跳转功能,可引导FPGA启动GOLDEN bits或者UPDATE bits文件。
具体如下:
在这里插入图片描述

header地址空间为0x000000000x00001020,其中切换开关为0x00000FFC0x00000FFF四字节,ON为0xAA995566,OFF通常为0xFFFFFFFF;地址跳转为0x00001008~0x0000100B四字节,此为UPDATE bits文件的起始地址。
可执行文件update.mcs只具备一套update程序。
initial.mcs和update.mcs是通过bit文件调用脚本生成的,initial.mcs文件是update.mcs文件的两倍大小,具体大小通过脚本进行指定。

将initial.MCS通过VIVADO烧写至FLASH中后,FPGA上电后启动逻辑会判断切换开关是否为0xAA995566,如果是,则读取地址跳转,进行跳转,启动UPDATE程序;如果不是,则继续读取大数据,判断到GOLDEN程序中的0xAA995566,启动GOLDEN程序。无论是GOLDEN还是UPDATE程序,都具备程序更新功能,即UPDATE损坏时,可通过GOLDEN进行更新UPDATE程序,UPDATE程序未损坏时可通过UPDATE更新自己。

三、具体实现

1、客户端服务器建立
本设计采用KC705平台实现,通过AXI_ETHERNET IP核实现mac功能,在SDK中使用echo server API调用LWIP协议创建服务器,PC端采用适合项目要求的工具开发上位机软件,使用TCP/IP协议实现客户端与服务器建立。
LWIP协议中每包数据最大1500字节,因此上位机中选择实际有效数据为1280字节,再加16字节协议头。
2、软核程序固化
程序在Vivado软件下生成system.bit文件,导入到SDK中生成软核.elf的可执行文件,在SDK中通过program FPGA中选择当前工程的.bit、.mmi和.elf文件生成download.bit,此download.bit为融合了FPGA程序和软核程序的最终文件,通过program FPGA可将程序烧写至FLASH中,也可以在VIVADO中生成mcs或者bin文件,将程序烧写至FLASH中。
3、软核AXI总线实现
软核通过网络收到PC机发送的数据包,需要通过AXI总线将数据发送至FLASH 烧写功能的IP,AXI总线具备字节读写和内存数据拷贝功能,函数如下:
static INLINE u32 Xil_In32(UINTPTR Addr);
static INLINE u32 Xil_Out32(UINTPTR Addr);
void Xil_MemCpy(void* dst, const void* src, u32 cnt);
4、FLASH烧写IP
目前FLASH型号为N25Q256,采用X1模式进行烧写。在FLASH中,地址空间为0x01FFFFFF,每个地址对应一个字节。在.vhd文件中,每次烧写一个字节,AXI总线收到数据后调整数据顺序,按字节烧写至FLASH中。
5、远程更新文件生成
1)将download.bit生成download.mcs文件和download.bin文件
cd 盘符:/工程文件夹/bin1
write_cfgmem -format bin -size 32 -interface SPIx1 -checksum -loadbit “up 0x0 download.bit” download.bin

cd 盘符:/工程文件夹/bin1
write_cfgmem -format mcs -size 32 -interface SPIx1 -checksum -loadbit “up 0x0 download.bit” download.mcs

其中
:-format支持bin和mcs文件两种格式。

2)通过download.mcs生成download_initial.mcs和download_update.mcs
exec xilPerl 盘符:/工程文件夹/bin1/MakeSpiFlashProgrammerMcsFiles.pl –imagesize 60 盘符:/工程文件夹/bin1/download.mcs

其中:
download_initial.mcs可用于直接烧写FLASH,包含header、GOLDEN 和UPDATE。
–imagesize,单位为Mbit, 可指定生成的download_initial.mcs和download_update.mcs文件大小,60Mbit = 7.5MB,即download_update.mcs为7.5MB,download_initial.mcs为15MB,
地址分配为0x000000000x00001020-1为header,其中跳转地址为0x007F0000,0x000010200x007F0000-1 为GOLDEN程序空间,0x007F0000~0x00F00000-1为UPDATE程序空间。
3)将download_update.mcs转化为download_update.bin文件
promgen -p bin -r download_update.mcs -o download_update.bin
其中;
FLASH IP烧写中不具备将mcs文件转化为bin文件功能,因此需要通过ISE将mcs转化成bin文件。
download_update.bin可直接用于远程更新。

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

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

相关文章

数据结构与算法:数组与链表的扩展与应用

数据结构与算法:数组与链表的扩展与应用 数组和链表是数据结构中的基础内容,但它们的变体和扩展在实际应用中同样至关重要。通过深入理解数组和链表的内存布局、动态管理以及高级操作,我们可以更有效地选择和设计适合特定应用场景的数据结构…

分布式事务管理-Seata从入门到精通

一、基本概念 什么是数据库事务? 1、一个操作数据库数据的执行单元 2、到围从开始到结束的多个操作组成 3、事务内的多个操作要么都成功,要么都失败 什么是分布式事务? 1.分布式场景下,完成某一个业务功能可能需要横跨多个服务&#xff0…

NFT Insider #151:The Sandbox 推出 Alpha 第4季;腾讯或将收购育碧

市场数据 加密艺术及收藏品新闻 Beeple 将于 11 月在南京德基美术馆举办个人首展 著名数字艺术家 Beeple 近日在X平台发布视频,宣布将于 2024 年 11 月 14 日在南京德基美术馆举办个人首次展览,名为《Beeple:来自合成未来的故事》。该展览将…

JavaScript进阶--深入面向对象

深入面向对象 编程思想 面向过程:多个步骤> 解决问题 性能较高,适合跟硬件联系很紧密的东西,如单片机 但代码维护成本高,扩展性差 面向对象:问题所需功能分解为一个一个的对象(分工合作)>…

科研杂谈:24年诺奖颁布,AI竟是最终赢家?!

前言 2024年诺贝尔奖的公布引发了全球科学界的广泛关注,尤其是在人工智能(AI)领域的突破性获奖。诺贝尔物理学奖和化学奖相继颁给了在机器学习和蛋白质结构预测上取得重大进展的科学家们,让人们惊讶地看到AI正在迅速改变传统科研…

[Hbase]一 HBase基础

1. HBase简介 1.1 HBase定义 HBase数据模型的关键在于 稀疏、分布式、多维、排序 的映射。其中映射 map指代非关系型数据库的 key-Value结构。 1.2 HBase数据模型 1)Name Space 命名空间,类似于关系型数据库的database 概念,每个命名空间下有多个表。HBase 两个自…

【AI】AIGC浅析

引言 人工智能生成内容(AIGC)正迅速改变我们的生活、学习以及工作的方式。在计算机科学与技术领域、软件开发、大数据、智能网联汽车和车路云一体化行业,AIGC的应用已经成为行业发展的新动力。探讨AIGC对这些领域的影响、对职业技能需求的变化…

[Javase]封装、继承、多态与异常处理

文章目录 一、前言二、封装1、封装的思想2、封装代码层面的体现 三、继承1、继承的概念和好处2、继承代码层面的体现 四、多态1、多态的概念2、多态的好处和三要素2、多态代码层面的体现 五、异常处理1、try-catch-finally结构详解2、throw\throws 一、前言 本文章适合有一定面…

CMake 教程跟做与翻译 4

目录 添加一个option! 添加一个option! option,正如其意,就是选项的意思。我们这里需要演示一下option的做法。 option对于大型的工程必然是非常常见的:一些模块会被要求编译,另一些客户不准备需要这些模块。option就是将这种需…

【LLM KG】浅尝基于LLM的三阶段自动知识图谱构建方法

文章指出,在以前的方法中,使用LLM生成三元组时,必须预定义好schema,假如schema数量很多/复杂,很容易超过LLM的上下文窗口长度。并且,在某些情况下,没有可用的固定预定义schema。 方法 一、EDC…

计算机网络:数据链路层 —— 网络适配器与 MAC 地址

文章目录 网络适配器使用网络适配器网络适配器类型 MAC 地址MAC 地址格式MAC 地址类型MAC 地址发送顺序数据接收MAC 地址泄露问题 网络适配器 要将计算机连接到以太网,需要使用相应的网络适配器(Adapter),网络适配器一般简称为“网卡”。在计…

通信工程学习:什么是SRAM静态随机存取存储器

SRAM:静态随机存取存储器 SRAM,全称为Static Random-Access Memory,即静态随机存取存储器,是一种重要的随机存取存储器类型。以下是对SRAM的详细介绍: 一、定义与特点 定义: SRAM是一种只要保持通电&#…

CSS @规则(At-rules)系列详解___@import规则使用方法

CSS 规则(At-rules)系列详解 ___import规则使用方法 本文目录: 零、时光宝盒 一、import规则定义和用法 二、CSS import语法 2.1、语法格式 2.2、常见形式 2.3、语法说明 三、import使用方法例子 3.1、导入 CSS 规则 3.2、根据媒体查询条件导入 CSS 规则 …

结构体字节对齐的一些记录

‌结构体字节对齐的原因‌ 结构体字节对齐的主要原因是为了满足硬件平台的内存访问要求。某些硬件平台对特定类型的数据只能从特定的内存地址开始存取,如果数据没有进行对齐,可能会导致访问错误或效率低下。例如,某些架构的CPU在访问未对齐的…

原来CDC数据同步可以这么简单,零代码可视化一键数据同步

当前企业实时同步与分析场景中面临的挑战: 随着业务发展需要,实时分析成为企业目前的强需求,成为支撑企业业务发展的必须项。 一般来说,要满足数据实时分析的诉求,通常有两种方案: 第一种是直接使用源端…

多线程——解决线程安全问题

目录 前言 一、 synchronized 关键字 1. synchronized 的作用 1. synchronized 的特性 (1)互斥性 (2)可重入 2. synchronized 使用示例 (1)修饰代码块 (2)直接修饰普通方法…

Linux的GDB学习与入门

GDB GDB(GNU Debugger)是一个功能强大的调试工具,广泛用于调试 C、C 和其他编程语言编写的程序。它是 GNU 项目的一部分,专为帮助开发者在程序执行时检测和修复错误设计。GDB 能够控制程序的执行,查看程序内部的状态&…

2024诺奖引发思考,AI究竟是泡沫还是未来?

你好,我是三桥君 现在的AI技术发展得非常快,特别是深度学习和大模型这些技术,感觉和以前那些最后没搞成的技术泡沫不一样。 现在AI有超级强大的计算能力,还有大量的数据可以用来训练,算法也越来越厉害,能搞…

【单机游戏】【烛火地牢2:猫咪的诅咒】烛火地牢2:猫咪的诅咒介绍

《烛火地牢2:猫咪的诅咒》是一款将Roguelike与2D横版动作融为一体的独立游戏,由新西兰制作人Chris McFarland耗费3年时间精心制作。玩家将闯入不同的关卡接受挑战,通关要求是寻找每个关卡中的钥匙。在闯关时玩家能获得武器,防具&a…

关于int*的*号归属权问题

再根据函数指针定义:int (*int) (int a)。我们发现*和后面的标识符才是一体的 所以int *a,b;的写法更好,说明a是指针类型,b是int类型