Release notes for emFile version V4.04e

  1. New features
  2. Improvements
  3. Program corrections
  4. Known problems
  5. Release history
  6. Miscellaneous

Last Update:
2017-10-20 [MD] V4.04e

New features

Version 4.04e

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

Version 4.04d

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

Version 4.04c

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

Version 4.04b

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

Version 4.04a

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

Version 4.02b

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

Version 4.02a

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

Version 4.00b

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

Version 4.00a

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

Version 3.34b

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

Version 3.34a

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

Version 3.32c

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

Version 3.32a

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

Version 3.30i

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

Version 3.30h

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

Version 3.30g

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

Version 3.30f

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

Version 3.30d

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

Version 3.30c

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

Version 3.30b

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

Version 3.30a

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

Version 3.28d

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

Version 3.28a

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

Version 3.26i

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

Version 3.26h

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

Version 3.26d

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

Version 3.26b

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

Version 3.26a

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

Version 3.24e

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

Version 3.24b

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

Version 3.24a

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

Version 3.22a

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

Version 3.20a

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

Version 3.14a

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

Version 3.12d

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

Version 3.12a

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

Version 3.10h

  1. FAT Checkdisk supports orphaned long file name entries.

Version 3.10a

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

Version 3.08a

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

Version 3.04b

  1. EFS updated to V3, providing better performance.

Version 3.04a

  1. Support for 2x16bit NOR CFI compliant flashes added.
  2. Driver for Atmel DATA flashes added.

Version 3.02a

  1. User provided functions for time and date FS_X_GetTime(), FS_X_GetDate() have been replaced by single function FS_X_GetTimeDate().

Version 3.00b

  1. Hardware and config samples to sample directory added.

Version 3.00

  1. Major conceptional changes from V2. Improved flexibility and ease of use. Configuration simplified. For details, refer to the manual.

Improvements

Version 4.04e

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

Version 4.04d

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

Version 4.04c

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

Version 4.04b

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

Version 4.04a

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

Version 4.02b

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

Version 4.02a

  1. MMC/SD card mode driver:
    Added more debug and log messages and improved the error handling.
  2. SLC1 NAND driver:
    Improved data reliability by adding the possibility to relocate blocks in which 1 bit error occurred.
  3. 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.
  4. MMC/SD SPI driver:
    Added workaround for ATP 512 MB microSD cards which report an error when the last sector on the storage is read via a multiple block read command.

Version 4.00b

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

Version 4.00a

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

Version 3.34b

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

Version 3.34a

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

Version 3.32c

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

Version 3.32b

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

Version 3.32a

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

Version 3.30i

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

Version 3.30e

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

Version 3.30b

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

Version 3.28d

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

Version 3.28c

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

Version 3.28a

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

Version 3.26j

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

Version 3.26i

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

Version 3.26h

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

Version 3.26d

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

Version 3.26b

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

Version 3.26a

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

Version 3.24g

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

Version 3.24f

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

Version 3.24e

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

Version 3.24d

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

Version 3.24b

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

Version 3.24a

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

Version 3.22c

  1. NAND_PHY_2048x8.c:
    Improved the readability.

Version 3.22a

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

Version 3.20h

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

Version 3.20g

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

Version 3.20a

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

Version 3.14a

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

Version 3.12f

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

Version 3.12d

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

Version 3.12a

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

Version 3.10j

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

Version 3.10i

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

Version 3.10a

  1. Improved SD card mode handling.

Version 3.08b

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

Version 3.08a

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

Version 3.04a

  1. NOR flash driver: Further fail safety improvements.
  2. IDE, MMC/SD card mode driver improvements.

Version 3.02a

  1. NAND flash driver: Use a large (2048 bytes) page with sector sizes of 512 bytes.
  2. NOR flash driver: Fail safety improved.

Version 3.00

  1. Major improvements. For details, refer to the manual.

Program corrections

Version 4.04e

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

Version 4.04d

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

Version 4.04c

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

Version 4.04b

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

Version 4.04a

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

Version 4.02a

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

Version 4.00b

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

Version 4.00a

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

Version 3.34b

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

Version 3.34a

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

Version 3.32c

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

Version 3.32b

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

Version 3.32a

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

Version 3.30l

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

Version 3.30k

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

Version 3.30j

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

Version 3.30i

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

Version 3.30g

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

Version 3.30f

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

Version 3.30e

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

Version 3.30d

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

Version 3.30c

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

Version 3.30b

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

Version 3.30a

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

Version 3.28d

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

Version 3.28c

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

Version 3.28b

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

Version 3.28a

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

Version 3.26k

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

Version 3.26j

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

Version 3.26i

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

Version 3.26g

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

Version 3.26f

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

Version 3.26e

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

Version 3.26d

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

Version 3.26c

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

Version 3.26b

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

Version 3.26a

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

Version 3.24g

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

Version 3.24f

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

Version 3.24e

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

Version 3.24d

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

Version 3.24c

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

Version 3.24b

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

Version 3.24a

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

Version 3.22c

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

Version 3.20i

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

Version 3.20h

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

Version 3.20f

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

Version 3.20e

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

Version 3.20d

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

Version 3.20c

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

Version 3.20b

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

Version 3.20a

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

Version 3.14a

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

Version 3.12j

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

Version 3.12i

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

Version 3.12h

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

Version 3.12g

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

Version 3.12f

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

Version 3.12e

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

Version 3.12d

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

Version 3.12c

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

Version 3.12b

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

Version 3.12a

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

Version 3.10g

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

Version 3.10g

  1. FS_Rename(FAT):
    Renaming a file or directory could fail when using absolute file paths. Fixed.

Version 3.10f

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

Version 3.10e

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

