The Embedded Experts

Release notes for emFile version V4.04g

Version 4.04g [06. July 2018]

New Features

  1. Added POSIX support to FS_Truncate() API function.
  2. Added CRC verification for management and user data to block map NOR driver.
  3. Added support for eMMC power save mode to SD / MMC driver.
  4. Added support for eMMC data cache to SD / MMC driver.
  5. Added support for ISSI IS25LP128, Macronix MX25L3233, GigaDevice GD25Q32C and GigaDevice GD25Q64C serial NOR flash devices.

Improvements

  1. File system: Replaced the old version of the file buffer with the new faster implementation.
  2. Journal: Added optimization when deleting and writing a file in the same journal transaction.
  3. Journal: Added support for calling an application-registered callback function on journal overflow.
  4. File system: Added support to configure the vsnprintf() function used by the file system to format the debug messages.
  5. SFDP NOR physical layer: Added support for the sharing of the SPI bus via lock and unlock functions.
  6. Block map NOR driver: Improved the error handling.
  7. Sector map NOR driver: Improved the blank checking of physical sector.
  8. Universal NAND driver: Added support to configure under which conditions a NAND block is marked as defective.

Program corrections

  1. EFS: The file system failed to create a directory entry of the maximum size after the application created and then deleted two or more adjacent directory entries with a combined size larger than the maximum directory entry size. Fixed. The behavior has been present since version 4.04b.
  2. File system: SD cards and eMMC devices with a capacity larger than 2GB were not formatted correctly by the FS_FormatSD() API function. Fixed. The behavior has been present since version 4.04f.
  3. File system: The format operation via FS_FormatSD() API function did not work for storage devices with very small capacity such as RAMDISK. Fixed. The behavior has been present since initial version.
  4. LFN: The FS_FindFirstFile() and FS_FileNextFile() API functions returned the short instead of the long file name when the size of the destination buffer was one byte larger than the length of the long file name and the long file name was terminated by NUL. Fixed. The behavior has been present since initial version.
  5. DISKPART driver: Under special circumstances a false positive error was reported when the Universal NAND driver tried to recover data via the RAID1 module. Fixed. The behavior has been present since version 4.04e.
  6. SPIFI NOR physical layer: The number of bytes used as storage was not calculated correctly. Fixed. The behavior has been present since version 4.02b.
  7. SFDP NOR physical layer: The number of bytes used as storage was not calculated correctly. Fixed. The behavior has been present since version 3.34b.
  8. SPIFI NOR physical layer: Under special circumstances the NOR flash device was not released from the power down mode. Fixed. The behavior has been present since version 4.02b.
  9. File buffer: The file buffer was not updated correctly when the file was truncated. Fixed. The behavior has been present since version 4.04a.
  10. 2048x8 NAND physical layer: Under special circumstances wrong ECC correction status was returned. Fixed. The behavior has been present since 4.04a.

Version 4.04f [19. Feb 2018]

New Features

  1. Added support for deleting entire FAT directory trees via FS_DeleteDir().
  2. Added FS_SetFileBufferFlagsEx() function that can be used to configure the file buffer flags for files opened on a specific volume.
  3. Added support for the allocation of EFS directory entry buffers from the memory pool of file system.
  4. Added FS_NOR_BM_WriteOff() and FS_NOR_BM_ErasePhySector() functions to allow an application to write to and to erase physical sectors directly.
  5. Added support for hardware polling to SPIFI NOR physical layer.

Improvements

  1. 2048x8 NAND physical layer: Added support for hardware copy page operation.
  2. Universal NAND driver: Optimized the operations that read data from the spare area.
  3. SD/MMC driver: Added support for efficiently writing the same sector data multiple times.
  4. File system: Replaced all calls to strcpy() by calls to strncpy() to comply to coding standards.
  5. FAT LFN: Optimized the performance of file delete operation.
  6. SPIFI NOR physical layer: Added support for dual and quad write operations.
  7. NOR SFDP and SPIFI physical layers: Added support GigaDevice GD25Q256 and GD25Q127C NOR flash devices.

Program corrections

  1. File system: The fast file buffer caused a memory leak when a global file buffer has been configured. Fixed. The behavior has been present since version 4.04a.
  2. Universal NAND driver: Wrong ECC block size was passed to physical layer. Fixed. The behavior has been present since version 4.04d.
  3. Sector write buffer: Multiple write operations were not handled correctly. Fixed. The behavior has been present since initial version.
  4. Universal NAND driver: Under special circumstances the data in the spare are buffer was overwritten when the data was recovered via RAID1 add-on. Fixed. The behavior has been present since version 4.02a.
  5. EFS: Under special circumstances FS_DeleteDir() falsely reported that the maximum recursion level has been reached. Fixed. The behavior has been present since version 4.04d.
  6. NOR sector map driver: False positive error message was reported when a logical sector has been invalidated by an emFile version older than 4.04d. Fixed. The behavior has been present since version 4.04e.
  7. Universal NAND driver: Under special circumstances an incorrect data CRC was stored after an error recovery via the RAID1 add-on. Fixed. The behavior has been present since version 4.04e.
  8. Universal NAND driver: Incorrect number of work blocks was reported when the number of configured work blocks was different than the number of work blocks used at low-level format. Fixed. The behavior has been present since initial version.
  9. FAT LFN: Invalid characters where allowed in a file name. Fixed. The behavior has been present since initial version.

Version 4.04e [20. Oct 2017]

New Features

  1. Added FS_MMC_CM_SetSectorRange() API function that can be used to configure which sectors of the SD card have to be used as storage.
  2. Added new configuration option that lets the application specify if the file system has to report the end-of-file condition as error or not.

Improvements

  1. Universal NAND driver: Added optional CRC verification of data.
  2. NAND physical layer: Added support for manual configuration of the NAND flash device parameters.
  3. NOR SFDP and SPIFI physical layer: Added support for the following Macronix serial NOR flash devices: MX25R64, MX25L256, and MX25L512.
  4. NOR M25 physical layer: Added support for the Micron N25Q512A serial NOR flash device.
  5. SPI NAND physical layer: Added support for the following serial NAND flash devices: Micron MT29F1G01ABAF, Micron MT29F2G01ABAGD, and Macronix MX35LF1GE4AB.

Program corrections

  1. NAND SPI physical layer: Using a software ECC instead of the internal HW ECC of the serial NAND flash caused uncorrectable bit errors. Fixed. The behavior has been present since initial version.
  2. NOR sector map driver: Data written using a version of the file system older than 4.04d was not recognized as valid. Fixed. The behavior has been present since version 4.04d.
  3. NOR block map driver: Under special circumstances a work block was not converted correctly to a data block possibly leading to a data loss. Fixed. The behavior has been present since version 4.04d.
  4. Universal NAND driver: FS_NAND_UNI_ReadPageRaw() read and incorrect number of bytes from data area. Fixed. The behavior has been present since version 4.04d.
  5. Universal NAND driver: FS_NAND_UNI_WritePageRaw() wrote and incorrect number of bytes to data area. Fixed. The behavior has been present since version 4.04d.
  6. Universal NAND driver: FS_NAND_UNI_WritePage() wrote incorrect data to spare area. Fixed. The behavior has been present since version 4.04b.
  7. Universal NAND driver: An incorrect number of NAND blocks was calculated when the first block in the partition was marked as defective. Fixed. The behavior has been present since version 3.34a.
  8. Storage layer: The API functions FS_STORAGE_SyncSectors() and FS_STORAGE_FreeSectors() did not lock the file system when FS_OS_LOCKING was set to 2. Fixed. The behavior has been present since version 4.00a.
  9. Storage layer: FS_STORAGE_RefreshSectors() and FS_STORAGE_GetSectorUsage() locked the file system recursively. Fixed. The behavior has been present since version 4.00a.
  10. File system: Data was written at a wrong position after the same file was opened in read mode with a file write mode configured to fast or medium and with support for multiple file handles enabled. Fixed. The behavior has been present since initial version.
  11. DISKPART driver: The request for corrected sector data was not handled correctly. Fixed. The behavior has been present since initial version.
  12. File system: FS_CheckDisk() failed to correct errors when the auto-mount mode was set to read-only. Fixed. The behavior has been present since version 4.04b.
  13. 2048x8 NAND physical layer: Data stored to the cache of NAND flash device was used after being invalidated by a NAND reset operation. Fixed. The behavior has been present since version 4.04a.

Version 4.04d [16. Jun 2017]

New Features

  1. Added FS_DeleteDir() API function that can be used to delete entire directory trees.
  2. Added FS_NAND_UNI_SetBlockReserve() API function that can be used to configure the number of blocks reserved by the Universal NAND driver as replacement for the blocks that become defective.

Improvements

  1. NOR block map driver: Improved the performance of write, "free sector" and low-level format operations.
  2. Universal NAND driver: Improved the performance of low-level mount operation.
  3. NOR sector map: Improved the procedure of detecting if the storage has been low-level formatted with the fail-safe erase option enabled.
  4. NOR CFI physical layer: Improved error handling and added support for Cypress HyperFlash.
  5. ST M25 NOR physical layer: Added support for configuring new NOR flash devices.
  6. SPI NOR physical layer: Added support for ISSI IS25LP064A device.
  7. MMC card mode driver: Added workaround for ATP 512 MB microSD cards that report an error when the last sector on the storage is read via a multiple block read command.

Program corrections

  1. File system: FS_GetFileAttributes() and FS_ModifyFileAttributes() did not return an error when the volume was not mounted properly. Fixed. The behavior has been present since initial version.
  2. EFS: The index of a directory entry overflowed when a large number of files were created in a directory causing an endless loop when scanning the files via FS_FindFirstFile()/FS_FindNextFile(). Fixed. The behavior has been present since initial version.
  3. NOR sector map: Physical sectors marked as invalid were not used for data storage. Fixed. The behavior has been present since version 3.34b.
  4. SPI NOR physical layer: The timeout for the program and erase operations was not calculated correctly. Fixed. The behavior has been present since version 4.04c.
  5. File system: Wrong number of bytes was returned when reading more bytes than available with file buffer. Fixed. The behavior has been present since version 4.04a.
  6. File system: EOF error was not reported when the application tried to read beyond the end of file. Fixed. The behavior has been present since initial version.

Version 4.04c [16. Mar 2017]

New Features

  1. Added support for SPI bus locking to SPI NAND physical layer.
  2. Added support for partial sector read operation to Universal NAND driver.
  3. Added FS_GetFileInfo() API function that returns information about a file or directory.
  4. Added FS_NOR_SPI_ReadDeviceId() function that can be used to read the device id of a serial NOR flash device.
  5. Added FS_MMC_CM_AllowBufferedWrite() function that can be used to enable / disable the buffering of data written to storage device.

Improvements

  1. Universal NAND driver: If possible, the "free sector" operation marks entire NAND blocks as invalid to increase performance.
  2. Universal NAND driver: Added statistical counters for the number of bit errors corrected.
  3. Universal NAND driver: Added support for software multi-bit error correction.
  4. EFS file system: Improved the performance of the operations that check for free space on the storage.

Program corrections

  1. NOR block map driver: Wrong range of sectors was detected for NOR flash devices with bottom boot sectors. Fixed. The behavior has been present since initial version.
  2. File system: An error was returned when the application queried the attributes of the root directory. Fixed. The behavior has been present since initial version.
  3. File system: FS_GetFileAttributes() did not return when the application queried the attributes of the root directory of a FAT volume with support for long file names enabled. Fixed. The behavior has been present since initial version.
  4. NOR drivers: Under rare circumstances a write operation interrupted by an unexpected reset caused a data loss when using a serial NOR flash as storage device. Fixed. The behavior has been present since initial version.
  5. File system: Wrong number of bytes was returned when reading more bytes than available in the file with the file buffer enabled. Fixed. The behavior has been present since version 4.04a.
  6. File system: FS_FTell() returned the wrong value in case of an error. Fixed. The behavior has been present since version 3.34a.
  7. SPI NOR physical layer: Serial NOR flash devices with a physical sector size larger than 64 KByte were not handled correctly on 8- and 16-bit targets. Fixed. The behavior has been present since version 3.34a.

Version 4.04b [17. Nov 2016]

New Features

  1. Added support for fast write operation to SLC1 NAND driver.
  2. Added new function to Journaling which can be used to cancel pending transactions.
  3. Added new test functions to NAND drivers.
  4. Added support for partitions to NAND Image Creator.

Improvements

  1. NAND drivers: In case of a fatal error the NAND flash is no longer mark as read-only by default. The application has to request this via the fatal error callback.
  2. NOR SPI physical layer: Added support for Winbond SPI NOR flash devices.
  3. NOR SPI physical layer: Added support for Spansion SPI NOR flash devices with a capacity larger than 128 Mbit.
  4. NOR drivers: Added support for runtime configuration of the erase and write verification feature.
  5. NOR drivers: Added support for runtime configuration of the "skip blank sector" feature.
  6. NOR sector map driver: Improved the error handling.
  7. NAND ONFI physical layer: Added support for multiple planes, page copy operation and ECC result query.
  8. File system: Improved the performance of the "free sector" operation.
  9. EFS file system: Improved the error handling and reduced the stack usage.
  10. SLC1 NAND driver: Improved the performance of the "free sector" operation.

Program corrections

  1. SPI NOR physical layer: Wrong physical sector size was detected for some Spansion SPI NOR flash devices. Fixed. The behavior has been present since version 4.04a.
  2. SPI NOR physical layer: Wrong number of dummy cycles was used for the read operation on some Spansion SPI NOR flash devices. Fixed. The behavior has been present since version 4.04a.
  3. SPI NOR physical layer: Switching to 4-byte addresses did not work for some Micron SPI NOR flash devices. Fixed. The behavior has been present since version 4.04a.
  4. NOR drivers: The timeout for the write and erase operations was not calculated correctly. Fixed. The behavior has been present since version 4.04a.
  5. NOR block map driver: Under rare circumstances a data loss occurred after a power fail when a logical sector containing valid data was marked as invalid. Fixed. The behavior has been present since initial version.
  6. NOR sector map driver: An incompletely erased physical sector was not marked as invalid. Fixed. The behavior has been present since version 3.34b.
  7. File system: The file pointer was not positioned correctly when calling FS_FSeek() with the file buffer enabled. Fixed. The behavior has been present since version 4.04a.
  8. NAND SPI physical layer: Data was not stored correctly on NAND flash devices which support only one plane. Fixed. The behavior has been present since initial version.
  9. File system: The deinitialization operation failed when an external memory manager was used. Fixed. The behavior has been present since version 4.04a.
  10. File system: The performance of file copy operation using FS_CopyFileEx() decreased when the specified work buffer was not a multiple of logical sector size. Fixed. The behavior has been present since version 3.26b.
  11. Universal NAND driver: Under special circumstances a work block was not loaded correctly at low-level mount causing an error. Fixed. The behavior has been present since version 4.00a.

Version 4.04a [21. Jun 2016]

New Features

  1. Added support for recognizing if a volume was properly unmounted before reset.
  2. Added support for profiling via SEGGER SystemView.
  3. Added FS_X_OS_Delay() to the OS layer.
  4. Added faster file buffer implementation.

Improvements

  1. NOR SPI physical layer: The type of serial NOR devices supported is now configurable via FS_NOR_SetDeviceList() and FS_NOR_SPIFI_SetDeviceList() respectively.
  2. Universal NAND driver: The driver relocates NAND flash blocks based on the number of bit errors corrected in order to prevent data loss.
  3. File system: All standard C library functions used by the file system can be overwritten at compile time.
  4. 2048x8 NAND physical layer: Added support for Toshiba TC58NVG0S3HTA00 devices.
  5. ONFI NAND physical layer: Added support for Toshiba TC58CVG1S3HxAIx devices.
  6. NOR drivers: The drivers invalidate the erase signature only if it is valid. This prevents write errors on physical sectors which were not properly erased.
  7. FAT file system: Improved the performance of directory creation operation. A multiple write operation is used instead of writing one sector at a time.
  8. SPI NAND physical layer: Added support for Winbond W25N01GVxxIG/IT devices.

