/* flcustom.h - True Flash File System */ /* Copyright 1984-2004, 2011 Wind River Systems, Inc. */ #include "copyright_wrs.h" /* FAT-FTL Lite Software Development Kit * Copyright (C) M-Systems Ltd. 1995-1997 */ /* modification history -------------------- 01d,07may13,jxu eTFFS: added TFFS_FAST_MOUNT, TFFS_HIGH_FAULT_TOLERANCE and TFFS_TRUE_STATIC_WL 01c,21mar11,zly requirement WIND00239771 01b,29jul04,alr activated DEFRAGMENT_VOLUME 01a,29jul04,alr modified file header, restarted history */ #ifndef FLCUSTOM_H #define FLCUSTOM_H #ifdef __cplusplus extern "C" { #endif /* This file is intended for modification only by TFFS SOURCE * customers. Customers with the binary distribution of the product * should not modify this file. */ /* * * Section 2: File System Customization * ------------------------------------ */ /* ISSUE #2.1: Number of drives * * Defines the maximum number of drives (and sockets) supported. * * The actual number of drives depends on which socket controllers are * actually registered. */ #define DRIVES 5 /* ISSUE #2.1: Number of open files (OBSOLETE) * * Defines the maximum number of files that may be open at a time. */ /*#define FILES 0*/ /* ISSUE #2.2: Sector size * * Define the log2 of sector size for the FAT & FTL layer. Note that the * default 512 bytes is the de-facto standard and practically the only one * that provides real PC interoperability. */ #define SECTOR_SIZE_BITS 9 /* ISSUE #2.3: Formatting * * Uncomment the following line if you need to format with fsFormatVolume. */ #define FORMAT_VOLUME /* ISSUE #2.4: Defragmentation * * Uncomment the following line if you need to defragment with * fsDefragmentVolume. */ #define DEFRAGMENT_VOLUME /* ISSUE #2.5: Sub-directories (OBSOLETE) * * Uncomment the following line if you need support for sub-directories */ /* #define SUB_DIRECTORY */ /* ISSUE #2.6: Rename file (OBSOLETE) * * Uncomment the following line if you need to rename files with fsRenameFile. */ /* #define RENAME_FILE */ /* ISSUE #2.7: Split / join file (OBSOLETE) * * Uncomment the following line if you need to split or join files with * fsSplitFile and fsJoinFile */ /* #define SPLIT_JOIN_FILE */ /* ISSUE #2.8: 12-bit FAT support (OBSOLETE) * * Comment the following line if you do not need support for DOS media with * 12-bit FAT (typically media of 2 MBytes or less). */ /*#define FAT_12BIT*/ /* ISSUE #2.9: Parse path function (OBSOLETE) * * Uncomment the following line if you need to parse DOS-like path names * with fsParsePath. */ /* #define PARSE_PATH */ /* ISSUE #2.10: Maximum supported medium size (OBSOLETE) * * Define here the largest Flash medium size (in MBytes) you want supported. */ /* limit is set to 2047 to avoid integer overflow warning */ #define MAX_VOLUME_MBYTES 2047 /* ISSUE #2.11: Assumed card parameters * * This issue is relevant only if you are not defining any allocation * routines in #5.2. * * The following are assumptions about FTL parameters of the Flash media. * They affect the size of the heap buffer allocated in FTLLITE.C. */ #define ASSUMED_FTL_UNIT_SIZE 0x20000l /* Intel interleave-2 */ #define ASSUMED_VM_LIMIT 0x10000l /* limit at 64 KB */ #define ASSUMED_NFTL_UNIT_SIZE 0x4000l /* ISSUE #2.12: Number of buffers * * Normally two sector buffers are needed, one for the FAT layer, another * for the FTL layer. You may save about 512 bytes of RAM requirements by * uncommenting the following definition. * This will come at the cost of both read and write performance. */ /*#define SINGLE_BUFFER */ /* ISSUE #2.13: Absolute read & write * * Uncomment the following line if you want to be able to read & write * sectors by absolute sector number (i.e. without regard to files and * directories). */ #define ABS_READ_WRITE /* ISSUE #2.14: Low level operations * * Uncomment the following line if you want to do low level operations. * Low level operations include: read from a physical address, write to * a physical address, erase a unit according to its physical unit number. */ #define LOW_LEVEL /* ISSUE #2.15: Application exit * * If the FLite application ever exits, it needs to call fsEXit before * exitting. Uncomment the following line to enable this. */ /* #define EXIT */ /* ISSUE #2.16: Number of sectors per cluster * * Define the minimum cluster size in sectors. */ #define MIN_CLUSTER_SIZE 4 /* ISSUE #2.17: fast mount * * Optimized mounting process */ #define TFFS_FAST_MOUNT /* ISSUE #2.18: high fault tolerance * * Achieving higher fault tolerance by: * - never writing in-place * - double BAM * - checksum of user data * By default, it's off, because it causes a little bit performance * degration due to the overhead of above listed additional operations. */ /* #define TFFS_HIGH_FAULT_TOLERANCE */ /* ISSUE #2.19: background task * * Enabled background task for defragment when system is idle */ #ifdef DEFRAGMENT_VOLUME #define TFFS_BACKGROUND_TASK /* depends on DEFRAGMENT_VOLUME */ #endif /* DEFRAGMENT_VOLUME */ /* ISSUE #2.20: true static wear-leveling * * Enable true static wear-leveling to distribute erase across the * whole flash device as evenly as possible */ #define TFFS_TRUE_STATIC_WL /* * * Section 3: Socket Hardware Customization * ---------------------------------------- */ /* ISSUE #3.1: Vpp voltage * * If your socket does not supply 12 volts, comment the following line. In * this case, you will be able to work only with Flash cards that do not * require external 12 Volt Vpp. * */ #define SOCKET_12_VOLTS /* ISSUE #3.2: Fixed or removable media * * If your Flash media is fixed, uncomment the following line, and ignore * issue #3.3. */ /* #define FIXED_MEDIA */ /* ISSUE #3.3: Hardware card change detection * * This issue is now obsolete * */ /* ISSUE #3.4: Interval timer * * The following defines a timer polling interval in milliseconds. If the * value is 0, an interval timer is not installed. * * If you select an interval timer, you should provide an implementation * for 'installTimer' defined in timer.h. * * An interval timer is not a must, but it is recommended. The following * will occur if an interval timer is absent: * * - Card changes can be recognized only if socket hardware detects them * (see issue #3.2). * - The Vpp delayed turn-off procedure is not applied. This may downgrade * write performance significantly if the Vpp switching time is slow. * - The watchdog timer that guards against certain operations being stuck * indefinitely will not be active. */ #define POLLING_INTERVAL 100 /* Polling interval in millisec. if 0, no polling is done */ /* * * Section 4: MTD Customization * ---------------------------- */ /* ISSUE #4.1: MTD Installation * * This issue is now obsolete * */ /* ISSUE #4.2: Background erasing * * If you include support for Flash technology that has suspend-for-write * capability, you can gain considerable write performance and improve * real-time response for your write operations by including background erase * capability. In some cases, you can gain performance by including this * feature even if no suspend-for-write capability is supported. See the * FLite manual for complete details. * * On the other hand, this feature adds to required code & RAM, makes * necessary some additional customization on your part, and depends on * compiler features that, while defined as ANSI-C standard, may have * a problematic implementation in your particular environment. See the * FLite manual for complete details. * * Uncomment the following line to support background erasing. */ /* #define BACKGROUND */ /* ISSUE #4.3: Maximum MTD's and Translation Layers * * Define here the maximum number of Memory Technology Drivers and * Translation Layers that may be installed. Note that the actual * number installed is determined by which components are installed in * 'registerComponents' (custom.c) */ #define MTDS 10 /* Up to 5 MTD's */ #define TLS 5 /* Up to 3 Translation Layers */ /* * register mtd identify for each drive, more fast, flexible and reasonable. * flash simulator works only when TFFS manages MTD identifies in this way. */ #define MTD_IDENTIFY_REGISTER #ifdef __cplusplus } #endif #endif