On-board 4MB SPI flash


The datasheets for the Argon, Boron, and Xenon show an on-board additional 4MB SPI flash, if I’m not mistaken wasn’t this originally 2MB?

More importantly, do we have access to this 4MB SPI flash? All of it, some of it? How do we access it? I know the Photon and Electron have the EEPROM libary which emulates 2047 bytes, but there’s no mention about the Mesh devices.


There has been an update post on the improved QSPI flash and yes it is supposed to be accessible.

I think the APIs to write to these areas aren’t finalised yet, but reading should be transparent - if I’m not mistaken.


The mesh devices support the same EEPROM calls as before. However, the virtual EEPROM is 4 K bytes

Also, internally it’s not implemented as two flash sectors; it’s just a file in the littlefs file system, which uses a portion of the external QSPI flash.


The question now is how to access the remaining 3.9MB of flash?


The vast majority of the external QSPI flash is reserved:

External SPI Flash Layout Overview (DFU offset: 0x80000000)
OTA (1500KB, @0x00289000)
Reserved (420KB, @0x00220000)
FAC (128KB, @0x00200000) (that’s the factory backup user firmware image)
LittleFS (2M, @0x00000000)

It is possible in the future that a portion of the Reserved block could be made available, but the more likely scenario is that the LittleFS would be made available to user firmware to store data as files.

I don’t have a timeline, however.


Thanks for the information but as you said earlier the EEPROM calls are implemented as file in the littlefs file system so why not simply increase the file size so the EEPROM is bigger?


So out of the 4 MB QSPI, there is no memory available for user data storage?


There’s a 2MB LittleFS filesystem. See Access to littlefs?