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

📄 davlib.h

📁 Flash file system
💻 H
📖 第 1 页 / 共 2 页
字号:

/*### Intf Types/Params
#########################*/

/* Misc. initial or invalid detection defines */
#define FDI_InvalidObjAddress  0xffffffff
#define FDI_InvalidBlockNumber 0xffffffff

/* Various DAV Object Space Parameters */
#define FDI_ReservedReclaimBlocks 1
#define FDI_ReservedSystemBlocks  0
#define FDI_LastObjectAddress    (FDI_TopOfMemory -    \
                                 (FDI_BlockSize * FDI_ReservedReclaimBlocks))
#define FDI_ReclaimBlockAddress  (FDI_LastObjectAddress + 1)
#define FDI_TotalFlashSpace      ((FDI_TopOfMemory - FDI_StartAddress) + 1)
#define FDI_TotalObjectSpace     (FDI_TotalFlashSpace - \
                                 (FDI_BlockSize * FDI_ReservedReclaimBlocks))
#define FDI_TotalPages           ((FDI_TotalObjectSpace / FDI_PageSize))
#define FDI_ParagraphsPerPage    (FDI_PageSize / FDI_ParagraphLength)
#define FDI_PagesPerBlock        (FDI_BlockSize / FDI_PageSize)

#define FDI_NumFlashBlocks       (FDI_TotalObjectSpace / FDI_BlockSize)

/* DAV Power Loss Recover Levels */
#define FDI_PLR_Level0 0 /* Highest level of recovery with reserves */
#define FDI_PLR_Level1 1 /* Highest level of recovery w/o reserves  */
#define FDI_PLR_Level2 2 /* Lowest level of recovery                */

/* DAV Object Alignment Properties */
#define FDI_ALIGN_Page          0x0  
#define FDI_ALIGN_Paragraph     0x4

/* DAV Return Status */
/*typedef enum 
{
   
   ERR_NO_MORE_ENTRIES = FDI_BeginErrorList, 
   FDI_ReservesInUse,
   FDI_MemoryNotAvailable,
   FDI_MemoryInUse,          
   FDI_DuplicateIdentifier,
   FDI_InvalidIdentifier,
   FDI_ObjectNotFound,
   FDI_InvalidAttributes,
   FDI_InvalidFormat,
   FDI_ReclaimBlockNotErased  */ /* This value is not being used */
/*} FMM_Status;*/

/* added a macro to calculate the total
 * error codes associated with an interface.
 */
#define FDI_TotalErrorCodes ((FDI_ReclaimBlockNotErased - \
                              ERR_NO_MORE_ENTRIES) + 1)

typedef UINT8_PTR MemBufferPtr;
typedef UINT8_PTR Ptr32;

typedef UINT32  FDI_Handle;
typedef FDI_Handle __FAR_ *  FDI_HandlePtr;

/*### Flash Memory Statistics 
#############################*/
typedef struct
{
   UINT32 Valid;          /* Overhead assoc. with valid object headers    */
   UINT32 Invalid;        /* Overhead assoc. with Invalid object headers  */
   UINT32 Absorbed;       /* Overhead assoc. with Absorbed object headers */
   UINT32 ReclaimReserves;/* Overhead assoc. reclaim and system           */
} FDI_OverheadSpace;

typedef struct
{
   UINT32 Free;           /* Free memory within assoc. memory space       */
   UINT32 Valid;          /* Valid memory within assoc. memory space      */
   UINT32 Invalid;        /* Invalid memory within assoc. memory space    */
   UINT32 Reserves;       /* Available rsvd memory within assoc. memory   */
                         /*  space                                       */
   UINT32 ReservesInUse;  /* Used rsvd memory within assoc. memory space  */
} FDI_ObjectSpace;

typedef struct
{
   FDI_OverheadSpace PageOverhead;/* Overhead associated with Page Space */
   FDI_OverheadSpace ParaOverhead;/* Overhead associated with Para Space */
   FDI_ObjectSpace   PageSpace;   /* Describes page space memory usage   */
   FDI_ObjectSpace   ParaSpace;   /* Describes paragraph space memory    */
                                  /*  usage.                             */
}  FDI_MemoryUsage, __FAR_ * FDI_MemoryUsagePtr;  

/* 
 *           Added byte_align field for placeholder.
 */
