第二章 FPGA OTA升级方案的分析及简单用例测试

这篇具有很好参考价值的文章主要介绍了第二章 FPGA OTA升级方案的分析及简单用例测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.FPGA配置更新基础介绍

1.1 FPGA的运行方式

FPGA程序运行的方式有两种方式:

(1)加载到本地RAM(掉电不保存)

(2)将程序固化到FLASH中(掉电保存),FPGA上电后自动从地址0加载固件

1.2 FPGA Multiboot介绍

Xilinx 7系列有Multiboot设计,这种设计允许在应用现场支持FPGA在线加载多种不同应用,并可支持回退。但是需要说明的一点,Virtex®-7 HT FPGAs 是不支持回退的。 Multiboot设计在配置过程出现错误,FPGA触发回退,确保FPGA不变砖。

Multiboot设计支持FPGA将bitstream 文件下载到指定的地址。通过一个内部生成的脉冲信号(IPROGRM)初始化跳转逻辑,地址在Golden bitstream WBSTAR寄存器。如果配置错误,回退到Golden Image加载。

ota升级测试用例,fpga开发,Powered by 金山文档

Mulitboot详细的实施逻辑如下:

ota升级测试用例,fpga开发,Powered by 金山文档

1.3 FPGA加载程序的流程

(1) 通过MCU配置FPGA,我们认识下FPGA的配置流程

如下图所示,是MCU配置FPGA的示意图,通过MCU将程序下载到FPGA上。

ota升级测试用例,fpga开发,Powered by 金山文档

(2)配置流程

ota升级测试用例,fpga开发,Powered by 金山文档

① 上电或者配置复位

配置复位:PROGRAM_B管脚生效

② 器件初始化

上电或者配置复位触发配置内存初始化,初始化阶段,FPGA会将INIT_B拉低,并复位内部配置状态机,并且清除配置内存;初始化完成时,FPGA释放INIT_B,INIT_B成为高阻态。当INIT_B释放成高阻态,外部上路电阻将INIT_B拉高。当INIT_B 变高,FPGA采用配置模式管脚M[2:0]状态,配置管脚决定FPGA配置模式。

M[2:0] = 111时,FPGA设置为Slave Mode; 当M[2:0] = 110时,FPGA设置为SLAVE SelectMAP模式。采样完引脚的模式后,FPGA准备接收配置数据(bitstream)

③ 配置下载:如果FPGA是配置成Slave Mode时,外部MCU能够将bitstream下载到FPGA。 对于Slave串行模式来说,通过FPGA_D01_DIN 引脚将bitstream下载进去,每个CCLK上升沿下载一个bit。

如果是Slave SelectMAP模式,当FPGA_CSI_B和RDWR_B管脚为低时,数据通过FPGA D[31:0]在CCLK上升沿下载

ota升级测试用例,fpga开发,Powered by 金山文档

1.4 FPGA配置bitstream文件的组成

ota升级测试用例,fpga开发,Powered by 金山文档

bitstream文件分为两部分,一部分是将基础版本,为Gold image;另一部分是更新程序,为最新程序版本update image。

FLASH的大小,FLASH大小必须是bitstream文件的两倍以上。目前开发板采用的是Artix-7系列的7A35T,bitstreams长度是17536096bits约等于16Mb,那么FLASH最小大小为32Mb.具体怎么计算,可以按照下列的流程进行。

ota升级测试用例,fpga开发,Powered by 金山文档

FPGA配置文件称为“Bitstream”,FPGA的“Bitstream”长度是一定的,它的组成如下:

  • Sync Word: 0xAA995566 (32bit)

  • Device Identification: A device ID for checking the appropriate device is receiving the bitstream

  • CRC check: 数据校验

1.5 FPGA配置模式

FPGA配置模式如下,其中主从模式的区别主要是时钟的来源。主模式的时候,来源于FPGA。

ota升级测试用例,fpga开发,Powered by 金山文档

其中,Slave SelectMAP x16和x32 bus Widths不支持AES-encrypted bitstreams;

当管脚悬空的时候,默认模式时Slave Serial,因为FPGA内部有上拉电阻。

2 FPGA OTA方案实施

2.1 FPGA在线配置的实施架构

如下图所示,云端FPGA的bitstream文件通过SOC获取,SOC通过SPI将bitstream文件传给FPGA,FPGA通过SPI将bitstream文件写入FLASH。更新完后,SOC可以复位FPGA,FPGA重新加载程序即可。

