Trouble Erasing Micron Flash using the Generic Serial Flash Interface
I am having troubles when I try to erase a Micron Flash (MT25QL256) using the Generic Serial Flash Interface in a Cyclone 5 (5CGTFD7C5). This 256Mbit flash part has 512 segments and each segment has 64Kbytes. I can erase certain portions of the flash but not the entire flash.
- Segments 0-31 can be erased
- Segments 32-127 will not erase
- Segments 128-159 can be erased
- Segments 160-255 will not erase
- I don't have data for segments 256 thru 511 but I am assuming they will follow a similar pattern and only the first 32 segments of the region will be erasable.
I know the part is not write protected because I can fill the entire flash using JTAG and a .JIC file.
I am using custom VHDL/Software (not a NIOS) to drive the Avalon busses on the GSFI core. I have narrowed it down to the core. I can watch the custom VHDL issue the proper erase commands, but they don't have any effect for the segments noted above. I have not put an oscilloscope on the QSPI interface to validate if the troublesome commands are making it through the core, nor have I checked to see if they are accurate on the oscilloscope. I only know that the command given to the core to erase segment 31 or 32 or.... has no effect, when I go dump the contents of the flash.
Could there be a licensing issue that "cripples" the core because the licenses are out of date? The tools, when I start them, are saying that "Your subscription has expired" but gives me the option to "Run the Quartus Prime software with existing license". I have searched the log files from the build, but it doesn't show any indication that I am working with an expired license, or working with evaluation versions of any of my cores.
Could there be a tool version issue? I think the core was generated using the 18.0 tools, but i am now using the 20.1 tools?