基于FPGA的在线升级

article/2025/8/29 19:45:40

基于FPGA的在线升级

  • 在线升级的意义
  • 在线升级的策略
  • 整体框架
  • 总结
  • 参考文献
  • 结束语

在线升级的意义

首先什么是FPGA的在线升级?
所谓FPGA的在线升级其实就是不对FPGA进行常规意义下的下载程序,便可以通过一些手段更新FPGA中的程序,一般用到的工具有ICAP原语、flash。那个该问题的解决将面临两个问题:
1、如何将新的FPGA程序下载到flash中;
2、如何让FPGA执行新的程序;
FPGA在线升级的意义?
我们为什么要花费这么大的代价去学习FPGA的在线升级,有一个很重要的原因就是:调试时,我们一般用JATG接口进行烧录、调试,但是等产品上线时,因为JATG接口过于笨重,我们一般是不保留该接口;在没有这个接口的情况下要想下载新的程序,就必须使用在线升级。

在线升级的策略

这里需要掌握的一个知识是,FPGA默认从flash中读取程序是从0地址读取的。我们回忆以下电脑中操作系统的加载,在电脑中首先加载的是一个引导程序,该引导程序指导着对应操作系统的加载,那么对应到FPGA中我们使用同样的办法。首先再FPGA的默认起始点(flash的0地址)下载一个引导程序,然后在引导程序中包含ICAP原语,在一定的条件下,使得FPGA从flash中加载新的FPGA程序。
从上面的分析我们可以打先FPGA在线升级的最关键的问题就是引导程序的书写,这里先给出一般引导程序的设计模块:
在这里插入图片描述
这里简单介绍上面几个模块的重要性。
I-start:读秒程序,开机时,在一定的时间段内,FPGA如果没有接收到PC机在线升级的指令,便启动ICAP程序跳转到指定的地方执行程序。
rs232:该模块的主要作用是接受从PC机传来的新的FPAG烧录程序,注意这里一般选择是bin文件,因为bin文件经过串口方便传输。
spi:将rs232接收来的引得FPGA烧录文件写入到指定的flash地址中并且覆盖相应之前的FPGA程序,这里注意写入的位置一定要与ICAP原语跳转的位置相同,否则该引导程序将没有作用。
ICAP:该模块主要起到FPGA从指定的flash地址启动程序的作用,里面包括ICAP原语,是引导程序中最关键的部分。
KEY:这里起到两个作用,一:给定FPGA在线升级的指令;二:等待spi将新的FPGA程序写入到flash中,再启动对用ICAP程序跳转到指定地方执行。
上述的整体过程,我们一般用状态机控制,会发现所有的程序我们之前的文章中都有,这里我不再写程序,只给出相应的策略。

整体框架

在这里插入图片描述
flash中的两块程序如上图,其中1是我们这篇文章中主要讲解的引导程序,2是FPGA执行程序的地方。

总结

该策略我并没有验证,但是从理论上是可行的,主要是因为上一篇文章的ICAP原语没有下板验证通过,自己也没有进行更深入的调试,但是该理论方案是彻底可行的。

参考文献

[1] V3学院

结束语

创作不易,认为文章有帮助的同学们可以收藏点赞支持。(工程也都在群中)对文章有什么看法或者需要更近一步交流的同学,可以加入下面的群:
在这里插入图片描述


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

相关文章

MCU通过UART实现OTA在线升级流程