Program corrections

  1. EFS file system: An error was reported when moving empty directories. Fixed. The behavior has been present since initial version.
  2. EFS file system: The directory entry was not updated when closing the file if an EOF error was encountered by a previous read operation. Fixed. The behavior has been present since initial version.
  3. FAT file system: The check disk operation reported a false invalid directory entry error on the next directory entry following an invalid long file name. Fixed. The behavior has been present since initial version.
  4. FAT LFN: Wrong long file name entries were created when the file name contained 2 or more dot characters. Fixed. The behavior has been present since initial version.
  5. File system: External memory allocation/deallocation functions were not deinitialized properly. Fixed. The behavior has been present since initial version.
  6. File system: FS_CreateDir() did not use Journal to protect the operation against power failure. Fixed. The behavior has been present since initial version.
  7. SLC1 NAND driver: The driver reported the wrong number of available logical sectors after the second initialization. Fixed. The behavior has been present since version 3.24e.
  8. Block map NOR driver: Under special circumstances the block map NOR driver invalidated a data block at low-level mount which could have caused a data loss. Fixed. The behavior has been present since version 3.26a.
  9. File system: FS_CheckDisk() did not return an error when it failed to fix file system errors. Fixed. Present since initial version.
  10. EFS file system: A read operation failed to release the used sector buffer in case of an error. Fixed. Present since initial version.
  11. EFS file system: No error was reported when the file delete operation failed. Fixed. Present since initial version.
  12. File system: FS_ModifyFileAttributes() failed to report an error when the volume was mounted as read only. Fixed. Present since version 3.32c.
  13. File system: FS_RmDir() failed to report an error when the volume was mounted as read only. Fixed. Present since initial version.
  14. SD/MMC card mode driver FS_MMC_CM_GetCardId() caused a buffer overflow. Fixed. Present since version 3.30g.

Version 4.02b [10. Feb 2016]

New Features

  1. Added support for memory-mapped SPI NOR flash devices.
  2. Added support for trim and reliable write operations for MMC storage devices.

Improvements

  1. FAT: Directory entries belonging to the same long file name are marked as deleted using the minimum number of sector write operations possible.

Version 4.02a [03. Dec 2015]

New Features

  1. Added RAID1 logical driver which can be used to increase the data reliability. This is achieved by mirroring the sector data on a different volume.
  2. Added FS_MMC_CM_ReadExtCSD() and FS_MMC_CM_WriteExtCSD() functions. They can be used access the EXT_CSD internal register of MMC/eMMC devices.

Improvements

  1. MMC/SD card mode driver: Added more debug and log messages and improved the error handling.
  2. SLC1 NAND driver: Improved data reliability by adding the possibility to relocate blocks in which 1 bit error occurred. DataFlash physical layer: Added workaround for devices which sometimes return invalid data when reading via RAM buffer. By default the data is now read directly from the memory array.
  3. MMC/SD SPI driver: Added workaround for ATP 512 MB microSD cards which report an error when the last sector on the storage is read via a multiple block read command.

Program corrections

  1. SLC1 NAND driver: Under special conditions a block containing valid data was marked as being free at low-level mount possibly causing a data loss. Fixed. The behavior has been present since version 3.24e.
  2. LOGVOL driver: The deinitialization operation did not free the memory of all device drivers causing a memory leak. Fixed. The behavior has been present since initial version.
  3. Storage layer: FS_STORAGE_FreeSectors() locked the file system recursively. Fixed. The behavior has been present since version 3.32a.
  4. Storage layer: FS_STORAGE_SyncSectors() locked the file system recursively. Fixed. The behavior has been present since version 3.34b.
  5. FAT file system: The number of free clusters was not correctly set for FAT32 partitions at high-level format. Fixed. The behavior has been present since initial version.
  6. MMC/SD SPI driver: The capacity of SD cards larger than 2 GB was not calculated correctly. Fixed. The behavior has been present since initial version.

Version 4.00b [26. Aug 2015]

New Features

  1. Added FS_MMC_CM_GetCardInfo() function. The function can be used to get information about the storage card.
  2. Added FS_STORAGE_GetSectorUsage() function that returns information about whether a sector contains valid data or not.

Improvements

  1. NAND 4096x8 physical layer: Added support for Hynix H27UAG8T2A series NAND flash devices.
  2. Universal NAND driver: The active wear leveling process checks now also the erase count of work blocks when searching for the NAND block with the lowest erase count.

Program corrections

  1. SD/MMC SPI driver: The driver caused and invalid memory access after the re-initialization of the file system. Fixed. The behavior has been present since version 4.00a.
  2. NAND physical layer: The FS_NAND_PHY_ReadONFIPara() and FS_NAND_PHY_ReadDeviceId() functions were using the hardware layer routines from the version V3.34b of emFile. Fixed. The behavior has been present since version V4.00a.
  3. File system: The FS_GetVolumeInfo(), FS_GetVolumeInfoEx() and FS_CheckDisk() functions were not properly locking the file system against concurrent access when FS_OS_LOCKING was set to 2. Fixed. The behavior has been present since version V3.32c.
  4. File system: The FS_Remove() function was not properly locking the file system system against concurrent access when FS_OS_LOCKING was set to 2. Fixed. The behavior has been present since initial version.

Version 4.00a [19. Jun 2015]

New Features

  1. Replaced hard-coded function names of the hardware layer API with function tables. An update of the emFile configuration is required. For more information refer to section "Porting emFile 3.x to 4.x" of the emFile manual.
  2. Added support for grouping physical block to Universal NAND driver. It saves RAM space when using a NAND flash with a large number of physical blocks. Block grouping can be configured via FS_NAND_UNI_SetNumBlocksPerGroup() function.
  3. Added support for fast write operations to Universal NAND driver. The application can reserve buffer space and the write without performing a copy/erase operation. The buffer space can be reserved via the functions FS_NAND_UNI_Clean() and FS_NAND_UNI_SetCleanThreshold().
  4. Added the possibility to configure whether read-only files/directories stored on a FAT partition can be moved or renamed. This feature is can be configured via the FS_FAT_ConfigROFileMovePermission() function.

Improvements

  1. File system: The directory entry is updated now on file close only when necessary.
  2. Journal: The journal will cancel automatically a transaction in case of an error.
  3. MMC/SD SPI driver: Added support for the locking of the SPI bus.
  4. MMC/SD card mode driver: The sequence for switching into 4-bit mode of an SD/MMC card has been improved. In case of a failure the driver falls back to 1-bit mode.
  5. NAND drivers: The write performance of the NAND drivers has been improved. A write operation that triggers the allocation of a new work block is performed during the block copy operation.
  6. NAND DataFlash physical layer: Three different block sizes can be configured for a DataFlash via FS_NAND_BLOCK_TYPE define as: 1 x DataFlash block, 8 x DataFlash block and 1 x DataFlash sector.
  7. NOR drivers: A blank physical sector will not be erased at low-level format the define FS_NOR_SKIP_BLANK_SECTORS set to 1.
  8. NAND DataFlash physical layer: A virtual page can be configured for the DataFlash physical layer. This allows Universal NAND driver to support DataFlash devices. The virtual page can be set via the FS_NAND_DF_SetMinPageSize() function.

Program corrections

  1. FAT file system: FS_FAT_CheckDisk() reported an error when checking a volume immediately after a high-level format. Fixed. The behavior has been present since version 3.34b.
  2. FAT file system: An integer overflow occurred when FS_FAT_CheckDisk() tried to compute the number of clusters allocated to a file with the size of 0xFFFFFFFF bytes. Fixed. The behavior has been present since initial version.
  3. EFS file system: Under special circumstances FS_EFS_CheckDisk() failed to repair damaged EFS partition and did not return. Fixed. The behavior has been present since initial version.
  4. File system: On some cases FS_FOpenEx() returned the wrong error code. Fixed. The behavior has been present since version 3.34a.
  5. FAT file system: An invalid root directory was created by the format operation when support for free sector was enabled (FS_SUPPORT_FREE_SECTOR == 1). Fixed. The behavior has been present since version 3.24g.
  6. FAT file system: FS_FormatSD() was not locked against concurrent access when FS_OS_LOCKING was set to 2. Fixed. The behavior has been present since initial version
  7. FAT LFN: Duplicated short names were generated when two or more long file/directory names were created on the same subdirectory containing a dot as the first character in the name. Fixed. The behavior has been present since initial version.
  8. File system: The contents of the file was corrupted when the application tried to write beyond 4 GB file size limit. Fixed. The behavior has been present since initial version.
  9. Journal: The support for free sectors was always enabled when creating the journal even when the application required for it to be disabled. Fixed. The behavior has been present since version 3.34b.
  10. File system: Calling FS_GetVolumeStatus() when the storage medium was not preset caused a following mount operation to fail. Fixed. The behavior has been present since initial version.
  11. File system: FS_Sync() locked the file system recursively when FS_OS_LOCKING was set to 2. Fixed. The behavior has been present since initial version.
  12. MMC/SD card mode driver: The bus test procedure for MultiMedia cards did not work properly. Fixed. The behavior has been present since version 3.28a.

