当前位置: 首页 > article >正文

基于FPGA的远程升级系统概述

目录

一、理论基础

1.1 远程升级系统概述

1.2 基于FPGA的远程升级系统概述

二、核心程序

三、仿真测试结果


一、理论基础

1.1 远程升级系统概述

       远程升级系统是指通过网络将更新软件包从远程服务器传输到设备,并在设备上安装这些更新软件包的系统。基于FPGA的远程升级系统是指使用FPGA(现场可编程门阵列)作为核心处理器构建的远程升级系统。

下面是一个简单的基于FPGA的远程升级系统的原理概述:

系统组成:

基于FPGA的远程升级系统主要包括以下几个组成部分:

  • FPGA芯片:作为系统的核心处理器,负责执行各种计算和控制任务。
  • 通信接口:用于与远程服务器进行通信,接收更新软件包和发送设备状态信息。
  • 存储设备:用于存储更新软件包和设备固件。
  • 电源管理模块:用于控制设备的电源,确保系统的稳定运行。

工作流程:

基于FPGA的远程升级系统的工作流程如下:

  • 设备启动后,FPGA芯片从存储设备中读取设备固件,并将其加载到芯片中。
  • FPGA芯片通过通信接口与远程服务器建立连接,并发送设备状态信息。
  • 远程服务器根据设备状态信息生成相应的更新软件包,并将其发送给设备。
  • FPGA芯片接收到更新软件包后,将其存储在存储设备中。
  • FPGA芯片执行更新软件包中的指令,对设备进行升级。
  • 升级完成后,FPGA芯片将更新后的设备固件存储在存储设备中,并重新启动设备。

数学公式:

基于FPGA的远程升级系统涉及到的主要数学公式包括:

  • 校验和算法:用于验证更新软件包的完整性,通常使用CRC(循环冗余校验)等校验和算法。
  • 哈希算法:用于生成设备状态信息和更新软件包的哈希值,以便进行验证和比较。常用的哈希算法包括MD5、SHA-1等。
  • 加密算法:用于保护设备状态信息和更新软件包的安全性,通常使用对称加密算法(如AES)或非对称加密算法(如RSA)。

安全性考虑:

基于FPGA的远程升级系统在设计和实现时需要考虑以下安全性因素:

  • 身份验证:确保只有经过授权的用户或设备才能访问远程服务器和下载更新软件包。
  • 加密传输:使用加密算法保护设备状态信息和更新软件包在传输过程中的安全性。
  • 完整性验证:使用校验和算法验证接收到的更新软件包的完整性,以确保没有被篡改或损坏。
  • 固件备份:在升级前备份设备固件,以便在升级失败时可以回退到之前的版本。
  1. 实际应用场景:

基于FPGA的远程升级系统在以下场景中具有广泛的应用:

  1. 未来发展趋势:

随着物联网技术的快速发展,基于FPGA的远程升级系统具有以下发展趋势:

  • 支持更多的通信协议和接口,如5G、Wi-Fi 6等,以适应不同的应用场景和需求。
  • 加强安全性措施,如使用更加先进的加密算法和身份验证技术,保护设备状态信息和更新软件包的安全性。
  • 实现更加智能化的升级策略,如根据设备的运行状况和性能指标自动选择合适的更新软件包进行升级。
  1. 挑战与问题:

尽管基于FPGA的远程升级系统具有广泛的应用前景和发展趋势,但也面临着一些挑战和问题:

1.2 基于FPGA的远程升级系统概述

        通过串口接收升级文件,将升级文件写入EPCS中,然后使用Remote_system_update模块进行升级操作。

存储器类型使用片上RAM,约20KB空间

使用的芯片是EP4CE40F23C6

        这里,主要的核心部分是基于NIOSIIRemote system update模块的调用,这里在设计说明中,重点介绍一下Remote system update模块的使用方法。

          RSU单元主要包括如下几个部分:

第一:页模式的选择

          通过页模式选择特性,我们可以选择重配置期间时加载不同的配置程序。在FPGA芯片中,通过PGM[2:0]三个引脚来实现页选择。

第二:工厂配置

         工厂配置就是系统的默认配置,当使用增强配置期间的时候,工厂配置会存放在000页。当使用串行配置器件的时候,工作配置则被放在从0X00000000地址开始的空间。工厂配置值能被系统生产商第一次配置进去,静止用户通过远程升级模式进行修改。

第三,应用配置

      从远程接收到的配置数据,并存放到远程存储器里除工厂配置的其他的任意的空间。

第四,看门狗计数器

     主要用来进行复位计数的功能。

第五,远程程序升级子模块

     远程程序升级子模块管理着远程配置特性,这个字模块是由一个远程配置状态机来实现的。

第六,远程配置寄存器

      远程配置寄存器主要用在存储配置地址以及引起重配置的错误类型。

系统的设计。

二、核心程序

第一,基于NIOSIIRSU单元模块设计

      在SOPC界面中,做如下的IP核总线连接:

        从上面的设置可以看到,整个NIOSII系统,主要包括CPU核,片上RAM以及UART串口模块三个部分。

这些模块的参数设置以及地址分配分别如下所示:

片上RAM

注意,片上存储器的总大小这里设置为40960,当然你也可以改为你所要求的大小。

UART串口:

CPU核:

第二,系统整体设计

         整个系统的结构如下所示:

整个系统的资源占用如下所示:

