⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vsb.h

📁 intel的一个高效率FLASH文件系统。思路很好
💻 H
字号:
 /*
;# ***********************************************************************
;# *             Intel Confidential                                      *
;# *             Copyright (C) Intel Corporation 1994-2000               *
;# *             All Rights Reserved.                                    *
;# ***********************************************************************
*/

/****************************************************************
* INTEL OEM SOFTWARE LICENSE AGREEMENT
* BETWEEN INTEL CORPORATION AND OEM/Licensee ("You")
*  (Rev 10/04/99)
*
* BY USING THIS SOFTWARE, YOU ("You" or "Licensee") ARE AGREEING 
* TO BE BOUND BY THE TERMS OF THIS AGREEMENT.  DO NOT USE THE 
* SOFTWARE UNTIL YOU HAVE CAREFULLY READ AND AGREED TO THE 
* FOLLOWING TERMS AND CONDITIONS.  IF YOU DO NOT AGREE TO THE 
* TERMS OF THIS AGREEMENT, PROMPTLY RETURN THE SOFTWARE AND ANY 
* ACCOMPANYING ITEMS. LICENSEE MUST BE AN ORIGINAL EQUIPMENT 
* MANUFACTURER ("OEM") SYSTEM DEVELOPER TO ACQUIRE ANY RIGHTS 
* IN THE SOFTWARE UNDER THIS LICENSE AGREEMENT.
*
* LICENSE: Intel Corporation ("Intel") grants the Licensee the 
* non-exclusive right to use the software program ("Software") 
* in source and / or object code form on the terms set forth 
* below.  Licensee will not use, copy, modify, rent, sell or 
* transfer the Software or any portion thereof, except as 
* provided in this Agreement.  
*
* USE RESTRICTION:
* THIS ROYALTY FREE LICENSE ALLOWS LICENSEE TO USE THE SOFTWARE 
* WITH INTEL FLASH PRODUCTS ONLY. USE OF THE SOFTWARE WITH ANY 
* OTHER FLASH PRODUCTS IS EXPRESSLY PROHIBITED UNLESS AND UNTIL 
* LICENSEE APPLIES FOR, AND IS GRANTED, IN INTEL'S SOLE DISCRETION.
* A SEPARATE WRITTEN SOFTWARE LICENSE AGREEMENT BETWEEN LICENSEE 
* AND INTEL IS NECESSARY BEFORE ANY SUCH USE.
*
* LICENSEE MAY:
* 1. Copy the Software for support, backup or archival purposes;
* 2. Install or distribute the Software in object code form only;
* 3. Install, use, modify, distribute, and/or make or have made 
* Derivatives based on the Software subject to the terms and 
* conditions in this Agreement;
* 4. Modify and/or use Software source code that Intel provides to
* the Licensee, provided that Licensee does not remove or modify 
* the "Compatibility" module, if any, in the Software or in any 
* Derivatives and subject to the other restrictions contained 
* herein;
* 5. Allow authorized contractors ("Subcontractors") engaged by 
* the Licensee for the sole purpose of product development work to
* have access to the Software solely for that purpose. 
* Subcontractors do NOT acquire any of the Licensee rights to the 
* Software provided in this Agreement.
*
* RESTRICTIONS:  
* LICENSEE IS NOT ALLOWED TO: 
* 1.  Copy, disclose or distribute the Software, in whole or in 
* part, except as provided for in this Agreement;
* 2.  Remove or modify the "Compatibility" module, if any, in 
* the Software or in any Derivatives;
* 3.  Decompile or reverse engineer any Software delivered in 
* object code form.
*
* LICENSEE MUST:
* Execute the "Compatibility" module if provided with the 
* Software.
*
* TRANSFER:  Except as provided above, Licensee may not 
* transfer or disclose the Software to any other party.
*
* OWNERSHIP AND COPYRIGHT OF SOFTWARE: Title to the Software 
* and all copies thereof remain with Intel.  The Software is 
* copyrighted and is protected by United States and 
* international copyright laws.  Licensee will not remove 
* the copyright notice from the Software.  Licensee agrees 
* to prevent the unauthorized copying of the Software.
*
* DERIVATIVES: "Derivatives" are any work that is based upon the 
* Software, such as a revision, modification, translation, or 
* compilation in which the Software is recast, transformed or 
* adapted; any adaptation, subset, addition, improvement or 
* combination of or including the Software; and any new material, 
* information or data derived from the Software, including new 
* material which may be protectable by copyright, patent or other
* proprietary rights.  Licensee is not required to provide Intel 
* with a copy of the source or object code for any Derivatives 
* created by Licensee. Licensee may use, market, sell, and/or 
* distribute Derivatives in object code form only at Licensee's own
* risk and expense.  Licensee may use, but may not market, sell or 
* distribute, source code for any Derivatives, subject to the Use 
* Restriction and other restrictions contained in this Agreement. 
* Title to Derivatives, other than the portion(s) of the 
* Derivatives consisting of any portion of the Software, shall 
* remain with Licensee.
*
* CONFIDENTIALITY: Licensee will maintain the confidentiality of 
* the source code for the Software with at least the same degree 
* of care that Licensee uses to protect Licensee's own confidential 
* and proprietary information, but with no less than a reasonable 
* degree under the circumstances. Disclosure of source code will 
* only be made to Licensee's employees on a need-to-know basis. 
* Subject to the licenses granted hereunder, Licensee shall 
* maintain the Software source code and all other proprietary 
* information relating to the Software in confidence and shall 
* not disclose to others any such source code or other Intel 
* proprietary information relating to the Software. Any 
* Subcontractors to whom Licensee discloses the source code for 
* the Software must sign a written confidentiality agreement 
* which contains terms regarding the Software no less restrictive 
* than those set forth in this Agreement.
*
* WARRANTY:  The Software is provided "AS IS". Intel warrants 
* that the media on which the Software is furnished will be free 
* from defects in material and workmanship for a period of one 
* year upon receipt. 
*
* THE ABOVE WARRANTIES ARE THE ONLY WARRANTIES OF ANY KIND GIVEN 
* BY INTEL UNDER THIS AGREEMENT. INTEL SPECIFICALLY DISCLAIMS ANY 
* OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF 
* MERCHANTABILITY, NONINFRINGEMENT OR FITNESS FOR ANY PARTICULAR 
* PURPOSE.
*
* LIMITATION OF LIABILITY: NEITHER INTEL NOR ITS VENDORS OR AGENTS 
* SHALL BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF USE, LOSS OF 
* DATA, INTERRUPTION OF BUSINESS, NOR FOR INDIRECT, SPECIAL, 
* INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND WHETHER UNDER 
* THIS AGREEMENT OR OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY 
* OF SUCH DAMAGES.
*
* TERMINATION OF THIS LICENSE: Intel reserves the right to conduct 
* or have conducted audits to verify Licensee's compliance with 
* this Agreement.  Intel may terminate this Agreement at any 
* time if Licensee is in breach of any of its terms and conditions.
* Upon termination, Licensee will immediately destroy, and certify 
* in writing the destruction of, the Software and return all copies 
* of the Software and documentation to Intel.
*
* U.S. GOVERNMENT RESTRICTED RIGHTS: The Software and documentation
* were developed at private expense and are provided with 
* "RESTRICTED RIGHTS".  Use, duplication or disclosure by the 
* Government is subject to restrictions as set forth in 
* FAR52.227-14 and DFAR252.227-7013 et seq. or its successor.
*
* EXPORT LAWS: The distribution and export/re-export of the 
* Software shall be in compliance with the laws, regulations, 
* orders or other restrictions of the U.S. Export Administration 
* Regulations.
*
* APPLICABLE LAW: This Agreement is governed by the laws of the 
* State of Delaware and the United States, including patent and
* copyright laws.  Any claim arising out of this Agreement will be 
* brought in Delaware.  
*
* Intel reserves the right to use and/or include Licensee's name
* in public relations activities and marketing material after the 
* product is publicly announced.
******************************************************************/ 

