µC/FS Release Notes

Version 4.08.01

Release Date

May 20, 2021

Changelog

  • Removed misleading message about extra clusters linked to file.

Version 4.08.00

Release date: February 28, 2020

  • Open-source Release

Version 4.07.07

Release date: December 16, 2019

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.38.00

New features & improvements

  • None

API changes

  • None

Bug fixes

  • Fixed "Operands in a bitwise operation have different size" warnings in fs_util.c
  • Fixed MISRA "No break or throw statement at the end of switch-clause" warning in fs_volc
  • Fixed MISRA "No default clause at the end of a switch statement" warning in fs_os.c
  • Fixed "value of 'variable' is never used after assignment" warnings in fs_fat.c, fs_fat_lfn.c, fs_fat_sfn.c, fs_entry.c, fs_file.c, and fs_unicode.c
  • Fixed uninitialized variable in fs_fat_journal.c
  • Fixed issue where the file system would fail to keep track of the erased blocks in NOR
  • Fixed misleading "extra clusters linked to file" trace message in fs_fat.c

Version 4.07.06

Release date: June 19, 2019

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.38.00

New features & improvements

  • Changed FS_SEEK_SET, FS_SEEK_CUR, and FS_SEEK_END to POSIX values SEEK_SET, SEEK_CUR, SEEK_END

API changes

  • None.

Bug fixes

  • Fixed file corruption issue when appending to a file using a file buffer
  • Fixed uninitialized variables in fs_fat_lfn.c
  • Fixed unused variable in fs_fat.c

Version 4.07.05

Release date: December 5, 2018

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.38.00

New features & improvements

  • None.

API changes

  • None.

Bug fixes

  • Fixed issue in FS_FAT_FileClose() where p_buf returned from call to FSBuf_Get() may be null and dereferenced further in the code.
  • Fixed issue in FSFile_ObjFree() where p_file was dereferenced before checking it for null.
  • Fixed potential null pointer pp_next_data dereferenced in FSUtil_ModuleDataFree().
  • Fixed potential null pointer pp_data_head dereferenced in FSUtil_ModuleDataFree().
  • Fixed improper debug message about Root Directory full.
  • Fixed issue with low level format reading bad meta blocks in NAND.

Version 4.07.04

Release date: June 15, 2018

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.38.00
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01
  • [OPTION] USB Mass Storage Class driver: µC/USB-Host V3.40.02

New features & improvements

  • Reworked include paths so that only the root directory for uC/FS (/Micrium/Software/uC-FS/) is required in the compiler paths.
  • FSDev_MSC_IO_Ctrl() cache sync functionality from USBH MSC.
  • SPI support for Winbond W25Q16JV NOR devices.
  • NAND driver: Added an additional check to catch any out-of-bound physical block index before it causes further corruption.

API changes

  • None.

Bug fixes

  • Fixed overwrite issue in FS_NOR_FTL_LowMountInternal() that would manifest during power loss testing.
  • Fixed issue in FSDev_NOR_LowMountHandler() that would put the device in an invalid state if the power is lost during a file write.
  • Fixed FS_TRACE_INFO message in FSDev_NOR_Close() that outputs an error message even though the function returns without errors.
  • Fixed issue where FSVol_Open() return error was not being handled properly in FSDev_MSC_DevOpen().
  • NAND driver: Fixed previous dirty bitmap search position bug.
  • NAND driver: Fixed Metablock find ID overflow bug.
  • NAND driver: Fixed issue where the last physical block was left unused.
  • SD Card driver now initializes v1 SD cards properly. 

Version 4.07.03

Release date: 2016-05-05

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.38.00
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01
  • [OPTION] USB Mass Storage Class driver: µC/USB-Host V3.40.02

New features & improvements

  • None.

API changes

  • None.

Bug fixes

  • NAND driver: possible stale metadata block issue in the case of large erase count discrepancies.
  • NAND driver: potential conflicting last physical block index erroneously stored in logical to physical block table.

Version 4.07.02

Release date: 2016-02-15

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.38.00
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01
  • [OPTION] USB Mass Storage Class driver: µC/USB-Host V3.40.02

New features & improvements

  • None.

API changes

  • None.

Bug fixes

  • NAND driver: critical off-by-one error in FS_NAND_LowMountHandler() and FS_NAND_MetaBlkFind().
  • NAND driver: incorrect metadata block ID overflow handling.
  • NAND driver: missing chip select disable ingenericcontroller.

Version 4.07.01

Release date: 2015-07-07

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.38.00
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01
  • [OPTION] USB Mass Storage Class driver: µC/USB-Host V3.40.02

New features & improvements

  • None.

API changes

  • None.

Bug fixes

  • FAT entry lookup for '..' entry pointing to root directory fails for FAT12/16.
  • FS_FAT_XFN_DirEntryPlace(): SecNextGetAlloc() uses FS_VOL_SEC_TYPE_FILE sector type instead of FS_VOL_SEC_TYPE_DIR.
  • Device Data pointer not initialized in FSDev_ObjClr().
  • NAND driver: big endian issue with reading sec_type in OOS.
  • NAND driver: use of uninitialized structure members­.
  • NAND Soft ECC gen ext: use of unitializedOOS_SizePerSec.
  • Missing directory and file table initialization.
  • NAND Driver: fix mismatchbetween WaitWhileBusy() and assert of R/B# to allow IRQ operation.
  • NAND ONFI: use blocks from all LUNs.
  • FSEntry_Del(): does not support deletion of ANY type.
  • Journaling: incorrect journal file creation onbig endianCPUs.

Version 4.07.00

Release date: 2014-02-14

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.38.00
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01
  • [OPTION] USB Mass Storage Class driver: µC/USB-Host V3.40.02

New features & improvements

  • µC/LIB V1.38.00 compatibility: version 1.38.00 of µC/LIB has deprecated some APIs that were used by previous versions of µC/FS, most notably Mem_PoolBlkGetUsedAtIx() and Mem_PoolBlkIxGet(). Updating to µC/FS V4.07.00 is required if updating other Micrium products that require µC/FS V1.38.00.

  • NAND Driver: 16-bit NAND compatibility for generic parallel NAND controller.

  • Journaling module: significantly reduced performance hit due to new journal clearing algorithm. 

API changes

  • NAND generic controller BSPs now have an added 'width' parameter in functions DataRd() and DataWr(). Existing NAND generic controller BSPs will need to be updated. See µC/FS Migration Guide for more details.

Bug fixes

  • SD Driver: issue STOP_TRANSMISSION command only once per stop operation.

  • Missing err code init in FSDev_Access(Lock|Unlock).

  • Mounting logical partition fails if extended partition type is LBA extended (0xF).

  • NAND Driver: incorrect data size allocation for Micron ECC and Soft ECC.

  • FS_FAT_JournalOpen(): erroneous journal file's cluster count calculation when the journal size is smaller than the cluster size.

  • NOR Driver: PrepareBlk called without wear leveling check.

  • NAND Driver errors in 16 bits defect mark checking.

  • NAND Driver: add support for switching to 16 bits width.

Version 4.06.01

Release date: 2013-07-10

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.37.01
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01
  • [OPTION] USB Mass Storage Class driver: µC/USB-Host V3.40.02

New features & improvements

  • None.

API changes

  • None.

Bug fixes

  • FAT: EOC handling does not account for all possible values

Version 4.06.00

Release date: 2013-06-27

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.37.01
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01
  • [OPTION] USB Mass Storage Class driver: µC/USB-Host V3.40.02

New features & improvements

  • Journaling module: The journaling module has been redesigned in order to improve robustness and achieve lower footprint (both ROM and RAM).
  • NOR Driver: Added support forSST25VFxxxC family.
  • NAND Driver: Major bugfix release: update is highly recommended.
  • NAND Driver: Added support for dumping raw NAND images.