`timescale 1 ns / 1 psmodule RSU_tops(i_clk_80Mhz,i_rst,i_EPCS_DO,i_RX_UART,o_clk_40Mhz,o_Pause,o_TX_UART,o_EPCS_CS,o_EPCS_DI,o_EPCS_CLK,o_PWM,o_PWM1,o_LED1,o_LED2);input       i_clk_80Mhz;
input       i_rst;
input       i_EPCS_DO;
input       i_RX_UART;
output      o_clk_40Mhz;
output      o_Pause;
output      o_TX_UART;
output      o_EPCS_CS;
output      o_EPCS_DI;
output      o_EPCS_CLK;
output [7:0]o_PWM;
output      o_PWM1;
output      o_LED1;
output      o_LED2;CLKDCM CLKDCM_u(.i_clk (i_clk_80Mhz),.i_rst (i_rst),.o_clk (o_clk_40Mhz));Count Count_u(.i_clk   (o_clk_40Mhz),.i_rst   (i_rst),.o_pause (o_Pause));				  nios_rsu2 nios_rsu2_u(.EPCS_DO   (i_EPCS_DO),.RX_UART   (i_RX_UART),.CLK_40MHz (o_clk_40Mhz),.Reset_n   (o_Pause),.TX_UART   (o_TX_UART),.EPCS_CS   (o_EPCS_CS),.EPCS_DI   (o_EPCS_DI),.EPCS_CLK  (o_EPCS_CLK),.PWM       (o_PWM),.PWM1      (o_PWM1),.led1      (o_LED1),.led2      (o_LED2));endmodule 
`timescale 1 ns / 1 psmodule nios_rsu2(EPCS_DO,RX_UART,CLK_40MHz,Reset_n,TX_UART,EPCS_CS,EPCS_DI,EPCS_CLK,PWM,PWM1,led1,led2
);input wire	EPCS_DO;
input wire	RX_UART;
input wire	CLK_40MHz;
input wire	Reset_n;
output wire	TX_UART;
output wire	EPCS_CS;
output wire	EPCS_DI;
output wire	EPCS_CLK;
output wire	[7:0] PWM;
output wire       PWM1;
output reg       led1;
output reg       led2;Remote_NIOS	b2v_inst(.clk_0(CLK_40MHz),.reset_n(Reset_n),.data0_to_the_epcs_flash_controller(EPCS_DO),.rxd_to_the_fifoed_avalon_uart(RX_UART),.dclk_from_the_epcs_flash_controller(EPCS_CLK),.sce_from_the_epcs_flash_controller(EPCS_CS),.sdo_from_the_epcs_flash_controller(EPCS_DI),.txd_from_the_fifoed_avalon_uart(TX_UART),.out_port_from_the_pio(PWM));assign PWM1 = 1'b0;wire sel;
assign sel = EPCS_CS;always @(posedge CLK_40MHz or posedge Reset_n)
beginif(Reset_n)beginled1 <= 1'b0;led2 <= 1'b0;end
else beginif(sel == 1'b1)beginled1 <= 1'b0;led2 <= 1'b1;			 endelse beginled1 <= 1'b1;led2 <= 1'b0;			  endendendendmodule

三、仿真测试结果

         这里,仿真效果如下图所示:

        然后我这里下面的测试步骤都是基于这个板子来做的测试,测试步骤:

管脚的绑定截图:

        然后,我们这里主要观察的是LED1和LED2两个灯的工作情况。这里,我再我的板子上连接的两个绿色的LED灯。

A12-23

http://www.lryc.cn/news/2414802.html

相关文章:

  • 微信爆文神器!轻松搞定文章采集,助你成为爆文达人
  • 官方博客网站搭建指南:只需要三步就可创建高质量官方博客!
  • 域名交易价格超30万人民币,你了解多少?
  • BAT机器学习面试1000题系列
  • Windows7系统browseui.dll文件丢失问题
  • 仙侣情缘之麒麟劫java_《仙侣情缘之麒麟劫》详细流程攻略[多图]
  • 解决资源字符串乱码问题
  • 《龙门飞甲》高清完整版BD-RMVB.国语中字 最新陈坤、李宇春、李连杰、周迅动作大片...
  • 2011年最火爆的20大商机和创业概念
  • 杀毒软件技术 脱壳、虚拟、启发式介绍
  • Java开发常用软件下载地址合集
  • 删除多余启动项和删除垃圾文件
  • Typora中的emoji图标标签
  • 网页中嵌入swf文件的几种方法(转)
  • esp32-S3专题三:外设1之WIFI的扫描和sta模式使用
  • onlylady 摘录-婚礼回礼
  • 乐优商城(六)ElasticSearch搜索
  • android studio虚拟机运行react-native项目全流程(避坑笔记)
  • JSP中的JavaBean的基本使用方法
  • 华为发布凌霄芯片华为正式发布鸿蒙,凌霄芯片
  • 选举算法
  • 同一个网站可以放2个服务器吗,两个网站放在同一个服务器 备案
  • 40个在线杀毒网站
  • xftp6设置默认打开文件的程序_Xshell、Xftp 5、6 解决“要继续使用此程序,您必须应用最新的更新或使用新版本”...
  • Windows平台下常见快捷指令
  • HMS Core携手厦门大学打造AR增强现实技术
  • 由于该计算机受到限制本次操作已被取消请与你的系统管理员联系
  • python爬虫总结,看这篇就够了
  • 网络入门基础(基本网络的了解和配置)
  • 快手狂人