xilinix在线更新有两种方式,一种是使用ICAP原语,另一中是在xdc中约束,根据应用的场景不同,选用不同的启动方式,第二种更为简单。
可参考官方提供的手册和实例 XAPP1247 链接: XAPP1247
golden和updata.bit的程序设置一样,只是在xdc中对其进行不同的约束
注意这个偏移的地址,有的写法是32‘h0400000,这里还是推荐使用官方的这种写法,不然可能会出错(遇到了)。
上面是没有设置看门狗。
启动原理:
FPGA上电后,通过主动模式从flash加载程序,先进行SPI\BPI的读MIO模式识别,然后读取位宽对应的数据,判断当前的位宽,之后是同步头的读取,理论上只有一个比图时,直接从0地址开始读取bit数据,当时mulitboot模式下,golden中打开了IPROG指令,会通过IPROG指令,识别当前是否要进行updata.bin的地址读取和跳转,如果跳转,则读取updata.bit,校验和读取成功,则启动updata.bin,如果启动失败,则fallback返回000地址开始,并在热启动中,忽略IPROG命令,启动golden.bit。
有的在golden中将CONFIGFALLBACK 设置为disable,及禁止golden.bin进设置行启动失败跳转,这个设置成启动会不启动均没关系。
上面的xdc也可以在软件中设置
1、设置fallback使能,updata.bit中必须设置使能;
2、flash读取偏移地址,updata.bit中必须设置;
3、IPROG指令设置,golden.bit中必须设置使能;
4、看门狗设置,golden.bit中可设置可不设置;如果设置,一定要保证设置的时长是大于updata.bit启动加载的时长。