API changes

  • Due to the journaling module redesign, any journaled volume used under µC/FS V4.05.03 or prior version must be cleanly unmounted before upgrading to V4.06.00.
  • Unused fields removed from most core µC/FS structures (shouldn't affect applications).
  • FS_CFG_BUILD configuration option removed.
  • See µC/FS Migration Guide for more details.

Bug fixes

  • FS_FAT_VolFmt() ignores the RsvdSec parameters
  • FAT corruption after partial cluster chain allocation
  • FSBuf_Free() can shadow write errors in many cases
  • Incorrect corner cases in default format configuration tables
  • NAND Driver: some incorrect use of MEM_VAL_COPY_GET/SET macros onbig endianCPUs
  • NAND Driver: MetaBlkFoldNeeded may be uninitialized
  • fs_fstat: directories reported as files
  • Possible buffer leak when returning from FSPartition_Add()
  • NAND Driver: new block is not removed from available blocks table in refresh operations
  • NAND Driver: dirty bitmap pointer not updated aftersearch
  • FS_FAT_VolChk() erroneously consider an empty file as invalid
  • FS_FAT_LowEntryFind() discard clusters allocated to a zero sized file
  • UTF8_MAX_VAL_4BYTE undeclared when FS_UNICODE_CFG_WCHAR_SIZE is configured to 32
  • Deleting a file or directory with a cluster chain longer than expected will leave a lost chain
  • FS_FAT_FileRd() should not set the EOF indicator
  • Opening a file of size 0 should not set the EOF indicator
  • NAND Driver: retries performed on unwritten sectors at mount time in MetaBlkFind()
  • NOR: Possible infinite loop in the Intel PHY

Version 4.05.03

Release date: 2013-01-21

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.37.01
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01
  • [OPTION] USB Mass Storage Class driver: µC/USB-Host V3.40.02

New features & improvements

  • NOR Driver: Added support for Atmel AT45 devices.

API changes

  • None.

Bug fixes

  • NAND Driver: wrong buffer name SpareBufPtr used when FS_NAND_CFG_XXXX_CACHE_EN is disabled
  • Check for LIB_MEM_HEAP_ALLOC_EN breaks build with uC/LIB V1.37.01
  • FSVol_LabelGet() returns malformed string
  • NAND Driver: wrong pointer is passed to SecRdPhyNoRefresh() in BlkRefresh()
  • os_err possibly undeclared in FS_OS_Init() function of the uCOS-II port
  • fs_app should open the volume even if the media is not present
  • FSVol_ReleaseUnlock() called when FSVol_Release() is appropriate
  • Volume not always released on lock failure
  • FS_OS lock not always released when returning from a fatal error
  • FSDev_NOR_PhyEraseChip() returns with error FS_ERR_DEV_INVALID_IO_CTRL
  • Invalid memory macro usage onbig endianarchitectures

Version 4.05.02

Release date: 2012-10-26

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.37.00
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01

New features & improvements

  • NOR Driver: Added support for Micron NP5Q phase change memory (PCM) devices.

API changes

  • None.

Bug fixes

  • Partition mount fails on big-endian platforms
  • Buffer leak when closing a journaled volume
  • Journal creation may fail or be corrupted if the maximum sector size is larger than the volume cluster size
  • IOCTL calls cannot be done on a device with no media present
  • NAND Driver: existing meta block not checked when formatting a device with incompatible low-fmtparameters.
  • FS_WorkingDirGet returns the wrong error when given a size of 0

Version 4.05.01

Release date: 2012-08-17

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.37.00
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01

New features & improvements

  • NAND generic controller BSP: allow most BSP functions to report errors through a new p_err argument.

API changes

  • FS_NAND_PART_STATIC_CFG structure: NbrOfPgmPerPage renamed to NbrPgmPerPg.
  • NAND generic controller BSP API: all functions except Close(), ChipSelEn() and ChipSelDis() now have a FS_ERR* argument. Open() and WaitWhileBusy() return type changed from CPU_BOOLEAN to void.

Bug fixes

  • Misspelled include file in fs_entry.c
  • FSDir_Rd() fails to read the last entry of a full root directory
  • VolFreeSecCnt isn't cleared when calling FSVol_Query on an unmounted volume
  • FS_WorkingDirSet and FSEntry_Query returnswrongerror code when given a null name pointer
  • Documentation and code comments mention the wrong error for null strings
  • Cluster allocation may fail when only one free cluster is left on volume
  • NAND Driver: FS_NAND_Close() causes memory access error if no instance has been opened
  • Multiple calls to FSVol_Query may give invalid results
  • Opening the journal may cause FSVol_Query() to report an increased number of total sector
  • Erroneous return value in the fs_rmdir() comment header block
  • File creation may fail in the root of a FAT12/16 volume full of deleted entries
  • Erroneous prototype in the fs_setbuf() API reference
  • SD SPI preprocessor warning mention app_cfg.h instead of crc_cfg.h
  • Improperly closed comment in fs_dev_nor_sst25.c
  • NAND Driver: generic controller BSP template uses wrong API structure type
  • Comments about FS_CFG_RD_ONLY_EN are reversed in fs_cfg.h
  • Duplicate entry FS_ERR_NAME_INVALID for FSEntry_Rename()

Version 4.05.00

Release date: 2012-08-17

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.37.00
  • [OPTION] µC/OS-II OS Port: µC/OS-II V2.92.07
  • [OPTION] µC/OS-III OS Port: µC/OS-II V3.03.01

New features & improvements

  • NAND Flash Driver: a new driver has been added and supports mostparralel NAND devices (SLC, MLC, small and large page). Support for 1-bit software ECC correction. Has a flexible architecture allowinguse of hardware ECC engines.
  • Multi-Cluster Writes and Reads: µC/FS can now perform writes or reads across cluster boundaries. This will result in a performance increase when writing orreading using large application buffers.

API changes

  • Error codes returned from some API functions were corrected. Important changes are listed in the migration guide.

Bug fixes

  • Incorrect SFN tail when creating repeated SFN entries of less than 8 characters
  • FSEntry_Del() does not validate correctly its entry_type argument
  • FSEntry_Rename() fails to delete the source after copying between different volumes
  • FSEntry_Rename() fails over two existing files without an allocated cluster
  • NOR Driver: SST25 PHY assumesdeviceis not in AA mode when opening
  • Cluster size is not validated by FS_FAT_VolFmt()
  • Possible buffer leak in FS_FAT_VolFmt()
  • Trying to format a small enough FAT12 volume may generate invalid device access
  • Volume is closed after a failed call to FSVol_Fmt()
  • FS_FAT_VolFmt() miscalculates the crossings between FAT 12, 16 and 32
  • Wrongerror returned when out of heap or pool space in some cases
  • Garbage may be written in the last sector's slack space of a file
  • Possible spurious cache miss when reading sector 0
  • FSCache_Create returns an unrelated error message when given invalid configuration
  • Path names longer than FS_CFG_MAX_PATH_NAME_LEN are silently truncated
  • FSentry_* class of functions do not check for invalid file name length
  • Shell extension command 'fs_ls' reports the wrong year
  • Possible FAT table corruption whenformatingFAT32 volumes
  • FSFile_Query() blocks buffer assignment
  • Unreachable code in FSFile_BufWr() related to the FS_FILE_BUF_MODE_SEC_ALIGNED flag
  • FSFile_SetPos() breaks when trying to set the file position to a negative value
  • Some functions return the wrong error when given a null string
  • Inconsistent behavior between FSDir_IsOpen() and FSFile_IsOpen() when given the wrong file type as input
  • Some file system functions return the wrong error when using the root dir astarget
  • FSFile_Truncate() can't increase the size of a file as documented
  • FSEntry_Create doesn't report any error when trying to create a directory that has a name conflict with a file when the exclusive flag isn't set

Version 4.04.05

Release date: 2012-06-12

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.37.00

New features & improvements

  • None.

API changes

  • None.

Bug fixes

  • FSDev_Open(): name_dev_copy allocation size is incorrect.

Version 4.04.04

Release date: 2012-06-06

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.37.00

New features & improvements

  • Device Query: FSDev_Query() will now return correct data for the 'Fixed' and 'State' fields even when the device is not accessible.
  • SD Card Driver: Better support for high capacity MMCplus and eMMC devices.

API changes

  • None.

Bug fixes

  • Wasted stack space for name_dev_copy in FSDev_Open().
  • RAMDisk driver reportsdeviceas removable. FSDev_Query() on a RAMDisk device will now correctly report the device as fixed.
  • Missing calls to FSDev_Release when returning from a lock failure in thedevlayer.

 

Version 4.04.03

Release date: 2012-05-18

Requirements

  • µC/Clk V3.09.03
  • µC/CPU V1.29.01
  • µC/CRC V1.09.01
  • µC/LIB V1.37.00

New features & improvements

  • Device Access Locks: These locksneeds to be acquired for all direct device layer (FSDev_####()) API calls. The filesystem core functions (FSFile_####(), FSDir_####(), etc.) will acquire these locks automatically needed.
  • Device Invalidation: Allowsuser to invalidate a device. Invalidating a device prevents any further operation on an open volume or entry associated with the specified device to succeed. Errors will be returned by any function accessing an invalidated entry or volume until those entries and volumes are closed and reopened. This is useful when devices are accessed externally directly through the device layer, asthose access can cause the file system to be modified, and thus cause cached data related to volume or entries to become invalid. This is required for interoperation with USB Device Mass Storage Class (MSC).
  • Sector-aligned file buffers: New file buffer mode that forces file buffers start positions to be aligned with sector boundaries, for increased performance.

API changes

  • OS Port Layer: FS_OS_WorkingDirSet() now takes an error pointer aslast argument and may fail.

Bug fixes

  • fs_fstat(): modification time and creation time are interchanged.
  • FSDir_NameParseChk() might modify the entry name it receives.
  • FAT12: ClusValWr and ClusValRd incorrectly write/read cluster values across sector boundaries, forodd numberedFAT table entries.
  • Extending a directory table beyond a cluster causes entries to vanish.
  • Creating a directory without exclusive flag set fails when directory already exists.

Previousversions

Older versions' release notes are in the following PDF document: uC-FS-ReleaseNotesArchive.pdf