Wear Leveling on the Yun


Does anyone know if there is any sort of Wear Leveling (http://en.wikipedia.org/wiki/Wear_leveling) implemented on the Yun ?

I mean for both the EEPROM on the Arduino side as well as the mounted flash on the Linino side.


I think the wear leveling is automatic on the Linino side (due to JFFS2) but you need to implement wear leveling in your code on the AVR side. For what it's worth, if you expect a lot of frequent writes such as to a SQLite database, maybe consider saving to the dynamically-sized /tmp RAM mountpoint and utilize the wifi/ethernet for sending data to a centralized server, to reduce any wear to the flash.

Winbond W25Q128FVSIG 16MB flash - for Linino http://www.winbond.com/hq/enu/ProductAndSales/ProductLines/FlashMemory/SerialFlash/W25Q128FV.htm - more than 100,000 erase/write cycles

Linino flash summary: - 14 MB partition = default Linino O/S in SquashFS [u]compressed[/u] filesystem, read-only, mountpoint is /rom - 7 MB partition = all added/modified files in JFFS2 [u]compressed[/u] filesystem, read-write, mountpoint is /overlay

ATmega32u4 microcontroller http://www.atmel.com/devices/ATMEGA32U4.aspx - 1 KB EEPROM - 100,000 erase/write cycles - 32 KB flash - 10,000 erase/write cycles (4 KB used by bootloader)

basic - http://arduino.cc/en/Tutorial/EEPROMWrite

advanced - https://github.com/nabilt/diy_eshift/blob/master/Arduino_libs/EEPROMWearLeveler/EEPROMWearLeveler.cpp ( they mention their code is based on these techniques: http://www.atmel.com/Images/doc2526.pdf )