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

📄 cfcard.h

📁 ARM9基于WINDOWSCE的BSP源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
    unsigned long   DMACIntStatus;          // DMAC_BASE
    unsigned long   DMACIntTCStatus;        // DMAC_BASE + 0x004
    unsigned long   DMACIntTCClear;         // DMAC_BASE + 0x008
    unsigned long   DMACIntErrorStatus;     // DMAC_BASE + 0x00C
    unsigned long   DMACIntErrClr;          // DMAC_BASE + 0x010
    unsigned long   DMACRawIntTCStatus;     // DMAC_BASE + 0x014
    unsigned long   DMACRawIntErrorStatus;  // DMAC_BASE + 0x018
    unsigned long   DMACEnbldChns;          // DMAC_BASE + 0x01C
    unsigned long   DMACSoftBReq;           // DMAC_BASE + 0x020
    unsigned long   DMACSoftSReq;           // DMAC_BASE + 0x024
    unsigned long   DMACSoftLBReq;          // DMAC_BASE + 0x028
    unsigned long   DMACSoftLSReq;          // DMAC_BASE + 0x02C
    unsigned long   DMACConfiguration;      // DMAC_BASE + 0x030
    unsigned long   DMACSync;               // DMAC_BASE + 0x034

    unsigned long   Padding1[50];           // DMAC_BASE + 0x038

    unsigned long   DMACC0SrcAddr;          // DMAC_BASE + 0x100
    unsigned long   DMACC0DestAddr;         // DMAC_BASE + 0x104
    unsigned long   DMACC0LLI;              // DMAC_BASE + 0x108
    unsigned long   DMACC0Control;          // DMAC_BASE + 0x10C
    unsigned long   DMACC0Configuration;    // DMAC_BASE + 0x110

    unsigned long   Padding2[3];            // DMAC_BASE + 0x114

    unsigned long   DMACC1SrcAddr;          // DMAC_BASE + 0x120
    unsigned long   DMACC1DestAddr;         // DMAC_BASE + 0x124
    unsigned long   DMACC1LLI;              // DMAC_BASE + 0x128
    unsigned long   DMACC1Control;          // DMAC_BASE + 0x12C
    unsigned long   DMACC1Configuration;    // DMAC_BASE + 0x130

    unsigned long   Padding3[3];            // DMAC_BASE + 0x134

    unsigned long   DMACC2SrcAddr;          // DMAC_BASE + 0x140
    unsigned long   DMACC2DestAddr;         // DMAC_BASE + 0x144
    unsigned long   DMACC2LLI;              // DMAC_BASE + 0x148
    unsigned long   DMACC2Control;          // DMAC_BASE + 0x14C
    unsigned long   DMACC2Configuration;    // DMAC_BASE + 0x150

    unsigned long   Padding4[3];            // DMAC_BASE + 0x154

    unsigned long   DMACC3SrcAddr;          // DMAC_BASE + 0x160
    unsigned long   DMACC3DestAddr;         // DMAC_BASE + 0x164
    unsigned long   DMACC3LLI;              // DMAC_BASE + 0x168
    unsigned long   DMACC3Control;          // DMAC_BASE + 0x16C
    unsigned long   DMACC3Configuration;    // DMAC_BASE + 0x170

    unsigned long   Padding5[3];            // DMAC_BASE + 0x174

    unsigned long   DMACC4SrcAddr;          // DMAC_BASE + 0x180
    unsigned long   DMACC4DestAddr;         // DMAC_BASE + 0x184
    unsigned long   DMACC4LLI;              // DMAC_BASE + 0x188
    unsigned long   DMACC4Control;          // DMAC_BASE + 0x18C
    unsigned long   DMACC4Configuration;    // DMAC_BASE + 0x190

    unsigned long   Padding6[3];            // DMAC_BASE + 0x194

    unsigned long   DMACC5SrcAddr;          // DMAC_BASE + 0x1A0
    unsigned long   DMACC5DestAddr;         // DMAC_BASE + 0x1A4
    unsigned long   DMACC5LLI;              // DMAC_BASE + 0x1A8
    unsigned long   DMACC5Control;          // DMAC_BASE + 0x1AC
    unsigned long   DMACC5Configuration;    // DMAC_BASE + 0x1B0

    unsigned long   Padding7[3];            // DMAC_BASE + 0x1B4

    unsigned long   DMACC6SrcAddr;          // DMAC_BASE + 0x1C0
    unsigned long   DMACC6DestAddr;         // DMAC_BASE + 0x1C4
    unsigned long   DMACC6LLI;              // DMAC_BASE + 0x1C8
    unsigned long   DMACC6Control;          // DMAC_BASE + 0x1CC
    unsigned long   DMACC6Configuration;    // DMAC_BASE + 0x1D0

    unsigned long   Padding8[3];            // DMAC_BASE + 0x1D4

    unsigned long   DMACC7SrcAddr;          // DMAC_BASE + 0x1E0
    unsigned long   DMACC7DestAddr;         // DMAC_BASE + 0x1E4
    unsigned long   DMACC7LLI;              // DMAC_BASE + 0x1E8
    unsigned long   DMACC7Control;          // DMAC_BASE + 0x1EC
    unsigned long   DMACC7Configuration;    // DMAC_BASE + 0x1F0

    unsigned long   Padding9[891];          // DMAC_BASE + 0x1F4

    unsigned long   DMACPeriphID0;          // DMAC_BASE + 0xFE0
    unsigned long   DMACPeriphID1;          // DMAC_BASE + 0xFE4
    unsigned long   DMACPeriphID2;          // DMAC_BASE + 0xFE8
    unsigned long   DMACPeriphID3;          // DMAC_BASE + 0xFEC

    unsigned long   DMACCellID0;            // DMAC_BASE + 0xFF0
    unsigned long   DMACCellID1;            // DMAC_BASE + 0xFF4
    unsigned long   DMACCellID2;            // DMAC_BASE + 0xFF8
    unsigned long   DMACCellID3;            // DMAC_BASE + 0xFFC
}DMAC_REGS, *PDMAC_REGS;