Version 3.34b [07. Jan 2015]

New Features

  1. Added new logical driver which helps increase the data reliability by maintaining a copy of each sector data.
  2. New logical driver available which implements a write buffer for sector data.
  3. New physical layer available which supports JEDEC JESD216B compliant SPI NOR flash devices and data transfers via 1, 2 or 4 data lines.
  4. Added FS_JOURNAL_CreateEx() API function. The function can used to create a journal which informs the storage driver about unused sectors.
  5. Added support for SPI NOR flash devices with a capacity greater than 128Mbit.
  6. Added FS_MMC_CM_Erase() API function. It can be used to erase MMC cards.

Improvements

  1. File system: Improved the performance of the disk checking operation.
  2. SPI NAND physical layer: Improved the read and write performance.
  3. Storage layer: Improved the sector refresh operation. Only the sectors which contain valid data will be refreshed.

Program corrections

  1. File system: Some API functions did not return the correct error code when the volume was not mounted and the auto-mount feature was disabled. Fixed. The behavior has been present since version V3.34a

Version 3.34a [04. Jun 2014]

New Features

  1. Added FS_FOpenEx() API function. It opens a file and returns an error code if the operation fails.
  2. Added new logical driver which supports the access to a storage medium using a sector size different than that of the storage driver.
  3. Added FS_SetFileSize() API function. It can be used increase the size of the file without moving the file pointer.
  4. Added FS_FreeSectors() API function. It can be used to inform the storage layer about unused sectors.
  5. Added support for 64Mbit DataFlash devices with a page size of 256 bytes.

Improvements

  1. Universal NAND driver: Improved the write verification functionality.
  2. Universal NAND driver: Reduced the low-level mount time for the NAND flashes which support HW ECC.
  3. FAT LFN: A single short directory entry is created if the file name complies with the 8.3 format.
  4. File system API: Added meaningful return codes to several API functions.
  5. SD/MMC SPI driver: Some SD cards did not respond correctly to a CMD12 (STOP_TRANSMISSION) command. Added retries to work around this.
  6. NAND 4096x8 physical layer: Added support for Samsung NAND flash devices with 128 pages per block.

Program corrections

  1. SD/MMC SPI driver: SD cards with a capacity greater than 2GB were not identified correctly on 16-bit systems. Fixed. The behavior has been present since initial version.
  2. NAND ONFI physical layer: The read functions did not return any data in case of an ECC error. In a NAND dump the pages appeared as containing all zeros. Fixed. The behavior has been present since version V3.24g.
  3. NAND DataFlash physical layer: Devices with a page size of 256 bytes were not handled correctly. Fixed. The behavior has been present since version V3.24g.
  4. CRYPT driver: When reading several sectors at once invalid data was returned in the first byte of the first sector read. Fixed. The behavior has been present since version V3.30b.
  5. File system: FS_ModifyFileAttributes() did not use the journal when writing data to storage. Fixed. The behavior has been present since version V3.32c.
  6. File system: The time stamp of volume label was not correctly set. Fixed. The behavior has been present since initial version.
  7. Storage layer: Internal API functions called from the MSD component of emUSB were not locked against concurrent access when the locking level of the file system was set to coarse. Fixed. The behavior has been present since initial version.

Version 3.32c [30. Jan 2014]

New Features

  1. Added FS_GetVolumeInfoEx() API function. It can be used to get information about how the storage medium is formatted.
  2. Added FS_STORAGE_GetCleanCnt() function. An application can call it to get the number of clean operations which must be performed before all the invalid data is erased.
  3. Added FS_ModifyFileAttributes() API function which can be used to set and clear file attributes with a single function call.
  4. Added support for NOR flash devices connected via SPIFI.

Improvements

  1. NOR block map driver: Added support for getting the number of clean operation required before all the invalid data on the storage medium is erased.
  2. MMC/SD SPI driver: Improved the identification mechanism of SD cards which responded incorrectly to SEND_IF_COND initialization command.
  3. Disk checking: Replaced numeric literal return values with symbolic constants to improve readability.
  4. Universal NAND driver: Added initialization with 0's of unused sectors in a data block in order to reduce the chance of bit errors.

Program corrections

  1. SD/MMC card mode driver: Functions of the HW layer were called before the HW layer initialization. Fixed. The behavior has been present since version V3.20a.
  2. NAND ONFI physical layer: The physical layer failed to allocate an internal memory buffer when only the storage layer was used and no file system was configured. Fixed. The behavior has been present since version V3.24e.
  3. NOR sector map driver: The clean operation tried to erase a physical sector which was already blank. Fixed. The behavior has been present since version V3.26i.
  4. File system: The unmount operation tried to call functions of the file system layer even when no file system was configured causing linking errors. Fixed. The behavior has been present since initial version.
  5. File system: The volume searching function returned a valid volume pointer even when the volume was not correctly initialized. Fixed. The behavior has been present since initial version.
  6. File buffer: The file buffer flags were not initialized to default values when opening a file. Fixed. The behavior has been present since version V3.22a.
  7. FAT with LFN: Under special circumstances an invalid memory access occurred when checking the validity of a file name with support for UTF-8 enabled. Fixed. The behavior has been present since initial version.

Version 3.32b [24. Jul 2013]

Improvements

  1. NOR block map driver: Improved the handling of clean operations triggered via FS_STORAGE_Clean()/FS_STORAGE_CleanOne() API calls. Physical sectors containing invalid data are erased in order to increase the write performance.
  2. File system: Added 2 new return codes to FS_CheckDisk(). Code 3 is returned when the maximum recursion level has been reached. A negative value is returned in case of a file system error.

Program corrections

  1. Encryption: Files larger than a cluster size which were stored on non-consecutive clusters were incorrectly encrypted. Fixed. The behavior has been present since version V3.30b.
  2. Atmel SD/MMC driver: The capacity of 2GB SD cards was not computed correctly. Fixed. The behavior has been present initial version.

Version 3.32a [22. May 2013]

New Features

  1. New physical layer available for NAND flash devices with SPI interface.
  2. New logical driver available which reads sectors in advance and caches them. This logical driver can be used together with an SD/MMC driver to improve the performance of searching for free clusters in the allocation table.
  3. Added file buffer support to EFS. The file buffer improves the read and write performance when accessing small amounts of data.
  4. Added FS_STORAGE_FreeSectors() API function which can be used by a file system to help the NAND or NOR driver to manage the data more efficiently.

Improvements

  1. File system: Added a check at mount time to test if the number of sectors available on the storage medium has shrunk.

Program corrections

  1. File buffer: The contents of file was corrupted when seeking to end of file with the file buffer enabled. Fixed. The behavior has been present since version V3.22a.
  2. File buffer: The contents of file buffer was discarded when opening the same file for the second time with FS_MULTI_HANDLE_SAFE enabled. Fixed. The behavior has been present since version V3.22a.
  3. NAND physical layer: Wrong data was read by the FS_NAND_PHY_512x8 physical layer from NAND512-A devices which support sequential row read. Fixed. The behavior has been present since initial version.

Version 3.30l [22. Mar 2013]

Program corrections

  1. Encryption: File contents was corrupted when writing with enabled file buffering. Fixed. The behavior has been present since version V3.30b.
  2. Encryption: File contents was corrupted when truncating a file. Fixed. The behavior has been present since version V3.30b.
  3. File system: Unused variables caused compiler warnings. Fixed.

Version 3.30k [05. Mar 2013]

