学生联盟网为您提供优质参考范文! 体会工作报告法律咨询精彩演讲各类材料
当前位置: 学生联盟网 > 教学研究 > 教学汇报 > vxWorks下设备驱动模板

vxWorks下设备驱动模板

时间:2021-11-28 13:28:16 来源:学生联盟网

VV对唱使用方法1演唱的双方都打开混音2放伴奏的一方关掉另一方视频窗下的喇叭图标另一个人不做任何操作(可以录影)(4)听众关掉放伴奏一方视频下的小喇叭基于vxBus的设备驱动模板vxWorks6.x设备驱动采用了新型的vxBus构架,该构架和原来的设备驱动有很大不同,初上手会有 很多不方便。下面提供的模板有助于快速形成一个vxBus设备驱动设备驱动在3个地方体现头文件,代码文件,hwconfig.c根据下面模板,把所有DEVIC换成自己的设备,并做相应操作即可,免去很多重复代码的苦恼,开发者仅需要关注功能即可。这个模板处理了中断,但没有提供处理基本IO的方法,模板不是用来学习的,怎样完整地写一个vxbus的驱动,还是需要学习的。头文件ifndef DEVICE_hdefine DEVICE_hdefine DEVICE_CARD_NA设备名define DEVICE_CARD_DES备描述define DEVICE_CARD_VXBNAME vxBus名defi ne DEVICE_CARDNT_中断管脚另一个人不做任何操作(可以录影)(4)听众关掉放伴奏一方视频下的小喇叭defi ne DEVICE_CARDN T_COR核中断管脚define DEVICE_CARDNT_CORE中断处理核defi ne DEVICE_INT_DESC DEVICE_INT_PIN,DEVICE_CARD_VXBNAME,O,Odefi ne DEVICE_XBAR_DESC DEVICE_INT_PIN,DEVICE_INT_CORE_PINdefi ne DEVICE_ROUTE_DESC DEVICE_INT_PIN,DEVICE_INT_CORE_NUMdefi ne DEVICE_UNITO_DEVICE_ID 0/*假如有多个同型号设备beg in*/defi ne DEVICE_UNIT1_DEVICE_ID 1/*假如有多个同型号设备end*//*其他设备宏*/e ndif/*DEVICE_h*/另一个人不做任何操作(可以录影)(4)听众关掉放伴奏一方视频下的小喇叭代码文件i nclude vxWorks.h/*added for vxBus*/in elude vxBusLib.hi nclude hwif/vxbus/vxBus.hi nclude hwif/vxbus/vxbPlbLib.hi nclude vhwif/vxbus/hwCo nf.hin clude DEVICE.h/*其他必要的INCLUDE*//*设备数据结构*/typedef structVXB_DEVICE_ID pDev;int n VxU nit;/*其他需要的成员变量*/页脚内容3VV对唱使用方法(1)演唱的双方都打开混音(2)放伴奏的一方关掉另一方视频窗下的喇叭图标另一个人不做任何操作(可以录影)(4)听众关掉放伴奏一方视频下的小喇叭另一个人不做任何操作(可以录影)(4)听众关掉放伴奏一方视频下的小喇叭 DEVICE_STRUCT;/*总线加载函数*/LOCAL void DEVICEI nstl nit struct vxbDev * pDev;LOCAL void DEVICE In stI nit2struct vxbDev * pDev;LOCAL void DEVICE In stCo nn ectstruct vxbDev * pDev;/*方法函数假如有的话*//*探寻函数*/LOCAL BOOL DEVICEProbestruct vxbDev * pDev;/*中断响应函数*/LOCAL void DEVICEI ntDEVICE_STRUCT * pDrvCtrl;/*vxBus注册总线加载函数*/LOCAL struct drvBusFu ncs DEVICEF uncs DEVICEI nstl nit,/* devI nsta ncel nit */DEVICEInstlnit2,/* devInstancelnit2 */DEVICEInstConneCt devConnect */;/*vxBus设备方法函数*/LOCAL device__t DEVICEs/*方法函数(假如有的话)*/0,0;/*PCI设备需要填写*/LOCAL struct vxbPciID DEVICEDevIDList DEVICE_DEVID,DEVICE_VENDORID ;/*vxBus设备注册入口 *//*pci 设备 start*/LOCAL struct vxbPciRegister DEVICERegistratio n NULL,/* pNext */VXB_DEVID_DEVICE,/* devID */ VXB_BUSID_PCI,/* busID PCI */ VXBUS_VERSI0N_4,DEVICE_CARD_VXBNAM备名称 *//*pci 设备 end*//*plb 设备 start*/LOCAL struct vxbPIbRegister DEVICERegistrati on NULL,/* pNext,一般都用 NULL */VXB_DEVID_DEVICE,/* devID,固定,表示这是一个设备 */VXB_BUSID_PLB,/* busID PLB,表示这个设备挂接在 PLB上*/VXBUS_VERSION_4,/* 版本号,6.7 为版本 4 */DEVICE_CARD_VXBNAM巴设备名称,必须和 hwconfig.c中统一 *//*plb 设备 end*/页脚内容11总入口void DEVICERegistervoidvxbDevRegisterstruct vxbDevRegl nfo *return;总线接口LOCAL void DEVICEI nstl nit struct vxbDev * pDev vxbNextU ni tGetpDev;return;/*设备初始化*/LOCAL void DEVICE In stl nit2struct vxbDev * pDevDEVICE_STRUCT *pDrvCtrl;pDrvCtrl mallocsizeofDEVICE_STRUCT;if pDrvCtrl NULL return;bzero char *pDrvCtrl,sizeofDEVICE_STRUCT; pDev-pDrvCtrl pDrvCtrl;pDrvCtrl-pDev pDev;/*下面添加硬件要求的代码*/return;/*设备探寻*/LOCAL BOOL DEVICEProbestruct vxbDev * pDev/*PLB标准写法start*/BOOL retVal TRUE;if pDev-busID VXB_BUSID_PLBretVal TRUE;elseretVal FALSE;returnretVal;/*PLB标准写法end*//*PCI 写法 start*/UINT16 venld;UINT16 devId;/*子设备ID及硬件版本,假如有的话*//* UINT16 subDevId;UINT32 hwRev;*/int i;DEVICE_STRUCT *pDrvCtrl;pDrvCtrl pCev-pDrvCtrl;VXB_PCI_BUS_CFG_READ pDev,PCI_CFG_VENDOR_ID,2,VXB_PCI_BUS_CFG_READ pDev,PCI_CFG_DEVICE_ID,2,VV对唱使用方法1演唱的双方都打开混音2放伴奏的一方关掉另一方视频窗下的喇叭图标另一个人不做任何操作可以录影4听众关掉放伴奏一方视频下的小喇叭/*查询Bar,并填写到结构里面*/for i 0; i VXB_MAXBARS; i/*根据需要填写*/if 填写过程中有错误return FALSE;if devld DEVICE_DEVID return FALSE;return TRUE;/*PCI 写法 end*//*挂接中断*/另一个人不做任何操作可以录影4听众关掉放伴奏一方视频下的小喇叭LOCAL void DEVICE In stCo nn ectstruct vxbDev * pDev/*禁用中断*/DEVICEI ntDisablepDev-pDrvCtrl;/*清中断*/DEVICEI ntClearpDev-pDrvCtrl;/*挂接中断*/ifvxb In tCo nn ectpDev,O,DEVICEI nt,void *pDev-pDrvCtrl OKprin tfDEVICE vxbI ntCo nn ect Failn;elseprin tfDEVICE vxb In tCo nn ect OKn;页脚内容13VV对唱使用方法(1)演唱的双方都打开混音(2)放伴奏的一方关掉另一方视频窗下的喇叭图标另一个人不做任何操作(可以录影)(4)听众关掉放伴奏一方视频下的小喇叭ifvxblntEnablepDev,O,DEVICEInt,void *pDev-pDrvCtrl OKprintfDEVICE vxbIntEnable Failn;elseprintfDEVICE vxbIntEnable OKn;/*使能中断*/DEVICEI ntEn ablepDev-pDrvCtrl;/*中断响应函数*/LOCAL void DEVICEI ntDEVICE_STRUCT * pDrvCtrlint n;int lockld;n pDrvCtrl- nVxUn it; lockldi ntCpuLock;/*探寻本设备中断源*//*处理中断*//*清除本设备中断源*/DEVICEI ntClearpDrvCtrl; in tCpuU nl ocklockId;/*中断控制函数*/LOCAL void DeviceI ntE nable DEVICE_STRUCT * pDrvCtrlLOCAL void DeviceI ntDisableDEVICE_STRUCT * pDrvCtrl页脚内容15VV对唱使用方法(1)演唱的双方都打开混音(2)放伴奏的一方关掉另一方视频窗下的喇叭图标另一个人不做任何操作(可以录影)(4)听众关掉放伴奏一方视频下的小喇叭LOCAL void Device In tClear(DEVICE_STRUCT * pDrvCtrl)Hwcon fig.cinclude DEVICE.h const struct hcfResource DEVICEResources deviceId,HCF_RES_INT,void *DEVICE_UNITO_DEVICE_ID ,/*下面写需要的资源*/ ;defi neDeviceNum NELEMENTSDEVICEResources/*设置中断路由,放到合适的位置上*/DEVICE_INT_D,SC另一个人不做任何操作(可以录影)(4)听众关掉放伴奏一方视频下的小喇叭DEVICE_XBAR_DESCDEVICE_ROUTE_DESCin const struct hcfDevice hcfDeviceList DEVICE_CARD_VXBNAME,DEVICE_UNITO_DEVICE_ID,VXB_BUSID_PLB/*PCI*/,O,DEVICENum,DEVICE页脚内容17