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

📄 cpcimultiint.h

📁 cpci机箱cpx2408的多采集板系统中领操控制器的中断管理代码。cpci(compactPCI)是一种基于PCI总线
💻 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 + -