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

📄 mutlichannel.h

📁 该程序是MPC860的SCC2用作HDLC模式的驱动程序。供大家参考。
💻 H
字号:

#define  PURE_HDLC_FRAME

#define MAXLOGCHAN	  32         /*Max Number of Logical Channels on one SCC*/

/*--------------------------------*/
/* Size of QMC buffers in buffer pool */
/*--------------------------------*/

#define MAX_HDLC_FRAME  512

#define QMC_BUFFER_SIZE 512

#define BDNUM   2  /*32K/32 ,each channel only 1k, 1k/512, maxium is 4*/

#define QMC_ITE_V			0x8000	/* Valid Bit */
#define QMC_ITE_W			0x4000   /* Wrap Bit */
#define QMC_ITE_NID			0x2000	/* Not Idle */
#define QMC_ITE_IDL			0x1000	/* Idle */
#define RESERVED164			0x0800
#define QMC_ITE_CN			0x07C0	/* Channel Number */
#define QMC_ITE_MRF			0x0020	/* Max Rx Frame Length Violation */
#define QMC_ITE_UN			0x0010	/* Tx No Data (Channel Underrun)*/
#define QMC_ITE_RXF			0x0008   /* Rx Frame */
#define QMC_ITE_BSY			0x0004	/* Busy */
#define QMC_ITE_TXB			0x0002	/* Tx Buffer */
#define QMC_ITE_RXB			0x0001	/* Rx Buffer */
#define QMC_ITE_CLEAR		        0x0800	/* Use to clear an Interrupt Table
                                                   Entry after it has been processed. 
			                           Leaves reserved bit intact. */
typedef struct BufferDescriptor 

{
   UINT16 bd_cstatus;     /* control and status */
   UINT16 bd_length;      /* transfer length */
   u_char  *bd_addr;       /* buffer address */

} BD;


/*--------------------------*/
/* Buffer Descriptor Format */
/*--------------------------*/

typedef struct BufferDescRings 

{
    BD TxBd[BDNUM];    /* Tx BD ring ,一个*/
    BD RxBd[BDNUM];    /* Rx BD ring ,一个*/

} BDRINGS;

typedef struct          /* SCC_HDLC_DEV */
    {
    int 		sccNum;		/* number of SCC device */
    int 		txBdNum;	/* number of transmit buf descriptors */
    int 		rxBdNum;	/* number of receive buf descriptors */
    u_char * 		txBufBase;	/* transmit buffer base address */
    u_char *		rxBufBase;	/* receive buffer base address */
    VINT16 		txBufSize;	/* transmit buffer size */
    VINT16 		rxBufSize;	/* receive buffer size */
    int                 txBdNext[MAXLOGCHAN];       /* next transmit BD to fill */
    int                 rxBdNext[MAXLOGCHAN];       /* next receive BD to read */
    volatile SCC *	pScc;		/* SCC parameter RAM */
    VINT32		intMask;	/* interrupt acknowledge mask */
    } SCC_HDLC_DEV;

typedef struct ppc860SccHdlc_chan	/* PPC860SCCHDLC_CHAN */
    {
    /*DEV_HDR *           devHdr;*/	        /* I/O device header */
                                        /* defined in "iosLib.h"   */
    VINT16              int_vec;        /* interrupt vector number */
    VINT32              regBase;        /* register/DPR base address */
    SCC_HDLC_DEV        hdlc;           /* hdlc SCC device */
    int                 creatFlag;
    int                 intCounter;
   } PPC860SCCHDLC_CHAN;

typedef struct rHdlcFrame
{       
	UINT16 frameLen;
	UINT16  channelNum;
	u_char  buffer[BDNUM*QMC_BUFFER_SIZE];
}R_HDLC_FRAME;

⌨️ 快捷键说明

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