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
- 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 athttps://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 libraySelect 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.
1. Flash features supported
This xilisf library supports basic operations like read(),write(),erase() etc as below
- Sector Erase
Below commands can be supported
> 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
> Normal Write
> Dual IP Page Write
> Dual IP Ext Page Write
> Quad IP Page Write
> Quad IP Ext Page Write
> OTP Write
> Buffer Write
- Flash Family based Read/Write
- interrupt examples
- OTP referenced examples
Following is the list of supported flash memories
W25Q16, W25Q32, W25Q64, W25Q80, W25Q128, W25X10,
W25X20, W25X40, W25X80, W25X16, W25X32, W25X64
S25FL004, S25FL008, S25FL016, S25FL032, S25FL064,
S25FL128, S25FL129, S25FL256, S25FL512, S70FL01G
N25Q032, N25Q064, N25Q128, N25Q256, N25Q512, N25Q00AA,
IS25LP080D, IS25WP080D, IS25LP016D, IS25WP016D, IS25LP032D,
IS25WP032D, IS25LP064A, IS25WP064A, IS25LP128F, IS25WP128F,
IS25LP256D, IS25WP256D, IS25LP512M, IS25WP512M
Known issues and limitations
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
- Added support for sub-sector erase
- Fix array index of writebuffer in fastreaddata
- design examples fail on ZCU102, resolved in 2017.3
- Added 4Byte addressing support for Micron devices
- Calculation for Die No without initialization rectified.
- Added support for S25FL-L series flash parts.
- Added a support for MT25Q512 series flash of 3V and 1.8V.
- 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
- 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.
- Added prints in Axi SPI examples
- Deprecation message Added in driver