**Updated 3/26/09 with preface
[The following article is authored by one of the Windows Embedded MVPs (Most Valuable Professionals). Our MVPs have a heavy background in Embedded systems and are a great repository of information on Windows Embedded products. We’re providing this space on our team blog as a service to our readers by allowing MVPs to share some of their knowledge with the rest of the community.]
Flash storage is a very robust storage media and very often used in systems that live in a challenging environment e.g. in industrial automation or automotive. The absence of moving parts in contrast to hard disks helps those systems cope with extreme shock and temperature influences.
Windows Embedded Standard supports booting from Compact Flash (CF) cards or USB flash drives (UFD).
To boot a system from CF, the cards are used just as a normal ATA IDE disk with the help of a CF to IDE adapter. Doing this, Standard requires the cards to appear as a fixed disk to the operating system. This is unfortunately not the usual setting CF cards are sold in shops, to serve as removable storage in cameras or audio players. It is good to be aware of this fact, because these cards have an internal bit set to removable and are therefore not accepted as boot media by Standard or XP embedded.
Fixed cards make your life easier
The ways to change this is either to use a so called “auto-sensing” CF cards that always report the correct mode to the system using it, change the setting with the help of a tool provided by the CF card manufacturer or to choose cards with the removable bit set to fixed. To make things easy and reliable the latter option can be recommended when developing systems, especially in combination with industrial grade cards that provide not only more robustness but quite often higher performance, as well. The tools to change the bit have proven to be not really reliable and of course this would mean another step in a manufacturing process that can easily be avoided.
EWF protects against too many write cycles
An additional thing to look into at is the usage of the Enhanced Write Filer (EWF) to prolong the lifetime of flash memory cards. EWF protects by redirecting write cycles away from the card e.g. into RAM.
This works very well using FAT as a file system, but there is one issue to consider using NTFS. NTFS has to offer interesting features such as much higher security and file compression, but it has a slightly higher impact on the card itself. While with FAT all writes can be redirected by EWF, with NTFS there are still writes occurring into its file system journal that resides not on the partition. Due to being outside of the partition, these writes cannot be handled by EWF. They are not too harmful, because modern wear leveling technologies are able to cover the impact, but they certainly diminish the overall flash lifetime to a small extent. For more information on ways to reduce the writes with NTFS refer to this blog article.
Using UFDs there are some differences. The usage of UFD storage requires the dedicated USB 2.0 boot component and therefore is not as transparent to the OS image as using a CF card. A CF card image for example could be used on a hard disk providing the same storage size or partitioning without a problem, while a UFD image cannot.
UFDs do not have the removable bit setting, but they need to be formatted with a special utility as shown in one of the earlier posts on this blog.
In addition, UFDs have a much more significant impact on the overall system performance. In fact, in most cases booting from CF card is quite a bit faster than booting even from fast UFDs.