关注星标公众号,不错过精彩内容 素材来源 | 网络 OTA升级已经不是什么新鲜事,现在大多数物联网终端设备,基本具备这个功能。 今天以AT32为例给大家分享一下OTA升级的详细流程。 概述 空中下载技术OTA(Over-the-Air Technology&…

Qt 在线升级功能

开源QSimpleUpdater是一个Qt在线升级模块 ,但是QSimpleUpdater 由于使用了很久以前的版本,并且近几年没有维护,因此其内部好多Qt的widget文件,这些QWidget与项目的整体风格不符合,说白了就是很丑,现在用QML…

stm32-IAP(在线升级程序)

第一章 背景知识 什么是IAP? IAP的知识网上的各种资料也说的比较明白,在此简单介绍一下。IAP( In Application Programming)即在线应用编程,也就是用户可以使用自己的程序对单片机的User Flash的某一区域&#xff08…

【Android】轻松实现 APK 在线升级

【Android】轻松实现 APK 在线升级 APK 在线升级 APK 在线升级几乎是所有程序必备的功能。 在线升级功能能解决已有的问题并提供更丰富的新功能。 基本的流程是: 检测到新版本信息弹出升级提示窗口点击 No 不进行升级,完毕!点击 Yes 后台…

车载Linux固件升级,一种车载系统固件在线升级方法与流程

本发明涉及汽车系统升级技术领域,尤其涉及一种车载系统固件在线升级方法。 背景技术: 随着汽车智能化、网联化的发展趋势,车联网的技术进步带来汽车软件系统的复杂度不断增加,升级迭代的速度越来越快,软件的不稳定性风险不可避免。统计数据显示,当前市场一半以上的汽车召…

51单片机IAP在线升级

51单片机IAP在线升级 爱矽半导体E85F3325单片机IAP在线升级教程,此处可查看更新及demo下载 文章目录 前言一、ROM资源二、KEIL有关知识1.BL51连接器:2.LX51连接器: 三、Keil其他相关项说明:四、MCU启动文件说明:五、例…

在线升级版本:ESXI6.5升级7.0

将一台使用ESXI6.7的虚升级条件 1、首先确保硬件是否能升级到7.0版本,注意:物理网卡驱动为e1000e不能升级,如果是igbn,则可以顺利升级。拟机升级到了7.0版本。 升级方法 升级方法有补丁升级、在线升级和U盘升级三种方式&#xff0…

Ubuntu 如何 在线升级系统

Ubuntu 如何升级更新系统 有也常用 Kali Linux 的小伙伴会很熟悉,在Kali中我们只需要使用apt/apt-get包管理器执行如下命令即可: sudo apt update && apt upgrade -y一般执行结束就已完成Kali系统的更新或者再加上: sudo apt dist-upgrade -y&am…

跨平台应用开发进阶(三): uni-app 实现资源在线升级/热更新

文章目录 一、前言1.1 Android升级检测机制 二、wgt 资源升级包升级2.1 修改版本号2.2 发行2.3 安装资源升级包2.3.1 代码示例2.3.2 小结 三、整包升级3.1 客户端实现3.2 数据表实现3.3 服务端实现3.4 发版配置3.5 注意事项 四、Uni-app 版本升级中心4.1 升级中心 uni-upgrade-…

STM32 IAP 在线升级原理全解析

点击左上角的“关注”,定期更新 STM32 最新资讯,总有你想要的信息! STM32 IAP 在线升级原理全解析 1. 什么是 IAP? IAP(In-Application Programming)是用户自己的程序在运行过程中对 User Flash 部分的区域…

ESP8266实现在线升级OTA

今天总结一下我实现ESP8266实现在线升级(OTA)的经验 关于理论介绍我这里不多讲,大家可以参考以下文章: 1.一个网友总结的经验(我这篇文章主要也是对该文章做进一步补充):https://www.cnblogs.c…

stm32在线升级方案

目录 下载固件流程: Bootloader程序设计流程 普通工程改为APP工程的步骤 背景:当嵌入式软件需要固件升级时,有时需要拆卸设备,较为麻烦,为方便升级,提供远程升级的功能,可通过网络或其他通讯…

串口在线升级步骤

串口在线升级步骤 一、查看工程文件的Config.h 二、确定本地地址和目标地址 三、打开在线升级工具 四、配置串口参数 串口配置可以波查询代码与PC通讯的UART设置的参数。 五、填写本机地址和目标地址 本机地址为0xf3 243 主板目标地址为0xf5 245 PMT板目标地址为0x13 19 …

mariadb数据库在线升级版本

mariadb----在线版本升级 我之前的数据库版本号是5.5 一:备份数据库和数据库配置 mysqldump -u root -p --all-databases > /home/mydb.sql mv /etc/my.cnf /etc/my.cnf.bak 二:添加mariadb yum库 vim /etc/yum.repos.d/MariaDB.repo [mariadb] na…

FPGA远程固件在线升级

FPGA远程固件在线升级 1.摘要 对最近做的FPGA远程更新/在线升级做一个总结。一般在代码开发阶段,我们使用JTAG烧写代码,但当产品投入到实际使用过程中,难以再用JTAG进行固件更新。所以需要开发远程/在线更新的功能,即使用产品自…

固件在线升级流程

从事硬件开发,为了方便维护,免不了对模块进行固件升级,所以对于固件升级,简单整理了一下完整的在线升级的实现思路,该思路适用于所有带通讯总线的模块。 需要注意的是,需要额外的上位机配合。 下位机在线…

php 在线升级

php 在线升级 功能 目前已修改为通用解决方案 点击下方链接下载 此为最新优化过的版本 之后的贴图 说明 仅用来做思路参考 我就不再修改了 下面是思路解析思路一思路二升级程序服务器检测版本至此整个升级程序已经结束 感谢大家参考有任何问题都可以直接联系我咨询 一定不吝赐教…

软件在线升级系统设计

需求描述 一直用Qt开发PC版本的程序,常用的方法都是打包发布。目前开发的程序比较复杂,涉及到上百个独立的进程以及4000多个相关文件,采用原来的打包发布就变得很麻烦,第一改动比较频繁,打包次数过多;第二…

Nginx在线升级

1、查看当前nginx版本,nginx -v(小写v) 2、下载最新版本nginx包,nginx-1.23.1.tar.gz 3、解压tar -zxvf nginx-1.23.1.tar.gz 4、进入解压目录cd nginx-1.23.1.tar.gz 5、查看nginx当前配置,nginx -V注意这里是大写…

在线升级:OTA升级的原理和实现方式

目录 1、OTA 在线升级 2、实现方式 3、操作方式 3.1、后台式升级 3.2、非后台式式更新 4、STM32 的在线升级 4.1、划分 Flash 区域 4.2、实操1 - Flash空间地址的划分 4.3、实操2 - 设置工程 4.4、实操3 - 接收固件更新包 4.5、实操4 - 拷贝程序至Flash 4.6、实操5 - 跳转至 Ap…