Introduction

This page provides details related to the xilisf library.
  • Allows you to Write, Read, and Erase the Serial Flash.
  • Allows protection of the data stored in the Serial Flash from unwarranted modification by enabling the Sector Protection feature.
  • Supports multiple instances of Serial Flash at a time, provided they are of the same device family
    (Atmel, Intel, STM, Winbond, SST, or Spansion) as the device family is selected at compile time.
  • Allows the user application to perform Control operations on Intel, STM, Winbond, SST, and Spansion Serial Flash.
  • Requires the underlying hardware platform to contain the axi_quad_spi, ps7_spi, ps7_qspi, psu_qspi,  psu_spi or psv_ospi device for accessing the Serial Flash.
  • Uses the Xilinx® SPI interface drivers in interrupt-driven mode or polled mode for communicating with the Serial Flash.
  • In interrupt mode, the application is required to register a callback to the library and the library registers an internal status handler to the selected
    interface driver.
  • When the user application requests a library operation, it is initiated and control is given back to the application. The library tracks the status of
    the interface transfers, and notifies the user application upon completion of the selected library operation.

How to enable

xilisf library can be found at
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_services/xilisf

xilisf
|
- data - Provides the API and data structure details
|
- src - Driver source files which are further organised into
|
- examples - Contains example applications demonstrating the use of xilisf libray
Select the xilisf library in Vitis 
  • Select Flash Family as below
1 for ATMEL. 2 for INTEL. 3 for STM (M25PXX). 4 for Winbond. 5 for Spansion / Micron. 6 for SST Flash
  • Select Flash interface as below
1 for AXI SPI. 2 for PS SPI. 3 for PS QSPI. 4 for PS OSPI
  • Library supports SPI PS, QSPI PS, QSPIPSU and OSPIPSV interfaces you must select one of the interfaces at compile time.
  • When the user application requests selection of QSPIPS interface during compilation, the QSPI PS or QSPI PSU interface, based on the hardware
    platform are selected. Similarly,if the SPIPS interface is selected during compilation, SPI PS or SPI PSU interface are selected. If PS OSPI is selected
    during compilation, OSPIPSV interface is selected.

Features supported

1. Flash features supported

This xilisf library supports basic operations like read(),write(),erase() etc as below
  • DeviceInfo
  • Read
  • Write
  • Erase
  • SectorProtect
  • WriteEnable
  • Sector Erase

Commands Supported

Below commands can be supported
  • Read
    > Normal Read
    > Fast Read
    > OTP Read
    > Dual OP Fast Read
    > Dual IO Fast Read
    > Quad OP Fast Read
    > Quad IO Fast Read
    > Octal IO Fast Read
  • Write
    > Normal Write
    > Dual IP Page Write
    > Dual IP Ext Page Write
    > Quad IP Page Write
    > Quad IP Ext Page Write
    > OTP Write
    > Buffer Write

Example Applications:
  • Flash Family based Read/Write
  • interrupt examples
  • OTP referenced examples

Following is the list of supported flash memories
Device SeriesManufacturer
AT45DB011DAT45DB021D
AT45DB041D
AT45DB081D
AT45DB161D
AT45DB321DAT45DB642D
Atmel

W25Q16, W25Q32, W25Q64, W25Q80, W25Q128, W25X10, 

W25X20, W25X40, W25X80, W25X16, W25X32, W25X64

Winbound

S25FL004, S25FL008, S25FL016, S25FL032, S25FL064,

S25FL128, S25FL129, S25FL256, S25FL512, S70FL01G

Spansion

N25Q032, N25Q064, N25Q128, N25Q256, N25Q512, N25Q00AA,

MT25Q01, MT25Q02

MT25QL01G, MT25QL02G

MT35XU512ABA

Micron

IS25LP080D, IS25WP080D, IS25LP016D, IS25WP016D, IS25LP032D,

IS25WP032D, IS25LP064A, IS25WP064A,   IS25LP128F, IS25WP128F,

IS25LP256D, IS25WP256D,  IS25LP512M, IS25WP512M

ISSI
MX66U1G45G, MX66L1G45GMacronix
SST26WF016BMicrochip

Known issues and limitations


Test cases

Test case ran by taking examples from example folder specified above
QSPIPSU FLASH Interrupt Example Test
Successfully ran QSPIPSU FLASH Interrupt Example Test
QSPIPSU FLASH Polling Example Test
Successfully ran QSPIPSU FLASH Polling Example Test
SPI FLASH Polled Example Test
Successfully ran SPI FLASH Polled Example Test
SPI FLASH Interrupt Example Test
Successfully ran SPI FLASH Interrupt Example Test

OSPIPSV FLASH Polling Example Test

Successfully ran OSPIPSV FLASH Polling Example Test

OSPIPSV FLASH Interrupt Example Test

Executing on the a72

Successfully ran OSPIPSV FLASH Interrupt Example Test


Change Log

  • 2016.3

    • Added support for sub-sector erase
  • 2016.4

    • Added FreeRTOS support
  • 2017.1

    • Fix array index of writebuffer in fastreaddata
  • 2017.2

    • design examples fail on ZCU102, resolved in 2017.3
  • 2017.3

    • Added 4Byte addressing support for Micron devices
    • Calculation for Die No without initialization rectified.
  • 2017.4

    • None
  • 2018.1

    • Added support for S25FL-L series flash parts.
    • Added a support for MT25Q512 series flash of 3V and 1.8V.
  • 2018.2

    • None
  • 2018.3

    • Added support for ISSI low density flash parts of size 8/16/32/64Mb of 3V and 1.8V variants
    • Added support for 1Gb flash parts from Macronix
    • Added support for 1Gb and 2Gb Flash parts from Micron of 3V variants
  • 2019.1

    • Summary
      • Added support for OSPI in Versal.
      • Added support for ISSI low density flash parts of size 128/266/512Mb of 3V and 1.8V variants.
      • Added support for SST26WF016B flash.
      • Added support for 3Byte sector erase and write for some micron flashes. 
    • Commits
  • 2019.2

    • Summary
      • Added prints in Axi SPI examples
      • Deprecation message Added in driver
    • Commits
  • 2020.1

    • Summary
      • None
    • Commits
      • None
  • 2020.2

    • Summary
      • Deprecate xilisf library
    • Commits

Related Links