Showing results for 
Show  only  | Search instead for 
Did you mean: 

Causing fallback to occur when following XAPP1247 (with barrier images included)

5 1 1,619

XAPP1247 is an example application for Multiboot and Fallback when using Barrier Images.

This blog entry covers a method to test the barrier timer flow and an issue that can arise when doing so.

There are many different ways to test the barrier timer flow, including the two below:

  1. Remove the end of the image
  2. Attempt to corrupt the sync word


With option 1 (deleting the end of the image), it is possible to observe a fallback due to the time-out error.

However, with option 2 (corrupting the sync word) there can be issues.

Say for example that you edited the sync word from AA995566 to ABCDABCD to cause the corruption.

If the sync word is edited in a hex editor, then it loads the update image instead of falling back.


Why does it load the Update image, even if the sync word of the update image is corrupted?

The sync word has already been detected in Timer Image 1/Barrier Image1.

Because there is no DESYNC Word in Timer Image 1/Barrier Image1, it will not look for the sync word in the update image.

How to resolve the issue:

In this scenario, simply corrupting the sync word does not cause fallback to happen.

However if you add the DESYNC word after the timer image, the fallback to golden will happen.


How to add a DESYNC at the end of Timer Image 1/ Barrier Image1:

Open the MCS File in an editor. This contains the Golden image, Barrier Image1, the Multiboot image, and Barrier Image2.

At the end of Barrier Image1, add 30008001(Write CMD register) followed by 0000000D (DESYNC Word).

The screen capture below shows how to add 30008001 (Write CMD register) followed by 0000000D (DESYNC Word)

          Timer1 image.PNG       

Now save the MCS File.

You can now use this MCS File to boot from Flash and test correct fallback occurs.


  • The above method will be included in XAPP1247 in a future version of the document.
  • The barrier images flow is described in XAPP1247 for 7 series devices, and also applies to UltraScale and UltraScale+ devices.


1 Comment

I struggled getting the tcl command to work for generating the timer images in this XAPP. tclsh is not recognized as a valid command in Vivado. Was I supposed to run any commands before this? I feel like I'm missing something.

Finally, I tried the command below:
vivado -mode batch -source multiboot_address_table.tcl -notrace -tclarg spi 4 50 256 3007234

This seemed to generate the timer images correctly. Does this look right to anyone else? I haven't tested this yet, but maybe the XAPP have additional information regarding how exactly to run the TCL command.

I appreciate any support or feedback on this. I'm new to using TCL so it's possible that I am using the command line totally wrong. Thanks!