Forum Discussion

Jcole's avatar
Jcole
Icon for Occasional Contributor rankOccasional Contributor
2 years ago
Solved

Generic serial flash interface can't WR/RW past certain address limit

I'm using a Cyclone 10LP and the flash is a Cypress S25FL256S. I've gotten familiar with reading and writing using the GSFI module but having a problem accessing the address past byte address 0x0001FFFF (Avalon memory address x07FFF). I'm using 4-byte addressing on all commands (Sector erase, write, and read) but when I try to read back the data written to 0x00020000 (Avalon memory 0x08000), I read back all 0's. Not sure if this is a limitation of the Cyclone 10LP or if I'm using the correct commands or not, both 3-byte and 4-byte commands result in the same behaviour. If I use address 0x0 to 0x0001FFFF the read and write operations work fine. Worst case this may be a damaged flash device.

  • Found the issue, the state machine was passing the 22-bit RSU addressing to the erase command instead of the 32-bit byte address, so the address that was being used to erase was pointed to almost half of where we needed it to be.

3 Replies

  • Farabi's avatar
    Farabi
    Icon for Regular Contributor rankRegular Contributor

    "We sincerely apologize for the inconvenience caused by the delay in addressing your Forum queries. Due to an unexpected back-end issue in our system, your Forum cases, along with others, did not get through as intended. As a result, we have a backlog of cases that we are currently working through one by one.

    Please be assured that we are doing everything we can to resolve this issue as quickly as possible. However, this process will take some time, and we kindly ask for your patience and understanding during this period. The cases will be attended by AE shortly.

    We appreciate your patience and understanding, and we are committed to providing you with the best support possible.

    Thank you for your understanding."


  • Jcole's avatar
    Jcole
    Icon for Occasional Contributor rankOccasional Contributor

    Found the issue, the state machine was passing the 22-bit RSU addressing to the erase command instead of the 32-bit byte address, so the address that was being used to erase was pointed to almost half of where we needed it to be.

  • Farabi's avatar
    Farabi
    Icon for Regular Contributor rankRegular Contributor

    Hello,


    The S25FL256S supports both 3-byte (24-bit) and 4-byte (32-bit) addressing modes.

    Addresses beyond 0x00FFFFFF require 4-byte addressing. If the memory is not properly set to 4-byte mode, any commands using 4-byte addresses will fail.


    regards,

    Farabi