远程更新FPGA配置的热启动地址(WBSTAR)的格式?
MultiBoot的大致过程如下图:
MultiBoot的配置文件由两个比特流文件生成,第一个为备份文件,永远都不会变,称为Golden_image,从Flash的0地址存储。
第二个为更新文件,后面远程更新,更新的就是这个文件,称为Update_image,存放在某个地址处,这个地址有热启动地址寄存器(WBSTAR)指定。
配置过程大致如下:
FPGA从FLASH的0地址处读取配置,遇到IPROG Command命令时,跳转到WBSTAR寄存器指定的地址,该地址存放Update_image的地址,此时FPGA尝试加载该地址处的比特流文件,配置成功的话,就执行该配置的功能。如果遇到配置错误,则触发FallBack,FPGA重新加载Golden_image。
IPROG命令嵌入到Golden_image中,如何嵌入,需要调用一个ICAPE3的原语。
上面就牵扯到这个WBSTAR寄存器的格式,根据自己的要为Update_image分配在FLASH的地址,按照下面的格式生成一个32位数据。
例如,我为Update_image分配的flash地址为2000000。
令RS[1:0]为00,RS_TS_B为1,则地址放入寄存器按格式变为:22000000;RS[1:0]以及RS_TS_B的含义,以后讨论。
之后,这还不是可以放入寄存器的地址,需要进行比特交换:
同样是上面的例子:2200_0000最终为4400_0000.
文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。
原文链接:reborn.blog.csdn.net/article/details/88949882
- 点赞
- 收藏
- 关注作者
评论(0)