x
This website is using cookies. We use cookies to ensure that we give you the best experience on our website. More info. That's Fine
HPC:Factor Logo 
 

Maximum supported Memory Card & File Sizes under Windows CE

CESD|200205

Applies To

  • Windows CE 1.0, 1.01
  • Windows CE 2.0
  • Windows CE 2.10, 2.11, 2.12
  • Windows CE 3.0
  • Windows CE .net 4.0, 4.1, 4.2
  • Windows CE 5.0
  • Windows Embedded CE 6.0
  • Handheld PC Professional
  • HPC2000

Overview

This article discusses the file system driver limitations of Windows CE FAT12/FAT16/FAT32 implementation. It outlines the maximum supported and maximum recommended peripheral memory devices under Windows CE, including Compact Flash (CF), SD, MMC, ATA Flash, USB memory fobs and external hard drives.

More Info

Max 32-kb cluster = not good for large disk performance as file seeks need to scan every.

FAT32 driver supports up to 99 simultaneously mounted volumes

Windows CE 1.0, 2.0, 2.10

Supported FAT implementations: FAT12 / FAT16

Maximum Native Partition Size: 2 GB

Maximum Non-Native Partition Size: 2GB

Maximum Supported Volume: 128 GB (Documented) 137GB (28-bit LBA)

Maximum Cluster Size: 32KB
NT cluster sizes up to 64KB are not supported

Max File Size (Object Store): 4MB

Max File Size (FAT): 2GB theoretical, in practice no larger than available system memory

Windows 2.10 (with the enhancement pack & all QFE's), 2.11, 3.0 and Windows CE .net

Supported FAT implementations: FAT12 / FAT16 / FAT32 / TFAT (CE .net only)

Maximum Native Partition Size: 32GB

Maximum Non-Native Partition Size: 32TB (Theoretical)

Maximum Supported Volume: 8 GB (INT13)

Maximum Cluster Size: 32KB
NT cluster sizes up to 64KB are not supported

Object Store Size: 16 MB (2.x) | 256MB (CE3+)

Max File Size (Object Store): 32MB

Max File Size (FAT): 4GB theoretical, in practice no larger than available system memory

Windows CE 5.0 (with all QFE's)

Windows CE 5.0 see: MSKB Q916762

Supported FAT implementations: FAT12 / FAT16 / FAT32 / TFAT

Maximum Native Partition Size: 32GB

Maximum Non-Native Partition Size: 2TB | 16TB (Theoretical)

Maximum Supported Volume: 128 PetaBytes (48-bit LBA | Theoretical)

Maximum Cluster Size: 32KB
NT cluster sizes up to 64KB are not supported

Object Store Size: 256MB

Max File Size (Object Store): 32MB

Max File Size (FAT): 4GB theoretical, in practice no larger than available system memory

Windows Embedded CE 6.0

Supported FAT implementations: FAT12 / FAT16 / FAT32 / TFAT / ExFAT (FAT64)

Maximum Native Partition Size (ExFAT): Unknown (Greater than 32GB)

Maximum Non-Native Partition Size (ExFAT): Unknown (HPC:Factor assumes 16 ExaBytes)

Maximum Supported Volume: 128 PetaBytes (48-bit LBA | Theoretical)

Maximum Cluster Size (ExFAT): 32MB (2x2 to the 255th power is theoretical)

Object Store Size: 256MB

Max File Size (Object Store): 128MB

Max File Size (ExFAT): 16 ExaBytes (16EB) theoretical, in practice no larger than available system memory

SD Cards larger than 2GB

As a local controller independent technology, Windows CE can theoretically support any size SD card that the device can provide power for, within the file-system limitations of the built-in drivers.

However, changes to the SD Card specification to support storage capacities greater than 2GB may create issues on older hardware.

Older cards smaller than 2GB make use of byte addressing based upon a 32-bit address, where as newer cards supporting sizes greater than 2GB require 32-bit LBA support. Older cards greater than or equal to 2GB may use proprietary addressing techniques and may not offer any compatibility with the reader hardware.

How to correct the issue:

In order to correct the issue, you must locate firmware updates for the SD controller in your device, and, depending on the Windows CE version, driver updates for the controller hardware itself. This applies to all computer system, not just Windows CE.

FAT32 & the 4GB File Size

The maximum file size of 4GB is such because as the name suggests, FAT32 uses 32-bit addressing for cluster as well a 32-bit file size index. The maximum possible integer generated by a 32-bit number is 4,294,967,295 with the largest file size integer under FAT32 being 4,294,967,294 or 4GB.

FAT32 & Partitions Greater Than 32GB

Microsoft have artificially limited the support for FAT32 partitions greater than 32GB in its operating systems. No Windows version is natively able to create or mane any FAT32 volume which goes beyond the 32GB limitation boundary. There are however third-party software tools which can manage such volumes, as can any Linux distribution.

Windows CE versions greater than and including Windows CE 2.11 can theoretically read and address volumes larger than 32GB, however the upper limitation boundary for the File System drivers in Windows CE is unknown and untested (even by Microsoft).

HPC:Factor has confirmed that Windows CE is capable, at least in principe of addressing volumes up to 300GB however use of this in practice is not recommended and even then not over 137 GB. No solid usage or performance tests have been carried out on such a setup.

Why shouldn't volumes larger than 32GB be used with older versions of Windows CE.

Windows CE 5.0 and above offers a more performance minded FATFS driver, with CE 6.0 offering a native way to bypass the 32GB limitation through the use of ExFAT.

Users are strongly discouraged from using older Version of Windows CE with large disks for the following reasons:

  1. Upon initial mounting, Windows CE performs an automatic disk integrity check on all volumes attempting to access the FATFS.dll file system driver. In the event that Windows CE detects, or incorrectly detects an error on the volume it will automatically attempt to repair the issue, which could inadvertently result in data loss. The Windows CE's driver was not designed to address large volumes and was never tested against having to manage a large address table. Known faults exist in the initial Windows CE 5.0 offering which have been shown to cause corruption and data loss under certain circumstances. As Windows CE development is evolutionary, it cannot be confirmed that such errors do not exist under older editions of Windows CE.
  2. The Windows CE FATFS.dll driver is configured to auto-mount any new volumes it detects. Windows CE will identify blank or corrupt volumes in the same way and offer to automatically format the volume. In this example, Windows CE will never format the volume beyond the 32GB boundary, causing data loss and reduced functionality on the storage volume.
  3. Stability: In practice, the larger a FAT32 volume is, the more unstable it becomes for long term data integrity, particularly without backup FAT support. The slow write performance of Windows CE devices and the higher chance of data errors occurring because of the instant-on used by Windows CE exponentially increase the chance of data loss and volume damage.
  4. Performance: Microsoft limited its FAT32 implementation to 32GB arguably to coax users towards NTFS, but also because FAT32 begins to experience performance issues beyond the 32GB boundary. FAT32 must perform linear enumeration in serial of the disk surface in order to locate empty clusters - with the exception of CE5 which can now support indexing - or locate, manage and modify large files. On a full 32GB volume with 32KB clustering driver must enumerate 1,048,576 clusters (67,108,864 sectors). Compare that with a 250GB hard disk which will have just short of 489 million sectors or 8,192,000 (8.1 million!) clusters.

    Repeated enumeration of this number of sectors on the disk (during worst case disk usage) his provides an extended overheard in disk writes and inhibits the use of the disk, the greater the volume, the more cluster/sectors the system must scan and the slower the performance. The matter is further worsened by Windows CE's lack of defragmentation support, which further increases the necessity for enumeration.