µC/FS Release Notes

µ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