/*----------------------------------------------------------------------------
-
-     vsb.h --
-
-----------------------------------------------------------------------------*/


#ifndef VSB_H
#define VSB_H

#include "vsbproto.h"
#include "flashdef.h"


/*****************************************************************************
*
*  VSB.H -- Manifest constants for the Virtual Small Block flash memory
*           driver.
*
*****************************************************************************/
#define FREE_VSB_BUFFER_SIZE	   4
#define LOGICAL_VSB_BUFFER_SIZE	   5

#define MRU_VSB_CACHE_SIZE		  15

#define MAXIMUM_LOGICAL_VSB_BITS  12 /* the number of bits available   */
                                     /* in the vat entry for logical   */
                                     /* vsb number. Used to test setup */
                                     /* during initialization.         */


/**************************

   Flash block state definitions

**************************/
#define VSB_FB_ERASED      0xff     /* Flash block is erased */
#define VSB_FB_RECOVER     0xfe     /* Flash block is being recovered into */
#define VSB_FB_ERASING     0xfc     /* Erasing child block */
#define VSB_FB_WRITE       0xf8     /* Flash block is being written to */
#define VSB_FB_FULL        0xf0     /* Flash block is fully allocated */
#define VSB_FB_BAD         0xa55a   /* Flash block is bad */
#define VSB_FB_CHILD_MASK  0x00ff   /* Mask for block being recovered from */
#define VSB_FB_PLR_ERASING 0xFD     /* Powerloss recovery for erase */
#define VSB_FB_PLR_WRITE   0xFB     /* Powerloss recovery for Write */
#define VSB_FB_PLR_WRITE_MASK 0x0B  /* Powerloss recover state for write */
#define VSB_FB_MLC_FULL    0xF4     /* PLR transition state */

#define VSB_FB_UNUSED      0xffff

#define VSB_FB_ATTR        0x0000   /* Offset to block attribute */

/**************************

   Virtual Small Block VAT entry definitions.
   The upper 4 bits of a VSB entry are used to indicate the state of a VSB,

   XXXX VVVVVVVVVVVV
   ^^^^\____________/
   ||||      |
   ||||      +---------------- VSB Number
   |||+----------------------- VSB is valid
   ||+------------------------ Allocated Flag, means VSB number is valid
   |+------------------------- VSB being allocated
   +-------------------------- VSB Discarded
   
**************************/
#define VSB_VAT_FLAGS         0xf000   /* VSB VAT flags mask */
#define VSB_FREE              0xffff   /* VSB unallocated value */
#define VSB_ALLOCATING        0xbfff   /* VSB being allocated value */
#define VSB_ALLOCATING_MASK   0xb000   /* VSB being allocated mask */
#define VSB_ALLOCATED         0x9fff   /* VSB is allocated value */
#define VSB_ALLOCATED_MASK    0x9000   /* VSB is allocated mask */
#define VSB_VALID             0x8fff   /* VSB is valid value */
#define VSB_DISCARDED         0x0fff   /* VSB discarded value */
#define VSB_DISCARD_MASK      0x8000   /* VSB discarded bit mask */
#define VSB_LOGICAL_MASK      0x0fff   /* get logical VSB mask */
#define VSB_PLR_DISCARDED     0x7FFF   /* Discard transition state (PLR) */
#define VSB_PLR_DISCARD_MASK  0x7000   /* Mask for Discarding check */
#define VSB_MLC_ALLOCATED_MASK 0xA000  /* PLR recovery state for Allocated */
   

#define VAT_ENTRY_SIZE        2        /* Number of bytes in a VAT entry */

#define	RECLAIM_THRESHOLD     5     /* FreeSpaceManagement: */
/*#define MAXIMUM_VSB  (WORD)(DWORD)((VSB_PER_BLOCK - 1) * (BLOCK_COUNT - 1))*/
/*E.2.41 VAT_SIZE_VAB, defined and MAXIMUM_VSB changed to include VAT_SIZE_VSB  */
#define MAX_ERASED_BLOCKS     2

#define VSB_SIZE              1024L    /*Virtual Small block size in bytes*/
                                        /* VSBs in 1 flash block */

#define VSB_PER_BLOCK      (WORD)(BLOCK_SIZE / VSB_SIZE)

/*E2.3.41*/
#define TEMP_VAT  (WORD)(((VSB_PER_BLOCK * VAT_ENTRY_SIZE) % VSB_SIZE) ? 1L : 0L) 
/*TEMP_VAT should not be used anywhere else*/
#define VAT_SIZE_VSB  (WORD)(((VSB_PER_BLOCK * VAT_ENTRY_SIZE) / VSB_SIZE) + TEMP_VAT)

#define MAXIMUM_VSB   (WORD)((VSB_PER_BLOCK - VAT_SIZE_VSB) * (BLOCK_COUNT - 1))

#include "vsbdata.h"

/* 2^12 maximum data allowed*/

/*
#if MAXIMUM_VSB > 4096 

#error MAXIMUM_VSB per component is more than total logical VSBs allowed.

#endif
*/
/*E2.3.41*/
/**************************

   VSB function error return values

**************************/

#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -