The Embedded Experts
Release notes for emFile version V5.32.1
Version 5.32.1 [25 November 2024]
New Features
- Added FS_CRYPT_SetSectorBufferSize() API function.
- Added support for Winbond W25Q01JV serial NOR flash device.
- Added support for Winbond W25Q02JV serial NOR flash device.
Program corrections
- Encryption: FS_SetEncryptionObjectEx() wrongly reported an error when called with IsEnhanced set to 1 and when the file system was built with FS_CRYPT_SUPPORT_ENHANCED_MODE set to 1 FS_CRYPT_SUPPORT_STANDARD_MODE set to 0. Fixed. Introduced in version 5.32.0
- exFAT: FS_Truncate(), FS_SetFileSize and FS_SetEndOfFile() failed to correctly reduce the size of a file that had a non-linearly allocated cluster chain assigned to it. Fixed. Introduced in version 5.32.0
- exFAT: FS_FClose() failed to correctly update the file size to storage device. Fixed. Introduced in version 5.32.0
- exFAT: The file system accessed the wrong offset in a file after the size of the file was reduced. Fixed. Introduced in version 5.32.0
- exFAT: FS_SetFileSize() failed to correctly update the internal information about the cluster chain when the size of the file was increased. Fixed. Introduced in version 5.32.0
- exFAT: FS_Format() ignored the cluster size specified as parameter. Fixed. Introduced in version 5.32.0
- File system: The size of FS_FIND_DATA structure increased unexpectedly after adding support for exFAT. Fixed. Introduced in version 5.32.0
- FAT: FS_GetVolumeInfo() and FS_GetVolumeInfoEx() failed to correctly set the SectorsPerClusterHigh member of the FS_DISK_INFO structure. Fixed. Introduced in version 5.32.0
- EFS: FS_GetVolumeInfo() and FS_GetVolumeInfoEx() failed to correctly set the SectorsPerClusterHigh member of the FS_DISK_INFO structure. Fixed. Introduced in version 5.32.0
- EFS: The file system did not free all the clusters allocated to a file when the file was removed and the gap between two consecutive clusters was larger than the number of entries that can be stored in a logical sector of the allocation table. This behavior occurred only when the file system was built with FS_EFS_OPTIMIZE_DELETE set to 1. Introduced in the initial version.
- FAT: The file delete optimization did not work as expected with FS_FAT_OPTIMIZE_DELETE set to 1. Introduced in version 5.0.0
Version 5.32.0 [7 October 2024]
New Features
- Added support for exFAT.
- Added authenticated encryption for files.
- Added FS_SetEncryptionObjectEx() API function.
- Added FS_FSeek64() API function.
- Added FS_FTell64() API function.
- Added FS_SetFileSize64() API function.
- Added FS_GetFileSize64() API function.
- Added FS_Truncate64() API function.
- Added FS_GetFileInfo64() API function.
- Added FS_FindFirstFile64() API function.
- Added FS_FindNextFile64() API function.
- Added FS_FindClose64() API function.
- Added support for GigaDevice GD25Q32E serial NOR flash device.
Improvements
- File system: Reduced ROM usage when using multiple file system types.
- Encryption: Improved the AES and DES software encryption algorithms to support in-place calculation.
Program corrections
- Card Mode MMC/SD driver: The driver failed to build with FS_MMC_SUPPORT_MMC set to 0 and FS_MMC_SUPPORT_UHS set to 1. Fixed. Introduced in version 5.4.0
- RAID5 driver: The sector free operation was not handled correctly. Fixed. Introduced in version 4.06a
- FAT: FS_FAT_GrowRootDir() failed to lock the access to file system with FS_OS_LOCKING set to 2. Fixed. Introduced in the initial version.
Version 5.30.0 [24 June 2024]
New Features
- Added logical driver for authenticated encryption.
- Added OS layer for CMSIS-RTOS V2.
- Added support for ST M95P16 serial NOR flash device.
- Added support for ISSI IS34ML04G088 parallel NAND flash device.
- Added support for Alliance Memory AS9F31G08SA parallel NAND flash device.
- Added support for Alliance Memory AS9F32G08SA parallel NAND flash device.
- Added support for Alliance Memory AS9F34G08SA parallel NAND flash device.
- Added support for Alliance Memory AS9F38G08SA parallel NAND flash device.
- Added support for SkyHigh S34ML01G3 parallel NAND flash device.
- Added FS_CopyDir() API function.
- Added FS_GetPathVolumeName() API function.
- Added FS_GetPathDirName() API function.
- Added FS_GetPathBaseName() API function.
- Added FS_GetPathExtension() API function.
- Added FS_MakePath() API function.
Improvements
- File buffer: Improved the memory management.
- File system: Added configurable CRC calculation routines.
- Serial NOR physical layer: Added support for quad and dual data transfers for Infineon S25FL128S and S25FL256S serial NOR flash devices.
- Sector Map NOR driver: Added support for arbitrary physical sector sizes.
- Sector cache: Improved the error handling.
- Card Mode MMC/SD driver: Added support for storage device reinitialization.
- Card Mode MMC/SD driver: Added support for event notification.
- SPIFI NOR physical layer: Added support for cache invalidation.
Program corrections
- Serial NOR physical layer: Infineon S25FL128S serial NOR flash device was not correctly recognized by the file system. Fixed. Introduced in version 5.18.0
- Storage Image Creator: The copysectors command failed to correctly validate the parameters. Fixed. Introduced in version 5.26.0
- FAT: FS_Format() failed to format a storage device with a corrupted boot sector. Fixed. Introduced in the initial version.
- ONFI NAND physical layer: The physical layer failed to detect that Micron MT29F2G08ABAGA had internal HW ECC when using a device variant that had the HW ECC disabled by default. Fixed. Introduced in version 5.10.0
Version 5.28.0 [26 February 2024]
New Features
- Added support for fail-safe erase operation to Universal NAND driver.
- Added support for GigaDevice GD25Q16C serial NOR flash device.
- Added "freesectors" command to Storage Image Creator utility.
- Added FS_WINDRIVE_AllowImageFile() API function.
- Added FS_GetVolumeLayout() API function.
- Added FS_GetClusterInfo() API function.
- Added FS_GetATInfo() API function.
- Added FS_GetFirstCluster() API function.
Improvements
- Storage Image Creator: Extended the "format" command by a parameter that can be used to specify the cluster size.
- File Disk driver: Improved the initialization of sector usage information.
Program corrections
- File system: The file system failed to correctly delete a file with a size greater than 232 bytes minus number of bytes in a cluster. Fixed. Introduced in the initial version.
- File system: The file system failed to correctly change the size of a file with a size greater than 232 bytes minus number of bytes in a cluster. Fixed. Introduced in the initial version.
- File system: The file system was not able to determine that a file or directory was located on the default volume if the name of that file or directory did not contain a volume name. This behavior occurs only when a file or directory name is passed as parameter to an API function that instead expects a volume name. Fixed. Introduced in version 5.0.0
- EFS: FS_Format() failed to correctly format a storage device with a total number of clusters that is either a power of 2 value or one less than a power of 2 value. This behavior does not affect applications that call FS_Format() with the second parameter set to NULL. Fixed. Introduced in the initial version.
- FAT: FS_Move() failed to preserve the modification time of the source file. Fixed. Introduced in the initial version.
- Serial NOR physical layer: Winbond W25Q512JV NOR flash device was not identified correctly. Fixed. Introduced in version 5.24.0
- 2048x8 NAND physical layer: The physical layer failed to return the correct number of bit errors that occurred in a NAND page. This behavior affects Toshiba and Samsung NAND flash devices with internal HW ECC. Fixed. Introduced in version 4.04a
- ONFI NAND physical layer: The physical layer failed to return the correct number of bit errors that occurred in a NAND page. This behavior affects Macronix and SkyHigh NAND flash devices with internal HW ECC. Fixed. Introduced in version 5.8.0
Version 5.26.0 [4 December 2023]
New Features
- Added Storage Image Creator.
- Added support for trim operation to File Disk driver.
- Added FS_GetFileSizeEx() API function.
- Added FS_STORAGE_SyncEx() API function.
- Added FS_STORAGE_FindVolumeByIndex() API function.
- Added FS_STORAGE_FreeSectorsEx() API function.
- Added FS_STORAGE_Mount() API function.
- Added FS_STORAGE_MountEx() API function.
- Added FS_STORAGE_GetCleanCntEx() API function.
- Added FS_STORAGE_CleanOneEx() API function.
- Added FS_STORAGE_CleanEx() API function.
- Added FS_STORAGE_GetSectorUsageEx() API function.
- Added FS_STORAGE_RefreshSectorsEx() API function.
- Added FS_STORAGE_SyncSectorsEx() API function.
- Added FS_STORAGE_SetAutoMountType() API function.
- Added FS_STORAGE_GetAutoMountType() API function.
- Added FS_STORAGE_GetMountType() API function.
- Added FS_STORAGE_SetAutoMountTypeEx() API function.
- Added FS_STORAGE_GetAutoMountTypeEx() API function.
- Added FS_STORAGE_GetMountTypeEx() API function.
- Added FS_STORAGE_FindVolumeByDevice() API function.
Improvements
- File system: Improved the performance of the file copy operation.
- Serial NOR physical layer: Improved the handling of read mode bits.
Program corrections
- File system: FS_FClose() returned a wrong error code when it failed to read the directory entry of the file. Fixed. Introduced in version 5.1.0
- File system: FS_SetFileSize() returned a wrong error code when it failed to read the directory entry of the file. Fixed. Introduced in version 5.1.0
- File system: FS_SetEndOfFile() returned a wrong error code when it failed to read the directory entry of the file. Fixed. Introduced in version 5.1.0
- File system: FS_CopyFile() failed to report an error when the application unmounted the volume on which the destination file was located while the copy operation was in progress. This behavior affects configurations that set FS_OS_LOCKING to 2. Fixed. Introduced in the initial version.
- File system: FS_CopyFileEx() failed to report an error when the application unmounted the volume on which the destination file was located while the copy operation was in progress. This behavior affects configurations that set FS_OS_LOCKING to 2. Fixed. Introduced in the initial version.
- EFS: FS_Format() failed to format a storage device when the specified cluster size was greater than 128 sectors. Fixed. Introduced in the initial version.
- File system: FS_FGets() failed to report an error when the file handle was invalidated by a different task during the operation. This behavior affects configurations that set FS_OS_LOCKING to 2. Fixed. Introduced in version 5.20.0
- File system: FS_Truncate() tried to access an invalid memory location when the volume on which the specified file was located was not mounted. Introduced in the initial version.
- File system: FS_SetEndOfFile() tried to access an invalid memory location when the volume on which the specified file was located was not mounted. This behavior affects configurations that set FS_OS_LOCKING to 1 or 2. Introduced in the initial version.
- BigFAT: FS_BIGFAT_SetSize() failed to modify the file size if the new size was not a multiple of the maximum fragment file size. Fixed. Introduced in version 5.0.0
- BigFAT: FS_BIGFAT_GetSize() returned an incorrect value when the function was called immediately after a write operation that modified the data of that file. Fixed. Introduced in version 5.0.0
- BigFAT: FS_BIGFAT_Write() incorrectly reported that the operation failed if FS_BIGFAT_SetSize() was called immediately before the write operation. Fixed. Introduced in version 5.0.0
- FAT: FS_Format() failed to correctly format a storage device with a capacity of 128 GB or greater when the specified number of sectors per cluster was set to 1 and the logical sector size was 512 bytes large. Fixed. Introduced in the initial version.
- EFS: FS_Format() failed to correctly format a storage device with a capacity of 128 GB or greater when the specified number of sectors per cluster was set to 1 and the logical sector size was 512 bytes large. Fixed. Introduced in the initial version.
Version 5.24.0 [28 August 2023]
New Features
- Added File Disk driver.
- Added support for Infineon FM25V02A serial FRAM device.
- Added support for Fujitsu MB85RS128TY serial FRAM device.
- Added support for Fujitsu MB85RS256TY serial FRAM device.
- Added support for Adesto AT25PE16 DataFlash device.
- Added support for Adesto AT25XE321D serial NOR flash device.
- Added support for Macronix MX25UM51245G serial NOR flash device.
- Added support for Macronix MX66L1G45G serial NOR flash device.
- Added support for ISSI IS25LP064D serial NOR flash device.
- Added support for Winbond W25Q80DV serial NOR flash device.
- Added support for Micron MT29F4G01ABAFD serial NAND flash device.
- Added support for GigaDevice GD25Q64EYIGR serial NOR flash device.
- Added support for Eon EN25QX64A serial NOR flash device.
- Added "exportfolder" command to NAND Image Creator utility.
- Added "exportimage" command to NOR Image Creator utility.
- Added support for removing entire directory trees to NAND Image Creator utility.
- Added support for FS_CMD_GET_CLEAN_CNT command to LOGVOL driver.
- Added FS_LOGVOL_SUPPORT_TRIM configuration define.
- Added FS_LOGVOL_SUPPORT_CLEAN configuration define.
- Added FS_MMC_CM_ReadCSD() API function.
- Added FS_MMC_CM_ReadSectors() API function.
- Added FS_MMC_CM_WriteSectors() API function.
Improvements
- SPI MMC/SD driver: Improved the error recovery of the SD card initialization.
- SPIFI NOR physical layer: Improved the performance of the operation that checks if a physical sector is blank.
- Block Map NOR driver: Optimized the operation that checks if a physical sector does not contain valid data.
- Block Map NOR driver: Improved the performance by caching the value of the minimum erase count.
- File system: Improved the Busy LED functionality so that the LED is also driven when the driver is initialized and when a free sector operation is performed.
- LOGVOL driver: A storage device is now unmounted only when the last LOGVOL partition located on it is unmounted by the application.
- Encryption: Optimized the performance of the operation that reads multiple sectors from a file.
Program corrections
- Serial NOR physical layer: The physical layer failed to correctly remove the write protection of Micron serial NOR flash devices. Fixed. Introduced in the initial version.
- File system: FS_WipeFile() failed to correctly lock the file system with FS_OS_LOCKING set to 2. Fixed. Introduced in version 3.30f
- File system: FS_Truncate() failed to correctly lock the file system with FS_OS_LOCKING set to 2. Fixed. Introduced in version 4.04g
- SPI MMC/SD driver: FS_MMC_GetCardId() failed to initialize the storage device. Fixed. Introduced in the initial version.
- SPI MMC/SD driver: FS_MMC_GetCardInfo() returned the wrong card type. Fixed. Introduced in version 5.14.0
- Serial NOR physical layer: The physical layer failed to correctly identify the Winbond W25Q80EW serial NOR flash device. Fixed. Introduced in the initial version.
- LOGVOL driver: The logical driver wrote wrong data when the file system layer was performing a repeated write operation and the driver instance was configured to use use multiple storage devices. Fixed. Introduced in the initial version.
- LOGVOL driver: The logical driver failed to return the correct logical sector usage. Fixed. Introduced in version 4.04f
- SLC1 NAND driver: The driver failed to return the correct usage of a logical sector with an index greater than 32767 on a 16-bit target. Fixed. Introduced in version 5.10.0
- Universal NAND driver: The driver failed to return the correct usage of a logical sector with an index greater than 32767 on a 16-bit target. Fixed. Introduced in version 4.06b
- Block Map NOR driver: The driver failed to return the correct usage of a logical sector with an index greater than 32767 on a 16-bit target. Fixed. Introduced in version 5.6.0
- SLC1 NAND driver: The driver falsely reported an error on an operation that freed a logical sector with an index greater than 32767 on a 16-bit target. Fixed. Introduced in version 5.10.0
- Universal NAND driver: The driver falsely reported an error on an operation that freed a logical sector with an index greater than 32767 on a 16-bit target. Fixed. Introduced in version 4.06b
- Block Map NOR driver: The driver falsely reported an error on an operation that freed a logical sector with an index greater than 32767 on a 16-bit target. Fixed. Introduced in version 5.6.0
Version 5.22.0 [21 February 2023]
New Features
- Added FS_BIGFAT_GetTime() API function.
- Added FS_BIGFAT_SetTime() API function.
- Added FS_MMC_CM_ReadGeneral() API function.
- Added FS_MMC_CM_WriteGeneral() API function.
- Added FS_STORAGE_FillSectors() API function.
- Added FS_STORAGE_FillSectorsEx() API function.
- Added support for FRAM storage devices.
- Added support for Winbond W25N512GVEIG serial NAND flash device.
- Added support for ST M95P32 serial NOR flash device.
- Added a new version of Block Map NOR driver that works in read-only mode.
- Added a new version of SPIFI NOR physical layer that works in read-only mode.
Improvements
- CFI NOR physical layer: Added configurable byte ordering for the access to CFI parameters.
- Serial NOR physical layer: Improved the write protection handling of the Winbond serial NOR flash devices.
- Encryption: Improved the error handling of the API functions.
- File system: Improved the performance of the FS_GetFileInfo() API function.
- Serial NOR physical layer: Improved the device identification operation.
Program corrections
- FAT: The file system failed to correctly mount a storage device with a capacity smaller than or equal to 128 KB that was formatted with a logical sector size of 2 KB. Fixed. Introduced in the initial version.
- File system: Wrong CHS (Cylinder, Head, Sector) address was calculated if the number of cylinders exceeded the maximum value that is permitted to be stored in the partition entry. Fixed. Introduced in the initial version.
- NOR Image Creator: The createimage command did not accept a space character as parameter delimiter. Fixed. Introduced in the initial version.
Version 5.20.0 [15 November 2022]
New Features
- Added FS_FGets() API function.
- Added support for GPT partitions.
- Added support for GigaDevice GD5F2GQ5UE serial NAND flash device.
- Added support for Cypress S25FL128L serial NOR flash device.
- Added support for the disconnection of the SD card internal pull-up of the D3 signal.
- Added macOS executables for all the utilities.
Improvements
- Block Map NOR driver: Improved the error handling of the physical sector allocation.
- File system: Extended FS_GetVolumeInfoEx(), FS_GetVolumeFreeSpaceFirst() and FS_GetVolumeFreeSpaceNext() with the ability to use a work buffer provided by the application.
- Serial NOR physical layer: Improved the error handling of ISSI, GigaDevice and Adesto serial NOR flash devices.
- SPIFI NOR physical layer: Improved the error handling.
Program corrections
- EFS: FS_Rename() did not report an error if the file to be renamed was opened. Fixed. Introduced in the initial version.
- Block Map NOR driver: The driver did not correctly recover from an interrupted logical sector write operation. As a result, a read error was wrongly reported when the application tried to access that logical sector. The behavior affects only file system configurations that enable either the CRC or ECC verification and the optimization for the fast write operation (FS_NOR_OPTIMIZE_DATA_WRITE set to 1). Fixed. Introduced in version 5.16.0
- WinDrive driver: The driver was not able to read less than 512 bytes from the image file. Fixed. Introduced in initial version.
- ONFI NAND physical layer: SkyHigh NAND flash devices with internal HW ECC were not identified correctly. Fixed. Introduced in version 5.12.0
- NOR Image Creator: Invalid write operations were performed when an image was created using the commands "setlinesize 8" and "setrewritesupport 0". Fixed. Introduced in version 4.06b.
- Block Map NOR driver: The driver failed to correctly access the data stored on the NOR flash device when: (1) the support for variable line size was enabled (FS_NOR_SUPPORT_VARIABLE_LINE_SIZE set to 1), (2) the flash line size was set to 16 bytes (FS_NOR_LINE_SIZE set to 16), (3) a flash line size of eight bytes was set at runtime via FS_NOR_BM_SetDeviceLineSize(). Fixed. Introduced in version 5.6.0
- Universal NAND driver: Under special circumstances the bit error handling procedure performed during the low-level mount operation caused a data loss by incorrectly discarding valid data. This behavior affects only file system configurations that set FS_NAND_MAX_BIT_ERROR_CNT to a value different than 0. Fixed. Introduced in version 4.04a
- FAT: FS_GetVolumeName() was truncating the last character of a volume label when the volume label was 11 characters long. Fixed. Introduced in version 5.0.0
- Universal NAND driver: Under special circumstances a logical sector was not marked as not being in use. This behavior did not affect the integrity of the data stored on the NAND flash device. Fixed. Introduced in the initial version.
- NOR Image Creator: The image file was not closed at the end of the script processing. Fixed. Introduced in the initial version.
- File system: FS_FSeek() accidentally cleared the error flag of the file handle. Fixed. Introduced in the initial version.
Version 5.18.1 [30 August 2022]
Program corrections
- SPIFI NOR physical layer: A false error was reported for NOR flash devices that required the sending of mode bits during a read memory array command. Fixed. Introduced in version 5.18.0
Version 5.18.0 [26 August 2022]
New Features
- Added FS_NOR_SPIFI_AllowDTRMode() API function.
- Added FS_NOR_SPIFI_AllowOctalMode() API function.
- Added FS_MMC_CM_AllowCacheActivation() API function.
- Added support for Macronix MX25LM51245G serial NOR flash device.
- Added support for Alliance Memory AS5F38G04SND serial NAND flash device.
- Added support for Winbond W25Q512JV serial NOR flash device.
- Added support for DTR mode for Winbond W25Q64JV, W25Q128JV, W25Q256JW, and W25Q512JV serial NOR flash devices.
- Added support for Kioxia TC58BVG1S3HTA00 parallel NAND flash device.
- Added support for XTX XT27G02BTSIG parallel NAND flash device.
Improvements
- SPIFI NOR physical layer: Added support for data transfers in DTR mode.
- SPIFI NOR physical layer: Added support for data transfers via eight data lines.
- SPIFI NOR physical layer: Improved the configuration of Micron serial NOR flash devices that transfer the data via four data lines.
- FreeRTOS OS layer: Added support for the static allocation of synchronization objects.
- FreeRTOS OS layer: Added support for an OS tick different than 1 millisecond.
- Universal NAND driver: Improved the error recovery at low-level mount.
Program corrections
- SPIFI NOR physical layer: An incorrect address was used in a dual flash mode configuration with two 16 MB serial NOR flash devices. Fixed. Introduced in version 5.0.0
- Block Map NOR driver: An incorrect flash line size was used when writing the data of a logical sector with the support for variable flash line size enabled. Fixed. Introduced in version 4.06b.
- Card Mode MMC/SD driver: The check for supported SD card functions did not work correctly. Fixed. Introduced in version 5.4.0
- Block Map NOR driver: FS_NOR_BM_WriteOff() possibly caused an invalid memory access with support for variable flash line size enabled. Fixed. Introduced in version 5.0.0
- File system: FS_Format() and FS_FAT_FormatSD() did not correctly unmount the file system if the storage device was present. Fixed. Introduced in the initial version.
- FAT LFN: Duplicated short file names were possibly generated if the number of characters in the base name of a long file name was smaller than six. Fixed. Introduced in the initial version.
- SPIFI NOR physical layer: The write protection removal for the Microchip 16 and 32 Mbit serial NOR flashes devices did not work correctly. Fixed. Introduced in version 4.04a
- File system: FS_DeleteDir() removed opened files. Fixed. Introduced in version 4.04d
- SPIFI NOR physical layer: A Cypress/Spansion S25FL064L serial NOR flash device was not identified correctly. Fixed. Introduced in version 4.04a
- EFS: FS_CheckDisk() possibly corrupted the file system structure if directory names were present on the storage device that started with a period character. Fixed. Introduced in the initial version.
- File system: FS_GetNumFilesOpen() and FS_GetNumFilesOpenEx() failed to correctly lock the file system with FS_OS_LOCKING set to 2. Fixed. Introduced in version 5.0.0
- Storage layer: FS_STORAGE_GetCounters() and FS_STORAGE_ResetCounters() failed to lock the file system. Fixed. Introduced in the initial version.
- Storage layer: FS_STORAGE_FreeSectors() accessed the wrong logical sectors if the storage device was partitioned via MBR. Fixed. Introduced in version 3.32a
- Block Map NOR driver: The operation that invalidates a logical sector was not fail-safe with the support for ECC enabled. Fixed. Introduced in version 5.6.0
- File system: FS_SetEndOfFile() and FS_SetFileSize() possibly corrupted the file system if the requested file size was larger than the available free storage space. Fixed. Introduced in the initial version.
Version 5.16.2 [5 August 2022]
Improvements
- BigFile: Changed the name to BigFAT.
Version 5.16.1 [14 June 2022]
Program corrections
- Universal NAND driver: The bit error handling procedure performed during the low-level mount operation potentially caused a data loss when using a NAND flash device that was excessively worn out. This behavior applies only to file system configurations that set FS_NAND_MAX_BIT_ERROR_CNT to a value different than 0. Fixed. Introduced in version 4.04a
Version 5.16.0 [10 May 2022]
New Features
- Added FS_NAND_UNI_SetMaxPageSize() API function.
- Added FS_NAND_UNI_SetMaxSpareAreaSize() API function.
- Added FS_FPuts() API function.
- Added FS_FPrintf() API function.
- Added FS_NOR_ErasePhySector() API function.
- Added FS_NOR_WriteOff() API function.
- Added new Storage layer API functions.
- Added FS_OPTIMIZATION_LEVEL configuration define.
- Added support for ISSI IS25LP128F serial NOR flash device.
- Added support for Alliance Memory AS5F32G04SND and AS5F34G04SND serial NAND flash devices.
- Added statistical counter for the number of pre-erase operations performed by the Block Map NOR driver.
Improvements
- Block Map NOR driver: Added optimization for the sector data write operation.
- Universal NAND driver: FS_NAND_UNI_GetBlockInfo() and FS_NAND_UNI_GetBlockInfoEx() now return the erase count of empty NAND blocks.
Program corrections
- RAID5 driver: Some of the memory allocated for the driver instance was not freed during deinitialization. Fixed. Introduced in version 4.06a
- LOGVOL driver: A configuration that exceeded the capacity of the storage device was not reported as error. Fixed. Introduced in the initial version.
- File system: FS_DeleteDir() possibly corrupted the file system structure on a EFS formatted volume when the specified maximum recursion level was smaller than the maximum directory depth. Fixed. Introduced in version 4.04d
Version 5.14.0 [9 March 2022]
New Features
- Added FS_BIGFILE_CheckDisk() API function.
- Added FS_MMC_GetCardInfo() API function.
- Added FS_NAND_2048X8_SetDeviceList() API function.
- Added support for ISSI IS25LP512M serial NOR flash device.
- Added support for ISSI IS34ML04G081, IS34ML01G084, IS34ML04G084 and IS34ML02G084 parallel NAND flash devices.
- Added support for Micron MT29F8G01ADBFD serial NAND flash device.
- Added support for Samsung K9F1G08U0F serial NAND flash device.
- Added support for Winbond W25N02K and W25N04K serial NAND flash devices.
- Added support for Winbond W29N02GZSIBF and W29N08GVSIAA parallel NAND flash devices.
- Added support for Winbond W25Q16JV serial NOR flash device.
- Added read and write functions to NOR SPI HW layer that are able to report error conditions.
- Added high speed mode support for Kioxia serial NAND flash devices.
- Added new configuration option (FS_NOR_SUPPORT_FORMAT) that can be used to disable the low-level format operation of the Block Map NOR driver.
- Added OS layer for MbedOS.
- Added OS layer for ThreadX.
Improvements
- Journaling: Improved the handling of consecutive logical sector operations.
- FAT: The disk checking operation verifies now that all the directory entries following the last used entry are marked as not used.
- File system: FS_SetFileAttributes() and FS_ModifyAttributes() now ignore any attempt to modify undefined flags.
- File system: Improved the handling of memory allocation errors.
- FAT: The number of free clusters stored in the FSInfo sector is updated now on a synchronize or unmount operation with the value calculated by any API function that scans the allocation table.
Program corrections
- Universal NAND driver: The statistical counters ReadSpareCnt and ReadByteCnt were not correctly updated if FS_NAND_OPTIMIZE_SPARE_AREA_READ was set to 1. Fixed. Introduced in version 4.04f
- RAID5 driver: Burst read and write operations were not handled correctly. Fixed. Introduced in version 4.06a
- Journaling: The MaxWriteSectorCnt statistical counter was not correctly updated. Fixed. Introduced in version 5.2.0
- Journaling: The first sector in a sector range was possibly not marked as free on the storage. Fixed. Introduced in version 5.4.0
- Journaling: Increasing the journal file size without a file system reinitialization possibly caused a data loss. Fixed. Introduced in the initial version.
Version 5.12.0 [6 December 2021]
New Features
- Added support for UHC encoded Korean file names.
- Added support for Big5 and GBK encoded Chinese file names.
- Added support for SkyHigh S34ML16G2 parallel NAND flash device.
- Added FS_FAT_GetLFNConverter() API function.
- Added FS_FAT_GetConfig() API function.
- Added FS_EFS_GetConfig() API function.
- Added FS_GetAutoMountType() API function.
- Added FS_NOR_SPIFI_ExecCmd() API function.
Improvements
- NOR physical layer: Added support for status polling in the hardware for all supported serial NOR flash devices.
- ONFI NAND physical layer: Improved the initialization of the SkyHigh S34ML08G3 parallel NAND flash device.
Program corrections
- FAT: Some of the small letters from the Latin-1 Supplement Unicode block such as LATIN SMALL LETTER O WITH STROKE were not converted correctly to capital letters. Fixed. Introduced in the initial version.
- Journaling: FS_JOURNAL_Create() and FS_JOURNAL_CreateEx() did not check for the minimum number of logical sectors in the journal file required for the correct operation. Fixed. Introduced in the initial version.
- EFS: The EFS file system failed to identify two UTF-8 encoded file names as identical when: (1) the file name contained letters, (2) the only difference between the file names was the case of the letters, (3) the support for case insensitive file names was enabled and (4) the number of bytes in the UTF-8 encoding of the small and capital was different. Fixed. Introduced in the initial version.
- SPIFI NOR physical layer: Writing a number of odd bytes in dual flash mode did not work correctly. Fixed. Introduced in version 5.0.0
- File system: An attempt to move a directory to one of its subdirectories was not correctly detected. Fixed. Introduced in version 5.4.0
- Sector Map NOR driver: FS_NOR_ReadOff() failed to initialize the NOR flash device before the read operation. Fixed. Introduced in the initial version.
- File system: Moving a file opened in write mode to a different location on the same volume possibly corrupted the file system structure. Fixed. Introduced in the initial version.
- File system: FS_DeleteDir() possibly corrupted the file system structure on a FAT formatted volume with the support for long file names enabled. Fixed. Introduced in version 4.04f
- Journaling: A logical sector was not marked as not being used when a transaction overflow occurred during a file delete operation. Fixed. Introduced in version 3.34b
- Storage: The callback function registered via FS_STORAGE_SetOnDeviceActivityCallback() was not called when the file system performed a read burst operation. Fixed. Introduced in version 3.12a
- File system: FS_FreeSectors() failed to mount the file system before performing the operation. Fixed. Introduced in version 3.34a
- File system: FS_FreeSectors() failed to create a journal transaction before performing the operation. Fixed. Introduced in version 3.34a
- Journaling: FS_JOURNAL_IsEnabled() failed to mount the file system before performing the operation. Fixed. Introduced in version 5.0.0
Version 5.10.0 [27 August 2021]
New Features
- Added support for Micron MT29F8G01ADAFD and MT29F4G01ABBFD serial NAND flash devices.
- Added support for Winbond W25M02GVZEIT serial NAND flash device.
- Added support for GigaDevice GD5F1GQ4UFYIG serial NAND flash device.
- Added support for Micron MT29F2G08ABAGA and MT29F4G08ABADA parallel NAND flash devices.
- Added "setnumworkblocks" command to NOR Image Creator.
- Added FS_NAND_QSPI_SetDeviceList() API function.
Improvements
- File system: Debug messages reporting that a storage device is not formatted are output now as warning.
- Universal NAND driver: Added support for calculating the number of clean operations via FS_STORAGE_GetCleanCnt().
- SLC1 NAND driver: Added support for calculating the number of clean operations via FS_STORAGE_GetCleanCnt().
Program corrections
- File system: The unmount operation possibly closed a handle to a file that was not located on the volume that was unmounted. This behavior applies to configurations that set FS_OS_LOCKING to 2. Fixed. Introduced in version 3.34a
- SLC1 NAND driver: DataFlash devices with the erase unit set to one block (FS_NAND_BLOCK_TYPE set to 0) were not handled correctly. Fixed. Introduced in the initial version.
- Card Mode MMC/SD driver: The forced unmount operation wrongly tried to access the storage device. Fixed. Introduced in version 5.0.0
- DataFlash NAND physical layer: Adesto AT45DB641E DataFlash was not handled correctly with FS_NAND_BLOCK_TYPE set to 0 or 1. Fixed. Introduced in version 3.34a
- FAT: The file system was not properly synchronized with the support for Journaling and for updating of dirty flag enabled (FS_SUPPORT_JOURNAL and FS_FAT_UPDATE_DIRTY_FLAG both set to 1). Fixed. Introduced in the version 4.04a
Version 5.8.1 [15 June 2021]
Program corrections
- Universal NAND driver: The data of a logical sector which had all bytes set to 0xFF was potentially not copied internally during a block conversion leading to a data loss. This behavior applies to parallel NAND flash devices with internal HW ECC that are able correct more than 1 bit error and that do not have support for internal page copy operation. Fixed. Introduced in version 5.0.0
Version 5.8.0 [7 June 2021]
New Features
- Added FS_CACHE_GetType() API function.
- Added FS_NAND_UNI_GetBlockInfo() API function.
- Added FS_NAND_ONFI_SetDeviceList() API function.
- Added support for EON EN25QH128A serial NOR flash device.
- Added support for Macronix MX30LF1G28AD, MX60LF8G28AD, MX30LF4GE8AB, MX30LF4G28AD, MX30LF2G28AD, and MX30LF2GE8AB parallel NAND flash devices.
- Added support for Macronix MX35LF1G24AD, MX35LF2G24AD, MX35LF2GE4AD, MX35LF4G24AD, and MX35LF4GE4AD serial NAND flash devices.
- Added support for Kioxia TC58CYG1S3HRAIJ, TC58CYG0S3HRAIJ, TH58CYG3S0HRAIJ, TC58CYG2S0HRAIJ, TC58CVG1S3HRAIJ, TC58CVG2S0HRAIJ, TH58CVG3S0HRAIJ, and TC58CVG0S3HRAIJ serial NAND flash devices.
- Added support for SkyHigh S34ML04G200TFI000, S34ML04G300TFI000, S34ML04G300TFI100, S34ML08G201TFI000, and S34ML08G301TFI000 parallel NAND flash devices.
- Added support for GigaDevice GD9FU4G8F2A and GD9FU1G8F2A parallel NAND flash devices.
- Added support for GigaDevice GD25LQ128D and GD25LQ16C serial NOR flash devices.
- Added support for Adesto AT25XE041D and AT25XE081D serial NOR flash devices.
- Added support for sector-aligned file buffer read operations.
- Added support for application-defined serial NOR device list.
- Added new configuration option (FS_NAND_ENABLE_STATS_SECTOR_STATUS) that can be used to disable the collection of information about the number of valid logical sectors by the Universal NAND driver.
- Added new configuration option (FS_BUFFER_SIZE_FILE_WIPE) that can be used to specify the size of the work buffer used by FS_WipeFile().
- Added new configuration option (FS_BUFFER_SIZE_TRUNCATE) that can be used to specify the size of the work buffer used by FS_Truncate().
Improvements
- Universal NAND driver: Increased the performance of the mount operation when using the 1-bit ECC software algorithm for bit error correction.
- Universal NAND driver: Improved the detection of the factory defective blocks of SkyHigh/Cypress/Spansion parallel NAND flash devices.
Program corrections
- FAT: The file system was not properly unmounted with the support for Journaling and for updating of dirty flag enabled (FS_SUPPORT_JOURNAL and FS_FAT_UPDATE_DIRTY_FLAG both set to 1). Fixed. Introduced in the version 4.04a
- File system: FS_GetFileId() was not correctly locking the file system with FS_OS_LOCKING set to 2 when the application was requesting the id of a directory. Fixed. Introduced in version 3.32b
- CompactFlash/IDE driver: The driver was not deinitialized correctly. Fixed. Introduced in the initial version.
- GCC reported warnings about the usage of strncpy(). Fixed. Introduced in the initial version.
Version 5.6.1 [23 March 2021]
Program corrections
- Block Map NOR driver: An invalid write operation was performed during an internal logical sector copy operation when the available free memory was smaller than the logical sector size and not aligned to a flash line. This defect affects only configurations that set FS_NOR_CAN_REWRITE to 0. Fixed. Introduced in version 4.04d
- Block Map NOR driver: Incorrect data was written during an internal logical sector copy operation with the support for bit error correction and header write optimization enabled. Fixed. Introduced in version 5.6.0
Version 5.6.0 [16 February 2021]
New Features
- Added ECC support to Block Map NOR driver.
- Added support for runtime configurable OS layer.
- Added FS_NOR_BM_Mount() API function.
- Added FS_MMC_CM_SetDriverStrength() API function.
- Added support for Adesto AT25SL321 serial NOR flash device.
- Added support for Macronix MX66L2G45G serial NOR flash device.
Improvements
- Added ability to configure the size of the work buffers allocated by the Block Map NOR driver on the stack.
- Added ability to configure where the buffer for the formatting of debug messages is allocated (statically or on the stack).
Program corrections
- Block Map NOR driver: A false error was reported when writing data to a NOR flash device with support for incremental write operations and with the CRC verification feature enabled. Fixed. Introduced in version 5.0.0
Version 5.4.1 [19 November 2020]
Program corrections
- Block Map NOR driver: Uninitialized variable caused a compiler warning. Fixed. Introduced in version 5.4.0
- FAT: Unused variable caused a compiler warning. Fixed. Introduced in version 5.4.0
Version 5.4.0 [16 November 2020]
New Features
- Added support for ultra high speed access modes of SD cards and MMC devices.
- Added support for the two-plane operation of NAND flash devices.
- Added FS_NOR_SFDP_Configure() API function.
- Added FS_GetVolumeAlias() API function.
- Added support for Adesto AT25SF128A serial NOR flash device.
Improvements
- Block Map NOR driver: Added support for preserving the erase count of a physical sector erased during a clean operation for NOR flash devices that do not support incremental write operations.
- File system: Added the ability to set a constant volume alias.
- Journaling: Improved the write performance by removing redundant sector write operations.
- File system: Improved the write performance in FAST write mode by removing redundant sector read operations.
Program corrections
- File system: Wrong error code was return when the file system was not able to update the allocation table. Fixed. Introduced in version 4.06b
- File system: Moving a file to the same volume with FS_MULTI_HANDLE_SAFE set to 1 possibly created a path longer than the file system was able to handle. Fixed. Introduced in the initial version.
- File system: Moving a directory to one of its subdirectories corrupted the file system. Fixed. Introduced in the initial version.
- FAT: Partitions with a cluster size of 128 KiB were not handled correctly. Fixed. Introduced in the initial version.
- Journaling: The failure of a single subtransaction caused an error on all of the other subtransactions that were executed as part of the same main transaction. Fixed. Introduced in version 5.2.0
- NOR SPI physical layer: The file system failed to initialize a Microchip SST26VF064B NOR flash device. Fixed. Introduced in version 5.0.0
- NOR SPI physical layer: The busy status of ISSI IS25LP01G NOR flash was not handled correctly. Fixed. Introduced in the version 4.06b
- Block Map NOR driver: FS_NOR_BM_ReadOff() and FS_NOR_BM_WriteOff() accessed the wrong offset when using a NOR flash device with different physical sector sizes. Fixed. Introduced in version 4.04g
- WinDrive driver: The presence of a removable device was not detected correctly. Fixed. Introduced in version 5.0.0
- WinDrive driver: The checking for administrative rights was not working correctly. Fixed. Introduced in the initial version.
- WinDrive driver: The capacity of some storage devices was not calculated correctly. Fixed. Introduced in the initial version.
- WinDrive driver: Unaligned data buffers caused data access errors. Fixed. Introduced in the initial version.
- SPI MMC/SD driver: A false error was reported when trying to delete a file. Fixed. Introduced in version 5.1.0
- NAND SPI physical layer: Management data was written to the range of the spare area reserved for the ECC for a Micron MT29F2G01ABAGDSF NAND flash device. Fixed. Introduced in the version 4.04e
- File system: FS_SetFileBufferFlagsEx() returned an error even when the operation succeeded. Introduced in the version 4.04f
- File system: FS_Sync() failed to update the file buffer data of opened files to storage device. Fixed. Introduced in the version 4.04a
- File system: Wrong data was read from a file configured to use a file buffer in read mode when the data present in the file buffer was overwritten. Fixed. Introduced in the version 4.04a
- File system: Wrong file position was returned on 16-bit targets when the file position was larger than 65535. Fixed. Introduced in the version 5.0.0
- FAT LFN: The file system possibly accessed invalid memory when the application tried to access a file with a name containing extended ASCII characters with FS_SUPPORT_EXT_ASCII set to 0. Fixed. Introduced in version 5.0.0
Version 5.2.0 [26 June 2020]
New Features
- Added PC utility for merging and splitting of files managed by the BigFile component.
- Added FS_NOR_BM_SetInvalidSectorError() API function.
Improvements
- EFS: Reduced the RAM usage.
- Sector Map NOR driver: Optimized the write performance of the management data.
Program corrections
- File system: The file system was locked recursively with FS_DEBUG_LEVEL set to a value greater than or equal to FS_DEBUG_LEVEL_LOG_ERRORS. Fixed. Introduced in version 5.0.0
- NAND DataFlash physical layer: Invalid data was read from a 64 Mbit DataFlash device with FS_NAND_SUPPORT_READ_CACHE set to 0. Fixed. Introduced in the initial version.
- File system: An empty string was not recognized as root directory. Fixed. Introduced in version 4.06b
- FAT LFN: The file system was not able to open short file names that contained two or more dot characters. Fixed. Introduced in version 4.04a
- Block Map NOR driver: The write error recovery did not work correctly when a copy of the affected logical sector was present in the block. Fixed. Introduced in version 4.04e
Version 5.1.0 [5 May 2020]
New Features
- Added FS_GetMountType() API function.
- Added FS_GetMemInfo() API function.
- Added FS_NOR_SPIFI_SetSectorSize() API function.
- Added support for Macronix MX25V1635F.
Improvements
- File buffer: Added option for the alignment of the file position to sector boundary to help improve the write performance.
- EFS: Added support for free cluster cache to help improve the write performance.
- File system: Added a cache for the internal sector buffers.
- Journaling: Improved the error handling.
Version 5.0.1 [16 March 2020]
Program corrections
- File system: FS_Move() did not unlock the file system with FS_OS_LOCKING set to 1. Fixed. Introduced in the version 5.0.0
- NAND physical layer: The physical layer for NXP iMX6U5 tried to access invalid memory. Fixed. Introduced in version 5.0.0
Version 5.0.0 [9 March 2020]
New Features
- The source files are now MISRA C:2012 compliant.
- Added support for Shift JIS encoded Japanese file names.
- Added BigFile extension that enables an application to handle files larger than 4 GiB.
- Added support for dual flash mode to SFDP NOR physical layer.
- Added support for Cypress S25FL256L serial NOR flash device.
- Added support for Toshiba TC58CYG2S0HRAIG NAND flash device.
- Added "clean" and "createjournal" commands to NOR Image Creator.
Improvements
- File system: The strategy for the allocation of clusters was improved.
- EFS: The file name case sensitivity can now be configured at runtime.
- Shipment: The file structure was cleaned up.
Program corrections
- File system: The file buffer was not invalidated when the application wrote at once a number of bytes larger than the buffer size. A following read operation returned old data. Fixed. Introduced in the version 4.04g.
- FAT LFN: Leading space and trailing period characters were not removed from file names as required by the FAT specification. Fixed. Introduced in the initial version.
- File system: FS_FindFirstFile() and FS_FindNextFile() wrote past the end of the file name buffer when the short name of the file had an extension and the size of the file name buffer was equal to or smaller than the size of the file name. Fixed. Introduced in the initial version.
- Universal NAND driver: The driver unintentionally tried to write to a page that was not empty. This behavior affects only configurations that calculate the ECC in the NAND physical layer and by which the ECC value of a blank data block does not have all the bits set to 1. Fixed. Introduced in the initial version.
- Journaling: FS_JOURNAL_Invalidate() unintentionally disabled the journal operation. Fixed. Introduced in the version 4.04b.
- File system: The file system tried to free the memory block allocated for a file buffer twice. Fixed. Introduced in the version 4.04f.
- FAT: The file delete optimization did not work properly causing a data loss. Fixed. Introduced in the initial version.
- FAT: A file system corruption occurred with the file write mode set to FAST when the size of the file was decreased. Fixed. Introduced in the initial version.
- EFS: The disk checking operation incorrectly reported an error when a file name contained exactly the maximum number of characters allowed. Fixed. Introduced in the initial version.
- File system: The handle to an opened file was unintentionally closed when the an unmount operation was concurrently performed on a different volume than the volume on which the file was stored. The behavior affects only configurations that set FS_OS_LOCKING to 2. Introduced in the initial version.
- SPI NAND physical layer: Identification of Micron MT29F1G01ABAFDSF serial NAND flash failed in case of an uncorrectable bit error in the page 0 of block 0. Fixed. Introduced in the initial version.
- SPI NAND physical layer: An uncorrectable bit error was not propagated to the caller by the page copy operation. Fixed. Introduced in the initial version.
- FAT: The backup copy of the allocation table was not updated correctly with the delete optimization enabled. Fixed. Introduced in the initial version.
- File system: The file system tried to access invalid memory after a forced unmount. Fixed. Introduced in the initial version.
- Universal NAND driver: The bit error checking feature was not disabled when calling FS_NAND_UNI_SetMaxBitErrorCnt() with the BitErrorCnt parameter set to 0. Fixed. Introduced in the version 4.04a.
- LOGVOL driver: A driver instance was not initialized correctly after the application performed a deinitialization of the file system. Fixed. Introduced in the initial version.
Version 4.06b [7 Mai 2019]
New Features
- Added new versions of Universal NAND and SD / MMC driver that allow only a read access to the storage device.
- Added power save mode support for SD card storage devices.
- Added FS_InitCheck(), FS_CheckAT() and FS_CheckDir() API functions that can be used to check the integrity of the file system structure in a non-blocking way.
- Added support for ISSI IS25LP01G serial NOR flash device.
Improvements
- Increased the write performance of the Universal NAND driver.
- The memory copy function used internally by the file system is now configurable via the FS_MEMCPY() define.
Program corrections
- M25 NOR physical layer: NOR flash devices with a block size larger than 64KB were not handled correctly when the size of the physical sector was manually configured. Fixed. The behavior has been present since initial version.
- Block map NOR driver: The data storage functions did not return an error on attempt to access an invalid sector index. Fixed. The behavior has been present since initial version.
- SD / MMC driver: An incorrect number of sectors was passed to the storage device when reading large amounts of data. Fixed. The behavior has been present since version 4.04g.
- File system: FS_GetFileAttributes() failed to indicate that a directory did not exist when the name of directory ended with a directory delimiter. Fixed. The behavior has been present since version 4.04c.
- Block map NOR driver: A wrong data block was discarded when an unexpected reset interrupted a in-place work block conversion for NOR flash devices that cannot rewrite. Fixed. The behavior has been present since version 4.06a.
- FAT: On an almost full storage device the file system tried to access the data of an out-of-bounds logical sector when the write mode was set to medium or fast. Fixed. The behavior has been present since initial version.
- SFDP NOR physical layer: The configuration a specific physical sector size for ISSI IS25LP128 did not work as expected. Fixed. The behavior has been present since initial version 4.04g.
- Block map NOR driver: The driver attempted to modify for the second time the same flash line on NOR flash devices that cannot rewrite when writing with the CRC feature enabled. Fixed. The behavior has been present since version 4.04g.
- SPI NAND physical layer: Management data was stored to locations that were not protected by ECC on Micron MT29F1G01ABAFD serial NAND flash device. The compatibility to the older emFile versions can be ensured by setting the FS_NAND_SUPPORT_COMPATIBILITY_MODE to 1 or 2. Fixed. The behavior has been present since version 4.04e.
- FAT: Under special circumstances changing the volume label caused an invalid memory access. Fixed. The behavior has been present since initial version.
- EFS: Under special circumstances attempting to create a directory on a full volume corrupted the file system structure. Fixed. The behavior has been present since initial version.
Version 4.06a [11 December 2018]
New Features
- Added RAID5 logical driver that can be used to increase data reliability.
- Added support non-blocking free space checking operation via the API functions FS_GetVolumeFreeSpaceFirst() and FS_GetVolumeFreeSpaceNext().
- Added support to block map NOR driver for permanently switching the NOR flash device to read-only mode in case of a fatal error.
- Added quad and dual support for serial NAND flash devices.
- Added support for Micron MT29F1G08ABAFA NAND flash device to ONFI physical layer.
- Added support for Macronix MX25L128 NOR flash device.
- Added support for ISSI IS37SML01G1 and IS38SML01G1 NAND flash devices to SPI NAND physical layer.
- Added quad and dual support for Winbond serial NOR flash devices.
Improvements
- SPI NAND physical layer: Added timeout for the operation that waits for the NAND device to finish the execution of a command.
- Journal: Unused bytes are filled with 0xFF in order to help improve the lifetime of some NAND flash devices by reducing the number of bits set to 0.
- Block map NOR driver: Added support for conversion of work blocks in-place for NOR flash devices without rewrite support.
- NOR physical layer: Added function for blank checking of an erased physical sector and for the initialization of NOR flash device.
Program corrections
- ONFI NAND physical layer: The page copy operation was enabled / disabled only for the first instance of the physical layer. Fixed. The behavior has been present since version 4.04g.
- Card Mode MMC/SD driver: Read or write errors were not reported to the storage layer. Fixed. The behavior has been present since version 4.04g.
- SPI NOR physical layer: The address mode was not set correctly for Macronix devices with a capacity larger than 128 Mbit. Fixed. The behavior has been present since version 4.04f.
- Block map NOR driver: Redundant write retry operations were performed when a logical sector was copied negatively affecting the write performance. Fixed. The behavior has been present since version 4.04g.
- Block map NOR driver: Invalidating a physical sector during the low-level format operation caused a second write to a flash line on a NOR flash without rewrite support. Fixed. The behavior has been present since initial version.
- FAT file system: SD cards and eMMC devices with a capacity of exactly 2GB were not formatted correctly via FS_FormatSD() API function. Fixed. The behavior has been present since version 4.04f.
- Universal NAND driver: FS_NAND_UNI_IsBlockBad() returned an incorrect value. Fixed. The behavior has been present since version 4.04b.
- Card Mode MMC/SD driver: The driver did not perform the correct number of initialization retries for eMMC devices. Fixed. The behavior has been present since initial version.
- Universal NAND driver: The driver failed to recover the data via RAID when the affected page was located in a work block. Fixed. The behavior has been present since version 4.02a.
Version 4.04g [6 July 2018]
New Features
- Added POSIX support to FS_Truncate() API function.
- Added CRC verification for management and user data to block map NOR driver.
- Added support for eMMC power save mode to SD / MMC driver.
- Added support for eMMC data cache to SD / MMC driver.
- Added support for ISSI IS25LP128, Macronix MX25L3233, GigaDevice GD25Q32C and GigaDevice GD25Q64C serial NOR flash devices.
Improvements
- File system: Replaced the old version of the file buffer with the new faster implementation.
- Journal: Added optimization when deleting and writing a file in the same journal transaction.
- Journal: Added support for calling an application-registered callback function on journal overflow.
- File system: Added support to configure the vsnprintf() function used by the file system to format the debug messages.
- SFDP NOR physical layer: Added support for the sharing of the SPI bus via lock and unlock functions.
- Block map NOR driver: Improved the error handling.
- Sector map NOR driver: Improved the blank checking of physical sector.
- Universal NAND driver: Added support to configure under which conditions a NAND block is marked as defective.
Program corrections
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- File buffer: The file buffer was not updated correctly when the file was truncated. Fixed. The behavior has been present since version 4.04a.
- 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
- Added support for deleting entire FAT directory trees via FS_DeleteDir().
- Added FS_SetFileBufferFlagsEx() function that can be used to configure the file buffer flags for files opened on a specific volume.
- Added support for the allocation of EFS directory entry buffers from the memory pool of file system.
- Added FS_NOR_BM_WriteOff() and FS_NOR_BM_ErasePhySector() functions to allow an application to write to and to erase physical sectors directly.
- Added support for hardware polling to SPIFI NOR physical layer.
Improvements
- 2048x8 NAND physical layer: Added support for hardware copy page operation.
- Universal NAND driver: Optimized the operations that read data from the spare area.
- Card Mode MMC/SD driver: Added support for efficiently writing the same sector data multiple times.
- File system: Replaced all calls to strcpy() by calls to strncpy() to comply to coding standards.
- FAT LFN: Optimized the performance of file delete operation.
- SPIFI NOR physical layer: Added support for dual and quad write operations.
- NOR SFDP and SPIFI physical layers: Added support GigaDevice GD25Q256 and GD25Q127C NOR flash devices.
Program corrections
- 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.
- Universal NAND driver: Wrong ECC block size was passed to physical layer. Fixed. The behavior has been present since version 4.04d.
- Sector write buffer: Multiple write operations were not handled correctly. Fixed. The behavior has been present since initial version.
- 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.
- 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.
- 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.
- 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.
- 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.
- FAT LFN: Invalid characters were allowed in a file name. Fixed. The behavior has been present since initial version.
Version 4.04e [20 Oct 2017]
New Features
- 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.
- 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
- Universal NAND driver: Added optional CRC verification of data.
- NAND physical layer: Added support for manual configuration of the NAND flash device parameters.
- NOR SFDP and SPIFI physical layer: Added support for the following Macronix serial NOR flash devices: MX25R64, MX25L256, and MX25L512.
- NOR M25 physical layer: Added support for the Micron N25Q512A serial NOR flash device.
- SPI NAND physical layer: Added support for the following serial NAND flash devices: Micron MT29F1G01ABAF, Micron MT29F2G01ABAGD, and Macronix MX35LF1GE4AB.
Program corrections
- 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.
- 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.
- 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.
- 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.
- 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.
- Universal NAND driver: FS_NAND_UNI_WritePage() wrote incorrect data to spare area. Fixed. The behavior has been present since version 4.04b.
- 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.
- 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.
- Storage layer: FS_STORAGE_RefreshSectors() and FS_STORAGE_GetSectorUsage() locked the file system recursively. Fixed. The behavior has been present since version 4.00a.
- 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.
- DISKPART driver: The request for corrected sector data was not handled correctly. Fixed. The behavior has been present since initial version.
- 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.
- 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
- Added FS_DeleteDir() API function that can be used to delete entire directory trees.
- 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
- NOR block map driver: Improved the performance of write, "free sector" and low-level format operations.
- Universal NAND driver: Improved the performance of low-level mount operation.
- NOR sector map: Improved the procedure of detecting if the storage has been low-level formatted with the fail-safe erase option enabled.
- NOR CFI physical layer: Improved error handling and added support for Cypress HyperFlash.
- ST M25 NOR physical layer: Added support for configuring new NOR flash devices.
- SPI NOR physical layer: Added support for ISSI IS25LP064A device.
- 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
- 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.
- 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.
- NOR sector map: Physical sectors marked as invalid were not used for data storage. Fixed. The behavior has been present since version 3.34b.
- 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.
- 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.
- 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
- Added support for SPI bus locking to SPI NAND physical layer.
- Added support for partial sector read operation to Universal NAND driver.
- Added FS_GetFileInfo() API function that returns information about a file or directory.
- Added FS_NOR_SPI_ReadDeviceId() function that can be used to read the device id of a serial NOR flash device.
- Added FS_MMC_CM_AllowBufferedWrite() function that can be used to enable / disable the buffering of data written to storage device.
Improvements
- Universal NAND driver: If possible, the "free sector" operation marks entire NAND blocks as invalid to increase performance.
- Universal NAND driver: Added statistical counters for the number of bit errors corrected.
- Universal NAND driver: Added support for software multi-bit error correction.
- EFS file system: Improved the performance of the operations that check for free space on the storage.
Program corrections
- 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.
- 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.
- 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.
- 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.
- 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.
- File system: FS_FTell() returned the wrong value in case of an error. Fixed. The behavior has been present since version 3.34a.
- 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
- Added support for fast write operation to SLC1 NAND driver.
- Added new function to Journaling which can be used to cancel pending transactions.
- Added new test functions to NAND drivers.
- Added support for partitions to NAND Image Creator.
Improvements
- 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.
- NOR SPI physical layer: Added support for Winbond SPI NOR flash devices.
- NOR SPI physical layer: Added support for Spansion SPI NOR flash devices with a capacity larger than 128 Mbit.
- NOR drivers: Added support for runtime configuration of the erase and write verification feature.
- NOR drivers: Added support for runtime configuration of the "skip blank sector" feature.
- NOR sector map driver: Improved the error handling.
- NAND ONFI physical layer: Added support for multiple planes, page copy operation and ECC result query.
- File system: Improved the performance of the "free sector" operation.
- EFS file system: Improved the error handling and reduced the stack usage.
- SLC1 NAND driver: Improved the performance of the "free sector" operation.
Program corrections
- 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.
- 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.
- 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.
- NOR drivers: The timeout for the write and erase operations was not calculated correctly. Fixed. The behavior has been present since version 4.04a.
- 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.
- NOR sector map driver: An incompletely erased physical sector was not marked as invalid. Fixed. The behavior has been present since version 3.34b.
- 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.
- 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.
- File system: The deinitialization operation failed when an external memory manager was used. Fixed. The behavior has been present since version 4.04a.
- 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.
- 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
- Added support for recognizing if a volume was properly unmounted before reset.
- Added support for profiling via SEGGER SystemView.
- Added FS_X_OS_Delay() to the OS layer.
- Added faster file buffer implementation.
Improvements
- NOR SPI physical layer: The type of serial NOR devices supported is now configurable via FS_NOR_SetDeviceList() and FS_NOR_SPIFI_SetDeviceList() respectively.
- Universal NAND driver: The driver relocates NAND flash blocks based on the number of bit errors corrected in order to prevent data loss.
- File system: All standard C library functions used by the file system can be overwritten at compile time.
- 2048x8 NAND physical layer: Added support for Toshiba TC58NVG0S3HTA00 devices.
- ONFI NAND physical layer: Added support for Toshiba TC58CVG1S3HxAIx devices.
- 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.
- FAT file system: Improved the performance of directory creation operation. A multiple write operation is used instead of writing one sector at a time.
- SPI NAND physical layer: Added support for Winbond W25N01GVxxIG/IT devices.
Program corrections
- EFS file system: An error was reported when moving empty directories. Fixed. The behavior has been present since initial version.
- 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.
- 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.
- 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.
- File system: External memory allocation/deallocation functions were not deinitialized properly. Fixed. The behavior has been present since initial version.
- File system: FS_CreateDir() did not use Journal to protect the operation against power failure. Fixed. The behavior has been present since initial version.
- 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.
- 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.
- File system: FS_CheckDisk() did not return an error when it failed to fix file system errors. Fixed. Present since initial version.
- EFS file system: A read operation failed to release the used sector buffer in case of an error. Fixed. Present since initial version.
- EFS file system: No error was reported when the file delete operation failed. Fixed. Present since initial version.
- File system: FS_ModifyFileAttributes() failed to report an error when the volume was mounted as read only. Fixed. Present since version 3.32c.
- File system: FS_RmDir() failed to report an error when the volume was mounted as read only. Fixed. Present since initial version.
- Card Mode MMC/SD driver: FS_MMC_CM_GetCardId() caused a buffer overflow. Fixed. Present since version 3.30g.
Version 4.02b [10 Feb 2016]
New Features
- Added support for memory-mapped SPI NOR flash devices.
- Added support for trim and reliable write operations for MMC storage devices.
Improvements
- 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 [3 Dec 2015]
New Features
- 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.
- 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
- Card Mode MMC/SD driver: Added more debug and log messages and improved the error handling.
- 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.
- SPI MMC/SD 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
- 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.
- 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.
- Storage layer: FS_STORAGE_FreeSectors() locked the file system recursively. Fixed. The behavior has been present since version 3.32a.
- Storage layer: FS_STORAGE_SyncSectors() locked the file system recursively. Fixed. The behavior has been present since version 3.34b.
- 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.
- SPI MMC/SD 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
- Added FS_MMC_CM_GetCardInfo() function. The function can be used to get information about the storage card.
- Added FS_STORAGE_GetSectorUsage() function that returns information about whether a sector contains valid data or not.
Improvements
- NAND 4096x8 physical layer: Added support for Hynix H27UAG8T2A series NAND flash devices.
- 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
- SPI MMC/SD 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.
- 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.
- 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.
- 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
- 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.
- 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.
- 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().
- 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
- File system: The directory entry is updated now on file close only when necessary.
- Journal: The journal will cancel automatically a transaction in case of an error.
- SPI MMC/SD driver: Added support for the locking of the SPI bus.
- Card Mode MMC/SD 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.
- 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.
- 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.
- NOR drivers: A blank physical sector will not be erased at low-level format the define FS_NOR_SKIP_BLANK_SECTORS set to 1.
- 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
- 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.
- 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.
- 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.
- File system: On some cases FS_FOpenEx() returned the wrong error code. Fixed. The behavior has been present since version 3.34a.
- 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.
- 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
- 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.
- 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.
- 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.
- 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.
- 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.
- Card Mode MMC/SD 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 [7 Jan 2015]
New Features
- Added new logical driver which helps increase the data reliability by maintaining a copy of each sector data.
- New logical driver available which implements a write buffer for sector data.
- New physical layer available which supports JEDEC JESD216B compliant SPI NOR flash devices and data transfers via 1, 2 or 4 data lines.
- Added FS_JOURNAL_CreateEx() API function. The function can used to create a journal which informs the storage driver about unused sectors.
- Added support for SPI NOR flash devices with a capacity greater than 128Mbit.
- Added FS_MMC_CM_Erase() API function. It can be used to erase MMC cards.
Improvements
- File system: Improved the performance of the disk checking operation.
- SPI NAND physical layer: Improved the read and write performance.
- Storage layer: Improved the sector refresh operation. Only the sectors which contain valid data will be refreshed.
Program corrections
- 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 [4 Jun 2014]
New Features
- Added FS_FOpenEx() API function. It opens a file and returns an error code if the operation fails.
- Added new logical driver which supports the access to a storage medium using a sector size different than that of the storage driver.
- Added FS_SetFileSize() API function. It can be used increase the size of the file without moving the file pointer.
- Added FS_FreeSectors() API function. It can be used to inform the storage layer about unused sectors.
- Added support for 64Mbit DataFlash devices with a page size of 256 bytes.
Improvements
- Universal NAND driver: Improved the write verification functionality.
- Universal NAND driver: Reduced the low-level mount time for the NAND flashes which support HW ECC.
- FAT LFN: A single short directory entry is created if the file name complies with the 8.3 format.
- File system API: Added meaningful return codes to several API functions.
- SPI MMC/SD driver: Some SD cards did not respond correctly to a CMD12 (STOP_TRANSMISSION) command. Added retries to work around this.
- NAND 4096x8 physical layer: Added support for Samsung NAND flash devices with 128 pages per block.
Program corrections
- SPI MMC/SD 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.
- 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.
- 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.
- 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.
- File system: FS_ModifyFileAttributes() did not use the journal when writing data to storage. Fixed. The behavior has been present since version V3.32c.
- File system: The time stamp of volume label was not correctly set. Fixed. The behavior has been present since initial version.
- 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
- Added FS_GetVolumeInfoEx() API function. It can be used to get information about how the storage medium is formatted.
- 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.
- Added FS_ModifyFileAttributes() API function which can be used to set and clear file attributes with a single function call.
- Added support for NOR flash devices connected via SPIFI.
Improvements
- 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.
- SPI MMC/SD driver: Improved the identification mechanism of SD cards which responded incorrectly to SEND_IF_COND initialization command.
- Disk checking: Replaced numeric literal return values with symbolic constants to improve readability.
- 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
- Card Mode MMC/SD driver: Functions of the HW layer were called before the HW layer initialization. Fixed. The behavior has been present since version V3.20a.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- 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
- 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.
- 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
- New physical layer available for NAND flash devices with SPI interface.
- 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.
- Added file buffer support to EFS. The file buffer improves the read and write performance when accessing small amounts of data.
- 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
- File system: Added a check at mount time to test if the number of sectors available on the storage medium has shrunk.
Program corrections
- 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.
- 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.
- 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
- Encryption: File contents was corrupted when writing with enabled file buffering. Fixed. The behavior has been present since version V3.30b.
- Encryption: File contents was corrupted when truncating a file. Fixed. The behavior has been present since version V3.30b.
- File system: Unused variables caused compiler warnings. Fixed.
Version 3.30k [5 Mar 2013]
Program corrections
- Encryption: File contents was corrupted when writing close to the end of file. Fixed. The behavior has been present since version V3.30b.
- 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
- 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
- Added FS_JOURNAL_Enable() and FS_JOURNAL_Disable() API functions. An application can use these functions to explicitly activate or deactivate the journal.
Improvements
- 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.
- Journaling: Optimized the write performance of journal when the application explicitly controls a transaction by calling the FS_JOURNAL_Begin()/FS_JOURNAL_End() functions.
- SLC1 NAND driver: Added support for verification of a sector write.
Program corrections
- EFS: A format operation accidentally deleted the information about the partitioning of storage medium. Fixed. The behavior has been present since version V3.10e.
- 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
- 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
- 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
- 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 [8 Nov 2012]
New Features
- 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
- 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
- SPI NOR physical layer: Added support for the identification of 256MBit NOR flash devices.
Program corrections
- Journaling: FS_CheckDisk() reported an error after the creation of journal file. Fixed. The behavior has been present since version 3.30c.
- 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
- 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
- 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.
- File system: FS_Mount() reported an incorrect value when the mount operation failed. Fixed. The behavior has been present since initial version.
- File system: The file buffer stopped working properly after several file open/close cycles. Fixed. The behavior has been present since version 3.30a.
- Journaling: The module was not de-initialized properly. Fixed. The behavior has been present since version V3.10e.
Version 3.30c [5 Oct 2012]
New Features
- Encryption and Journaling add-ons are included now in the trial version.
- Added FS_SetFileWriteModeEx() API function which can be used to configure the write mode for each volume separately.
- Added FS_CreateMBR() and FS_GetPartitionInfo() API functions for the management of Master Boot Record.
Program corrections
- File system: The modification time stamp of a file was updated even when the file data was not modified. Fixed.
Version 3.30b [6 Sep 2012]
New Features
- New add-on available for encryption/decryption of individual files. DES and AES encryption algorithms are supported.
Improvements
- SPI NOR physical layer: Improved the medium initialization sequence to support the use of HW layers which work in interrupt mode.
- 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
- Universal NAND driver: Low-level mount failed when correctable bit errors were detected in the first empty page of a work block. Fixed.
- 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 [3 Aug 2012]
New Features
- New logical driver available which provides AES encryption for file system data. 128-bit and 256-bit key lengths are supported.
Program corrections
- Universal NAND driver: Wrong duplicated data block was discarded at low-level mount causing a data loss. Fixed.
- File system: An newly allocated file buffer was not correctly initialized. Fixed.
Version 3.28d [16 Jul 2012]
New Features
- Increased the number of files which can be opened at once in the trial version from 1 to 2.
Improvements
- Universal NAND driver: Changed the low-level format procedure to allow the erasing of the blocks marked as defect by the driver.
- 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.
- SPI NOR physical layer: Improved the initialization sequence to remove the write protection of storage blocks only if present.
Program corrections
- Universal NAND driver: The status of a block (good/bad) was read with ECC enabled which caused ECC errors. Fixed.
Version 3.28c [4 Jul 2012]
Improvements
- SLC1 NAND driver: Changed the low-level format procedure to allow the erasing of the blocks marked as defect by the driver.
Program corrections
- File system cache: When reading multiple sectors invalid data was stored to cache. Fixed.
- 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
- File system: Uninitialized variables caused compiler warnings. Fixed.
Version 3.28a [17 Jun 2012]
New Features
- New logical driver available which allows emFile to mount any partition defined in a Master Boot Record.
- New cache module with configurable associativity level available. It offers better performance for the same cache capacity.
- Added to new API function FS_CACHE_SetAssocLevel(). It can be used to configure the associativity level of a multi-way set cache.
- Added to new API function FS_CACHE_GetNumSectors(). It returns the number of sectors which can be stored to cache.
- Added FS_SIZEOF_CACHE_... defines to help an application to allocate a cache buffer large enough to store a specified number of sectors.
- Added new API function FS_STORAGE_RefreshSectors(). The function rewrites one or more sectors with original data. Typically called to extend data life.
- Added new API function FS_FFlush(). An application can use it to update the buffered data of an opened file to storage medium .
Improvements
- NOR block map driver: Added compile-time configurable number of reserved bytes to reduce the NOR flash resource usage.
- 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.
- File system: Made FS_MAINTAIN_FAT_COPY option run-time configurable. The FS_FAT_ConfigMaintainFATCopy() function must be called to enable/disable this feature.
- 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.
- 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.
- 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.
- Card Mode MMC/SD driver: Added support for eMMC devices operating at 2.8V.
- 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
- 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.
- File system: When passed an unknown volume name the format functions always performed the operation on the first volume. Fixed.
- File system: Missing default value for FS_OS_LOCKING define caused compiler warnings. Fixed.
- Journaling: The de-initialization of journaling module caused an invalid memory access. Fixed.
- 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.
- 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
- Universal NAND driver: Low-level format failed when ECC errors were detected by the HW ECC. Fixed.
Version 3.26j [12 Apr 2012]
Improvements
- NOR block map driver: Added compile-time configurable number of reserved bytes to reduce the NOR flash resource usage.
Program corrections
- File system: FS_SetMaxSectorSize() did not accept a sector size smaller than 512 bytes. Fixed.
Version 3.26i [22 Mar 2012]
New Features
- 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
- 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.
- NOR block map driver: Added compile-time configurable flash line size to support internal flashes which require aligned writes.
- 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.
- NOR SPI physical layer: Added the ability to remove the write protection of flash blocks.
Program corrections
- File system: FS_Sync() returned 0 on an invalid/missing volume. Fixed.
- SPI MMC/SD 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
- Made the number of LOGVOL instances compile-time configurable.
- Made the usage of large blocks for an Atmel DataFlash compile-time configurable.
Improvements
- 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.
- SPI MMC/SD 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.
- Card Mode MMC/SD 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
- 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
- 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 [9 Jan 2012]
Program corrections
- 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.
- SLC1 NAND driver: Driver API functions did not return an error when an invalid sector was accessed. Fixed.
Version 3.26d [5 Dec 2011]
New Features
- Added new API function FS_NAND_PHY_GetONFIPara(). It reads the ONFI parameters from an ONFI compatible NAND flash.
Improvements
- Card Mode MMC/SD driver: Increased the number of initialization retries to allow the communication with some types of micro SD cards.
- NOR sector map driver: Added more statistics counters.
Program corrections
- Block map NOR driver: During the processing of a trim command a sector containing data was marked (by accident) as invalid. Fixed.
- FAT: Trying to format a medium which was not large enough caused a memory fault. Fixed.
Version 3.26c [11 Nov 2011]
Program corrections
- EFS: An empty source file caused FS_CopyFile()/FS_CopyFileEx() to allocate all the free space on the medium. Fixed.
Version 3.26b [7 Nov 2011]
New Features
- Added new API function FS_CopyFileEx() which allows an application to provide its own temporary buffer.
Improvements
- EFS: Improved the write speed when using journaling. Data appended to a file is written directly to medium.
- FAT: Improved the error handling when searching the allocation table.
Program corrections
- Storage driver: Status of driver was queried before the driver initialization. Fixed.
- NAND/NOR drivers: Internal counters were not correctly reset. Fixed.
- NAND driver: FS_NAND_ReadDeviceId() did not initialize the NAND flash. Fixed.
Version 3.26a [5 Oct 2011]
New Features
- New NAND driver available which supports SLC and MLC NAND flashes.
- New NOR driver available which requires very few RAM.
Improvements
- NAND driver: Improved the speed of active wear leveling. The driver checks now only the allocated blocks.
- ONFI physical layer: Added functions to enable/disable the NAND flash internal ECC engine.
- File system: Improved the computation speed of the CRC16 routine.
- SPI MMC/SD driver: Improved the read/write speed.
Program corrections
- IDE driver: Write Feature command did not work properly. Fixed.
Version 3.24g [29 Jul 2011]
Improvements
- 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
- NAND driver: Minimum erase count was not updated when converting a work block into a data block. Fixed.
- NAND driver: Missing pointer casts caused errors when compiling with a C++ compiler. Fixed.
- NAND driver: Missing ONFI support caused linking errors when using the object code version of emFile. Fixed.
Version 3.24f [22 Jul 2011]
Improvements
- 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
- 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 [5 Jul 2011]
New Features
- Added new API function FS_NAND_SetNumWorkBlocks(). It configures at runtime the number of work blocks the NAND driver uses.
- 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.
- Added ONFI physical layer for the NAND driver.
Improvements
- NAND driver: Added support for file system TRIM operation.
- NOR driver: Improving the write speed. The sectors are marked as erasable only when required.
Program corrections
- FAT: FAT_Format() failed when the number of sectors was less than 256. Fixed.
- FAT: Invalid error code returned when reading a FAT entry. Fixed.
- File system: Incorrect number of bytes written returned by FS_Write() on journal overflow. Fixed.
- DataFlash NAND physical layer: Wrong read command was used for a 64Mbit DataFlash connected over SPI. Fixed.
- DataFlash physical layer: Decision where to store the spare are on a 64Mbit device was wrong. Fixed.
- File system: FS_BITFIELD_CalcSize() caused an integer overflow on 16-bit targets. Fixed.
- Serial NOR physical layer: Initialization caused an integer overflow on 16-bit targets. Fixed.
Version 3.24d [21 Mar 2011]
Improvements
- 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
- Atmel SD/MMC driver: Driver blocked when the second unit was unmounted. Fixed.
- NAND driver: Mount procedure failed to delete a duplicated data block. Fixed.
Version 3.24c [28 Feb 2011]
Program corrections
- File system: Compile error generated when FS_SUPPORT_DEINIT == 1 and FS_USE_FILE_BUFFER == 0. Fixed.
- Journaling: Race condition occurred when FS_OS_LOCKING == 2. Fixed.
- FAT: Buffer was not deallocated when FS_Format() failed. Fixed.
Version 3.24b [10 Feb 2011]
New Features
- Added new API function FS_NAND_SetOnFatalErrorCB(). It registers callback function which is invoked when the NAND driver encounters a fatal error.
Improvements
- NAND driver: Optimized the write speed and added read retries to improve the recovery from bit errors.
- Journaling: Improved the write speed.
- Atmel MMC driver: Added support for the second MCI controller.
Program corrections
- NAND driver: False error message at deinitialization about an invalid unit number. Fixed.
- NOR driver: False error message at deinitialization about an invalid unit number. Fixed.
- File system: File buffers were not properly freed at deinitialization. Fixed.
- Atmel SD/MMC driver: Data was corrupted when reading a large number of sectors at once. Fixed.
Version 3.24a [8 Dec 2010]
New Features
- Added support for eMMC, MMCplus, MMCmobile cards (v4.x standard).
- Added new API function FS_NAND_SetMaxEraseCntDiff() which allows the user to control the wear leveling.
- Added new API function FS_AddOnExitHandler() which gives the user the opportunity to perform additional tasks at deinitialization.
- Added new API function FS_NOR_SetSectorSize() which allows configuration of sector size of NOR driver.
Improvements
- NAND driver: Improved the wear leveling and the handling of device errors.
- MMC Atmel driver: Improved the data transfer and the handling of events.
Program corrections
- NAND driver: At deinitialization the resources were not properly freed. Fixed.
- embOS integration: Resources were not properly freed at deinitialization. Fixed.
- FAT with LFN: File names were not properly checked for invalid characters. Fixed.
- Journaling: Deinitialization of caused a memory fault. Fixed.
Version 3.22c [18 Oct 2010]
Improvements
- NAND_PHY_2048x8.c: Improved the readability.
Program corrections
- FS_SetEndOfFile(): Allocated one cluster more on EFS when the size of the file was a multiple of cluster size. Fixed.
- File buffering: When writing to a file using buffering, emFile accidentally caused a buffer overflow. Fixed.
- FS_AssigCache(): This function caused a deadlock on an OS which didn't support multiple locking from the same task. Fixed.
- FS_GetFileAttributes(): This function returned 0 instead of 0xff when the volume was not found. Fixed.
Version 3.22a [12 Jul 2010]
New Features
- 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.
- Added new API function FS_ConfigFileBufferFlags() which allows configurations of the file buffer flags on a per-file basis.
- Added new API function FS_SetFileWriteMode() which allows to choose between different file write modes.
Improvements
- FS_Remove(): File could be deleted even if they were opened / in use.
Program corrections
- SPI MMC/SD driver: some SD cards do not work properly in high speed mode.
Version 3.20i [21 Jun 2010]
Program corrections
- FAT_SetEndOfFile.c: When truncating a file, emFile accidentally truncated one cluster too much. Fixed
- Atmel SPI MMC/SD driver: After a complete read operation, the driver did not send a STOP command to the SD card. Fixed
- DataFlash physical layer: 64 MBit / 128 MBit devices were not identified / auto-configured correctly.
Version 3.20h [20 Apr 2010]
Improvements
- Data Flash: Added support for 128MBit data flash. A warning is shown, when data flash is in "power of 2 mode".
- Ramdisk: Added FS_HUGE macro to the RAMDISK pointer in order to have a hint for 16-bit compilers.
- WinDrive: Added support for Windows Vista and Windows 7.
Program corrections
- 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
- SPI MMC/SD driver: Data CRC was not calculated correctly. Fixed
- NOR flash driver: On 16-bit processors the calculation of internal data caused data overflows. Fixed
- General API: Internal data were set before checking for NULL-pointer. Fixed
Version 3.20g [21 Jan 2010]
Improvements
- Long file name support: Reduced the amount of time taken to generate short file names.
Version 3.20f [23 Nov 2009]
Program corrections
- 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 [6 Nov 2009]
Program corrections
- FS_USE_FILE_BUFFER: When setting this macro to 1, compile errors could occur. Fixed.
Version 3.20d [28 Oct 2009]
Program corrections
- 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
- FS_Unmount: When unmounting a volume the IDE/CF and Card Mode MMC/SD driver did not handle this correctly. Fixed.
Version 3.20b [14 Sep 2009]
Program corrections
- 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.
- FS_FOpen: When opening a file on a write-protected medium a valid file handle was returned instead of return a NULL handle. Fixed.
- FS_Unmount: When unmounting a volume the driver was not signaled to unmount the volume. Fixed.
Version 3.20a [17 Aug 2009]
New Features
- New Configuration function FS_NOR_SPI_Configure() to setup a SPI NOR flash manually.
- Added new function FS_Sync() to synchronize/flushes all memory/cached data to medium.
- MMC/SD driver (both card mode and SPI) support high speed mode of SD cards.
Improvements
- NOR flashes: Reduced the RAM usage of the NOR driver.
Program corrections
- NAND driver: Under some circumstance the wrong block was assigned to read. Fixed.
Version 3.14a [15 Dec 2008]
New Features
- Added new physical layer for NAND flashes (very large page NAND flashes).
Improvements
- NAND flashes: Reduced the RAM usage of the NAND driver.
- NOR CFI flashes. Added support for write buffer functionality for better write performance.
- NOR CFI flashes. Added support for automatically unlock sectors.
- NOR CFI flashes. Added new macro to use call a delay/sleep function during sector operation.
Program corrections
- 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.
- 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 [6 Nov 2008]
Program corrections
- 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.
- Journaling: When FS_SUPPORT_JOURNAL and FS_SUPPORT_DEINIT is enabled the function FS__JOURNAL_DeInit was not found during linking. Fixed.
- EFS: FS_FOpen could create a file although the file name already exists. Fixed.
Version 3.12i [6 Aug 2008]
Program corrections
- FAT LFN: With LFN enabled a wrong file handle or wrong directory could returned/opened. Fixed.
Version 3.12h [4 Aug 2008]
Program corrections
- FAT LFN file handles: A false file handle could be returned with LFN support. Fixed.
Version 3.12g [22 Jun 2008]
Program corrections
- Low-level mount robustness: A volume corrupted on power failure or by sector copying. Fixed.
- 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
- FS_Unmount(). FS_Unmount sets the state of a volume to uninitialized even if the volume is not mounted.
Program corrections
- Caches: When insufficient memory was assigned to the cache, the function could fail. Fixed.
- 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.
- Alignment: When calling FS_GetFileAttributes with unaligned 32bit variable could cause on some CPU system a memory fault. Fixed.
- 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
- 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.
- 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.
- 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
- Caches: When reading data in burst mode (multiple sectors read) and any FS' cache is enabled, the system crashed. Fixed.
- 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
- Added new function: FS_CACHE_Invalidate.
- 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.
- Added new function for setting the NOR flash driver sector size: FS_NOR_SetSectorSize().
Improvements
- Cache modules check for alignment.
- Improved debug logging and error handling.
Program corrections
- FS_Move, FAT: Moving a file could fail, the wrong file name was passed. Fixed.
Version 3.12c [10 Jun 2008]
Program corrections
- MMC Card mode driver: When checking the card type, MMC and MMC plus card may not recognized correctly. Fixed.
Version 3.12b [3 Jun 2008]
Program corrections
- 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
- New add-on available: Independent FS-Journaling.
- 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 Card Mode MMC/SD driver to allow 4-bit mode data transfer.
- Added FS_SetOnDeviceActivityHook which allows to log which sectors are read/written by file system.
Improvements
- EFS: Improved read/write performance.
- File handles/volume objects are rather allocated than predefined by compile time switch.
- Allow to use an external memory manager if required.
Program corrections
- FS_SetVolumeLabel: Setting a volume label always failed. Fixed.
Version 3.10j [22 Apr 2008]
Improvements
- Removed any compiler warning that may be reported by a 16-bit compiler.
Version 3.10i [14 Apr 2008]
Improvements
- Improved support for newer SD cards that conforms with SD card specification V2.00.
- Improved support for newer MMCplus cards.
Version 3.10h [7 Jan 2008]
New Features
- FAT disk checking operation supports orphaned long file name entries.
Version 3.10g [14 Dec 2007]
Program corrections
- FS_Rename(FAT): When renaming a file or directory with a long file name, the long file name entry was not removed. Fixed.
- LFN (FAT): When looking for a file/directory, the operation could fail, due of not handling orphaned long directory entries correctly. Fixed.
- FS_Rename(FAT): Renaming a file or directory could fail when using absolute file paths. Fixed.
Version 3.10f [4 Dec 2007]
Program corrections
- FS_Rename/FS_Move (FAT): When moving/renaming a file or directory other directory entries could be affected. Fixed.
- Unmount/Remount: When unmounting and remounting a volume using FS_Mount() could fail. Fixed.
Version 3.10e [2 Nov 2007]
Program corrections
- 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
- FAT CheckDisk: FS_CheckDisk() removed short directory entries if directory entry name was shorter than 8+3 characters. Fixed.
- 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
- RamDisk, WinDrive: Driver were not included. Fixed.
- Compile time switches Enabling the switches FS_VERIFY_WRITE or FS_SUPPORT_CHECK_MEMORY could cause that the compilation failed. Fixed.
Version 3.10b [5 Oct 2007]
Program corrections
- MMC_SPI: Some comments did not end correctly. Fixed.
Version 3.10a [24 Sep 2007]
New Features
- SD HC cards are supported.
- The max sector size is run-time configurable.
- Atmel DATAFLASH is supported by NAND driver.
- New function added: FS_UnmountForced().
Improvements
- Improved SD card mode handling.
Program corrections
- FAT: FS_Rename(), FS_Move could move a file/directory although the file/directory has read-only attributes. Fixed.
- When setting a volume label after formatting the volume and creating a file/directory with the same file, file/directory operation could fail. Fixed.
- 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 [6 Jul 2007]
Improvements
- Additional functions which allow using the storage layer stand alone (without file system) added.
- 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 [4 Jul 2007]
New Features
- New function to initialize the storage layer (aka LBL) only added.
- New configuration function for IDE/CF driver added.
Improvements
- NAND flash driver: Multiple work blocks supported, improving write speed.
Version 3.06b [6 Jun 2007]
Program corrections
- NAND: The NAND driver could report an ECC error although no data has ever been written to this sector. Fixed.
Version 3.06a [5 Jun 2007]
Program corrections
- 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
- 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.
- 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
- FAT: The wrong date and time were written when creating a file. Fixed.
Version 3.04a [10 May 2007]
New features
- Major conceptional changes from version 2.xx. Improved flexibility and ease of use. Configuration simplified. For details, refer to the manual.
- Hardware and configuration samples to sample directory added.
- User provided functions for time and date FS_X_GetTime(), FS_X_GetDate() have been replaced by single function FS_X_GetTimeDate().
Improvements
- IDE, Card Mode MMC/SD driver improvements.
- NAND flash driver: Use a large (2048 bytes) page with sector sizes of 512 bytes.
- NOR flash driver: Fail safety improved.
Program corrections
- 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.
- NAND: The driver could allocate memory for its instance information twice. Fixed.
- 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.
- 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.