Program corrections

  1. Encryption: File contents was corrupted when writing close to the end of file. Fixed. The behavior has been present since version V3.30b.
  2. FAT: A 0xFFFFFFFF value in a FAT32 entry was interpreted as read error. Fixed. The behavior has been present since version V3.10e.

Version 3.30j [18. Feb 2013]

Program corrections

  1. Journaling: The mount operation used the wrong journal unit number when more than one volume was configured. Fixed. The behavior has been present since version V3.30i.

Version 3.30i [11. Feb 2013]

New Features

  1. Added FS_JOURNAL_Enable() and FS_JOURNAL_Disable() API functions. An application can use these functions to explicitly activate or deactivate the journal.

Improvements

  1. File system: Normalized the format of the error and warning debug messages. A new line is not emitted at the end of these messages anymore.
  2. Journaling: Optimized the write performance of journal when the application explicitly controls a transaction by calling the FS_JOURNAL_Begin()/FS_JOURNAL_End() functions.
  3. SLC1 NAND driver: Added support for verification of a sector write.

Program corrections

  1. EFS: A format operation accidentally deleted the information about the partitioning of storage medium. Fixed. The behavior has been present since version V3.10e.
  2. Journaling: The command sent by the file system to NAND or NOR driver to mark a sector as not used was not handled properly. The sectors could have been erased before the end of transaction which could have caused the corruption of file data. Fixed. The behavior has been present since version V3.30g.

Version 3.30h [14. Dec 2012]

New Features

  1. Added FS_NAND_2048x8_EnableReadCache() and FS_NAND_2048x8_DisableReadCache() API functions which can be used to enable/disable the page read optimization of the FS_NAND_PHY_2048x8 physical layer.

Version 3.30g [19. Nov 2012]

New Features

  1. Added FS_MMC_CM_GetCardId() API function. It can be used to read the serial number and other identification information from an SD card.

Program corrections

  1. File system: FS_Truncate() reduced the size of a file with more bytes than requested leaving the file system in an inconsistent state. Fixed. The behavior has been present since version 3.28a.

Version 3.30f [08. Nov 2012]

New Features

  1. Added FS_WipeFile() API function which can be used to overwrite the contents of a file. Typically used before removing a file which contains sensitive data.

Program corrections

  1. NOR CFI physical layer: Data was written to a wrong address on NOR devices with write buffer and which have been configured with an address gap. Fixed. The behavior has been present since version 3.30d.

Version 3.30e [30. Oct 2012]

Improvements

  1. SPI NOR physical layer: Added support for the identification of 256MBit NOR flash devices.

Program corrections

  1. Journaling: FS_CheckDisk() reported an error after the creation of journal file. Fixed. The behavior has been present since version 3.30c.
  2. NOR block map driver: The physical layer was not de-initialized properly. Fixed. The behavior has been present since version 3.26a.

Version 3.30d [19. Oct 2012]

New Features

  1. Added FS_NOR_CFI_SetAddrGap() API function which can be used to configure a gap in the address space of a CFI NOR flash.

Program corrections

  1. File system: The number of free clusters reported on FAT32 volumes was 1 less than the actual number. Fixed. The behavior has been present since version 3.30a.
  2. File system: FS_Mount() reported an incorrect value when the mount operation failed. Fixed. The behavior has been present since initial version.
  3. File system: The file buffer stopped working properly after several file open/close cycles. Fixed. The behavior has been present since version 3.30a.
  4. Journaling: The module was not de-initialized properly. Fixed. The behavior has been present since version V3.10e.

Version 3.30c [05. Oct 2012]

New Features

  1. Encryption and Journaling add-ons are included now in the trial version.
  2. Added FS_SetFileWriteModeEx() API function which can be used to configure the write mode for each volume separately.
  3. Added FS_CreateMBR() and FS_GetPartitionInfo() API functions for the management of Master Boot Record.

Program corrections

  1. File system: The modification time stamp of a file was updated even when the file data was not modified. Fixed.

Version 3.30b [06. Sep 2012]

New Features

  1. New add-on available for encryption/decryption of individual files. DES and AES encryption algorithms are supported.

Improvements

  1. SPI NOR physical layer: Improved the medium initialization sequence to support the use of HW layers which work in interrupt mode.
  2. Universal NAND driver: Added support for NAND flashes with a spare area larger than 1/32 of the main area of the page.

Program corrections

  1. Universal NAND driver: Low-level mount failed when correctable bit errors were detected in the first empty page of a work block. Fixed.
  2. FAT: The size of the allocation table was not calculated correctly at high-level format leading to errors when the file system tried to access the last 2 clusters. Fixed.

Version 3.30a [03. Aug 2012]

New Features

  1. New logical driver available which provides AES encryption for file system data. 128-bit and 256-bit key lengths are supported.

Program corrections

  1. Universal NAND driver: Wrong duplicated data block was discarded at low-level mount causing a data loss. Fixed.
  2. File system: An newly allocated file buffer was not correctly initialized. Fixed.

Version 3.28d [16. Jul 2012]

New Features

  1. Increased the number of files which can be opened at once in the trial version from 1 to 2.

Improvements

  1. Universal NAND driver: Changed the low-level format procedure to allow the erasing of the blocks marked as defect by the driver.
  2. SLC1 NAND driver: Improved the handling of bad blocks. The first byte in the spare area of the second page in a block is checked now for a bad block marker.
  3. SPI NOR physical layer: Improved the initialization sequence to remove the write protection of storage blocks only if present.

Program corrections

  1. Universal NAND driver: The status of a block (good/bad) was read with ECC enabled which caused ECC errors. Fixed.

Version 3.28c [04. Jul 2012]

Improvements

  1. SLC1 NAND driver: Changed the low-level format procedure to allow the erasing of the blocks marked as defect by the driver.

Program corrections

  1. File system cache: When reading multiple sectors invalid data was stored to cache. Fixed.
  2. NOR sector map driver: Instance pointer was not invalidated at de-initialization causing a data corruption. Fixed.

Version 3.28b [20. Jun 2012]

Program corrections

  1. File system: Uninitialized variables caused compiler warnings. Fixed.

Version 3.28a [17. Jun 2012]

New Features

  1. New logical driver available which allows emFile to mount any partition defined in a Master Boot Record.
  2. New cache module with configurable associativity level available. It offers better performance for the same cache capacity.
  3. Added to new API function FS_CACHE_SetAssocLevel(). It can be used to configure the associativity level of a multi-way set cache.
  4. Added to new API function FS_CACHE_GetNumSectors(). It returns the number of sectors which can be stored to cache.
  5. Added FS_SIZEOF_CACHE_... defines to help an application to allocate a cache buffer large enough to store a specified number of sectors.
  6. Added new API function FS_STORAGE_RefreshSectors(). The function rewrites one or more sectors with original data. Typically called to extend data life.
  7. Added new API function FS_FFlush(). An application can use it to update the buffered data of an opened file to storage medium .

Improvements

  1. NOR block map driver: Added compile-time configurable number of reserved bytes to reduce the NOR flash resource usage.
  2. FAT: Improved the validity check of the FSInfoSector. During a write operation, Windows sets a specific flag in a reserved byte of the boot sector. If this flag is found set, the information of the FSInfoSector is considered invalid.
  3. File system: Made FS_MAINTAIN_FAT_COPY option run-time configurable. The FS_FAT_ConfigMaintainFATCopy() function must be called to enable/disable this feature.
  4. File system: Made FS_FAT_USE_FSINFO_SECTOR option run-time configurable. The FS_FAT_ConfigUseFSInfoSector() function must be called to enable/disable this feature.
  5. File system: Added a warning message for the case when an application tries to call FS_Init() more than one time without calling FS_DeInit() in between.
  6. NAND physical layer: Improved the read performance of the NAND_PHY_2048x8 physical layer. When possible, data is read from the NAND flash internal buffer. No data is fetched from the memory array in this case.
  7. SD/MMC card mode driver: Added support for eMMC devices operating at 2.8V.
  8. LOGVOL driver: Improved the support for removable storage mediums. The correct media status is reported and the storage capacity is updated when a new storage storage medium is inserted.

Program corrections

  1. File system: When truncating a file to 0 the first cluster field of the directory entry was not set to 0 leaving the file system into an inconsistent state. Fixed.
  2. File system: When passed an unknown volume name the format functions always performed the operation on the first volume. Fixed.
  3. File system: Missing default value for FS_OS_LOCKING define caused compiler warnings. Fixed.
  4. Journaling: The de-initialization of journaling module caused an invalid memory access. Fixed.
  5. NOR physical layer: The NOR_PHY_ST_M25 physical layer did not wait for the write to status sector (write protection removal) to finish causing the following operations to fail. Fixed.
  6. LOGVOL driver: The logical driver tried to access the storage medium before the initialization of device drivers. Fixed.

Version 3.26k [19. Apr 2012]

Program corrections

  1. Universal NAND driver: Low-level format failed when ECC errors were detected by the HW ECC. Fixed.

Version 3.26j [12. Apr 2012]

Improvements

  1. NOR block map driver: Added compile-time configurable number of reserved bytes to reduce the NOR flash resource usage.

Program corrections

  1. File system: FS_SetMaxSectorSize() did not accept a sector size smaller than 512 bytes. Fixed.

Version 3.26i [22. Mar 2012]

New Features

  1. Added two new API functions FS_STORAGE_Clean() and FS_STORAGE_CleanOne(). The functions can be called to perform garbage collection on a NOR or NAND flash.

Improvements

  1. NOR block map driver: Added compile-time configurable rewrite mode to support internal flashes which are not able to rewrite same data when 0s are maintained.
  2. NOR block map driver: Added compile-time configurable flash line size to support internal flashes which require aligned writes.
  3. NOR sector map driver: Added support for garbage collection. An application can call the FS_STORAGE_Clean() and FS_STORAGE_CleanAll() API functions to create writable logical sectors.
  4. NOR SPI physical layer: Added the ability to remove the write protection of flash blocks.

Program corrections

  1. File system: FS_Sync() returned 0 on an invalid/missing volume. Fixed.
  2. SD/MMC driver: SD cards with a capacity larger than 4GB were formatted incorrectly on 16-bit systems due to an integer overflow. Fixed.

Version 3.26h [22. Feb 2012]

New Features

  1. Made the number of LOGVOL instances compile-time configurable.
  2. Made the usage of large blocks for an Atmel DataFlash compile-time configurable.

Improvements

  1. LFN: Added the ability to interpret the case of short name entries created by Windows. The base or the extension part of a file name is converted to lower case when the corresponding flags in the reserved field of directory entry are set.
  2. SD/MMC SPI driver: Implemented a workaround for the SD cards which report invalid values for the access time parameters. In such a case, the driver uses fixed timeout values for read and write accesses.
  3. SD/MMC card mode driver: Improved the error handling. A data read/write operation is started only if the SD card responds without error to data transfer command.

Version 3.26g [10. Feb 2012]

Program corrections

  1. Journaling: On a storage medium formatted with MBR the start sector of partition was not considered when calculating the position of the Journal.dat file. Filling up the free space on the disk could have caused the corruption of the file system. Fixed.

Version 3.26f [30. Jan 2012]

Program corrections

  1. File system: memcmp() was called instead of generic FS_MEMCMP() macro. This lead to errors when compiling with FS_NO_CLIB set to 1. Fixed.

Version 3.26e [09. Jan 2012]

Program corrections

  1. SLC1 NAND driver: A bit error in the ECC protecting the sector data was copied to destination sector without being corrected. In special circumstances this could lead to several blocks being marked as bad by the driver. Fixed.
  2. SLC1 NAND driver: Driver API functions did not return an error when an invalid sector was accessed. Fixed.

Version 3.26d [05. Dec 2011]

New Features

  1. Added new API function FS_NAND_PHY_GetONFIPara(). It reads the ONFI parameters from an ONFI compatible NAND flash.

Improvements

  1. SD/MMC card mode driver: Increased the number of initialization retries to allow the communication with some types of micro SD cards.
  2. NOR sector map driver: Added more statistics counters.

Program corrections

  1. Block map NOR driver: During the processing of a trim command a sector containing data was marked (by accident) as invalid. Fixed.
  2. FAT: Trying to format a medium which was not large enough caused a memory fault. Fixed.

Version 3.26c [11. Nov 2011]

Program corrections

  1. EFS: An empty source file caused FS_CopyFile()/FS_CopyFileEx() to allocate all the free space on the medium. Fixed.

Version 3.26b [07. Nov 2011]

New Features

  1. Added new API function FS_CopyFileEx() which allows an application to provide its own temporary buffer.

Improvements

  1. EFS: Improved the write speed when using journaling. Data appended to a file is written directly to medium.
  2. FAT: Improved the error handling when searching the allocation table.

Program corrections

  1. Storage driver: Status of driver was queried before the driver initialization. Fixed.
  2. NAND/NOR drivers: Internal counters were not correctly reset. Fixed.
  3. NAND driver: FS_NAND_ReadDeviceId() did not initialize the NAND flash. Fixed.

Version 3.26a [05. Oct 2011]

New Features

  1. New NAND driver available which supports SLC and MLC NAND flashes.
  2. New NOR driver available which requires very few RAM.

Improvements

  1. NAND driver: Improved the speed of active wear leveling. The driver checks now only the allocated blocks.
  2. ONFI physical layer: Added functions to enable/disable the NAND flash internal ECC engine.
  3. File system: Improved the computation speed of the CRC16 routine.
  4. SD/MMC driver: Improved the read/write speed.

Program corrections

  1. IDE driver: Write Feature command did not work properly. Fixed.

Version 3.24g [29. Jul 2011]

Improvements

  1. NAND driver: In case of a fatal error the application has now the possibility to decide whether the medium should be marked as read-only or not.

Program corrections

  1. NAND driver: Minimum erase count was not updated when converting a work block into a data block. Fixed.
  2. NAND driver: Missing pointer casts caused errors when compiling with a C++ compiler. Fixed.
  3. NAND driver: Missing ONFI support caused linking errors when using the object code version of emFile. Fixed.

Version 3.24f [22. Jul 2011]

Improvements

  1. NAND driver: Removed the checking for the number of work blocks. The driver will always use the number of work blocks read from device.

Program corrections

  1. NAND driver: Low-level format caused an array overflow when the number of work blocks configured was greater than the number of work blocks read from device. Fixed.

Version 3.24e [05. Jul 2011]

New Features

  1. Added new API function FS_NAND_SetNumWorkBlocks(). It configures at runtime the number of work blocks the NAND driver uses.
  2. Added new API functions FS_Lock(), FS_Unlock(), FS_LockVolume(), FS_UnlockVolume(). These functions allow a task to get exclusive access to file system or a specified volume.
  3. Added ONFI physical layer for the NAND driver.

Improvements

  1. NAND driver: Added support for file system TRIM operation.
  2. NOR driver: Improving the write speed. The sectors are marked as erasable only when required.

Program corrections

  1. FAT: FAT_Format() failed when the number of sectors was less than 256. Fixed.
  2. FAT: Invalid error code returned when reading a FAT entry. Fixed.
  3. File system: Incorrect number of bytes written returned by FS_Write() on journal overflow. Fixed.
  4. DataFlash NAND physical layer: Wrong read command was used for a 64Mbit DataFlash connected over SPI. Fixed.
  5. DataFlash physical layer: Decision where to store the spare are on a 64Mbit device was wrong. Fixed.
  6. File system: FS_BITFIELD_CalcSize() caused an integer overflow on 16-bit targets. Fixed.
  7. Serial NOR physical layer: Initialization caused an integer overflow on 16-bit targets. Fixed.

Version 3.24d [21. Mar 2011]

Improvements

  1. NAND driver: Improved the write speed by optimizing the copy of a block. The ECC of the copied sector is computed only once.

Program corrections

  1. Atmel SD/MMC driver: Driver blocked when the second unit was unmounted. Fixed.
  2. NAND driver: Mount procedure failed to delete a duplicated data block. Fixed.

Version 3.24c [28. Feb 2011]

Program corrections

  1. File system: Compile error generated when FS_SUPPORT_DEINIT == 1 and FS_USE_FILE_BUFFER == 0. Fixed.
  2. Journaling: Race condition occurred when FS_OS_LOCKING == 2. Fixed.
  3. FAT: Buffer was not deallocated when FS_Format() failed. Fixed.

Version 3.24b [10. Feb 2011]

