FAT12/16/32, VFAT File System for Embedded Systems

Overview


The FAT12/16/32, VFAT file system is a FAT file system for embedded systems, designed to enable flexible and fast support for application-specific customization requests. Included are many functions required for today's digital home appliances. 
The FAT12/16/32, VFAT file system inherits all the features of File System . It is compatible with File System on the API level, and File System drivers are also very easy to port.  



Supports FAT12/16/32, VFAT (long file names)

The FAT12/16/32, VFAT file system is a FAT file system used in MS-DOS/Windows PCs. This system supports FAT12, FAT16, FAT32, and VFAT (long file names). Building a system by embedding the FAT12/16/32, VFAT file system makes it easy to exchange data between devices and PCs.



Multilingual support with dynamic character code changing function

ASCII, SJIS (Japanese), Big5 (Traditional Chinese), GB (Simplified Chinese), Latin-1 (Western European languages), Latin-2 (Central/Eastern European languages), Thai, Korean, Cyrillic, and Arabic character codes are supported.
The local character code to be used can be changed dynamically in the FAT12/16/32, VFAT file system. This function provides support via a single object code when shipping and selling the final product to different countries and regions, without needing to change or recompile the source code.




Optional product for specifying file names with Unicode

An optional product is available with APIs that can use Unicode when specifying the file name in an open or search API, instead of the local character code such as SJIS.




Flexible support for application-specific customization requests

Today's embedded systems, including digital cameras, portable music players, and digital home appliances such as flat-screen TVs, are highly diverse in terms of the media used, the types and size of the handled data, and the application characteristics. Therefore, the file system needs to support a wide range of functions and performance. The FAT12/16/32, VFAT file system is designed to enable flexible and fast support for application-specific functions for the development of products with high added value. 




File high-speed seek function

The FAT12/16/32, VFAT file system can store the cluster link information of each file in a buffer specified by the application. When seeking through the file, this information in the buffer is referenced to enable high-speed file pointer movement by minimizing the number of references to the FAT. Especially when seeking forward from the current file pointer location, performance is dramatically improved because unlike seeking by referencing the FAT, there is no need to follow the link from the first cluster of the file. This function is particularly effective for systems that handle data such as video and audio.




File splitting and merging APIs for video and audio data

Especially when handing video or audio data, sometimes a single file needs to be split or multiple files need to be merged. For example, when an edit function is used to cut unwanted parts of a video, or combine two audio files into one. When splitting a file into two in a conventional file system, the application must copy the data of each split part to an unused data area, create two new files, and then delete the original file. In the FAT12/16/32, VFAT file system, APIs are provided that split and merge files using FAT and directory entries only, which eliminates multiple steps in the procedure and results in higher performance.




File data fragmentation reduction function

In a FAT file system, file data becomes fragmented over time as data write and delete operations are performed repeatedly. As a result, the number of media accesses required to read or write a file increases, and performance deteriorates. The FAT12/16/32, VFAT file system provides a function for minimizing fragmentation of file data.




Measures for preventing data corruption at power shutoff or when removing media

The FAT12/16/32, VFAT file system provides a function for minimizing corruption of data in media when the power is shut off or the media is inadvertently removed while accessing files. 

FAT Safe is also available as an optional product. This has a recovery function in case the file system is corrupted at power shutoff or when removing the media for ensuring file system reliability.



Multi-drive support

Multiple drives are supported. Multiple drives of the same type or different types can be handled as a:, b:, and so on. Multiple drives can be accessed simultaneously.




FAT and data caching

The FAT12/16/32, VFAT file system provides a function for caching FAT, directory entries, and data. By using this function, the access count to media is minimized for higher performance.




Tunable memory area

Settings such as the cache buffer size to be used can be tuned as appropriate for the system during configuration. 




Adjustable code size

Code size is minimized by linking only the APIs actually used by the application.




Coexists with standard C library

The FAT12/16/32, VFAT file system provides a mechanism to prevent conflicts between function names and variable types, which enables File System and the standard C library to be used simultaneously.




Reentrant structure

The re-entrant structure of the FAT12/16/32, VFAT file system enables simultaneous access to multiple files in a multitasking environment. 




Supports POSIX-like file APIs

Easy-to-use POSIX-like APIs are provided. 




Sample drivers provided as standard

 The FAT12/16/32, VFAT file system provides the following drivers as standard.
 o RAM disk
 o Pseudo disk

     In addition, the following drivers are provided as options.
     o SD Memory Card
     o CompactFlash
     o Memory Stick


Supports T-Engine and T-Kernel


The FAT12/16/32, VFAT file system supports T-Engine and T-Kernel.





High portability

The FAT12/16/32, VFAT file system itself is written in the C language and is not dependent on any CPU. Device drivers and code dependent on the operating system are separated to ensure easy porting to a different environment. The file system can even operate in an environment without an operating system.





Source code provided

The FAT12/16/32, VFAT file system is provided as source code.




Maintenance service and customization service

The following maintenance service is provided. The maintenance service enables developers to use File System with peace of mind.

o  Response to email inquiries regarding the product

o  Minor version upgrades

In addition, a customization service is available for supporting the FAT12/16/32, VFAT file system in different environments, such as a custom real-time operating system or hardware. 





Architecture diagram for FAT12/16/32, VFAT, and exFAT file systems



Operating environment


 File System is not dependent on any particular hardware or operating system.
 Successful operation has been demonstrated on the following operating systems.

 o   eSOL's eMCOS POSIX (extended T-Kernel)
 o   eSOL's eT-Kernel (extended T-Kernel)


Optional products


This optional product for the FAT12/16/32, VFAT file system provides a recovery function in case an inconsistency occurs in the file system, such as after an unexpected power shutoff or media removal.

Supported FAT file system: FAT32





This optional product for the FAT12/16/32, VFAT file system provides a multilingual support function that enables use of Unicode for specifying file names.




This optional product for the FAT12/16/32, VFAT file system provides partition editing programs that support MBR partitions and logical format programs that support FAT12/16/32 and VFAT.




This optional product for the FAT12/16/32, VFAT file system is a device driver for SD memory cards and MultiMediaCards (MMC).
Supported controller: TMS320DM320 built-in controller, etc.




This optional product for the FAT12/16/32, VFAT file system is a device driver for CompactFlash (CF).




This driver is for "Memory Stick" made by Sony Corporation. Memory Stick PRO is supported.