📄 fdcdrv.h
字号:
/* fdcDrv.h - Floppy Disk Controller (FDC) Input/Output Header Module *//* Copyright 1984-1998 Wind River Systems, Inc. *//* Copyright 1996,1997,1998 Motorola, Inc. *//*modification history--------------------01a,29Oct97,rb created by Motorola.*//*DESCRIPTIONThis file contains structures used by the floppy driver to maintaininformation about the disk drive and for the command packet used totransfer requests to the disk.*/#ifndef INCfdcDrvh#define INCfdcDrvh#ifdef __cplusplusextern "C" {#endif#define AESSIZE 32 /* error status data buffer size in bytes */#ifdef MBX860# undef FDC_ENHANCED /* enhanced floppy disk controller */#else# define FDC_ENHANCED /* enhanced floppy disk controller */#endif#define FDC_DMAALIGN 0x10000 /* DMA alignment (modulus of) */#define FDC_NDRIVES 4 /* number of supported drives *//* controller dependent error codes */#define FDC_ERROR_READ 0x01 /* error during read operation */#define FDC_ERROR_WRITE 0x02 /* error during write operation */#define FDC_ERROR_ILLDREQ 0x03 /* illegal data request */#define FDC_ERROR_DATACOUNT 0x04 /* data count (expected != actual) */#define FDC_ERROR_FORMAT 0x05 /* format failed */#define FDC_ERROR_SEEK 0x06 /* seek failed */#define FDC_ERROR_CLEARRESET 0x07 /* clear reset status failed *//* * timeout definitions * * these timeout definitions are hardware specific, and must be measured * (or known), the access time definition basically states the maximum * time it would take to access the FIFO, its granularity is in * micro-seconds, which would suffice for most products, but just in case * the definition is "ifdef"'d */#define FDC_TIMEOUT 2000000 /* time out in US */#define FDC_ACCESSTIME 1 /* access time to FIFO in US */#define FDC_TIMEOUTCOUNT (FDC_TIMEOUT/FDC_ACCESSTIME)/* command identifiers */#define FDC_READOP 0 /* read operation */#define FDC_WRITOP 1 /* write operation */#define FDC_FRMTOP 2 /* format operation */#define FDC_CHCKOP 3 /* check operation *//* typedefs * * position calculation structure template */typedef struct fdc_pos { UINT lsector; /* logical sector number */ USHORT cylndrno; /* cylinder number */ UCHAR headno; /* head number */ UCHAR sectorno; /* sector number */ } FDC_POS;/* command/result data structure template */typedef struct fdc_crdata { FDC_COMMAND c_data; /* command data */ FDC_RESULT r_data; /* result data */ } FDC_CRDATA;/* driver command packet */typedef struct fdc_cmdpckt { UINT command; /* command identifier */ UINT status; /* status (error code) */ UINT memaddr; /* memory address */ UINT blcknum; /* block number */ UINT nblcks; /* number of blocks to transfer */ UINT tdflg; /* track/disk flag, format operations */ UINT e_count; /* expected data count */ UINT a_count; /* actual data count */ UINT aescount; /* additional error status count */ UCHAR aesdata[AESSIZE]; /* additional error status data buffer */ } FDC_CMDPCKT;/* floppy device/disk type structure template */typedef struct fdc_type { UINT numberofheads; /* number of heads (sides) */ UINT numberoftracks; /* number of tracks */ UINT sectorstrack; /* sectors (blocks) per track */ UINT sectorsize; /* sector (block) size in bytes */ UINT ratestep; /* step rate */ UINT ratedata; /* data rate */ UINT gaprw; /* read/write sector gap */ UINT gapformat; /* format gap */ } FDC_TYPE;/* driver device data template */typedef struct fdc_dev { BLK_DEV fdcBlockDev;/* block device descriptor (vxWorks - must be first) */ FDC_TYPE fdcType; /* floppy disk/device type */ UINT driveNumber; /* drive/device number */ UINT blockSize; /* logical block size in bytes */ UINT blockOffset; /* logical block offset from zero of start */ UINT blockTotal; /* number of logical blocks from offset */ UINT dmaBuffer; /* DMA buffer address */ SEM_ID intSemId; /* interrupt to task level semaphore */ int sysClkRate; /* system clock rate */ } FDC_DEV;/* interrupt arguments data template */typedef struct fdc_iargs { FDC_DEV *pDev; /* device descriptor pointer */ FDC_CMDPCKT *pCmd; /* command packet pointer */ FDC *pFdc; /* FDC registers pointer */ FDC_CRDATA *cr_data_p; /* command/result data pointer */ } FDC_IARGS;#ifdef __cplusplus}#endif#endif /* INCfdcDrvh */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -