549 lines
12 KiB
C
549 lines
12 KiB
C
/*
|
|
* $Log: V:/Flite/archives/TrueFFS5/Custom/FLCUSTOM.H_V $
|
|
*
|
|
* Rev 1.12 Jan 29 2002 20:11:56 oris
|
|
* Changed LOW_LEVEL compilation flag with FL_LOW_LEVEL to prevent definition clashes.
|
|
*
|
|
* Rev 1.11 Jan 20 2002 20:42:34 oris
|
|
* FL_NO_USE_FUNC is now commented.
|
|
*
|
|
* Rev 1.10 Jan 20 2002 12:03:46 oris
|
|
* Updated driverVersion and OSAKVersion to 5.1
|
|
* Removed FAT- lite (FILES 0)
|
|
* Changed VOLUMES to 4*SOCKETS
|
|
* Commented WRITE_EXB_IMAGE / WRITE_PROTECTION.
|
|
* Uncommneted VERIFY_WRITE (for protection against power failures).
|
|
* Changed MAX_VOLUME_MBYTES to 1GB
|
|
* Changed TLS to 2 (since multi-doc was removed)
|
|
* Removed QUICK_MOUNT_FEATURE (since it is defained by default in flchkdfs)
|
|
* Removed MULTI_DOC / SEPERATED_CASCADED / FL_BACKGROUND
|
|
* Added FL_NO_USE_FUNC definition.
|
|
*
|
|
* Rev 1.9 Nov 16 2001 00:33:44 oris
|
|
* Added NO_NFTL_2_INFTL compilation flag enabling 4.3 format converter.
|
|
*
|
|
* Rev 1.8 Jul 13 2001 00:56:58 oris
|
|
* Added VERIFY_ERASE and VERIFY_WRITE.
|
|
*
|
|
* Rev 1.7 Jun 17 2001 16:43:46 oris
|
|
* Improved documentation.
|
|
*
|
|
* Rev 1.6 Jun 17 2001 08:13:10 oris
|
|
* Rearranged compilation flags orders.
|
|
*
|
|
* Rev 1.5 May 16 2001 23:07:02 oris
|
|
* Increased number of Translation Layers to support Multi-DOC.
|
|
*
|
|
* Rev 1.4 May 09 2001 00:47:46 oris
|
|
* Removed nested comments.
|
|
* Added NO_PHYSICAL_IO, NO_IPL_CODE and NO_INQUIRE_CAPABILITIES compilation flag
|
|
* to reduce code.
|
|
*
|
|
* Rev 1.3 Feb 12 2001 12:19:50 oris
|
|
* Added Multi-DOC compilation flag
|
|
*
|
|
* Rev 1.2 Feb 08 2001 09:19:06 oris
|
|
* Changed DRIVES to SOCKETS and VOLUMES
|
|
* Moved SECTOR_SIZE_BITS to flbase.h
|
|
* Added WRITE_EXB_IMAGE, QUICK_MOUNT_FEATURE, HW_OTP, HW_PROTECTION and BINARY_PARTITIONS
|
|
* compilation flags. Added SEPERATED_CASCADED compilation flag.
|
|
*
|
|
* Rev 1.1 Feb 05 2001 18:46:50 oris
|
|
* Moved compilation flag sanity check to a different file in order to preserve backward
|
|
* compatibility.
|
|
*
|
|
* Rev 1.0 Feb 05 2001 12:21:36 oris
|
|
* Initial revision.
|
|
*
|
|
*/
|
|
|
|
/************************************************************************/
|
|
/* */
|
|
/* FAT-FTL Lite Software Development Kit */
|
|
/* Copyright (C) M-Systems Ltd. 1995-2001 */
|
|
/* */
|
|
/************************************************************************/
|
|
|
|
|
|
#ifndef FLCUSTOM_H
|
|
#define FLCUSTOM_H
|
|
|
|
|
|
/* Driver & TrueFFS (OSAK) Version numbers */
|
|
|
|
#define driverVersion "OS Less 5.1"
|
|
#define OSAKVersion "5.1"
|
|
|
|
#define NT5PORT
|
|
#define D2000
|
|
#define DOC_DRIVES 4
|
|
/*
|
|
*
|
|
* File System Customization
|
|
* -------------------------
|
|
*/
|
|
|
|
/* Number of sockets
|
|
*
|
|
* Defines the maximum number of physical drives supported.
|
|
*
|
|
* The actual number of sockets depends on which socket controllers are
|
|
* actually registered and the number of sockets in the system.
|
|
*/
|
|
|
|
#define SOCKETS 8
|
|
|
|
|
|
|
|
/* Number of volumes
|
|
*
|
|
* Defines the maximum number of logical drives supported.
|
|
*
|
|
* The actual number of drives depends on which socket controllers are
|
|
* actually registered, the amount of devices in the system and the
|
|
* TL format of each device.
|
|
*/
|
|
|
|
#define VOLUMES (DOC_DRIVES * 4 ) + SOCKETS - DOC_DRIVES
|
|
|
|
|
|
|
|
/* Number of open files
|
|
*
|
|
* Defines the maximum number of files that can be open at a time.
|
|
*/
|
|
|
|
#define FILES 0
|
|
|
|
|
|
|
|
/* Low level operations
|
|
*
|
|
* Uncomment the following line if you want to do low level operations
|
|
* (i.e. read from a physical address, write to a physical address,
|
|
* erase a unit according to its physical unit number, OTP and unique ID
|
|
* operations.
|
|
*/
|
|
|
|
#define FL_LOW_LEVEL
|
|
|
|
|
|
|
|
/* Remove all write functions from the source. */
|
|
|
|
/* #define FL_READ_ONLY */
|
|
|
|
|
|
|
|
#ifndef FL_READ_ONLY
|
|
|
|
/* Placing EXB files
|
|
*
|
|
* Uncomment the following line if you need to place M-Systems firmware
|
|
* (DOCxx.EXB file) on the media. The file will install itself as a
|
|
* BIOS extension driver, hooking INT13h to emulate a HD.
|
|
*/
|
|
|
|
#define WRITE_EXB_IMAGE
|
|
|
|
|
|
|
|
/* Formatting
|
|
*
|
|
* Uncomment the following line if you need to format the media.
|
|
*/
|
|
|
|
#define FORMAT_VOLUME
|
|
|
|
|
|
|
|
/* Defragmentation
|
|
*
|
|
* Uncomment the following line if you need to defragment with
|
|
* flDefragmentVolume.
|
|
*/
|
|
|
|
#define DEFRAGMENT_VOLUME
|
|
|
|
#endif /* FL_READ_ONLY */
|
|
|
|
|
|
|
|
/* Sub-directories
|
|
*
|
|
* Uncomment the following line if you need support for sub-directories
|
|
* using the FAT-FLITE file system.
|
|
*/
|
|
|
|
/*#define SUB_DIRECTORY*/
|
|
|
|
|
|
|
|
/* Rename file
|
|
*
|
|
* Uncomment the following line if you need to rename files with
|
|
* flRenameFile.
|
|
*/
|
|
|
|
/*#define RENAME_FILE**/
|
|
|
|
|
|
|
|
/* Split / join file
|
|
*
|
|
* Uncomment the following line if you need to split or join files with
|
|
* flSplitFile and flJoinFile.
|
|
*/
|
|
|
|
/* #define SPLIT_JOIN_FILE */
|
|
|
|
|
|
|
|
/* 12-bit FAT support
|
|
*
|
|
* Comment the following line if you do not need support for DOS media with
|
|
* 12-bit FAT (typically media of 8 MBytes or less).
|
|
*/
|
|
|
|
#define FAT_12BIT
|
|
|
|
|
|
|
|
/* Parse path function
|
|
*
|
|
* Uncomment the following line if you need to parse DOS-like path names
|
|
* with flParsePath.
|
|
*/
|
|
|
|
/*#define PARSE_PATH*/
|
|
|
|
|
|
|
|
/* Maximum supported medium size.
|
|
*
|
|
* Define here the largest Flash medium size (in MBytes) you want supported.
|
|
*
|
|
* This define is used for the static memory allocation configuration
|
|
* of the driver. If your TrueFFS based application or driver are using
|
|
* dynamic allocation you should keep this define as large as possible (288L).
|
|
*
|
|
* Note: This define also dictates the size of the TrueFFS internal
|
|
* "sectorNo" type forcing it to 2 bytes when MAX_VOLUME_MBYTES is less
|
|
* then 64L. Using a smaller size than your actual device might cause
|
|
* casting problems even when using dynamic allocation.
|
|
*/
|
|
|
|
#define MAX_VOLUME_MBYTES 1024L
|
|
|
|
|
|
|
|
/* Assumed card parameters.
|
|
*
|
|
* This issue is relevant only if you are not defining any dynamic allocation
|
|
* routines in flsystem.h.
|
|
*
|
|
* The following are assumptions about parameters of the Flash media.
|
|
* They affect the size of the heap buffer allocated for the translation
|
|
* layer.
|
|
*/
|
|
|
|
/* NAND flash */
|
|
#define ASSUMED_NFTL_UNIT_SIZE 0x2000l /* NAND */
|
|
|
|
/* NOR flash */
|
|
#define ASSUMED_FTL_UNIT_SIZE 0x20000l /* Intel interleave-2 (NOR) */
|
|
#define ASSUMED_VM_LIMIT 0x10000l /* limit at 64 KB */
|
|
|
|
|
|
|
|
/* 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
|
|
|
|
|
|
|
|
/* Application exit
|
|
*
|
|
* If the FLite application ever exits, it needs to call flEXit before
|
|
* exiting. Uncomment the following line to enable this.
|
|
*/
|
|
|
|
#define EXIT
|
|
|
|
|
|
|
|
/* Number of sectors per FAT cluster
|
|
*
|
|
* Define the minimum cluster size in sectors.
|
|
*/
|
|
|
|
#define MIN_CLUSTER_SIZE 4
|
|
|
|
|
|
|
|
/*
|
|
*
|
|
* Socket Hardware Customization
|
|
* -----------------------------
|
|
*/
|
|
|
|
/* 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 devices that do not
|
|
* require external 12 Volt Vpp.
|
|
*
|
|
*/
|
|
|
|
#define SOCKET_12_VOLTS
|
|
|
|
|
|
|
|
/* Fixed or removable media
|
|
*
|
|
* If your Flash media is fixed, uncomment the following line.
|
|
*/
|
|
|
|
/*#define FIXED_MEDIA*/
|
|
|
|
|
|
|
|
/* 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 'flInstallTimer' defined in flsysfun.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.
|
|
* - 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.
|
|
*/
|
|
|
|
/* Polling interval in millisec. If 0, no polling is done */
|
|
|
|
#define POLLING_INTERVAL 1500
|
|
|
|
|
|
|
|
/* Maximum MTD's and Translation Layers
|
|
*
|
|
* Define here the maximum number of Memory Technology Drivers (MTD) and
|
|
* Translation Layers (TL) that may be installed. Note that the actual
|
|
* number installed is determined by which components are installed in
|
|
* 'flRegisterComponents' (flcustom.c).
|
|
*/
|
|
|
|
#define MTDS 10 /* Up to 5 MTD's */
|
|
|
|
#define TLS 3 /* Up to 3 Translation Layers */
|
|
|
|
|
|
|
|
/* BDTL cash
|
|
*
|
|
* Enable Block Device Translation Layer cache.
|
|
*
|
|
* Turning on this option improves performance but requires additional
|
|
* RAM resources.
|
|
*
|
|
* The NAND Flash Translation Layer (NFTL) and (INFTL) are specifications
|
|
* for storing data on the DiskOnChip in a way that enables accessing the
|
|
* DiskOnChip as a Virtual Block Device. If this option is on, then the BDTL
|
|
* keeps in RAM a table that saves some of the flash accesses.
|
|
* Whenever it is needed to change table entry, the BDTL updates it in the
|
|
* RAM table and on the DiskOnChip. If NFTL has to read table entry, then you
|
|
* can save time on reading sector from DiskOnChip.
|
|
*/
|
|
|
|
/* #define NFTL_CACHE */
|
|
|
|
|
|
|
|
/* Environment Variables
|
|
*
|
|
* Enable environment variables control of the TrueFFS features.
|
|
*
|
|
*/
|
|
#define ENVIRONMENT_VARS
|
|
|
|
|
|
|
|
/* IO Controll Interface
|
|
*
|
|
* Support standard IOCTL interface.
|
|
*
|
|
*/
|
|
|
|
#define IOCTL_INTERFACE
|
|
|
|
|
|
|
|
/* S/W Write protection
|
|
*
|
|
* Enable S/W write protection of the device.
|
|
*
|
|
*/
|
|
|
|
#define WRITE_PROTECTION
|
|
|
|
/* Definitions required for write protection. */
|
|
|
|
#ifdef WRITE_PROTECTION
|
|
#define ABS_READ_WRITE
|
|
#define SCRAMBLE_KEY_1 647777603l
|
|
#define SCRAMBLE_KEY_2 232324057l
|
|
#endif
|
|
|
|
|
|
|
|
/* H/W OTP
|
|
*
|
|
* Enable H/W One Time Programing capability including unique ID/
|
|
*
|
|
*/
|
|
|
|
#define HW_OTP
|
|
|
|
|
|
|
|
/* H/W Protection
|
|
*
|
|
* Enable H/W protection of the device.
|
|
*
|
|
*/
|
|
|
|
#define HW_PROTECTION
|
|
|
|
|
|
|
|
/* Read after write
|
|
*
|
|
* Add read after every write verifing data integrity. Make sure that
|
|
* flVerifyWrite variable is also set to 1.
|
|
*
|
|
*/
|
|
|
|
#define VERIFY_WRITE
|
|
|
|
|
|
|
|
/* Verify entire volume
|
|
*
|
|
* Scan the entire disk partition for power failures symptoms and correct them.
|
|
*
|
|
*/
|
|
|
|
#define VERIFY_VOLUME
|
|
|
|
|
|
|
|
/* Read after erase
|
|
*
|
|
* Add read after every erase operation verifing data integrity.
|
|
*
|
|
*/
|
|
|
|
/* #define VERIFY_ERASE */
|
|
|
|
|
|
|
|
/* Binary Partition
|
|
*
|
|
* Enables access to the Binary partition.
|
|
*
|
|
*/
|
|
|
|
#define BDK_ACCESS
|
|
|
|
|
|
|
|
/* Definitions required for BDK operations. */
|
|
|
|
#ifdef BDK_ACCESS
|
|
|
|
/* Number of Binary partitions on the DiskOnChip.
|
|
*
|
|
* Defines Maximum Number of Binary partitions on the DiskOnChip.
|
|
*
|
|
* The actual number of partitions depends on the format placed
|
|
* on each device.
|
|
*/
|
|
|
|
#define BINARY_PARTITIONS 3
|
|
|
|
#endif /* BDK_ACCESS */
|
|
|
|
|
|
|
|
/* Remove runtime controll over memory access routines
|
|
*
|
|
* If defined memory access routines will be set at compile time using
|
|
* dedicated defintions in flsystem.h
|
|
* Note : when compile time customization is chosen, you must sepcify
|
|
* the bus width even when working with DiskOnChip Millennium Plus.
|
|
* Refer to Trueffs manual for more infromation.
|
|
*/
|
|
|
|
/* #define FL_NO_USE_FUNC */
|
|
|
|
|
|
|
|
/* Remove IPL code.
|
|
*
|
|
* Removes the IPL code (This applies only to DiskOnChip Millennium Plus
|
|
* and DiskOnChip 2000 TSOP).
|
|
*
|
|
*/
|
|
|
|
/* #define NO_IPL_CODE */
|
|
|
|
|
|
|
|
/*
|
|
* Removes Physical access code
|
|
*
|
|
*/
|
|
|
|
/* #define NO_PHYSICAL_IO */
|
|
|
|
|
|
|
|
/*
|
|
* Removes the inquire capability code.
|
|
*
|
|
*/
|
|
|
|
/* #define NO_INQUIRE_CAPABILITIES */
|
|
|
|
|
|
|
|
/*
|
|
* Removes read Bad Block Table code.
|
|
*
|
|
*/
|
|
|
|
/* #define NO_READ_BBT_CODE */
|
|
|
|
|
|
|
|
/*
|
|
* Removes read Bad Block Table code.
|
|
*
|
|
*/
|
|
|
|
/* #define NO_NFTL_2_INFTL */
|
|
|
|
#endif /* FLCUSTOM_H */
|