typedef struct
{
   UINT32   TotalFlashMem;    /* Total Flash available to the DAV        */
   UINT32   TotalObjectSpace; /* Total DAV managed object space           */
   UINT32   FlashBlockSize;   /* Size of flash blocks in bytes            */
   UINT32   PageSize;         /* Size of a page in bytes                  */
   UINT32   NumReclaimBlks;   /* Total blocks used for reclaim            */
   UINT32   NumSystemBlks;    /* Total Blocks not managed by DAV          */
   UINT8    ReclaimLevel;     /* Threshold level for triggering reclaim   */
   UINT8    byte_align;
   UINT16   SystemState;      /* Describes the current state of the DAV   */
   FDI_MemoryUsage MemUsage; /* Describes the usage of managed space     */
  } FDI_MemoryStatistics, __FAR_ * FDI_MemoryStatisticsPtr;

/*### Object Information Structure
##################################*/
/* 
 *           Added word_align field for placeholder.
 */
typedef struct
{
   UINT8     Name[FDI_MaxNameLength];/* Name of the selected object       */
   UINT8     NameSize;        /* Size in bytes of the name                */
   UINT16    word_align;
   UINT32    ObjectType;      /* Type of the selected object              */
   UINT32    ObjectAddress;   /* Base address of the object               */
   UINT32    ObjectSize;      /* Size of object in pages or paragraphs    */
   UINT32    Alignment;       /* Alignment, page or paragraph             */
   UINT32    SecurityKey;     /* Security Key of the selected object      */
   UINT16     PrivilegeLevel;  /* System privilege level of the object     */
   UINT16     RecoveryLevel;   /* Recovery level of the object             */
   UINT16     WriteStatus;     /* Object write status (WIP vs. Valid)      */
} FDI_ObjectInfo, __FAR_ *FDI_ObjectInfoPtr;

/*typedef struct
{
   UINT32 FlashBase;     
   UINT32 TotalBlocks;   
   
   UINT32 UserFlashBase; 
   UINT32 UserTotalBlocks;
   
   UINT32 TotalChips;    
   UINT32 ChipSize;      
   UINT32 BlockSize;     
   UINT32 DeviceId;      
}  FLASH_Info, __FAR_ *FLASH_InfoPtr;*/


/* Return packing to its original state */

/*
#######################
### Interface Support
#######################
*/

/*### WriteStatus Detection
#################################*/
#define FDI_WriteStatusValid    0
#define FDI_WriteStatusWIP      1
#define FDI_WriteStatusRsvd     2

/*### GetNextObject Search Methods
##################################*/
typedef enum
{
   SearchByNextObject,
   SearchByType,
   SearchByName,
   SearchByNameType
} FDI_SearchMethod;

/*### Class File Support
##########################*/
extern SEM_MTX_ID      SEM_DAVReclLock;
extern SEM_ID      SEM_DAVReclRequest;
extern SEM_MTX_ID  SEM_DAVAPILock;

/* MOVED SOME MACROS TO FDI_EXT.H*/
/* FDI_TryReclLock() allows FMM to check if it can lock Flash so it can 
   commence with reclaim.  If TRUE is returned, then DAV has exclusive 
   access for reclaiming and does not need to request a reclaim. If FALSE 
   is returned, then DAV must request permission to reclaim before
   proceeding. */
#define FDI_TryReclLock()    \
        (((SEM_MTX_TRY_WAIT(SEM_DAVReclLock))==ERR_NONE)?1:0)

/* FDI_ReclRequest() requests a reclaim and then waits for permission */
#define FDI_ReclRequest() \
        SEM_POST(SEM_DAVReclRequest);
        
#define FDI_ReclComplete()   \
        SEM_POST(SEM_DAVReclRequest);

/* FDI_APILock() is used by FMM to exclusively deal with multiple tasks. */
#define FDI_APILock()    (SEM_MTX_WAIT(SEM_DAVAPILock))

/* FDI_APIUnock() is used by FMM to exclusively deal with multiple tasks. */
#define FDI_APIUnlock()  (SEM_MTX_POST(SEM_DAVAPILock))

/*### System State Support
##########################*/
#define SetSystemState(system_state, field)  \
          (system_state = (system_state | field))

#define ClrSystemState(system_state, field)  \
          (system_state = (system_state & ~field))

