📄 cpcimultiint.h
字号:
/**********************************************************************
chengjy@felab, copyright 2002-2004
cpciMultiInt.h
零槽控制器的多板中断处理需要的常数定义
**********************************************************************/
#ifndef _CPCIMULTIINT_H
#define _CPCIMULTIINT_H
/*~~~~~~~~~~~~~~~~~地址转换~~~~~~~~~~~~~~~~~~~~*/
/*基地址定义, 从bsp继承: mcpx750.h*/
#define PCI_MEM_BASE_MODE1 0x81000000
#define PCI_MEM_BASE_MODE2 0xc0000000
#define PCI_MSTR_MEMIO_LOCAL PCI_MEM_BASE_MODE2 /*pci mem -- cpu view base address*/
#define PCI_MSTR_IO_LOCAL 0x80000000 /*pci io -- cpu view base address*/
#define PCI_SLV_MEM_BUS 0x80000000 /*mem -- pci view base address*/
/*pci总线上的地址到cpu地址的转换*/
#define PCIMEM2CPU(x) ((UINT*)((UINT)(x)+PCI_MSTR_MEMIO_LOCAL))
#define PCIIO2CPU(x) ((UINT*)((UINT)(x)+PCI_MSTR_IO_LOCAL))
/*内存地址从cpu local bus到pci地址的转换*/
#define CPU2PCIMEM(x) ((UINT*)((UINT)(x)-PCI_MSTR_MEMIO_LOCAL))
#define CPU2PCIIO(x) ((UINT*)((UINT)(x)-PCI_MSTR_IO_LOCAL))
/*cpu mem 地址到pci地址的转换*/
#define CPUMEM2PCI(x) ((UINT*)((UINT)(x)+PCI_SLV_MEM_BUS))
/*********************FCI 9656相关***************************/
/*FCI板9656的vendor 和device ID号*/
#define PCI_F9656_VENDOR_ID 0x10B5
#define PCI_F9656_DEVICE_ID 0x9656
/*fci 板9656 的pci mem 操作*/
#define F9656MEM2CPU0(x,index) ((UINT*)(pciBoard[index].pcimem0+(x))) /*mem0区*/
#define F9656MEM2CPU1(x,index) ((UINT*)(pciBoard[index].pcimem1+(x))) /*mem1区*/
/*9656 字序转换*/
#define F9656_BYTE_SWAP(x) \
(((((UINT)(x))<<24)&0xFF000000)+((((UINT)(x))<<8)&0x00FF0000) \
+((((UINT)(x))>>8)&0x0000FF00)+((((UINT)(x))>>24)&0x000000FF))
/*定义单板状态*/
#define STATUS_NORMAL 0x00
#define STATUS_ERROR 0x01
#define STATUS_WARNING 0x02
#define STATUS_INVALID 0x03
#define STATUS_UNAVAILABLE 0x04
#define STATUS_DISABLE 0x05
/*用户任务的堆栈大小*/
#define USER_STACK_SIZE 2000
/*定义任务名*/
#define TNAME_F9656INTHDL "tF9656intHdl"
#define TPRI_F9656INTHDL 120
/*~~~~~~~~~~~~~~~~~~~~CPCI 插卡的基本信息~~~~~~~~~~~~~~~~~~~~*/
struct pciBoardIndex
{
int index; /*板号*/
char intNum; /*中断号*/
int intTimes; /*已经产生的中断次数*/
UINT pcimem0; /*cpci器件申请的memory0 的基地址*/
UINT pcimem1; /*cpci器件申请的memory1的基地址*/
SEM_ID semPci; /*同步用信号灯*/
};
struct pciIntIndex
{
char enable;
};
#define MAX_BOARD_SUPPORT 7 /*最多支持的插板数*/
#define MAX_INT_SUPPORT 4 /*CPCI 插板最多支持4个中断*/
/* CompactPCI Bus INTA# level */
#define CPCIINT2CPU(x) ((char)(x)+0x10) /*从获取的中断号转换到cpu对应的中断号*/
#define CPCI_INTA_LEVEL_CPU CPCIINT2CPU(8) /*CPU看到的CPCI的中断A */
#define INT_INDEX2NUM(x) ((x)+CPCI_INTA_LEVEL_CPU)
#define INT_NUM2INDEX(x) ((x)-CPCI_INTA_LEVEL_CPU)
#endif /*_CPCIMULTIINT_H*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -