开云-FPGA实现串口升级及MultiBoot(四)MultiBoot简介

FPGA实现串口进级和MultiBoot(四)MultiBoot简介 时候:2024-12-13 21:28:48 手机看文章

扫描二维码随时随地手机看文章

缩略词索引:

K7:Kintex 7 V7:Vertex 7 A7:Artix 7

我们在正常进级的进程(只利用一个位流文件),假设:(1)由于干扰通讯模块收到了一个毛病位;(2)或烧写进FLASH时忽然断电,致使位流文件不完全;(3)再或利用软核进级利用法式时,忽然断电或领受文件毛病,致使利用法式启动不了;(4)再再或外场人员烧写了不适配本FPGA的进级法式。以上这些都是我们进级时辰常见的问题,以上问题可以总结为以下几点:

位流毛病 -- 对应环境(1)、(2) 启动超时 -- 对应环境(3) 位流ID不匹配 -- 对应环境(4)

所以我们利用单一的文件进行长途进级的时辰,很有可能由于各类环境致使FPGA不克不及启动,就需要现场利用JTAG进行处置。所觉得了避免这些环境的产生,我们需要两个固件,此中一个在一般环境下不动,只进级另外一个法式,两个法式在以上环境产生时,就启动第一个法式,便可以从头进级了。

以上这类应对体例对AMD-Xilinx FPGA来讲,官方也想到了针对以上环境的解决体例-即MultiBoot。

MultiBoot介绍

其实这个理念不难理解,你从现实利用动身去理解会比直接理解要轻易多,现实利用就从上面的各类环境动身,就很轻易理解官方为啥利用MultiBoot进行问题的规避息争决。

可是,由于每一个人接管的理念分歧,所以我们仍是要从正面“突进”,去注释MultiBoot。

MultiBoot 是一个FPGA实现的一种解决方案,撑持分歧位流之间切换以规避在长途更新中呈现的问题。

当在 MultiBoot 启动设置装备摆设进程中检测到毛病时,FPGA 会触发还退(外国名:Fallback),如许便可以确保已知好的设计可以加载到装备中。这类解决方案首要是在一个FLASH中烧写两个位流文件。此中:

Fallback, 别称 “golden bitstream” MultiBoot, 别称 “update bitstream”

以上两个文件,习惯叫Golden位流,烧写在Golden区;MultiBoot位流,烧写在MultiBoot区。以上依小我习惯本身匹配,对应好相干的名称和位置便可以。

MultiBoot道理

Golden位流是从Flash中的0地址最先运行;其帧头会包罗WBSTAR(next_config_addr)寄放器里面指定的下一个启动地址等信息。FPGA器件上电后会从0地址最先加载Golden位流后,会按照里面的设定来决议加载Golden位流仍是直接跳转到MultiBoot位流存储地址去履行MultiBoot位流;当MultiBoot位流加载时辰碰到毛病,Fallback电路会触发去从头从0地址去加载Golden 位流。MultiBoot 和 Fallback 流程如图1所示:

图1:MultiBoot 和 Fallback 流程 - 参考:XAPP1247

Golden位流从FLASH地址 0 最先履行后。依照启动流程,一旦碰到 IPROG 号令,就会跳转到Golden位流中 WBSTAR 寄放器中指定的FLASH地址位置,设置装备摆设逻辑会测验考试加载更新比特流。假如设置装备摆设逻辑因为毛病没法加载更新位流,则会产生Fallback,设置装备摆设逻辑会将 INIT_B 和 DONE 拉低,断根设置装备摆设内存,并从头从地址0处加载Golden位流从头启动设置装备摆设进程,在 Fallback 时代,为了避免不竭的从头,FPGA 会疏忽 WBSTAR 和 IPROG 号令,具体流程见图2.

图2:MultiBoot Fallback 流程和设置装备摆设步调 - 参考:XAPP1247 MultiBoot 要害手艺

MultiBoot 要害手艺首要首要分为以下几种:一个指令、二种位流、三种体例、四样毛病。针对以上四句话我们接下来具体阐发。

一个指令

这个指令大师应当都知道,在上一篇文章中也具体介绍了就是IPROG 指令。这个就是MultiBoot的焦点号令(实现MultiBoot根基),后续的内容根基离不开这个指令,上一篇文章中《设置装备摆设文件框架》介绍了这个指令的位置和在启动流程中位在第几步。

二种位流

这里没有说是二“个”位流,由于在复杂架构种不止一个位流,可是依照功能划分就是位在Golden区的Golden位流和位在MultiBoot区的MultiBoot位流。

三种体例

这里指的是 IPROG 指令嵌入位流种的三种体例,别离为:1)经由过程束缚剧本添加;2)经由过程ICAPE2原语添加;3)经由过程AXI HWICAP写入IPROG指令。

这几种体例后面的文章会在实例解析。

四样毛病

四样毛病指触发FallBack的四种毛病,别离为:

ID Code毛病 - 指设置装备摆设文件中的器件型号和当前器件不匹配。 CRC毛病 - 指设置装备摆设数据送入FPGA以后会进行校验,假如数据纷歧样则会提醒CRC毛病。 Watchdog超时 - 指在划定的时候内假如没法设置装备摆设成功,则触发Watchdog超时 BPI地址越界 - BPI是只针对BPI模式的,和Watchdog有一点近似,都是在一段时候内假如没有加载成功,地址会慢慢增添,计时器会慢慢增添,跨越规模后就触发Fallback。

ID Code毛病指的是ID Code不合错误,这在器件启动第五步种呈现毛病,这类环境大要率是烧写毛病镜像了,所以没甚么好注释的。

当存在Multiboot镜像的时辰,如M镜像的内容呈现问题,则会触发CRC校验毛病,如许可以包管镜像加载成功以后,数据是没有问题的。可是假如没有Multiboot镜像,则CRC校验没法进行,或加载到一半就挂死了。这个时辰就需要Watchdog来触发Fallback。只要必然时候内加载没有完成,就必然会触发Watchdog超时。所以CRC是用来包管加载准确的,Watchdog是用来包管必然会提醒加载掉败的。留意,Watchdogd的计时设置,请设置好然后现实测试一下,而不要仅仅凭经验/文档来揣度一个适合的值。当产生了Fallback以后,工程会反跳回0地址最先加载,重新加载G镜像。这里,FPGA内部的设置装备摆设寄放器会做记实,当产生Fallback以后,会主动疏忽IPROG号令,直接加载G镜像后续的部门,来包管G镜像有机遇被完全的加载。

BPI地址越界就和上面注释的一样,没甚么多说的了。

总结

MultiBoot的实现总结起来就:一个指令、二种位流、三种体例、四样毛病。接下来就是依照上面的挨次现实操作,加深理解。

欲知详情,请下载word文档 下载文档

上一篇:开云-MCU异常复位的问题及处理办法 下一篇:开云-Google 开源的 Python 命令行库:深入 fire(二)