#define IsSystemState(system_state, field)  \
          ((system_state & field) == field)

/* System State Bit Fields */
#define FDI_ST_ReclaimFlag       0x0001
#define FDI_ST_ReallocateRecover 0x0002
#define FDI_ST_CfgHdrRecover     0x0004
#define FDI_ST_ReclaimRecover    0x0008
#define FDI_ST_RepairHeader      0x0010
#define FDI_ST_RestoreWIP        0x0020
#define FDI_ST_RFU_Bit6          0x0040
#define FDI_ST_RFU_Bit7          0x0080
#define FDI_ST_RFU_Bit8          0x0100
#define FDI_ST_RFU_Bit9          0x0200
#define FDI_ST_RFU_BitA          0x0400
#define FDI_ST_RFU_BitB          0x0800
#define FDI_ST_RFU_BitC          0x1000
#define FDI_ST_RFU_BitD          0x2000
#define FDI_ST_RFU_BitE          0x4000
#define FDI_ST_RFU_BitF          0x8000

/* Read Object select parameter values */
#define FDI_SELECT_FIRST  0  /* Read first instance of object data */
#define FDI_SELECT_SECOND 1  /* Read second instance               */

/*### Global Declarations
//#########################*/
extern UINT32      FDI_BlockSize;
extern UINT32      FDI_StartAddress;
extern UINT32      FDI_TotalBlocks;
extern UINT32      FDI_TopOfMemory;             

extern UINT16       FDI_SystemState;
extern UINT8       FDI_ReclaimLevel;          

/*### Global Functions
//#########################*/

#define AllocateFlash       FDI_AllocateFlash
#define ReAllocateFlash     FDI_ReAllocateFlash
#define DeAllocateFlash     FDI_DeAllocateFlash
#define ReadObject          FDI_ReadObject
#define WriteObject         FDI_WriteObject
#define WriteComplete       FDI_WriteComplete
#define GetObjectHeader     FDI_GetObjectHeader
#define GetMemoryStatistics FDI_GetMemoryStatistics
#define SetReclaimLevel     FDI_SetReclaimLevel

/*### Initializing Structures
################################*/
#define Init_FDI_ObjectInfo {{0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

ERR_CODE FDI_GetMemoryStatistics( FDI_MemoryStatisticsPtr memory_stats_ptr );

ERR_CODE FDI_SetReclaimLevel( UINT8 level );

ERR_CODE FDI_AllocateFlash( FDI_ObjectInfoPtr obj_info_ptr );

ERR_CODE FDI_ReAllocateFlash( FDI_ObjectInfoPtr obj_info_ptr );

ERR_CODE FDI_DeAllocateFlash( const UINT8 *obj_name, 
                            UINT8 name_size, UINT32 obj_type );
                            
ERR_CODE FDI_ReadObject(   const UINT8  *obj_name,
                           UINT8  name_size,
                           UINT32 obj_type,
                           Ptr32 buffer_ptr,
                           UINT32 byte_count,
                           UINT32 offset,
                           UINT8  select );

ERR_CODE FDI_WriteObject(   const UINT8  *obj_name,
                            UINT8  name_size,
                            UINT32 obj_type,
                            Ptr32 buffer_ptr,
                            UINT32 byte_count,
                            UINT32 offset );

ERR_CODE FDI_WriteComplete(   const  UINT8  *obj_name, 
                              UINT8  name_size, 
                              UINT32 obj_type );

ERR_CODE FDI_GetObjectHeader( FDI_ObjectInfoPtr obj_info_ptr,
                              FDI_SearchMethod  method,
                              BOOLEAN           restart );

BYTE FDI_ModifyObject( BYTE_PTR src_ptr, DWORD size, 
                       BYTE_PTR old_src_ptr, VOID_PTR_PTR RAM_ptr );
         
ERR_CODE DAV_Exit(void);

ERR_CODE DAV_SoftInit(FLASH_InfoPtr flash_info_ptr, BOOLEAN flag);

ERR_CODE DAV_Format(FLASH_InfoPtr flash_info_ptr);

ERR_CODE DAV_PowerOnInit(FLASH_InfoPtr flash_info_ptr);

#endif /* DIRECT_ACCESS_VOLUME */
#endif /* sentry header */


⌨️ 快捷键说明

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