New Features

  1. Added new API function FS_NAND_SetOnFatalErrorCB(). It registers callback function which is invoked when the NAND driver encounters a fatal error.

Improvements

  1. NAND driver: Optimized the write speed and added read retries to improve the recovery from bit errors.
  2. Journaling: Improved the write speed.
  3. Atmel MMC driver: Added support for the second MCI controller.

Program corrections

  1. NAND driver: False error message at deinitialization about an invalid unit number. Fixed.
  2. NOR driver: False error message at deinitialization about an invalid unit number. Fixed.
  3. File system: File buffers were not properly freed at deinitialization. Fixed.
  4. Atmel SD/MMC driver: Data was corrupted when reading a large number of sectors at once. Fixed.

Version 3.24a [08. Dec 2010]

New Features

  1. Added support for eMMC, MMCplus, MMCmobile cards (v4.x standard).
  2. Added new API function FS_NAND_SetMaxEraseCntDiff() which allows the user to control the wear leveling.
  3. Added new API function FS_AddOnExitHandler() which gives the user the opportunity to perform additional tasks at deinitialization.
  4. Added new API function FS_NOR_SetSectorSize() which allows configuration of sector size of NOR driver.

Improvements

  1. NAND driver: Improved the wear leveling and the handling of device errors.
  2. MMC Atmel driver: Improved the data transfer and the handling of events.

Program corrections

  1. NAND driver: At deinitialization the resources were not properly freed. Fixed.
  2. embOS integration: Resources were not properly freed at deinitialization. Fixed.
  3. FAT with LFN: File names were not properly checked for invalid characters. Fixed.
  4. Journaling: Deinitialization of caused a memory fault. Fixed.

Version 3.22c [18. Oct 2010]

Improvements

  1. NAND_PHY_2048x8.c: Improved the readability.

Program corrections

  1. FS_SetEndOfFile(): Allocated one cluster more on EFS when the size of the file was a multiple of cluster size. Fixed.
  2. File buffering: When writing to a file using buffering, emFile accidentally caused a buffer overflow. Fixed.
  3. FS_AssigCache(): This function caused a deadlock on an OS which didn't support multiple locking from the same task. Fixed.
  4. FS_GetFileAttributes(): This function returned 0 instead of 0xff when the volume was not found. Fixed.

Version 3.22a [12. Jul 2010]

New Features

  1. Added new API function FS_ConfigFileBufferDefault() which allows the user to use file buffers to increase read/write performance when reading/writing files in small chunks.
  2. Added new API function FS_ConfigFileBufferFlags() which allows configurations of the file buffer flags on a per-file basis.
  3. Added new API function FS_SetFileWriteMode() which allows to choose between different file write modes.

Improvements

  1. FS_Remove(): File could be deleted even if they were opened / in use.

Program corrections

  1. SPI MMC/SD card driver: some SD cards do not work properly in high speed mode.

Version 3.20i [21. Jun 2010]

Program corrections

  1. FAT_SetEndOfFile.c: When truncating a file, emFile accidentally truncated one cluster too much. Fixed
  2. Atmel MMC/SD SPI driver: After a complete read operation, the driver did not send a STOP command to the SD card. Fixed
  3. DataFlash physical layer: 64 MBit / 128 MBit devices were not identified / auto-configured correctly.

Version 3.20h [20. Apr 2010]

Improvements

  1. Data Flash: Added support for 128MBit data flash. A warning is shown, when data flash is in "power of 2 mode".
  2. Ramdisk: Added FS_HUGE macro to the RAMDISK pointer in order to have a hint for 16-bit compilers.
  3. WinDrive: Added support for Windows Vista and Windows 7.

Program corrections

  1. NAND driver: When converting a work block into a data block the internal index of the sectors was not written which causes data misinterpretation after a power failure. Fixed
  2. MMC/SD SPI driver: Data CRC was not calculated correctly. Fixed
  3. NOR flash driver: On 16-bit processors the calculation of internal data caused data overflows. Fixed
  4. General API: Internal data were set before checking for NULL-pointer. Fixed

Version 3.20g [21. Jan 2010]

Improvements

  1. Long file name support: Reduced the amount of time taken to generate short file names.

Version 3.20f [23. Nov 2009]

Program corrections

  1. NAND driver: Under some circumstances, especially if most of the NAND flash was full, a work block was marked as free accidentally. Fixed

Version 3.20e [06. Nov 2009]

Program corrections

  1. FS_USE_FILE_BUFFER: When setting this macro to 1, compile errors could occur. Fixed.

Version 3.20d [28. Oct 2009]

Program corrections

  1. FS_STORAGE_ReadSectors/FS_STORAGE_WriteSectors: When the volume was mounted, used and unmounted and the volume is then accessed by the STORAGE functions, a partition offset when reading/writing in burst-mode was not reset which could be lead in wrong sector data. Fixed.

Version 3.20c [12. Oct 2009]

Program corrections

  1. FS_Unmount: When unmounting a volume the IDE/CF and MMC/SD card driver did not handle this correctly. Fixed.

Version 3.20b [14. Sep 2009]

Program corrections

  1. FS_Rename/FS_Move: When renaming or moving a file or directory and an invalid file name was specified the file name was not checked for valid file name characters. Fixed.
  2. FS_FOpen: When opening a file on a write-protected medium a valid file handle was returned instead of return a NULL handle. Fixed.
  3. FS_Unmount: When unmounting a volume the driver was not signaled to unmount the volume. Fixed.

Version 3.20a [17. Aug 2009]

New Features

  1. New Configuration function FS_NOR_SPI_Configure() to setup a SPI NOR flash manually.
  2. Added new function FS_Sync() to synchronize/flushes all memory/cached data to medium.
  3. MMC/SD card driver (both card mode and SPI) support high speed mode of SD cards.

Improvements

  1. NOR flashes: Reduced the RAM usage of the NOR driver.

Program corrections

  1. NAND driver: Under some circumstance the wrong block was assigned to read. Fixed.

Version 3.14a [15. Dec 2008]

New Features

  1. Added new physical layer for NAND flashes (very large page NAND flashes).

Improvements

  1. NAND flashes: Reduced the RAM usage of the NAND driver.
  2. NOR CFI flashes. Added support for write buffer functionality for better write performance.
  3. NOR CFI flashes. Added support for automatically unlock sectors.
  4. NOR CFI flashes. Added new macro to use call a delay/sleep function during sector operation.

Program corrections

  1. NAND driver: During a low-level-mount invalid work blocks were added to the work block list which lead to use wrong work blocks. Fixed.
  2. NAND driver: Blocks that were not used by the NAND driver have not been added to the free block list, which lead the NAND driver to overwrite the block 0 of the NAND flash and cause the NAND driver to corrupt the low-level-information. Fixed.

Version 3.12j [06. Nov 2008]

Program corrections

  1. FS_CopyFile: When the destination file during a file copy could not be created the file object of the destination file was not freed. Fixed.
  2. Journaling: When FS_SUPPORT_JOURNAL and FS_SUPPORT_DEINIT is enabled the function FS__JOURNAL_DeInit was not found during linking. Fixed.
  3. EFS: FS_FOpen could create a file although the file name already exists. Fixed.

Version 3.12i [06. Aug 2008]

Program corrections

  1. FAT LFN: With LFN enabled a wrong file handle or wrong directory could returned/opened. Fixed.

Version 3.12h [04. Aug 2008]

Program corrections

  1. FAT LFN file handles: A false file handle could be returned with LFN support. Fixed.

Version 3.12g [22. Jun 2008]

Program corrections

  1. Low-level mount robustness: A volume corrupted on power failure or by sector copying. Fixed.
  2. FS_X_OS_Lock() called before FS_X_OS_Init(): With OS locking level 2 (FS_OS_LOCKING 2) FS_X_OS_Lock() was called before FS_OS_Init(). Fixed.

Version 3.12f [10. Jun 2008]

Improvements

  1. FS_Unmount(). FS_Unmount sets the state of a volume to uninitialized even if the volume is not mounted.