typedef struct tagDMAChannelRegs {
    unsigned long   DMACCxSrcAddr;          // Channel base + 0x00
    unsigned long   DMACCxDestAddr;         // Channel base + 0x04
    unsigned long   DMACCxLLI;              // Channel base + 0x08
    unsigned long   DMACCxControl;          // Channel base + 0x0C
    unsigned long   DMACCxConfiguration;    // Channel base + 0x10
}DMAC_CHANNEL_REGS, *PDMAC_CHANNEL_REGS;

//------------------------------------------------------------------------------
//
// Functions 
//
//------------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif

// Functions in CFC_DISK.C
unsigned long 
CFC_InitDisk(
	LPWSTR AcPath
	);

unsigned long 
CFC_OpenDisk(
	void
	);

BOOL 
CFC_CloseDisk(
	void
	);

BOOL 
CFC_DeinitDisk(
	void
	);

// Functions in CFC_INFO.C
unsigned long 
CFC_GetDiskInfo(
	PDISK pDisk, 
	PDISK_INFO pInfo
	);

BOOL 
CFC_GetDeviceInfo(
	PDISK pDisk, 
	PSTORAGEDEVICEINFO pInfo
	);

BOOL 
CFC_GetFolderName(
	PDISK pDisk, LPWSTR pOutBuf, 
	unsigned long nOutBufSize, 
	unsigned long* pBytesReturned);

HKEY 
CFC_OpenDriverKey(
	LPTSTR ActiveKey
	);

// Functions in CFC_PAP.C
void 
CFC_DetectInsert(
	void
	);

void 
CFC_DetectRemove(
	void
	);

unsigned long 
CFC_WaitIntr(
	void * pDk
	);

// Functions in CFC_DATA.C
BOOL 
CFC_SafeRead(
	CFRegs *regs, 
	unsigned short*buf, 
	unsigned long sectornum, 
	unsigned long sectorcnt
	);

BOOL
CFC_SafeWrite(
	CFRegs *regs, 
	unsigned short*buf, 
	unsigned long sectornum, 
	unsigned long sectorcnt
	);

BOOL 
CFC_ReadSectors_FIFO(
	CFRegs *regs, 
	unsigned short *buf, 
	unsigned long sectornum, 
	unsigned long sectorcnt, 
	unsigned long *errorcode
	);

BOOL 
CFC_WriteSectors_FIFO(
	CFRegs *regs, 
	unsigned short *buf, 
	unsigned long sectornum, 
	unsigned long sectorcnt, 
	unsigned long *errorcode
	);

BOOL 
CFC_ReadSectors_DMA(
	CFRegs *regs, 
	unsigned short *buf, 
	unsigned long sectornum, 
	unsigned long sectorcnt, 
	unsigned long *errorcode
	);

BOOL 
CFC_WriteSectors_DMA(
	CFRegs *regs, 
	unsigned short *buf, 
	unsigned long sectornum, 
	unsigned long sectorcnt, 
	unsigned long *errorcode
	);

int 
CFC_ReadByte(
	CFRegs *regs, 
	unsigned long offset, 
	unsigned char*result
	);

int 
CFC_WriteByte(
	CFRegs *regs, 
	unsigned long offset, 
	unsigned char data
	);

int 
CFC_ReadHWd(
	CFRegs *regs, 
	unsigned long offset, 
	unsigned short*result
	);

int 
CFC_WriteHWd(
	CFRegs *regs, 
	unsigned long offset, 
	unsigned short data
	);

int 
CFC_SetFifoAccessMode(
	CFRegs *regs
	);

// Functions in CFC_DMA.C
BOOL 
CFC_AllocateDMA(
	void
	);

BOOL 
CFC_InitDMA(
	unsigned long Opcode
	);

BOOL 
CFC_StartDMA(
	CFRegs *regs,
	unsigned long Opcode, 
	unsigned long FIFOAddr, 
	unsigned short*buf, 
	unsigned long sectorcnt
	);

BOOL 
CFC_ReleaseDMA(
	void
	);

#ifdef __cplusplus
}
#endif

// Additional functions definition - based on functions declared above
#define AtaSetCylinderLow(regs, a);		CFC_WriteByte(regs, ATA_REG_CYL_LOW, a);
#define AtaSetCylinderHigh(regs, a);	CFC_WriteByte(regs, ATA_REG_CYL_HIGH, a);
#define AtaSetHead(regs, a);			CFC_WriteByte(regs, ATA_REG_DRV_HEAD, a);
#define AtaSetSectorNum(regs, a);		CFC_WriteByte(regs, ATA_REG_SECT_NUM, a);
#define AtaSetSectorCount(regs, a);		CFC_WriteByte(regs, ATA_REG_SECT_CNT, a);
#define AtaSetCommand(regs, a);			CFC_WriteByte(regs, ATA_REG_COMMAND, a);
#define AtaReadStatus(regs, a);			CFC_ReadByte(regs, ATA_REG_STATUS, &a);
#define AtaReadError(regs, a);			CFC_ReadByte(regs, ATA_REG_ERROR, &a);
#define AtaReadData(regs, a);			CFC_ReadHWd(regs, ATA_REG_DATA, &a);
#define AtaWriteData(regs, a);			CFC_WriteHWd(regs, ATA_REG_DATA, a);

#endif

⌨️ 快捷键说明

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