cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Visitor
Visitor
108 Views
Registered: ‎01-25-2013

Error, writing to partially protected memory: [Labtools 27-3347] Flash Programming Unsuccessful: cannot set write enable bit or block(s) protected

Hi all,

 

I am currently working on an unbrickable system with a golden fallback image and one or more multiboot images in SPI flash memory. To make the system unbrickable, I enable a partial write protection for the bottom 2MBytes of the memory. Those contain the golden image for a Spartan7 xc7s25.

Now, for testing, I am trying to write a multiboot image to the next 2MBytes of the device, using Vivado 2020.1 tools. I make sure to set the address range to "Configuration File Only" and use a mcs file with bitstream start address: 0x00200000.

When trying to program the memory with this mcs file, I get the following error:

[Labtools 27-3347] Flash Programming Unsuccessful: cannot set write enable bit or block(s) protected

The full TCL console output is attached below.

 

Some notes:

1) I have firmware which allows me to write the image to flash through a serial connection. When I try to do that for the same address range, it works just fine. I made sure to actually test the firmware.

2) By chance, I can try all this with two different memory devices (Macronix 32Mb, ISSI 128Mb) and the same FPGA and both give me the same result.

3) I checked the mcs file to confirm that it starts with the proper address offset, which is indeed 0x00200000.

 

I would like to use the Vivado tools to verify the write protection. Am I missing a setting here? I looked through other posts but could not find anything helpful for this situation.

Thanks in advance for your help. Let me know if there is any necessary information missing above.

Best,

Thomas

 

set_property PROGRAM.ADDRESS_RANGE  {use_file} [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7s25_0] 0]]
set_property PROGRAM.FILES [list "single_golden_2.mcs" ] [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7s25_0] 0]]
set_property PROGRAM.PRM_FILE {} [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7s25_0] 0]]
set_property PROGRAM.UNUSED_PIN_TERMINATION {pull-none} [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7s25_0] 0]]
set_property PROGRAM.BLANK_CHECK  0 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7s25_0] 0]]
set_property PROGRAM.ERASE  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7s25_0] 0]]
set_property PROGRAM.CFG_PROGRAM  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7s25_0] 0]]
set_property PROGRAM.VERIFY  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7s25_0] 0]]
set_property PROGRAM.CHECKSUM  0 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7s25_0] 0]]
startgroup 
create_hw_bitstream -hw_device [lindex [get_hw_devices xc7s25_0] 0] [get_property PROGRAM.HW_CFGMEM_BITFILE [ lindex [get_hw_devices xc7s25_0] 0]]; program_hw_devices [lindex [get_hw_devices xc7s25_0] 0]; refresh_hw_device [lindex [get_hw_devices xc7s25_0] 0];
INFO: [Labtools 27-3164] End of startup status: HIGH
INFO: [Labtools 27-2302] Device xc7s25 (JTAG device index = 0) is programmed with a design that has 1 SPI core(s).
program_hw_cfgmem -hw_cfgmem [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7s25_0] 0]]
Mfg ID : c2   Memory Type : 20   Memory Capacity : 16   Device ID 1 : 0   Device ID 2 : 0
Performing Erase Operation...
Erase Operation failed.
ERROR: [Labtools 27-3347] Flash Programming Unsuccessful: cannot set write enable bit or block(s) protected
ERROR: [Common 17-39] 'program_hw_cfgmem' failed due to earlier errors.

 

 

 

0 Kudos
1 Reply
Highlighted
Newbie
Newbie
28 Views
Registered: ‎09-17-2020

Did you manage to solve this error?

0 Kudos