Program corrections

  1. Caches: When insufficient memory was assigned to the cache, the function could fail. Fixed.
  2. CacheRWQuota: When the FS_CACHE_SetMode and FS_CACHE_SetQuota was called after selecting the FS_CACHE_RWQUOTA cache all cached sector were wrongly invalided. Fixed.
  3. Alignment: When calling FS_GetFileAttributes with unaligned 32bit variable could cause on some CPU system a memory fault. Fixed.
  4. FAT: The character "&" was identified as an invalid char when using it for a short name entry leading to fail the file/directory operation. Fixed
  5. LFN/UTF8: When copying a Unicode string the alignment of the buffer was not checked which could cause on some CPU system a memory fault. Fixed.
  6. LFN: When generating a short name entry for a long file name, an internal variable was incremented twice which lead to abort the short name generation in half of the time.
  7. OS locking When FS_OS_LOCKING is set 2, FS_X_OS_Lock() and FS_X_OS_Unlock() was called before FS_X_OS_Init() was called. Fixed. FS_DeInit: When using more than one volume, FS_DeInit will fail before of referencing a invalid pointer. Fixed.

Version 3.12e [30. Jun 2008]

Program corrections

  1. Caches: When reading data in burst mode (multiple sectors read) and any FS' cache is enabled, the system crashed. Fixed.
  2. Memory allocation: When memory for an additional file handle/object or an additional volume object is allocated, the pointer was not checked if valid. Fixed.

Version 3.12d [19. Jun 2008]

New Features

  1. Added new function: FS_CACHE_Invalidate.
  2. Added new functions for checking and performing low-level-format in FS_X_AddDevices: FS_NOR_IsLLFormatted(), FS_NOR_FormatLow(), FS_NAND_IsLLFormatted and FS_NAND_FormatLow.
  3. Added new function for setting the NOR flash driver sector size: FS_NOR_SetSectorSize().

Improvements

  1. Cache modules check for alignment.
  2. Improved debug logging and error handling.

Program corrections

  1. FS_Move, FAT: Moving a file could fail, the wrong file name was passed. Fixed.

Version 3.12c [10. Jun 2008]

Program corrections

  1. MMC Card mode driver: When checking the card type, MMC and MMC plus card may not recognized correctly. Fixed.

Version 3.12b [03. Jun 2008]

Program corrections

  1. FAT LFN & UTF8 : When a unaligned pointer to a UTF8 string was given, the conversion to an Unicode string might fail. Fixed.

Version 3.12a [24. Apr 2008]

New Features

  1. New add-on available: Independent FS-Journaling.
  2. New run-time configurable functions available: FS_WriteUpdateDir - Configures whether the directory entry shall be updated after user data has been written. FS_MMC_CM_Allow4bitMode - Configures the MMC/SD card mode driver to allow 4-bit mode data transfer.
  3. Added FS_SetOnDeviceActivityHook which allows to log which sectors are read/written by file system.

Improvements

  1. EFS: Improved read/write performance.
  2. File handles/volume objects are rather allocated than predefined by compile time switch.
  3. Allow to use an external memory manager if required.

Program corrections

  1. FS_SetVolumeLabel: Setting a volume label always failed. Fixed.

Version 3.10j [22. Apr 2008]

Improvements

  1. Removed any compiler warning that may be reported by a 16-bit compiler.

Version 3.10i [14. Apr 2008]

Improvements

  1. Improved support for newer SD cards that conforms with SD card specification V2.00.
  2. Improved support for newer MMCplus cards.

Version 3.10h [07. Jan 2008]

New Features

  1. FAT disk checking operation supports orphaned long file name entries.

Version 3.10g [14. Dec 2007]

Program corrections

  1. FS_Rename(FAT): When renaming a file or directory with a long file name, the long file name entry was not removed. Fixed.
  2. LFN (FAT): When looking for a file/directory, the operation could fail, due of not handling orphaned long directory entries correctly. Fixed.
  3. FS_Rename(FAT): Renaming a file or directory could fail when using absolute file paths. Fixed.

Version 3.10f [04. Dec 2007]

Program corrections

  1. FS_Rename/FS_Move (FAT): When moving/renaming a file or directory other directory entries could be affected. Fixed.
  2. Unmount/Remount: When unmounting and remounting a volume using FS_Mount() could fail. Fixed.

Version 3.10e [02. Nov 2007]

Program corrections

  1. NAND driver: An wrong identifier was used to mark a bad block which could result in using the bad block later when searching for a new block. Fixed.

Version 3.10d [25. Oct 2007]

Program corrections

  1. FAT CheckDisk: FS_CheckDisk() removed short directory entries if directory entry name was shorter than 8+3 characters. Fixed.
  2. FS_GetTotalSpace, FS_GetFreeSpace(): In opposite to the manual FS_GetTotalSpace(), FS_GetFreeSpace() expected an additional parameter DevIndex, which was not used. Fixed.

Version 3.10c [16. Oct 2007]

Program corrections

  1. RamDisk, WinDrive: Driver were not included. Fixed.
  2. Compile time switches Enabling the switches FS_VERIFY_WRITE or FS_SUPPORT_CHECK_MEMORY could cause that the compilation failed. Fixed.

Version 3.10b [05. Oct 2007]

Program corrections

  1. MMC_SPI: Some comments did not end correctly. Fixed.

Version 3.10a [24. Sep 2007]

New Features

  1. SD HC cards are supported.
  2. The max sector size is run-time configurable.
  3. Atmel DATAFLASH is supported by NAND driver.
  4. New function added: FS_UnmountForced().

Improvements

  1. Improved SD card mode handling.

Program corrections

  1. FAT: FS_Rename(), FS_Move could move a file/directory although the file/directory has read-only attributes. Fixed.
  2. When setting a volume label after formatting the volume and creating a file/directory with the same file, file/directory operation could fail. Fixed.
  3. MMC: MMC card initialization in SPI mode could fail, if there is no pull-up on MISO line. The MMC driver did not wait accordingly to the spec. Fixed.

Version 3.08b [06. Jul 2007]

Improvements

  1. Additional functions which allow using the storage layer stand alone (without file system) added.
  2. FS_Init() and FS_InitStorage() can now be called multiple times, simplifying the use of the storage layer without file system. Typically applications are usage of the storage layer with a USB mass storage device.

Version 3.08a [04. Jul 2007]

New Features

  1. New function to initialize the storage layer (aka LBL) only added.
  2. New configuration function for IDE/CF driver added.

Improvements

  1. NAND flash driver: Multiple work blocks supported, improving write speed.

Version 3.06b [06. Jun 2007]

Program corrections

  1. NAND: The NAND driver could report an ECC error although no data has ever been written to this sector. Fixed.

Version 3.06a [05. Jun 2007]

Program corrections

  1. FAT: When LFN support is enabled, files/directories with short file names could not be opened. Fixed.

Version 3.04c [18. May 2007]

Program corrections

  1. FS_X_GetTimeDate(): In the configuration samples date and time were stored in wrong order, this could cause wrong time and date values in directory entries. Fixed.
  2. When FS_MULTI_HANDLE_SAFE is set to 1 and a file object is no longer used, the FS__FreeFileObj did not remove the string that is used to identify the file object. Fixed.

Version 3.04b [10. May 2007]

Program corrections

  1. FAT: The wrong date and time were written when creating a file. Fixed.

Version 3.04a [10. May 2007]

New features

  1. Major conceptional changes from version 2.xx. Improved flexibility and ease of use. Configuration simplified. For details, refer to the manual.
  2. Hardware and configuration samples to sample directory added.
  3. User provided functions for time and date FS_X_GetTime(), FS_X_GetDate() have been replaced by single function FS_X_GetTimeDate().

Improvements

  1. IDE, MMC/SD card mode driver improvements.
  2. NAND flash driver: Use a large (2048 bytes) page with sector sizes of 512 bytes.
  3. NOR flash driver: Fail safety improved.

Program corrections

  1. The physical NAND driver for 8bit small NAND flashes, generic 8bit NAND flashes and 16bit large page NAND flash have not been adapted to the new driver structure. Fixed.
  2. NAND: The driver could allocate memory for its instance information twice. Fixed.
  3. NAND: Data for the first sector in a block could be corrupted under some circumstances (other sectors of the same block already written, but the first block not) when powered down. Fixed.
  4. EFS: When no more cluster were available for data store the EFS writing routine did not return and could cause data corruption on the medium. Fixed.