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

📄 libvme.h

📁 linux下vme总线驱动代码
💻 H
字号:
//------------------------------------------------------------------------------  //title: VMEBus Library for Universe Driver//version: Linux 1.1//date: April 1999//designer: Michael Wyrick                                                      //programmer: Michael Wyrick                                                    //company: Umbra System Inc.//platform: Linux 2.2.x, 2.4.x                                    //language: GCC 2.95, 3.0//module: //------------------------------------------------------------------------------  //  Purpose:                                                                    //  Docs:                                                                       //------------------------------------------------------------------------------  #ifndef VMELIB_H#define VMELIB_H// Default Mapping - Address Space : VME_CR_CSR //                   Access Type   : Program//                   User Type     : User //                   Data Size     : DO8//                   Block Mode    : Non-Block Mode#define VME_CR_CSR	0x00#define VME_A16		0x01   #define VME_A24		0x02#define VME_A32		0x03#define VME_DATA	0x04     #define VME_SUPERVISOR  0x08     #define VME_SIZE_DO8	0x00#define VME_SIZE_D16	0x20#define VME_SIZE_D32	0x40#define VME_SIZE_D64	0x60#define VME_BLOCK       0x10#define VME_DMA_MODE    0x80//----------------------------------------------------------------------------// VMEExecption Class//----------------------------------------------------------------------------const unsigned char VME_TYPE_READ  = 1; const unsigned char VME_TYPE_WRITE = 2;class VMEExecption {};class VME_BusError : public VMEExecption {public:  int address;  int count;  int access_type;  VME_BusError(int a, int c, int at) {    address     = a;    count       = c;    access_type = at;  }};class VME_DriverBusy : public VMEExecption {};class VME_InvalidMapping : public VMEExecption {};//----------------------------------------------------------------------------// VMEBus Class//----------------------------------------------------------------------------class VMEBus {private:  int iSwapEndian;      int vme_handle;  int uni_handle;  int vme_space;  int ctl;              unsigned int pci_base_addr;  unsigned int pci_bound_addr;  unsigned int vme_base_addr;  int lasterror;public:  VMEBus(unsigned int addr, int count, char space,int image = -1);  ~VMEBus();  unsigned int ReadUniReg(int reg);  void WriteUniReg(int reg, unsigned int v);  int VMEerror();  unsigned char  ReadByte(int);  unsigned short ReadWord(int);  unsigned int   ReadLong(int);  void WriteByte(int, unsigned char);  void WriteWord(int, unsigned short v);  void WriteLong(int, unsigned int v);  unsigned short ReadWord_wa(int);    void WriteWord_wa(int, unsigned short v);  unsigned long ReadLong_la(int);    void WriteLong_la(int, unsigned long v);  int ReadBlock(int, int, unsigned char *);  int WriteBlock(int, int, unsigned char *);  int SwapEndianOn(void);  int SwapEndianOff(void);  void Mode_DMA(void);  void Mode_Programmed(void);};#endif // VMELIB_H

⌨️ 快捷键说明

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