fmd.h
来自「该BSP是基于PXA270+WINCE的BSP」· C头文件 代码 · 共 113 行
H
113 行
#ifndef _FMD_H_
#define _FMD_H_
#include <windows.h>
#include <diskio.h>
#include <bldver.h>
#include <pcireg.h>
#if (CE_MAJOR_VER < 0x0004)
// Specified so that Block drivers can implement their own ioctl's without
// fear of overlapping with OS defined codes.
#define IOCTL_DISK_USER_START 0x7E0
#define IOCTL_DISK_USER_END 0x7FF
#define IOCTL_DISK_USER(Function) \
CTL_CODE( IOCTL_DISK_BASE, IOCTL_DISK_USER_START+Function, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_DELETE_SECTORS 10 // Deletes the specified range of sectors
typedef struct _DELETE_SECTOR_INFO {
DWORD cbSize; // Size of structure
DWORD startsector;
DWORD numsectors;
} DELETE_SECTOR_INFO, *PDELETE_SECTOR_INFO;
#endif
// FMD IOCTL definitions.
//
#define IOCTL_FMD_SET_XIPMODE IOCTL_DISK_USER(0)
#define IOCTL_FMD_LOCK_BLOCKS IOCTL_DISK_USER(1)
#define IOCTL_FMD_UNLOCK_BLOCKS IOCTL_DISK_USER(2)
// FMD block status definitions.
#define BLOCK_STATUS_UNKNOWN 0x01
#define BLOCK_STATUS_BAD 0x02
#define BLOCK_STATUS_READONLY 0x04
#define BLOCK_STATUS_RESERVED 0x08
// FMD OEM reserved area bitfield.
#define OEM_BLOCK_RESERVED 0x01
#define OEM_BLOCK_READONLY 0x02
#ifdef __cplusplus
extern "C" {
#endif
#define INVALID_BLOCK_ID 0xFFFFFFFF
#define INVALID_SECTOR_ADDR 0xFFFFFFFF
//--------------------------- Structure Definitions -----------------------------
typedef enum _FLASH_TYPE { NAND, NOR } FLASH_TYPE;
typedef DWORD SECTOR_ADDR;
typedef PDWORD PSECTOR_ADDR;
typedef DWORD BLOCK_ID;
typedef PDWORD PBLOCK_ID;
typedef struct _FlashInfo
{
FLASH_TYPE flashType;
DWORD dwNumBlocks;
DWORD dwBytesPerBlock;
WORD wSectorsPerBlock;
WORD wDataBytesPerSector;
}FlashInfo, *PFlashInfo;
typedef struct _SectorInfo
{
DWORD dwReserved1; // Reserved - used by FAL
BYTE bOEMReserved; // For use by OEM
BYTE bBadBlock; // Indicates if block is BAD
WORD wReserved2; // Reserved - used by FAL
}SectorInfo, *PSectorInfo;
typedef struct _BlockLockInfo
{
BLOCK_ID StartBlock;
ULONG NumBlocks;
}BlockLockInfo, *PBlockLockInfo;
//------------------------------- Public Interface (used by the FAL) ------------------------------
PVOID FMD_Init(LPCTSTR lpActiveReg, PPCI_REG_INFO pRegIn, PPCI_REG_INFO pRegOut);
BOOL FMD_Deinit(PVOID);
BOOL FMD_GetInfo(PFlashInfo pFlashInfo);
DWORD FMD_GetBlockStatus(BLOCK_ID blockID);
BOOL FMD_SetBlockStatus(BLOCK_ID blockID, DWORD dwStatus);
BOOL FMD_ReadSector (SECTOR_ADDR startSectorAddr, LPBYTE pSectorBuff, PSectorInfo pSectorInfoBuff, DWORD dwNumSectors);
BOOL FMD_WriteSector(SECTOR_ADDR startSectorAddr, LPBYTE pSectorBuff, PSectorInfo pSectorInfoBuff, DWORD dwNumSectors);
BOOL FMD_EraseBlock(BLOCK_ID blockID);
VOID FMD_PowerUp(VOID);
VOID FMD_PowerDown(VOID);
BOOL FMD_OEMIoControl(DWORD dwIoControlCode, PBYTE pInBuf, DWORD nInBufSize,
PBYTE pOutBuf, DWORD nOutBufSize, PDWORD pBytesReturned);
//---------------------------------------- Helper Functions ----------------------------------------
#ifdef __cplusplus
}
#endif
#endif _FMD_H_
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?