dimesdl.h

来自「基于4个mips核的noc设计」· C头文件 代码 · 共 658 行 · 第 1/3 页

H
658
字号
/* 
**
** (c) Nallatech Ltd
**
** dimesdl.h 2001/02/03 14:59:12 Peter Rogers 
**
** DIMESDL.h
**
** This is the header file for the developers interface with Nallatech hardware
**
** $Id: dimesdl.h,v 1.1 2003/10/31 11:45:10 aslusarc Exp $
*/

#ifndef _DIMESDL
#define _DIMESDL

#define DIME_SDL_VER 109

#ifdef LINUX
#include <winlinux.h>
#else
#include <windows.h>
#endif

#ifdef _NALLASYSTEM		// This is defined for low level development only
	#define NALLAEXPORT __declspec(dllexport)
#else //else for _NALLASYSTEM. 
	// Make function declarations imports for application builds
	#define NALLAEXPORT __declspec(dllimport)
#endif // end if for _NALLASYSTEM

// This is used to stop name mangling
#ifdef __cplusplus
	#define CMANGLE extern "C"
#else
	#define CMANGLE
#endif   //__cplusplus

// Define handle for use in applications
#define LOCATE_HANDLE		void *
#define DIME_HANDLE			void *
#define DIME_MEMHANDLE		void *
#define DIME_DMAHANDLE		void *

// These define which kind of DIME carrier card that has been detected
#define mbtNONE					0x00000000
#define mbtTHEBALLYNUEY			0x00000001
#define mbtTHEBALLYNUEY2		0x00000002
#define mbtTHEBALLYINX			0x00000003
#define mbtTHESTRATHNUEY		0x00000004
#define mbtTHEBENERAPROTOTYPE	0x00000005
#define mbtTHEBENADIC			0x00000006
#define mbtTHEBALLYNUEY3		0x00000007
#define mbtTHEBENERA			0x00000008
#define mbtTHEBENNUEY			0x00000009
#define mbtTHEBENONE			0x0000000A
#define mbtALL					0xffffffff
// Used when specifing the interface for the Locate functions.
#define dlPCI				0x00000001
#define dlUSB				0x00000002
#define dlTCPIP				0x00000004
#define dlCITRIX			0x00000005
// Locate functions
//Possible flags for DIME_LocateCard
#define dlSERIALNUM		0x00000001
#define dlDEFAULT		0x00000000
//Standard values for DriverVersion arguement
#define dldrDEFAULT		0x00000000
#define dldrALL			0xFFFFFFFF
//Defines for the Status and Control CommandMode arguement.
#define dlNUMCARDS		0x10000000 //Returns the number of cards located. No card number required.
#define dlMBTYPE		0x10000001 //Returns the Motherboard Type for the specified card.
#define dlINTERFACE		0x10000002 //Returns the LocateType for the card eg dlPCI,dlUSB.
#define dlSERIALNUMBER	0x10000003 //Returns the SerialNumber of the card.
#define dlDRIVERVERSION	0x10000004 //Returns the driver version number for the card.
#define dlDESCRIPTION	0x10000005 //Returns a short discription of the card driver. Only valid for StatusPtr function.
CMANGLE NALLAEXPORT LOCATE_HANDLE DIME_LocateCard(int LocateType, DWORD MBType, void* LocateTypeArgs, DWORD DriverVersion, DWORD Flags);
CMANGLE NALLAEXPORT void DIME_CloseLocate(LOCATE_HANDLE LocateHandle);
CMANGLE NALLAEXPORT DWORD DIME_LocateStatus(LOCATE_HANDLE handle, DWORD CardNumber, DWORD CmdMode);
CMANGLE NALLAEXPORT void *DIME_LocateStatusPtr(LOCATE_HANDLE handle, DWORD CardNumber, DWORD CmdMode);
CMANGLE NALLAEXPORT DWORD DIME_LocateControl(LOCATE_HANDLE handle, DWORD CardNumber, DWORD CmdMode, DWORD Value);
CMANGLE NALLAEXPORT DWORD DIME_LocateControlPtr(LOCATE_HANDLE handle, DWORD CardNumber, DWORD CmdMode, void *pValue);

