4. Writing the sector data to the modified page
These sequences of operations are not atomic, so a write request to this block device driver
is prone to data corruption. For this reason, read-only file systems such as CRAMFS are
adequate to run on top of this block device driver.
•
STL Block Device Driver: This block device driver is used to provide driver functions for
the device files /dev/stl0/*, /dev/stl1/* and so on. Since there is FTL between this block
device driver and BML, it is allowed to perform random write requests and write requests
are handled atomically. Thus any read-write file system (e.g. RFS) can run on this block
device driver.
XSR core
XSR core is composed of two layers:
STL (Sector Translation Layer) and BML (Block Management
Layer). STL is a top layer of XSR. BML is below the STL. These layers have different features
and jointly provide block device interface to upper layer. The main features of each layer are
as follows.
• STL (Sector Translation
Layer): translates a logical address from the file system into the
virtual flash address. It internally has wear-leveling
1
during the address translation.
• BML (Block Management
Layer): translates the virtual address from the upper layer into
the physical address. At this time, BML does the address translation in consideration of bad
block and the number of NAND device in use. BML accesses LLD
2
, which actually performs
read, write, or erase operation, with the physical address.
☞ Note
Each layer of XSR can be operated separately as a module. Thus, STL can be used with
other layer, which has same functionalities with BML.
OAM (OS Adaptation Module)
OAM is at the right of the figure. OAM connects XSR with the OS. OAM needs to be configured
according to your OS environment to use NAND flash memory. OAM module is already
configured with RFS for Linux.
PAM (Platform Adaptation Module)
PAM is below OAM. PAM connects XSR with the platform. PAM also needs to be configured
according to your platform to use NAND flash memory.
LLD (Low Level Driver)
There is a low level device driver between BML and NAND flash memory. It reads, writes, or
erases data on the physical sector address received from XSR and is controlled by BML.
1
Wear-leveling is an internal operation to use every block of NAND flash memory evenly through the
algorithm. It extends NAND flash memory life span.
2
LLD is an abbreviation of Low Level Device Driver. It performs actual read/write/erase operation to
NAND flash memory as a device driver.
3 Linux RFS v1.3.0 Porting Guide