Implementation of High Integrity File System for Serial Flash Memories
Tran, Hieu (2019)
Tran, Hieu
2019
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2019120324391
https://urn.fi/URN:NBN:fi:amk-2019120324391
Tiivistelmä
The invention of flash memory at Toshiba in 1980 had a great effect on development of computer storages. Accessing performance was improved with flash storage over hard disk drive, and the new type of storage quickly became the popular choice for secondary storage. With the new type of storage device, new file systems were designed specifically to get the most optimization of its characteristics. One important attribute flash technology has is that the number of erase cycles for each memory block is limited; passing this limit, the memory cell is no longer reliable to store data. In embedded systems, the host should have a scheme to deal with this limitation of flash storage, to prolong the lifetime of the device. It is only logical to implement a such feature along with the file system, thus allowing files organization and wear issue awareness in the same design.
The objective of this thesis is to propose a file system design that is not only simple and does not require much resources in embedded systems, but also provide an approach for wear leveling in flash memory. Embedded systems are prone to unexpected power failure, thus another goal the file system design needs to address is ensuring data integrity in such conditions.
The hardware used for the development were Raspberry Pi as computer host and raw NOR flash which can be controlled over SPI communication lines. The file system was written in C programming language, thus a C SPI library for Raspberry Pi was required to provide API for communicate over SPI protocol, which was WiringPi library.
Differences in the design of the file systems can affect the performance and functionality of the underlying storage medium. With the correct choice of design, certain file systems are more suitable for flash storages than others. Therefore, choosing the file system for a system must always comply with the purpose of the application as well as the targeted storage de-vice in use.
The objective of this thesis is to propose a file system design that is not only simple and does not require much resources in embedded systems, but also provide an approach for wear leveling in flash memory. Embedded systems are prone to unexpected power failure, thus another goal the file system design needs to address is ensuring data integrity in such conditions.
The hardware used for the development were Raspberry Pi as computer host and raw NOR flash which can be controlled over SPI communication lines. The file system was written in C programming language, thus a C SPI library for Raspberry Pi was required to provide API for communicate over SPI protocol, which was WiringPi library.
Differences in the design of the file systems can affect the performance and functionality of the underlying storage medium. With the correct choice of design, certain file systems are more suitable for flash storages than others. Therefore, choosing the file system for a system must always comply with the purpose of the application as well as the targeted storage de-vice in use.