// Card initialisation
// Used to define the flags that are used when opening up a card.
#define dccOPEN_DEFAULT					0x00000000
#define dccOPEN_NO_OSCILLATOR_SETUP		0x00000001
#define dccNOMAINPOWERON				0x00000002
CMANGLE NALLAEXPORT DIME_HANDLE OpenDIMEBoard(void);					// OBSELETED
CMANGLE NALLAEXPORT DIME_HANDLE DIME_OpenCard(LOCATE_HANDLE LocateHandle, int CardNumber, DWORD Flags);
CMANGLE NALLAEXPORT void CloseDIMEBoard(DIME_HANDLE CardHandle);		// OBSELETED
CMANGLE NALLAEXPORT void DIME_CloseCard(DIME_HANDLE CardHandle);
CMANGLE NALLAEXPORT DIME_HANDLE GetDIMEHandle(void);					// NO LONGER SUPPORTED
//Defines for the return values of the SmartScan function (NO LONGER REQUIRED)
#define ssOK				0x00000000
#define ssINVALID_CARD		0x00000001
#define ssINITIAL_SCAN		0x00000002
#define ssZERO_DEVICES		0x00000003
#define ssZERO_IR			0x00000004
#define ssFILE_ERROR		0x00000005
#define ssSIZE_ERROR		0x00000006
#define ssBAD_MDF			0x00000007
CMANGLE NALLAEXPORT DWORD DIME_SmartScan(DIME_HANDLE handle);			// NOT REQUIRED 
// Oscillator Control
CMANGLE NALLAEXPORT DWORD DIME_SetOscillatorFrequency(DIME_HANDLE handle, DWORD OscillatorNum, double DesiredFrequency, double *ActualFrequency);
CMANGLE NALLAEXPORT DWORD DIME_OscillatorStatus(DIME_HANDLE handle, DWORD ClockNum, DWORD CmdMode);
CMANGLE NALLAEXPORT DWORD DIME_OscillatorControl(DIME_HANDLE handle, DWORD ClockNum, DWORD CmdMode, DWORD Value);

// LED control
#define DIME_ReadLEDs(x) DIME_ReadLEDS(x)
#define DIME_WriteLEDs(x,y) DIME_WriteLEDS(x,y)
CMANGLE NALLAEXPORT DWORD DIME_ReadLEDS(DIME_HANDLE handle);
CMANGLE NALLAEXPORT void DIME_WriteLEDS(DIME_HANDLE handle, DWORD Value);

// Reset Control
// Defines the constants used within the reset functions
// Used in control function
#define drDISABLE			0x00000000
#define drENABLE			0x00000001
#define drTOGGLE			0x00000002
// Returned from status function
#define drCONTROLABLE		0x00000003
#define drTOGGLEONLY		0x00000004
// Used in status and control function 'ResetNum' argument
#define drINTERFACE			0x00000001
#define drSYSTEM			0x00000002
#define drONBOARDFPGA		0x00000004
#define drMODULE1			0x00000008
#define drMODULE2			0x00000010
#define drMODULE3			0x00000020
#define drMODULE4			0x00000040

CMANGLE NALLAEXPORT DWORD DIME_CardResetControl(DIME_HANDLE handle,DWORD ResetNum, DWORD CmdMode, DWORD Value);
CMANGLE NALLAEXPORT DWORD DIME_CardResetStatus(DIME_HANDLE handle,DWORD ResetNum, DWORD CmdMode);
CMANGLE NALLAEXPORT void DIME_VirtexResetEnable(DIME_HANDLE handle);	// OBSELETED
CMANGLE NALLAEXPORT void DIME_VirtexResetDisable(DIME_HANDLE handle);	// OBSELETED
CMANGLE NALLAEXPORT void DIME_VirtexReset(DIME_HANDLE handle);			// OBSELETED
CMANGLE NALLAEXPORT void DIME_SystemResetEnable(DIME_HANDLE handle);	// OBSELETED
CMANGLE NALLAEXPORT void DIME_SystemResetDisable(DIME_HANDLE handle);	// OBSELETED
CMANGLE NALLAEXPORT void DIME_SystemReset(DIME_HANDLE handle);			// OBSELETED
CMANGLE NALLAEXPORT void DIME_PCIReset(DIME_HANDLE handle);				// OBSELETED

// Digital IO Functions
// Used for the Bank arguement
#define dpioDIGITAL			0x00000000

CMANGLE NALLAEXPORT DWORD DIME_ReadPIO(DIME_HANDLE handle,DWORD Bank);
CMANGLE NALLAEXPORT DWORD DIME_WritePIO(DIME_HANDLE handle,DWORD Bank,DWORD Data);
CMANGLE NALLAEXPORT DWORD DIME_ReadPIODirection(DIME_HANDLE handle,DWORD Bank);
CMANGLE NALLAEXPORT DWORD DIME_WritePIODirection(DIME_HANDLE handle,DWORD Bank,DWORD Data);
CMANGLE NALLAEXPORT DWORD DIME_ReadDigitalIO(DIME_HANDLE handle);						// OBSELETED
CMANGLE NALLAEXPORT DWORD DIME_WriteDigitalIO(DIME_HANDLE handle,DWORD Data);			// OBSELETED
CMANGLE NALLAEXPORT DWORD DIME_ReadDigitalIODirection(DIME_HANDLE handle);				// OBSELETED
CMANGLE NALLAEXPORT DWORD DIME_WriteDigitalIODirection(DIME_HANDLE handle,DWORD Data);	// OBSELETED

// Interrupts
// Defines the constants used  within the Interrupt functions
// used in wait function
#define dintBLOCKING			0x00000000
#define dintNONBLOCKING			0x00000001

// used as InterruptFlags arguement
#define dintONBOARDFPGA			0x00000001
#define dintMODULE1				0x00000002
#define dintMODULE2				0x00000004
#define dintMODULE3				0x00000008
#define dintMODULE4				0x00000010
#define dintALL					0xffffffff

// used as CmdMode arguement
#define dintFLAGS				0x10000001
#define dintWAIT				0x10000002
#define dintAVAILABLE			0x10000003
#define dintDISABLE				0x10000004
#define dintENABLE				0x10000005
#define dintPINVALUE			0x10000006
#define dintSETHANDLER			0x10000007

CMANGLE NALLAEXPORT DWORD DIME_InterruptStatus(DIME_HANDLE handle, DWORD InterruptFlags,DWORD CmdMode);
CMANGLE NALLAEXPORT DWORD DIME_InterruptControl(DIME_HANDLE handle, DWORD InterruptFlags, DWORD CmdMode, DWORD Value);
CMANGLE NALLAEXPORT void *DIME_InterruptStatusPtr(DIME_HANDLE handle, DWORD InterruptFlags,DWORD CmdMode);
CMANGLE NALLAEXPORT DWORD DIME_InterruptControlPtr(DIME_HANDLE handle, DWORD InterruptFlags, DWORD CmdMode, void *pValue);
CMANGLE NALLAEXPORT DWORD DIME_VirtexIntPin(DIME_HANDLE handle);		// OBSELETE

// MEMORY This handles the locking of memory 
CMANGLE NALLAEXPORT DIME_MEMHANDLE DIME_LockMemory(DIME_HANDLE handle, DWORD *Data, DWORD Length); //Length in bytes
CMANGLE NALLAEXPORT DWORD DIME_UnLockMemory(DIME_HANDLE handle, DIME_MEMHANDLE MemHandle);

// DMA
#define	ddmaALLDMACHANNELS		NULL			// Used in Status/Control to operate on all DMA Channels
#define	ddmaNUMCHANNELS			0x10000000		// Only used with ddmaALLDMACHANNELS CmdMode
#define	ddmaREADFLAGS			0x10000001		// Only used with ddmaALLDMACHANNELS CmdMode
#define	ddmaWRITEFLAGS			0x10000002		// Only used with ddmaALLDMACHANNELS CmdMode
#define	ddmaREADANDWRITE		0x10000003		// Only used with ddmaALLDMACHANNELS CmdMode
#define	ddmaREADABLE			0x10000004		// Returns Flag if DMA channel can read
#define	ddmaWRITABLE			0x10000005		// Returns Flag if DMA channel can write
#define	ddmaINTERUPTABLE		0x10000006		// Returns Flag if interrupts can be used for transfer
#define	ddmaACTIVE				0x10000007		// Returns flag if DMA channel is active in a transfer
#define	ddmaNONBLOCKINGSUPPORT	0x10000008		// Returns if non blocking support is available
#define	ddmaLOCALNOINC			0x10000009		// Sets that the local addressing is not incremented during transfers
												// In status returns true if DMA can do no incrementing on local addresses
#define	ddmaREMOTENOINC			0x1000000A		// Sets that the remote addressing is not incremented during transfers
												// In status returns true if DMA can do no incrementing on remote addresses
#define	ddmaLOCALINC			0x1000000B		// Sets that the local addressing is incremented during transfers					
#define	ddmaREMOTEINC			0x1000000C		// Sets that the remote addressing is incremented during transfers
#define	ddmaREMOTEINCFLAG		0x1000000D		// Used in status to return current setting of remote addressing inc status
#define	ddmaLOCALINCFLAG		0x1000000E		// Used in status to return current setting of local addressing inc status
#define	ddmaTIMEOUT				0x1000000F		// Sets the timeout for future transfers
												// In status returns current value of time for transfers in msec
#define	ddmaCURRCOUNT			0x10000010		// Sets Address where the current count is stored
												// In status returns the number of words currently transfered
#define	ddmaTERMINATE			0x10000011		// DMAChannel=validhandle, DMA Transfer is terminated
												// DMAChannel=NULL. All DMA Transfers on card are terminated
#define ddmaWAITFORFINISH		0x10000012		// Control blocks until DMA transfer is complete
#define ddmaPOLLED				0x10000013		// Set all future DMAs on this channel to be polled rather than use interrupts
#define ddmaINTERRUPTS			0x10000014		// Set all future DMAs on this channel to use interrupt
#define ddmaEMPTYFLAG			0x10000015		// This returns the state of the empty signal on the Nallatech Interface
#define ddmaBUSYFLAG			0x10000016		// This returns the state of the busy signal on the Nallatech Interface
#define ddmaREADEMPTY			0x10000017		// This returns a 1 if the read FIFO is empty
#define ddmaWRITEFULL			0x10000018		// This returns a 1 if the write FIFO is full

⌨️ 快捷键说明

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