UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Participant mwerner2000
Participant
301 Views
Registered: ‎06-05-2015

Spartan-6 Special Multiboot Scenario

Dear Ladies and Gentlemen,

 

I am having issues with the multiboot setup using Planahead.

 

What I want to achieve:

We have several FPGA Images which shall be selected using data stored in an EEPROM. Therefore it is neccessary to ALWAYS boot the golden image, read the EEPROM, use the ICAP to load the selected image. On top of that, I want the fallback to happen to the golden image which when realizing that the last attempt failed should not try loading another image, so that the broken image can be updated.

 

What is the Problem?:

Well, booting into the golden image and loading any of the available other images works like a charm. BUT: fallback does not work. When I try to load a corrupted image the golden image is loaded again, but the BOOTSTS register does not contain the fallback flag.

 

I am assuming this is because my primary multiboot image is the golden image and when parsing the multiboot header an IPROG is issued to load the golden image "normally", which then results in the BOOTSTS register to not contain the fallback flag.

 

Is this method of loading the golden image as multiboot image and fallback image at the same time even possible?

 

Best regards,

Martin

0 Kudos
4 Replies
Participant mwerner2000
Participant
277 Views
Registered: ‎06-05-2015

Re: Spartan-6 Special Multiboot Scenario

The same issue appears when using the multiboot as intended (Golden Image @ 0x00000044 and Regular Image @ 0x00080000) and the bitgen settings changed accordingly. The reboot occurs, but no Fallback flag is set in the BOOTSTS register.

 

Results when using Impact to tead the status regs:

'1': Reading bootsts register contents...
[0] VALID_0 - ERROR OR END OF STARTUP (EOS) DETECTED                       :         1
[1] FALLBACK_0 - FALLBACK RECONFIGURATION ATTEMPT DETECTED                 :         0
[2] RESERVED                                                               :         0
[3] WTO_ERROR_0 - WATCHDOG TIME OUT ERROR                                  :         0
[4] ID_ERROR_0 - FPGA DEVICE IDCODE ERROR                                  :         0
[5] CRC_ERROR_0 - CYCLIC REDUNDANCY CHECK (CRC) ERROR                      :         0
[6] VALID_1 - ERROR OR END OF STARTUP (EOS) DETECTED                       :         0
[7] FALLBACK_1 - FALLBACK RECONFIGURATION ATTEMPT DETECTED                 :         0
[8] RESERVED                                                               :         0
[9] WTO_ERROR_1 - WATCHDOG TIME OUT ERROR                                  :         0
[10] ID_ERROR_1 - FPGA DEVICE IDCODE ERROR                                 :         0
[11] CRC_ERROR_1 - CYCLIC REDUNDANCY CHECK (CRC) ERROR                     :         0
[12] STRIKE CNT - STRIKE COUNT FOR FALLBACK ATTEMPTS                       :         1
[13] STRIKE_CNT - STRIKE COUNT FOR FALLBACK ATTEMPTS                       :         0
[14] STRIKE_CNT - STRIKE COUNT FOR FALLBACK ATTEMPTS                       :         0
[15] STRIKE_CNT - STRIKE COUNT FOR FALLBACK ATTEMPTS                       :         0
'1': Reading status register contents...
[0] CRC ERROR                                                              :         0
[1] IDCODE ERROR                                                           :         0
[2] DCM LOCK STATUS                                                        :         1
[3] GTS_CFG_B STATUS                                                       :         1
[4] GWE STATUS                                                             :         1
[5] GHIGH STATUS                                                           :         1
[6] DECRYPTION ERROR                                                       :         0
[7] DECRYPTOR ENABLE                                                       :         0
[8] HSWAPEN PIN                                                            :         1
[9] MODE PIN M[0]                                                          :         1
[10] MODE PIN M[1]                                                         :         1
[11] RESERVED                                                              :         0
[12] INIT_B PIN                                                            :         1
[13] DONE PIN                                                              :         1
[14] SUSPEND STATUS                                                        :         0
[15] FALLBACK STATUS                                                       :         0

Bitgen Options for the Golden Image:

+----------------------+----------------------+
| Option Name          | Current Setting      |
+----------------------+----------------------+
| Compress             | (Not Specified)*     |
+----------------------+----------------------+
| Readback             | (Not Specified)*     |
+----------------------+----------------------+
| CRC                  | Enable*              |
+----------------------+----------------------+
| DebugBitstream       | No*                  |
+----------------------+----------------------+
| ConfigRate           | 22                   |
+----------------------+----------------------+
| StartupClk           | Cclk*                |
+----------------------+----------------------+
| DonePin              | Pullup*              |
+----------------------+----------------------+
| ProgPin              | Pullup*              |
+----------------------+----------------------+
| TckPin               | Pullup*              |
+----------------------+----------------------+
| TdiPin               | Pullup*              |
+----------------------+----------------------+
| TdoPin               | Pullup*              |
+----------------------+----------------------+
| TmsPin               | Pullup*              |
+----------------------+----------------------+
| UnusedPin            | Pullup               |
+----------------------+----------------------+
| GWE_cycle            | 6*                   |
+----------------------+----------------------+
| GTS_cycle            | 5*                   |
+----------------------+----------------------+
| LCK_cycle            | NoWait*              |
+----------------------+----------------------+
| DONE_cycle           | 4*                   |
+----------------------+----------------------+
| Persist              | No*                  |
+----------------------+----------------------+
| DriveDone            | Yes                  |
+----------------------+----------------------+
| DonePipe             | No*                  |
+----------------------+----------------------+
| Security             | None*                |
+----------------------+----------------------+
| UserID               | 0xFFFFFFFF*          |
+----------------------+----------------------+
| ActiveReconfig       | No*                  |
+----------------------+----------------------+
| Partial              | (Not Specified)*     |
+----------------------+----------------------+
| Encrypt              | No*                  |
+----------------------+----------------------+
| Key0                 | pick*                |
+----------------------+----------------------+
| StartCBC             | pick*                |
+----------------------+----------------------+
| KeyFile              | (Not Specified)*     |
+----------------------+----------------------+
| drive_awake          | No*                  |
+----------------------+----------------------+
| Reset_on_err         | Yes                  |
+----------------------+----------------------+
| suspend_filter       | Yes*                 |
+----------------------+----------------------+
| en_sw_gsr            | No*                  |
+----------------------+----------------------+
| en_suspend           | No*                  |
+----------------------+----------------------+
| sw_clk               | Startupclk*          |
+----------------------+----------------------+
| sw_gwe_cycle         | 5*                   |
+----------------------+----------------------+
| sw_gts_cycle         | 4*                   |
+----------------------+----------------------+
| multipin_wakeup      | No*                  |
+----------------------+----------------------+
| wakeup_mask          | 0x00*                |
+----------------------+----------------------+
| ExtMasterCclk_en     | No*                  |
+----------------------+----------------------+
| ExtMasterCclk_divide | 1*                   |
+----------------------+----------------------+
| CrcCoverage          | No*                  |
+----------------------+----------------------+
| glutmask             | Yes*                 |
+----------------------+----------------------+
| next_config_addr     | 0x00080000           |
+----------------------+----------------------+
| next_config_new_mode | Yes                  |
+----------------------+----------------------+
| next_config_boot_mode | 001**                |
+----------------------+----------------------+
| next_config_register_write | Disable              |
+----------------------+----------------------+
| next_config_reboot   | Enable**             |
+----------------------+----------------------+
| golden_config_addr   | 0x00000044           |
+----------------------+----------------------+
| failsafe_user        | 0x0000*              |
+----------------------+----------------------+
| TIMER_CFG            | 0x1FFF               |
+----------------------+----------------------+
| spi_buswidth         | 4                    |
+----------------------+----------------------+
| TimeStamp            | Default*             |
+----------------------+----------------------+
| IEEE1532             | No*                  |
+----------------------+----------------------+
| Binary               | No*                  |
+----------------------+----------------------+

Bitgen Options for the regular Image:

+----------------------+----------------------+
| Option Name          | Current Setting      |
+----------------------+----------------------+
| Compress             | (Not Specified)*     |
+----------------------+----------------------+
| Readback             | (Not Specified)*     |
+----------------------+----------------------+
| CRC                  | Enable*              |
+----------------------+----------------------+
| DebugBitstream       | No*                  |
+----------------------+----------------------+
| ConfigRate           | 22                   |
+----------------------+----------------------+
| StartupClk           | Cclk*                |
+----------------------+----------------------+
| DonePin              | Pullup*              |
+----------------------+----------------------+
| ProgPin              | Pullup*              |
+----------------------+----------------------+
| TckPin               | Pullup*              |
+----------------------+----------------------+
| TdiPin               | Pullup*              |
+----------------------+----------------------+
| TdoPin               | Pullup*              |
+----------------------+----------------------+
| TmsPin               | Pullup*              |
+----------------------+----------------------+
| UnusedPin            | Pullup               |
+----------------------+----------------------+
| GWE_cycle            | 6*                   |
+----------------------+----------------------+
| GTS_cycle            | 5*                   |
+----------------------+----------------------+
| LCK_cycle            | NoWait*              |
+----------------------+----------------------+
| DONE_cycle           | 4*                   |
+----------------------+----------------------+
| Persist              | No*                  |
+----------------------+----------------------+
| DriveDone            | Yes                  |
+----------------------+----------------------+
| DonePipe             | No*                  |
+----------------------+----------------------+
| Security             | None*                |
+----------------------+----------------------+
| UserID               | 0xFFFFFFFF*          |
+----------------------+----------------------+
| ActiveReconfig       | No*                  |
+----------------------+----------------------+
| Partial              | (Not Specified)*     |
+----------------------+----------------------+
| Encrypt              | No*                  |
+----------------------+----------------------+
| Key0                 | pick*                |
+----------------------+----------------------+
| StartCBC             | pick*                |
+----------------------+----------------------+
| KeyFile              | (Not Specified)*     |
+----------------------+----------------------+
| drive_awake          | No*                  |
+----------------------+----------------------+
| Reset_on_err         | Yes                  |
+----------------------+----------------------+
| suspend_filter       | Yes*                 |
+----------------------+----------------------+
| en_sw_gsr            | No*                  |
+----------------------+----------------------+
| en_suspend           | No*                  |
+----------------------+----------------------+
| sw_clk               | Startupclk*          |
+----------------------+----------------------+
| sw_gwe_cycle         | 5*                   |
+----------------------+----------------------+
| sw_gts_cycle         | 4*                   |
+----------------------+----------------------+
| multipin_wakeup      | No*                  |
+----------------------+----------------------+
| wakeup_mask          | 0x00*                |
+----------------------+----------------------+
| ExtMasterCclk_en     | No*                  |
+----------------------+----------------------+
| ExtMasterCclk_divide | 1*                   |
+----------------------+----------------------+
| CrcCoverage          | No*                  |
+----------------------+----------------------+
| glutmask             | Yes*                 |
+----------------------+----------------------+
| next_config_addr     | 0x00000000*          |
+----------------------+----------------------+
| next_config_new_mode | Yes                  |
+----------------------+----------------------+
| next_config_boot_mode | 001*                 |
+----------------------+----------------------+
| next_config_register_write | Disable              |
+----------------------+----------------------+
| next_config_reboot   | Disable              |
+----------------------+----------------------+
| golden_config_addr   | 0x00000000*          |
+----------------------+----------------------+
| failsafe_user        | 0x0000*              |
+----------------------+----------------------+
| TIMER_CFG            | 0x1FFF               |
+----------------------+----------------------+
| spi_buswidth         | 4                    |
+----------------------+----------------------+
| TimeStamp            | Default*             |
+----------------------+----------------------+
| IEEE1532             | No*                  |
+----------------------+----------------------+
| Binary               | No*                  |
+----------------------+----------------------+

I read the ug380, several ARs, searched the forum and I couldn't find a solution to this problem. Does anyone have an idea why the fallback is not triggered?

 

Best Regards,

Martin

0 Kudos
Participant mwerner2000
Participant
249 Views
Registered: ‎06-05-2015

Re: Spartan-6 Special Multiboot Scenario

Hi,

 

another strange thing I observed is that I am unable to use the "-g next_config_reboot:Disable" bitgen option, because Promgen complains when I feed it a bitstream with this setting.

I get the following Promgen error:

 

ERROR:Bitstream - Invalid packet at word 29 of 170746 in the bitstream.

 

I would would assume that this option is needed for the multiboot bitstreams, cuz otherwise the IPROG embedded in the header of those images will just boot the golden image instead of skipping the header and continuing to load the multiboot image.

 

Any idea why this is happening?

 

Best Regards,

Martin

0 Kudos
Participant mwerner2000
Participant
246 Views
Registered: ‎06-05-2015

Re: Spartan-6 Special Multiboot Scenario

Am I assuming right that there shouldn't be a multiboot header in the regular images? How can I get rid of these headers? The option "-g next_config_register_write:disable" does not seem to work.

0 Kudos
Participant mwerner2000
Participant
218 Views
Registered: ‎06-05-2015

Re: Spartan-6 Special Multiboot Scenario

Noone can help me with this?

0 Kudos