📄 davlib.h
字号:
/*### 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 + -