ota升级测试用例,fpga开发,Powered by 金山文档

2.2 FPGA在线配置的硬件需求

2.2.1 BOOT 模式的选择

根据官方Datasheet的建议,选择主模式,CLK由FPGA产生,接口两种形式,分别为“SPI接口”和“BPI接口”,我们选择SPI接口,硬件配置如下图所示。

几点说明如下:

  • DONE是开漏,接上拉电阻;

  • INIT_B是开漏,支持双向,需要上拉

  • Bitstream启动时钟一定需要配置为SPI的CLOCK

  • CCLK的信号完整性非常关键,需要终端匹配。

  • DOUT不支持菊花链

  • FPGA和FLASH的数据线有必要加上串联电阻,减少过冲

  • 7系列的FPGA的VCCO_0的供电需要与SPI的I/o的VCC吻合

  • 为确保FPGA复位的时候,FLASH也复位,FLASH的复位信号应该连接到FLASH的复位信号(防止FLASH正在擦写时候FPGA复位,导致FPGA配置失败)

2.3 FPGA在线配置功能模块详解

要实现FPGA在线配置的功能,首先需要FPGA举要BootLoader模块,这个模块就是Golden Image;其次就是应用程序,即Update Image。当然需要说明的一点就是,Golden Image是通过JTAG下载到FLASH里面,是初始化的第一步。

2.3.1 Golden Image模块的功能拆解

(1)SPI接口通信功能:SOC与FPGA的通信

(2)搬运功能的使能和关闭:SPI接收SOC的指令启动搬运功能,将update image搬运到FPGA的RAM中

(3)FLASH通信功能:FPGA与FLASH通信,对FLASH进行擦除、写和读

(4)跑马灯功能:指示Golden Image运行正常

2.3.2 Golden Image和update Image的配置 流程<ug908>

(1)通过Vivado编译生成bitstreams文件

(2)创建可配置文件.msc

(3)连接JTAG

(4)设置配置FLASH型号

(5)下载程序

(6) BOOT FPGA

2.3.3 Golden Image和update Image的配置实例

采用的FPGA是ALINX的开发板,FPGA型号是:ARTIX-XC7A35T-2FGG484

(1)确定配置方式,其中7系列的配置模式如下,主要分为两大类,分别为MASTER和SLAVE模式,主要区别就是数据驱动的CLK从哪里来。MASTER模式就是FPGA提供时钟,SLAVE模式时外部提供时钟。参考手册《UG470》

ota升级测试用例,fpga开发,Powered by 金山文档

(2) 通过VIVADO配置Gold Image,其中GOLD 程序需要定位next boot address ,参考手册《xapp1247》

ota升级测试用例,fpga开发,Powered by 金山文档

注意:由于我们选用的128Mbits的ROM,而非是128MBytes的ROM。因此在生成.mcs,地址设置是根据Byte计算。

比如我们将update Image的地址配置在ROM的中间位置,地址应该是 0x0040000,而非0x0400000.

VIVADO生产MCS 的脚本如下:

write_cfgmem -format mcs -size 16 -interface SPIx4 -loadbit {up 0x00000000 "E:/xapp1247-multiboot-spi/Vivado/Golden/Golden.runs/impl_2/Top_mudule.bit" } -loaddata {up 0x00400000 "E:/xapp1247-multiboot-spi/Vivado/Update/Update.runs/impl_2/update_module.bit" } -file "E:/xapp1247-multiboot-spi/Vivado/gold_update"。

同时为了有效跳转update,我们需要将在golden image的XDC文件设置如下

A. 设置SPI接口和模式

#set_property CONFIG_MODE SPIX1 [current_design]

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

set_property CONFIG_MODE SPIx4 [current_design]

set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

B. 设置压缩模式,节省传输时间

#Compress the bitstream to fit on 128M QSPI

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

C. 在Golden image设置好update image地址

#BITSTREAM PROPERTIES REQUIRED FOR GOLDEN IMAGE:

set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]

set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x0400000 [current_design]

为了在update image出现错误的时候,能够有限跳转回去golden image,我们需要将update image的文件设置如下:

A. 设置FALLBACK 使能

set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]

B. 设置压缩模式,节省传输时间

#Compress the bitstream to fit on 128M QSPI

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

C. 设置SPI接口和模式

#set_property CONFIG_MODE SPIX1 [current_design]

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

set_property CONFIG_MODE SPIx4 [current_design]

set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

(3)配置后查看是否成功

  • Hardware Device Properties可以监测Register BOOT_STATUS的状态,如下图所示,配置成功,成功跳转到update image执行

ota升级测试用例,fpga开发,Powered by 金山文档
  • 为了判断是否可以跳转,我们可以人为的制造CRC错误,用hex editor打开update 的bitstreams文件,强制修改CRC,可以实现FALLback.文章来源地址https://www.toymoban.com/news/detail-716726.html

到了这里,关于第二章 FPGA OTA升级方案的分析及简单用例测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第二章(第二节):无穷小量和函数

    若 lim f(x) = 0 , 则称函数 f(x) 当 x → x 0 时是无穷小量,简称: 无穷小 。      x→ x 0 定理1. 有限多个 无穷小量的代数和仍是无穷小量 定理2. 有限多个 无穷小量的积也是无穷小量 定理3.常数与无穷小量的积也是无穷小量 定理4.有界变量与无穷小量的积是无穷小量 当 x→

    2024年02月08日
    浏览(34)
  • 信息系统安全(第二章)

    2.1.1基本概念 在网络开放环境中,信息系统易遭受各种各样的攻击,例如消息窃听,身份伪装,消息伪造与篡 改,消息重放等。这种入侵行为的实施相当一部分建立在入侵者获得已经存在的通信通道或伪装身 份与系统建立通信通道的基础上。因此,在信息系统中,用户在登

    2024年04月09日
    浏览(72)
  • 第二章 编程基础

    内容框图 单行注释: 快速注释: 多行注释: 使用+号拼接 使用拼接函数 列表 列表是一个有序的序列结构,可以存放不同数据类型的数据。 列表每一个元素有一个索引。 列表可以进行一系列操作,添加,删除,修改元素。 元组是一个有序的序列结构,基本结构和列表类似。

    2024年02月06日
    浏览(45)
  • 第二章 集合

    提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 HashSet 底层就是基于 HashMap 实现的。两者主要区别: 线程是否安全: HashMap 是非

    2024年02月02日
    浏览(49)
  • 操作系统——第二章

    一.单选题(共30题,60.0分) 1 ()是指从作业提交给系统到作业完成的时间间隔 (2.0分) A、 周转时间 B、 响应时间 C、 等待时间 D、 运行时间 正确答案: A 2 引入多道程序设计技术之后,处理器的利用率() (2.0分) A、 有所改善 B、 极大提高 C、 降低 D、 无变化 正确答

    2023年04月08日
    浏览(33)
  • 第二章:基本概念(下)

    人们往往将信号称为**“软件中断”**。进程收到信号,就意味着某一事件或异常情况的发生。 信号的类型很多,每一种分别标识不同的事件或情况。采用 不同的整数 来标识各种信号类型,并以SIGxxxx 形式的符号名加以定义。 内核、其他进程(只要具有相应的权限)或进程自

    2024年02月08日
    浏览(33)
  • 第二章-算法

    算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 算法有五个基本特征:输入、输出、有穷性、确定性和可行性。 输入:算法具有零个或者多个输入。 输出:算法至少有一个或多个输出。 有穷性:算法在执行了有

    2024年02月14日
    浏览(32)
  • 第二章 变量和引用

    目录 2.1. 深入认识变量 2.1.1. 什么是变量 2.1.2. 变量的名称 2.1.3. 变量的类型 2.1.4. 变量的定义 2.1.5. 自定义变量 2.1.6. 环境变量 2.1.7. 位置变量 2.2. 变量赋值和作用域 2.2.1. 显示赋值:变量名=变量值 2.2.2. read 从键盘读入变量值 2.2.3. 变量和引号 2.2.4. 变量的作用域 变量是在程序

    2024年02月20日
    浏览(37)
  • 第二章 re模块

    在处理字符串时,经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 Python 提供了 re 模块用于实现正则表达式的操作。在实现时,可以使用 re 模块提供的方法,如search()、match()、fi

    2024年02月09日
    浏览(27)
  • 第二章 进程管理

    目录 2.1  进程的引入 2.1.1程序的顺序执行 1.程序的顺序执行 2.程序顺序执行时的特征 2.1.2  程序的并发执行及其特征 1.并发执行的概念 2.程序并发执行时的特征 2.1.3  进程的定义与特征 1.进程的定义 2.进程的特征 2.1.4  进程的基本状态及转换 1.进程的三个基本状态

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包