Version 3.10d

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

Version 3.10c

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

Version 3.10b

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

Version 3.10a

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

Version 3.06b

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

Version 3.06a

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

Version 3.04c

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

Version 3.04b

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

Version 3.04a

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

Version 3.00

  1. First V3 release. No corrections.

Known problems/limitation

Version 3.22a

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

Release history

Version Release date Short explanation
V4.04e 20. October 2017 New features, improvements and bugfixes.
V4.04d 16. June 2017 New features, improvements and bugfixes.
V4.04c 16. March 2017 New features, improvements and bugfixes.
V4.04b 17. November 2016 New features, improvements and bugfixes.
V4.04a 21. June 2016 Full release with new features and bugfixes.
V4.02b 10. February 2016 New features and improvements.
V4.02a 03. December 2015 Full release with new features and bugfixes.
V4.00b 26. August 2015 Improvements and bugfixes.
V4.00a 19. June 2015 Full release with new features and bugfixes.
V3.34b 07. January 2015 Improvements and bugfixes.
V3.34a 04. June 2014 Full release with new features and bugfixes.
V3.32c 30. January 2014 Improvements and bugfixes.
V3.32b 24. July 2013 Improvements and bugfixes.
V3.32a 22. May 2013 Full release with new features and bugfixes.
V3.30l 22. March 2013 Bugfixes.
V3.30k 05. March 2013 Bugfixes.
V3.30j 18. February 2013 Bugfix.
V3.30i 11. February 2013 Improvements and bugfixes.
V3.30h 14. December 2012 New feature.
V3.30g 19. November 2012 Improvements and bugfixes.
V3.30f 08. November 2012 Improvements and bugfixes.
V3.30e 30. October 2012 Improvements and bugfixes.
V3.30d 19. October 2012 Improvements and bugfixes.
V3.30c 05. October 2012 Improvements and bugfixes.
V3.30b 06. September 2012 New features and bugfixes.
V3.30a 03. August 2012 Full release with new features and bugfixes.
V3.28d 16. July 2012 Minor improvements and bugfixes.
V3.28c 04. July 2012 Minor improvements and bugfixes.
V3.28b 20. June 2012 Minor corrections.
V3.28a 17. June 2012 Full release with new features and bugfixes.
V3.26k 19. April 2012 Minor bugfix.
V3.26j 12. April 2012 Minor bugfixes and improvements.
V3.26i 22. March 2012 Minor bugfixes and improvements.
V3.26h 22. February 2012 Minor improvements.
V3.26g 10. February 2012 Major bugfix.
V3.26f 30. January 2012 Minor bugfixes.
V3.26e 09. January 2012 Minor bugfixes.
V3.26d 05. December 2011 Minor bugfixes and improvements.
V3.26c 11. November 2011 Minor bugfix.
V3.26b 07. November 2011 Minor bugfixes and improvements.
V3.26a 05. October 2011 Full release with new features and bugfixes.
V3.24g 29. July 2011 Minor bugfixes.
V3.24f 22. July 2011 Minor bugfixes.
V3.24e 05. July 2011 Minor bugfixes and improvements.
V3.24d 21. March 2011 Minor bugfixes and improvements.
V3.24c 28. February 2011 Minor bugfixes.
V3.24b 10. February 2011 Minor bugfixes and improvements.
V3.24a 08. December 2010 Full release with new features and bugfixes.
V3.22c 18. October 2010 Minor bugfixes.
V3.22a 12. July 2010 Full release - Some new features, some improvements.
V3.20i 21. June 2010 Minor bugfixes.
V3.20h 20. April 2010 Major bugfixes.
V3.20g 21. January 2010 Minor improvements.
V3.20f 23. November 2009 Minor bugfixes.
V3.20e 06. November 2009 Minor bugfixes.
V3.20d 28. October 2009 Minor bugfixes.
V3.20c 12. October 2009 Minor bugfixes.
V3.20b 14. September 2009 Minor bugfixes.
V3.20a 17. August 2009 Major release.
V3.14a 15. December 2008 Major release.
V3.12j 06. November 2008 Minor changes.
V3.12i 06. August 2008 Minor changes.
V3.12h 04. August 2008 Minor changes.
V3.12g 22. June 2008 Minor changes.
V3.12f 10. June 2008 Minor changes.
V3.12e 30. June 2008 Minor changes.
V3.12d 19. June 2008 Major changes.
V3.12c 10. June 2008 Minor bug fix.
V3.12b 03. June 2008 Minor bug fixes.
V3.12a 24. April 2008 New FS release with Journaling add-on.
V3.10j 22. April 2008 Removed compiler warnings.
V3.10i 14. April 2008 Support for newer SD cards.
V3.10h 07. January 2008 Minor changes.
V3.10g 14. December 2007 Minor changes.
V3.10f 04. December 2007 Minor changes.
V3.10e 02. November 2007 Minor changes.
V3.10d 25. October 2007 Minor changes.
V3.10c 16. October 2007 Minor changes.
V3.10b 05. October 2007 Minor changes.
V3.10a 24. September 2007 Major release.
V3.08b 06. July 2007 Minor improvement.
V3.08a 04. July 2007 Minor bugfix.
V3.06b 06. June 2007 Minor bugfix.
V3.06a 05. June 2007 Major release
V3.04c 18. May 2007 Minor bug fixes
V3.04a/b 10. May 2007 Initial version with release history

Miscellaneous

This document was first released with version 3.04a of the software.
Software released earlier is documented internally.
This information is available at request.


Copyright 2003 - 2017 SEGGER Microcontroller GmbH & Co. KG. All rights reserved.
For more information, please visit our website www.segger.com or contact us at info@segger.com