multiboot
一个bin文件包含了两个程序
分为golden 和 update 两个区域
XILINX
xilinx golden 地址从0开始,通过xdc语句约束,可以跳转到指定的 update 区域
golden程序:
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
#跳转地址24'h400000
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x410000 [current_design]
#spi总线位宽
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 1 [current_design]
#开启回退
set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]
set_property BITSTREAM.CONFIG.TIMER_CFG 32'h00200000 [current_design]
update程序:
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
#spi总线位宽
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 1 [current_design]
#开启回退
set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]
set_property BITSTREAM.CONFIG.TIMER_CFG 32'h00200000 [current_design]
合并两个bit语句为一个bin文件:
write_cfgmem -format bin -interface SPIX1 -size 8 -loadbit "up 0 E:/Work/.bit up 0x0410000 E:/Work/.bit" E:/Work/MultiBoot.bin
更改工程后生成bin,覆盖update区域:
正常生成的bin不会bit swap(网上说不带bit swap不能升级成功,不知尊嘟假嘟)
用下面tcl生成的bin会bit swap
write_cfgmem -format bin -size 8 -interface SPIX1 -loadbit {up 0x0000000 "E:/Work/.bit" } -file "E:/Work/U3084/vna/RF/auto_tst_vna_uts3084_rf_a7_64m_multiboot/update_change.bin"
anlogic
update 地址从0开始,0xe0000为golden起始地址
注意:
1.anlogic擦除update区域时,不能擦除0xd0000!!!!
2.当Update Image开始运行,当出现CRC error或者IDCODE error时,会fallback到Golden Image去运行。这个机制,类似于单片机中的Boot程序+应用程序,两个程序分别位于Flash的不同地址空间。
2、错误类型
CRC error
IDCODE error
Watchdog timer time-out error
由于前两种错误类型不常出现,倒是远程更新Update Image的过程中,出现烧写不成功时,例如烧写一半断电,这种是不会触发前两种错误去fallback的,远程更新就失去了意义。
这里必须应用第三种错误Watchdog timer time-out error,让它超时自动跳转。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_22324309/article/details/126140662
3.anlogic不涉及Watchdog timer time-out error