Forum Discussion
Generic serial Flash interface sector erase problem
Hey,
I'm using the Reference design Generic Serial Flash Interface IP on Quartus Prime 18.1 to access Micron MT25QL512Mb flash memory.
Via NIOS processor, I able to erase the memory sector 0 (at address 0x00000000) data correctly in the 4-Byte address mode by the function:
void erase_sector_micron()
{
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x7,0x000004DC);
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x9,0x00000000);
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x8,0x1);
}
But when I try to erase another sector, like sector 1, I don't see the erasing actually happens:
void erase_sector_micron()
{
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x7,0x000004DC);
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x9,0x00010000);
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x8,0x1);
}
The sector 1 address is 0x10000 according to page 19 in the Datasheet:
I would like to get some help here,
Thanks
8 Replies
- Gyud0
Occasional Contributor
Can you help me please?
- hareesh
Frequent Contributor
hi Gyud0
I am working on it. please give me some time.
thanks.
- Gyud0
Occasional Contributor
My code in C:
int main()
{
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x7,0x00000006); --Write enable
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x8,0x00000001); --Write enable
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0xA,1); --Write enable
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x7,0x000004DC); --Erase sector
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x9,0x00010000); --Erase sector
IOWR(INTEL_GENERIC_SERIAL_FLASH_INTERFACE_TOP_0_AVL_CSR_BASE,0x8,0x00000001); --Erase sector
}
- hareesh
Frequent Contributor
Hi @Gyud0 ,
It's not a GSFI (Generic Serial Flash Interface) IP driver issue. The GSFI drivers are working fine. Please check Micron MT25QL512Mb flash memory access code because before erasing the sector, you have to disable device lock protection, write command passing, and some other commands also have to execute. In the Micron MT25QL512Mb datasheet, all the details are available. I am giving some reference example code links for the Micron MT25QL512Mb.
link:
https://github.com/STMicroelectronics/stm32-mt25ql512abb
thanks,