Files
2026-07-30 11:19:44 +05:30

348 lines
8.3 KiB
C

/* 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