壹伍柒$zbp->name

易灵思多镜像配置功能 -v2

外部更新

外部更新通过CBSEL来选择,选择External Controller Flash Image。FPGA启动的第一个镜像是从CBSEL的选择来决定的。

另外,只有Trion系列才支持外部更新,而钛金系列只支持内部更新。

wKgZO2gm6qaAVsoKAAC4o1er0dM500.png

● CBSEL = 00 for image 1

●CBSEL =01 for image 2

●CBSEL = 10 for image 3

●CBSEL = 11 for image 4

内部更新

除通过外部多功能IO来选择之外,易灵思通过内部重配置实现远程更新操作也非常简单。

(1)使能内部重配置接口

1、在interface Designer中选择Device Setting ->Configuration

2、打开Enable Internal Reconfiguration Interface

3、生成例化接口添加到top文件。

wKgZO2gm6qaALdasAAKcfwyqJgg346.png

关于重配置接口就以下几个信号

inputcfg_ERROR,output[1:0]cfg_CBSEL,output cfg_CONFIG,output cfg_ENA

其中_CBSEL就是选择那个image的。ENA拉高就可以启动相应image加载。

(2)重配置过程操作

1、通过_CBSEL选择相应的image;

2、拉高_ENA;

3、使能_CONFIG为高;

4、如果_ERROR为0重配置成功。

(3)组合image文件的生成

1、在Efinity Programmer中,点击combine multiple Image Files项。

(2)Image Type要选择Remote Update Flash Image.

在CBSEL为00的地方添加golden image,其余添加APP_image即可以,地址如果不给定,会自动分配。填写输出文件,点击apply生成即可。

wKgZO2gm6qaAfqBrAAC6uDW_Xm4488.png

点击Apply之后会生成两个文件,一个是合并的hex文件,另一个是.rpt文件,rpt文件内部指定了每个CBSEL对应该的镜像地址,文件长度及合并文件的对应位置。

wKgZO2gm6qaAHQ2wAADWr5L7ru8036.pngwKgZO2gm6qeANfhKAAF8dAtbGGA897.png

更详细的信号请参考易灵思AN010.

1、通过内部重配置远程更新也要注意在上电时外部CSEL管脚的状态,如果没有指向goden image或者app image,那么会要等待一段时间,文档说应该会加载6次,大概41s。

2、下面是重配置流程图。

(1)上电之后,CRESET_N上升沿触发配置过程。

(2)golden image加载完成之后进入user mode;

(3)用户启动重配置触发,配置新image;

(4)如果配置成功则进入user mode,如果没有配置成功则会加载6次;

(5)6次之后_ERROR拉高,并再次加载golden image;

(6)如果不想反复以上操作可以通过检测_ERROR来禁止下次的New image配置触发。

wKgZO2gm6qeAPySFAAF4-B-c8Z0681.png

下面提供一个demo,CONFIG只需要拉高一个时钟周期即可

链接:https://pan.baidu.com/s/1V2BdogNYOw0kYWH7F60Dkg

提取码:1234

案例说明

假设有4个App,分别为app1.hex(golden),app2.hex,app3.hex,app4.hex,合并为combine.hex。为4个app的地址分配依次为0x0,0x200000,0x400000,0x600000程序的功能为“app1 ->app2 ->app3 ->app4-> app1...”循环跳转。

当把combine.hex烧写入flash中后,可以看到程序按照我们的设想循环跳转。

当我们单独把app2.hex重新写入0x200000,再重新运行时,发现运行过程为“app1 -> app2->app1 -> app2...",也就是说程序不再向app3跳转。

这是为什么呢?其实在合并的过程中,在个app的前面都会写入(line329-337)每个app的存放地址,单独的app文件是没有该地址的,或者说明默认的地址是0,所以上面的app2会再次跳转到app1。

解决方案是什么呢?新建efx_pgm_settings.ini,输入如下信息:

wKgZO2gm6qeANGgJAAAOIyYy12w937.png 放入工程目录下,再次运行生成数据流。这样之后再次把app2写入0x200000地址,重新上电,运行过程即可正常。

审核编辑 黄宇

  • 随机文章
  • 热门文章
  • 热评文章

相关文章