exFAT File System

Our exFAT File System is compliant with Microsoft’s exFAT Specification and we are an official licensee of Microsoft for exFAT solutions. We have leveraged our 25+ years of experience with file systems to create a small and efficient implementation that is ideally suited to embedded applications.

Why Use exFAT?

By using our Embedded solution for the Microsoft exFAT File System, you can avoid the inherent limitations of the FAT32 specification. exFAT support file sizes and storage media limits that greatly exceed the capacity of any storage media in existence today. To summarize, exFAT supports:

  • Storage media of any size, up to 128 PiB (128 x 250 bytes)
  • Max file size: 128 PiB (128 x 250 bytes)
  • Long file names: up to 255 characters long, using the UTF-16 character set
  • Multi-Language support using the UTF-16 character set


Features of our exFAT File System

  • Coded to MISRA 2012 guidelines
  • OS and device independent so easily ported to your environment
  • Optimized for indexing and playing media files
  • Small foot print
  • Read only version available



Below is the architecture diagram for our Embedded exFAT File System implementation.

exFAT Architecture Diagram


API Function Calls for Read only version

The API for the exFAT File System includes the following groups of function calls, organized in an intuitive and consistent structure facilitating rapid integration with your application code. exFAT is delivered with complete source code.


Volume Functions

  • mount an exFAT volume
  • unmount an exFAT volume
  • obtain the name for the exFAT volume
  • obtain the attributes for the exFAT volume
  • obtain the statistics for the exFAT volume


Directory Functions

  • open a directory
  • open a directory based on a file attributes structure
  • read the next directory
  • rewind a directory
  • get parent directory
  • get the volume of a directory
  • close a directory


File Functions

  • open a file
  • open a file from the file attributes
  • obtain the attributes of a file
  • read data from a file
  • move the read position for a file
  • set read position to the start of a file
  • determine if read position is at the file size
  • obtain the size of a file
  • close a file


Search Functions

  • Initialize a search context for a directory
  • Initialize a search context and find first matching file
  • find the specified file or directory by name
  • match any/all files and directories to match criteria
  • compare file name to match criteria


Atribute Functions

  • determine if directory attribute is set
  • determine if file attribute is set
  • determine if read only attribute is set
  • determine if hidden file attribute is set
  • determine if system file attribute is set
  • determine if archive file attribute is set


Upcase Table Functions

  • convert a unicode character to upper case
  • compare tow file names
  • convert a compressed upcase table to decompressed
  • read the upcase table


Directory Entry Functions

  • move to the next directory entry
  • seek to a specified directory entry type
  • seek to the next file directory entry set
  • read next file from directory


Cluster Functions

  • set the current position to the file start position
  • obtain the next cluster
  • increment current position


Set Access Functions

  • read multiple sectors from device
  • allocate and initialize a sector buffer
  • free a sector buffer
  • read a single sector from the device
  • calculate absolute sector number
  • read the specified sector of a cluster