Skip to content

Block Device Support List

Zhiyong Li edited this page Dec 12, 2024 · 5 revisions

Mbed CE features some useful generic block device drivers, such as SPIFBlockDevice for SPI flashes and I2CEEBlockDevice for EEPROMs. These drivers support a wide range of block devices. However, there is not a great reference of what specific part numbers have actually been tested with these drivers -- some memory chips do work while others do not comply with the standard and currently do not work.

To address this issue, this page will list which specific memory chips have been tested with which drivers.

SPIFBlockDevice (SFDP SPI flashes)

Part Number Size Results Notes
S25FL256L 32MiB Works but with caveat, can init, erase, program, but eraze_size is different from default 4KB. Sectors on some S25FL256L are organized as hybrid combination of 4KB and 64KB sectors. TO be safe, please use 64KB or larger as erase size. Newer generation such as S25FL256S doesn't work.

QSPIFBlockDevice (QSPI flashes)

Part Number Size Results Notes
Renesas AT25SF128A 16MiB Works. Requires the following mbed_app.json settings in target_overrides: "qspif.QSPI_POLARITY_MODE": "QSPIF_POLARITY_MODE_1", "qspif.enable-and-reset": true This flash needs special settings since it has a VERY basic SFDP table.
Micron MT25QL512 32MiB Works. Tested on DISCO_F746NG board

OSPIFBlockDevice (OSPI flashes)

Part Number Size Results Notes

I2CEEBlockDevice (I2C EEPROMs)

Part Number Size Results Settings
Microchip 24FC02-I/SN 2kiB Works, but large reads have a problem. Fast Mode Plus not tested yet. size=2048, address=0xA0, block=8, address_is_eight_bit=true
Microchip 24FC64-I/SN 64kiB Works. Fast Mode Plus not tested yet. size=65536, address=0xA0. block=32, address_is_eight_bit=false
Hua Hong K24Cxx 256B-2kiB Works according to here address=0xA0 (by default), block=8 or 16, address_is_eight_bit=true