
FPGA实现串口升级及MultiBoot
文章平均质量分 89
文章议题以《串口升级》《MultiBoot》《QuickBoot》为主,辅以《启动流程》《FLASH》《XMODEM》等知识,主线就是7系列FPGA实现串口升级的几种方式
OpenFPGA
这个作者很懒,什么都没留下…
展开
-
FPGA实现串口升级及MultiBoot(一)先遣篇
好久没写系列文章了,准备以最近在群里讨论比较多的话题为契机,写个系列文章,文章议题以《串口升级》《MultiBoot》《QuickBoot》为主,辅以《启动流程》《FLASH》《XMODEM》等知识,主线就是7系列FPGA实现串口升级的几种方式,同时会介绍一下UltraScale系列FPGA与7系列在这方面的区别与注意事项,所有FPGA测试平台都不包含ARM核。主要的议题如下:第一版内容框图后续会...原创 2024-08-26 08:30:44 · 1062 阅读 · 0 评论 -
FPGA实现串口升级及MultiBoot(十)串口升级SPI FLASH实现
采用软核进行串口升级的原因主要有以下几点:1、官方推荐:官方以前也推出了针对逻辑进行升级的程序《XAPP1081_QuickBoot》,但是从今年起(2024年)官方就停止更新相关例程了(详见下面截图),所以采用官方推荐的软核更新;2、简单并具有通用性:针对SPI或者BPI官方都有相关的IP,可应对市场上80%以上的FLASH,并且官方IP通用性极强,只需要修改几个参数就可以对不同厂家的芯片进行升级操作;原创 2024-12-01 20:48:42 · 969 阅读 · 0 评论 -
一篇文章搞懂软核(MicroBlaze)的固化和启动
这也是《FPGA实现串口升级及MultiBoot》系列中的一篇文章,作为一个专题单独出来说明。本篇文章分为三个主题:固化、启动和MultiBoot实现。固化分为SPI和BPI FLASH两种情况;启动分为SREC解析及加快启动模式的ELF直读;最后就是MultiBoot实现的时候应该注意什么。固化软核的固化和外部FLASH及应用程序大小有很大关系。小应用程序,使用BRAM即可运行,固化的时候和逻辑...原创 2024-11-25 08:31:05 · 1675 阅读 · 0 评论 -
FPGA实现串口升级及MultiBoot(九)BPI FLASH相关实例演示
与SPI相关知识并没有什么太多区别(别杠硬件或者架构上),相关知识点都在上面指出,大家有什么其他需要注意点,欢迎留言讨论。关于“四样错误”就不演示了,没什么太大区别,下一讲我们开始串口升级。PS:为了扩展ICAPE2原语的使用,在原来的基础上增加了几个常用FPGA ID,并在触发启动时候增加了可选电平触发或上升/下降沿触发(例化IP时选择),新版本号V1.1。原创 2024-11-22 19:31:09 · 767 阅读 · 1 评论 -
FPGA实现串口升级及MultiBoot(八)四样错误实例演示
这样一个指令、二种位流、三种方式、四样错误就用实例讲解完毕,调试过程中主要观察状态寄存器状态可以快速定位问题。大家在使用上面例程时候主要观察跳转地址和烧写进FLASH的地址关系,即下图:之前的文章都是以SPI FLASH为主,下一篇文章讲讲BPI FLASH及相关例程。原创 2024-11-10 21:46:59 · 655 阅读 · 0 评论 -
FPGA实现串口升级及MultiBoot(七)AXI HWICAP实例讲解
三种嵌入IPROG命令的方式介绍完毕,第一种方式,通过配置(bit)文件嵌入IPROG命令,实现最简单,占用资源也最少。但是只能支持一个Update Bit文件。第二种和第三种方式,通过原语写入或者通过AXIHWICAP写入IPROG命令,在下发IPROG命令前,可以任意指定Flash地址,非常灵活。但是第三种方式需要嵌入MicroBlaze和AXIHWICAP,需要占用部分FPGA资源,也需要一点软件开发基础,不过难度不大,官方例程也基本把问题解决了。原创 2024-11-10 11:25:10 · 753 阅读 · 0 评论 -
FPGA实现串口升级及MultiBoot(六)ICAPE2原语实例讲解
FPGA实现串口升级及MultiBoot(五)通过约束脚本添加IPROG实例中通过配置(bit)文件嵌入IPROG命令,实现最简单,占用资源也最少,但是只能支持一个Update Bit文件。今天通过ICAPE2原语进行控制可以任意指定Flash地址,非常灵活。下一讲我们讲一下ICAPE2的"变形体”-AXI HWICAPIP的使用。原创 2024-11-09 17:43:57 · 1053 阅读 · 1 评论 -
FPGA实现串口升级及MultiBoot(五)通过约束脚本添加IPROG实例
上一篇文章种总结了MultiBoot 关键技术,分为:一个指令、二种位流、三种方式、四样错误。针对以上四句话我们接下来详细分析。在开始解析之前我们先准备两个文件,一个是控制LED闪烁的文件,通过更换引脚约束可以控制不同LED,这样就可以指示是启动MultiBoot位流还是Golden位流。还有一个文件就是uart发送文件,会指示启动的位流格式和启动地址。文件都比较简单,就不列举了,文件详见文后的链接。对于 IPROG 指令目前有三种实现方式,分别为:1)通过约束脚本添加;2)通过ICAPE2原语原创 2024-11-09 17:29:27 · 815 阅读 · 3 评论 -
FPGA实现串口升级及MultiBoot(十一)QuickBoot介绍
MultiBoot在流行前官方也推出过QuickBoot作为保证升级的方式,但是不知什么原因,该方式的参考例程已经被官方PASS掉了,下面是官方的说明:https://adaptivesupport.amd.com/s/article/000036833?language=en_US至于原因,后面我们总结时候再分析。介绍使用MultiBoot进行远程更新的架构如下:图1:MultiBoot远程更新...原创 2024-10-29 13:30:22 · 1781 阅读 · 4 评论 -
FPGA实现串口升级及MultiBoot(四)MultiBoot简介
缩略词索引:K7:Kintex 7V7:Vertex 7A7:Artix 7我们在正常升级的过程(只使用一个位流文件),假如:(1)因为干扰通信模块收到了一个错误位;(2)或者烧写进FLASH时突然断电,导致位流文件不完整;(3)再或者使用软核升级应用程序时,突然断电或者接收文件错误,导致应用程序启动不了;(4)再再或者外场人员烧写了不适配本FPGA的升级程序。以上这些都是我们升级时候常见的问题,...原创 2024-09-12 08:30:26 · 2332 阅读 · 0 评论 -
FPGA实现串口升级及MultiBoot(三)FPGA启动加载方式
缩略词索引:K7:Kintex 7V7:Vertex 7A7:Artix 7上一篇中介绍了FPGA的启动步骤,如图0 所示,今天这篇文章就要在上一篇文章基础上进行分支细化,首先我们先了解FPGA 启动加载的几种方式。同时对于我们设计中常见的几个问题将在文章最后详细讨论,比如HEX、BIN、MCS区别,在生成MCS时候Bit Swap什么作用,Bitstream 压缩到底在压缩什么等问题进行详细探讨...原创 2024-09-05 08:31:04 · 3919 阅读 · 0 评论 -
FPGA实现串口升级及MultiBoot(二)FPGA启动流程
这个系列开篇肯定要先了解FPGA的启动流程,试想一下:我想实现MultiBoot,那么我应该在什么时候开始升级,升级失败后FPGA进行了哪些操作,以及怎么回到Golden区?还有一个问题,就是我硬件打板回来,烧写进FLASH后起不来,这应该怎么排查?缩略词索引:K7:Kintex 7V7:Vertex 7A7:Artix 7以上所有这些的前提就是理解FPGA启动流程。图0:7系列FPGA启动步骤-...原创 2024-09-02 08:30:58 · 2346 阅读 · 0 评论