#ifndef PCIEMANAGER_H
#define PCIEMANAGER_H
#include "XilApi.h"
#include <string>
#include <memory>
#include <QDebug>
#include <time.h>
#define COMMON_BUFFER_SIZE 0x40000
class PCIEManager
{
public:
static PCIEManager& GetInstance();//返回PCIEManager的引用
bool openBoard(std::string& errorInfo = std::string());//打开板卡
bool closeBoard();//关闭板卡
bool resetBoard(std::string& errorInfo = std::string());//复位板卡
bool isOpened() const;//板卡是否打开
int getDMABufLength()const;//获取板卡的DMA缓存大小
U64 getDmaUserAddr()const;
bool read(void *pBuf, const int len);//从板卡读取数据到内存
bool write(void *pBuf, const int len);//从内存写数据到板卡
bool isReadyRead();
bool isReadyWrite();
int isExistFrameHeader();//是否存在帧头
U32 frameHeaderOffset();//帧头的偏移地址
U32 getDmaSendBitrate() const;
U32 getDmaRecvBitrate() const;
bool setDmaSendBitrate(U32 value);
bool setDmaRecvBitrate(U32 value);
//获取特定地址寄存器值
U32 PCIERegRead(U16 offset);
XIL_STATUS PCIERegWrite(U16 offset,U32 ValueToWrite);
private:
PCIEManager();
struct PCIEManagerPrivate; //类内结构体需要这样声明吗******************************************
std::auto_ptr<PCIEManagerPrivate> pData;//auto_ptr就是动态分配对象以及在对象不再需要时执行自动清理
const U8 PCIE_READ_TLP_SIZE;
const U8 PCIE_WRITE_TLP_SIZE;
};
#endif // PCIEMANAGER_H
PCIE之PCIEManager.h
最新推荐文章于 2022-05-18 07:30:00 发布