📄 hdlc100.h
字号:
* Description : HDMA Channel A Rx initialize
*/
extern void HDMAB_Tx_init(U32 TxDB_B, U32 TxD_Size_B) ;//cjw
/*
* Function : HDMAB_Tx_init
* Description : HDMA Channel B Tx initialize
*/
extern void HDMAB_Rx_init(void) ;//cjw
/*
* Function : HDMAB_Rx_init
* Description : HDMA Channel B Rx initialize
*/
extern void HDLCTx_isr(int) ;//cjw
extern void HDLCRx_isr(int) ;//cjw
extern void HDMA_RxA_isr(void) ;
extern void HDMA_RxB_isr(void) ;
extern void HDLCRxA_isr(void) ;
extern void HDLCTxA_isr(void) ;
/*
* Function : HDLCA_isr
* Description : HDMA Channel A Interrupt Service Routine
*/
extern void HDLCRxB_isr(void) ;
extern void HDLCTxB_isr(void) ;
/*
* Function : HDLCB_isr
* Description : HDMA Channel B Interrupt Service Routine
*/
/*------------------------------------
* Function Prototype for HDLClib.c
*------------------------------------*/
extern void HDLCcpuTxGO(void) ;//cjw
extern void TxDataWrite(U8,int) ;
extern void HDLCARxEnable(void) ;//cjw
/*
* Function : HDLCARxEnable
* Description : HDLC Channel A Rx Enable
*/
//extern void HDLCTxGo(int) ;
/*
* Function : HDLCTxGo
* Description : HDLC Channel A/B Tx Enable
*/
extern void HDLCBRxEnable(void) ;//cjw
/*
* Function : HDLCBRxEnable
* Description : HDLC Channel B Rx Enable
*/
extern void HDLCALoopbackEn(void) ;//cjw
/*
* Function : HDLCALoopbackEn
* Description : HDLC Channel A Internal Loopback Test Enable
*/
extern void HDLCALoopbackDis(void) ;//cjw
/*
* Function : HDLCALoopbackDis
* Description : HDLC Channel A Internal Loopback Test Disable
*/
extern void HDLCBLoopbackEn(void) ;//cjw
/*
* Function : HDLCBLoopbackEn
* Description : HDLC Channel B Internal Loopback Test Enable
*/
extern void HDLCBLoopbackDis(void) ;//cjw
/*
* Function : HDLCBLoopbackDis
* Description : HDLC Channel B Internal Loopback Test Disable
*/
extern void TxBD_init(U8,int,int) ;
extern void RxBD_init(U8) ;
extern int GetRxHdlcData_A(U32 IntHdlcStatus) ;//cjw
/*
* Function : GetRxHdlcData_A
* Description : HDLC Channel A Data Receive
*/
extern int GetRxHdlcData_B(U32 IntHdlcStatus) ;//cjw
/*
* Function : GetRxHdlcData_B
* Description : HDLC Channel B Data Receive
*/
extern void PrintHdlcData(U8 *DBPtr, U32 Size) ;//cjw
/*
* Function : PrintHdlcData
* Description : Print HDLC Tx/Rx Data
*/
extern int CompareHdlcLoopbackData(int) ;
/*
* Function : CompareHdlcLoopbackData
* Description : Compare Loopback test data
* Return : Compare Ok or Fail
*/
extern int HdlcInternalLoopback(int,int) ;//cjw
/*
* Function : HdlcInternalLoopback
* Description : HDLC Internal Loopback Function
*/
extern int HdlcAExternLoopback(void) ;//cjw
/*
* Function : HdlcAExternLoopback
* Description : HDLC Internal Loopback Function
*/
extern int HdlcBExternLoopback(void) ;//cjw
/*
* Function : HdlcBExternLoopback
* Description : HDLC Channel B External Loopback Function
*/
extern int HdlcABExternLoopback(void) ;//cjw
/*
* Function : HdlcA2BExternLoopback
* Description : HDLC A to B External Loopback Function
*/
extern int HdlcLoopback(int, int ) ;//cjw
/*
* Function : HdlcLoopback
* Description : HDLC Channel Loopback Function
*/
//extern int HdlcA2BLoopback(U8 *TxDBA, int tsize, int lcount) ;
/*
* Function : HdlcA2BLoopback
* Description : HDLC A to B Loopback Function
*/
//extern int HdlcB2ALoopback(U8 *TxDBB, int tsize, int lcount) ;
/*
* Function : HdlcB2ALoopback
* Description : HDLC B to A Loopback Function
*/
extern void RegView(void) ;
extern void HdlcRegView(void) ;
extern void ViewHdlcErrorRpt(void) ;
/*
* Function : ViewHdlcErrorRpt
* Description : View HDLC Error Report and Clear
*/
extern U32 CheckRxStatusHDLC(int,U32);
extern U32 CheckRxData(int,U32);
extern U32 CheckTxStatus(U8);
extern U32 FindFirstBD(U32);
extern U32 GetRxBDData(int,U32);//cjw
extern U32 GetBaudRate(U32);
extern void gVar_Init(void) ;
extern void CPUModeRegSet(void) ;
extern void DMAModeRegSet(void) ;
extern void HdlcTestByOp(void) ;
extern void HdlcInitialize(void) ;
extern void HdlcResetTest(void) ;
extern void HdlcReset(void) ;
extern void HdlcDMAmodeTest(void) ;
extern void HdlcCPUmodeTest(void) ;
extern void HdlcSingleTransfer(int) ;
extern void HdlcMultipleTransfer(int) ;
extern int S_RxADma(void) ;
extern void PrtRxFrame(int) ;
extern void ShowTxData(int) ;
extern void ClrErrReport(void) ;
extern void S_RxDma(void) ;
extern void CPUTxAGo(void) ;
extern void CPUTxBGo(void) ;
//extern void HdlcTxReset(void) ;
//extern void HdlcRxReset(void) ;
//extern void HdlcDMATxReset(void) ;
extern void HdlcDMARxReset(void) ;
extern void TxBufferInitialize(U8) ;
extern void test(void) ;
extern void CPUOwnerSetFromFisrtRxBD(U32 *) ;
extern void gVarAddrView(void) ;
extern void TxLen7byte(void) ;
extern U32 CheckRxCPU(void) ;
extern void RxFIFO2DMA(void) ;
extern void HdlcCacheTest(void) ;
extern void UniLength(int) ;
extern void RandomLength(int) ;
extern void Test(int) ;
#ifdef _HDLC100VAR_
#define _HDLC100VAR_
//Global variable
//Buffer Descriptor allocation use array
sBufferDescriptor sTxBDStart[HDLCPORTNUM][MaxTxBDCount] ;
sBufferDescriptor sRxBDStart[HDLCPORTNUM][MaxRxBDCount] ;
//HDLC Tx Rx Status
sHTxStatus gHTxStatus[HDLCPORTNUM];
sHRxStatus gHRxStatus[HDLCPORTNUM];
sHDPLLStatus gHDPLLStatus[HDLCPORTNUM];
//HDMA Rx Error Count
sHDMARxErr gHDMARxErrCnt[HDLCPORTNUM];
U32 TxBBaseAddr[TxBufferSize] ;
U32 RxBBaseAddr[HDLCPORTNUM][RxBufferSize] ;
U32 RxUserArea[HDLCPORTNUM][UserAreaSize] ;
U32 *gUserArea[HDLCPORTNUM] = {
RxUserArea[HDLCA],
RxUserArea[HDLCB] } ;
U32 gFrameCount[HDLCPORTNUM];
int ErrFrame[5000];
volatile U32 gPrevTxBDStart[HDLCPORTNUM];//cjw
volatile U32 gCTxBDStart[HDLCPORTNUM];//cjw
volatile U32 gCTxBDEnd[HDLCPORTNUM];
//cjw. gloval variable in CPU operation
int gCPUmode = 0 ;
U32 gMaxPacketCnt ;
volatile U32 gCRxBDStart[HDLCPORTNUM] ;//cjw
volatile U32 gCRxBDEnd[HDLCPORTNUM] ;
volatile U32 gHdlcRxDone = 0 ;
// Global Value Set
volatile U32 gMode = NRZ|IntCLK|BRGMCLK ;
volatile U32 gControl = Tx1WD|Rx1WD|DTxSTSK|DRxSTSK| \
RxWA0|TxDTR|BRGEN;
volatile U32 gHIntENA = DTxFDIE | \
DRxFDIE | DRxNLIE | DRxNOIE | RxMOVIE;
volatile U32 gHIntENB = DTxFDIE | //DTxNOIE | DTxABTIE |
DRxFDIE | DRxNLIE | DRxNOIE | RxMOVIE;
sHDMARxErr sHDMARxErrCnt ;
U32 gMultiTransfer;
// Used by ShowChan(channel) Macro to inform User operating Channel
char ch;
#if MODE == CPU
U32 gRxFail = 0;
#endif
#else
//Global variable
//Buffer Descriptor allocation use array
extern sBufferDescriptor sTxBDStart[HDLCPORTNUM][MaxTxBDCount] ;
extern sBufferDescriptor sRxBDStart[HDLCPORTNUM][MaxRxBDCount] ;
//HDLC Tx Rx Status
extern sHTxStatus gHTxStatus[HDLCPORTNUM];
extern sHRxStatus gHRxStatus[HDLCPORTNUM];
extern sHDPLLStatus gHDPLLStatus[HDLCPORTNUM];
//HDMA Rx Error Count
extern sHDMARxErr gHDMARxErrCnt[HDLCPORTNUM];
extern U32 TxBBaseAddr[TxBufferSize] ;
extern U32 RxBBaseAddr[HDLCPORTNUM][RxBufferSize] ;
extern U32 RxUserArea[HDLCPORTNUM][UserAreaSize] ;
extern U32 *gUserArea[HDLCPORTNUM] ;
extern U32 gFrameCount[HDLCPORTNUM];
extern int ErrFrame[5000];
extern volatile U32 gPrevTxBDStart[HDLCPORTNUM];//cjw
extern volatile U32 gCTxBDStart[HDLCPORTNUM];//cjw
extern volatile U32 gCTxBDEnd[HDLCPORTNUM];
//cjw. gloval variable in CPU operation
extern int gCPUmode ;
extern U32 gMaxPacketCnt ;
extern U32 gMode ;
extern U32 gMultiTransfer;
extern volatile U32 gCRxBDStart[HDLCPORTNUM] ;//cjw
extern volatile U32 gCRxBDEnd[HDLCPORTNUM] ;
extern volatile U32 gHdlcRxDone ;
extern volatile U32 gControl ;
extern volatile U32 gHIntENA ;
extern volatile U32 gHIntENB ;
extern sHDMARxErr sHDMARxErrCnt ;
// Used by ShowChan(channel) Macro to inform User operating Channel
extern char ch;
#if MODE == CPU
extern U32 gRxFail = 0;
#endif
#endif
// HDLC Registers
#define HMODE(channel) (VPint(Base_Addr+0x7000 + channel*0x1000))
#define HCON(channel) (VPint(Base_Addr+0x7004 + channel*0x1000))
#define HSTAT(channel) (VPint(Base_Addr+0x7008 + channel*0x1000))
#define HINTEN(channel) (VPint(Base_Addr+0x700c + channel*0x1000))
#define HTXFIFOC(channel) (VPint(Base_Addr+0x7010 + channel*0x1000))
#define HTXFIFOT(channel) (VPint(Base_Addr+0x7014 + channel*0x1000))
#define HRXFIFO(channel) (VPint(Base_Addr+0x7018 + channel*0x1000))
#define HBRGTC(channel) (VPint(Base_Addr+0x701c + channel*0x1000))
#define HPRMB(channel) (VPint(Base_Addr+0x7020 + channel*0x1000))
#define HSAR0(channel) (VPint(Base_Addr+0x7024 + channel*0x1000))
#define HSAR1(channel) (VPint(Base_Addr+0x7028 + channel*0x1000))
#define HSAR2(channel) (VPint(Base_Addr+0x702c + channel*0x1000))
#define HSAR3(channel) (VPint(Base_Addr+0x7030 + channel*0x1000))
#define HMASK(channel) (VPint(Base_Addr+0x7034 + channel*0x1000))
#define HDMATXPTR(channel) (VPint(Base_Addr+0x7038 + channel*0x1000))
#define HDMARXPTR(channel) (VPint(Base_Addr+0x703c + channel*0x1000))
#define HMFLR(channel) (VPint(Base_Addr+0x7040 + channel*0x1000))
#define HRBSR(channel) (VPint(Base_Addr+0x7044 + channel*0x1000))
// Register Bit Control Macros
#define HdlcReset(channel) HCON(channel) |= TxRS|RxRS|DTxRS|DRxRS ;
#define HDLCTxEN(channel) HCON(channel) |= TxEN
#define HDLCRxEN(channel) HCON(channel) |= RxEN
#define HDMATxEN(channel) HCON(channel) |= DTxEN
#define HDMARxEN(channel) HCON(channel) |= DRxEN
#define HDLCLoopbackEn(channel) HCON(channel) |= TxLOOP
#define HDLCLoopbackDis(channel) HCON(channel) &= ~TxLOOP
#define DRxSizeSet(channel,size) HRBSR(channel) = size
#define MaxFrameLengthSet(channel,size) HMFLR(channel) = size
#define InterCLKEN(channel) HCON(channel) |= DPLLEN|BRGEN ;
#define HDLCTxGo(channel) HDLCTxEN(channel); HDMATxEN(channel)
#define HdlcTxReset(channel) HCON(channel) |= TxRS
#define HdlcRxReset(channel) HCON(channel) |= RxRS ;
#define HdlcDMATxReset(channel) HCON(channel) |= DTxRS ;
#define HdlcDMARxReset(channel) HCON(channel) |= DRxRS ;
#define ShowChan(channel) ch=(!channel)?'A':'B'
#endif /* _HDLC100_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -