Intel MAX 10系列远程更新的实现

为什么要进行远程更新

首先我们要清楚为啥要有远程更新更新功能。我之前从事医疗设备的FPGA开发,生产的设备都有机盖,板卡的逻辑功能每隔一段时间可能就需要升级。如果每次升级都打开机架、伸手去插JTAG,估计售后团队要骂人了,特别是一些很重的医疗设备,非常的不方便。

另一方面,有的产品相同的板卡有很多块,比如CT系统里的前端探测器板卡,一台CT机可能就有100-200块,如果我们一块一块插JTAG去升级…..一块两分钟,半天时间就过去了,不过用来摸鱼还挺方便的~so,我们一般通过广播的方式把升级文件下载到各自的flash里,这样就可以节约大量时间啦。

上电加载过程和升级过程简介

MAX10系列的启动流程如图所示,上电后会采样CONFIG_SEL pin的值,高电平则从image1加载,低电平则从image0加载。板卡的硬件如果这个引脚接的是高电平,每次上电就会从image1加载,加载失败再加载image0,因此我们把image1定为APP版本,image0定为factory版本(每次上电都应该加载APP版本,然后factory版本是之前的老版本带有更新APP版本的功能即可)

两个版本的flash存储地址范围如下图所示,image1即factory版本,image2即APP版本,我们每次升级都是对APP版本对应的flash地址进行更新。Image1的sectorID是5,image2的sectorID是3-4(这里是image1-2,其实就是image0-1,文档和工具里不一致)。

整个升级过程包含几个步骤:

1.解除对应image的sector保护,通过On-ChipFlash 这个IP的avalon-csr接口控制。

2.擦除对应image的sector,通过On-ChipFlash 这个IP的avalon-csr接口控制。

3.更新flash里的数据,通过On-ChipFlash 这个IP的avalon接口写入flash。

前三条参考手册<<On-ChipFlash Intel FPGA IP Core References>>

4.不下电的情况下重配置,通过dualboot这个IP控制。

参考手册<<Intel®MAX® 10 FPGA Configuration User Guide>>第五章节

生成远程更新所需的rpd文件

首先我们做工程的时候,要在Assignment->Device->Deviceand Pin Options里选择internalConfiguration 以及Dual CompressedImages(这是因为远程升级一般都存两个版本,不然如果只有一个版本的话,升级失败后就成砖头了)。

第一次下载程序肯定是通过JTAG下载(不会有人觉得第一次固化程序就可以远程升级吧?不会吧不会吧?),需要用sof文件生成一个pof文件。

按下图所示配置,第一次通过JTAG烧写我们fac和app版本肯定都是一样的。Page_0即是image0(sector5),Page_1是image1(sector3-4)

可以通过生成的map文件确认地址范围,可以看出和生成IP时有一定0x800的地址偏移,这个写入flash的地址以生成on-chip-flash这个IP时的地址为准,不要看map文件里的地址。

下面是新APP版本的rpd文件生成方法,程序更新换代然后编译后会有新版本的app_new.sof文件,按如图所示配置

图中画红框的部分需要注意,一是要选择生成rpd文件,二是要把新的app版本放到page1的位置(这个放反也无所谓,两个image的地址范围是一样大的,生成的rpd文件也一样大,但是如果放到Page0位置,后面就选择cfm0.rpd作为升级文件,放到Page1位置,就选择cfm1.rpd作为升级文件,当然如果两个Page都是用的app_new.sof,后面选择哪一个都可以了,我们只是需要代表最新APP_new版本的rpd文件)

点击generate后会得到如下的rpd文件,image0_fac_image1_app_new_cfm1_auto.rpd(因为前面放到了Page1的位置)即是升级所需的rpd文件。

用它自动生成的rpd文件写入flash,每次升级写入flash的32bit数据个数为0x8c00个(也就是(0x4E000-0x2B000)/4,也等于(0x2b000 - 0x08000)/4),这样我们就不用按照手册上说的去从map文件里查到底多少数据是有用的,再复制出来存为一个新的rpd文件,直接从image的起始地址到结束地址全写进去,你会发现,这个rpd文件的大小刚好等于结束地址-起始地址。整个升级时间不会很长。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值