资源描述:
《vxWorks下设备驱动模板》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于vxBus的设备驱动模板vxWorks6.x设备驱动采用了新型的vxBus构架,该构架和原来的设备驱动有很大不同,初上手会有很多不方便。下面提供的模板有助于快速形成一个vxBus设备驱动设备驱动在3个地方体现:头文件,代码文件,hwconfig.c,根据下面模板,把所有DEVICE换成自己的设备,并做相应操作即可,免去很多重复代码的苦恼,开发者仅需要关注功能即可。这个模板处理了中断,但没有提供处理基本IO的方法,模板不是用来学习的,怎样完整地写一个vxbus的驱动,还是需要学习的。头文件#i
2、fndefDEVICE_h#defineDEVICE_h#defineDEVICE_CARD_NAME"设备名"#defineDEVICE_CARD_DESC"设备描述"#defineDEVICE_CARD_VXBNAME"设备vxBus名"#defineDEVICE_CARD_INT_PIN[中断管脚]#defineDEVICE_CARD_INT_CORE_PIN[核中断管脚]#defineDEVICE_CARD_INT_CORE_NUM[中断处理核]#defineDEVICE_INT_DES
3、C{DEVICE_INT_PIN,DEVICE_CARD_VXBNAME,0,0}#defineDEVICE_XBAR_DESC{DEVICE_INT_PIN,DEVICE_INT_CORE_PIN}#defineDEVICE_ROUTE_DESC{DEVICE_INT_PIN,DEVICE_INT_CORE_NUM}#defineDEVICE_UNIT0_DEVICE_ID0/*假如有多个同型号设备begin*/#defineDEVICE_UNIT1_DEVICE_ID1...../*假如有多
4、个同型号设备end*//*其他设备宏*/#endif/*DEVICE_h*/代码文件#include/*addedforvxBus*/#include#include#include#include#include"DEVICE.h"/*其他必要的INCLUDE*//*设备数据结构*/typedefstruct{VXB_D
5、EVICE_IDpDev;intnVxUnit;/*其他需要的成员变量*/}DEVICE_STRUCT;/*总线加载函数*/LOCALvoidDEVICEInstInit(structvxbDev*pDev);LOCALvoidDEVICEInstInit2(structvxbDev*pDev);LOCALvoidDEVICEInstConnect(structvxbDev*pDev);/*方法函数(假如有的话)*//*探寻函数*/LOCALBOOLDEVICEProbe(structvxbDe
6、v*pDev);/*中断响应函数*/LOCALvoidDEVICEInt(DEVICE_STRUCT*pDrvCtrl);/*vxBus注册总线加载函数*/LOCALstructdrvBusFuncsDEVICEFuncs={DEVICEInstInit,/*devInstanceInit*/DEVICEInstInit2,/*devInstanceInit2*/DEVICEInstConnect/*devConnect*/};/*vxBus设备方法函数*/LOCALdevice_method_
7、tDEVICEMethods[]={/*方法函数(假如有的话)*/{0,0}};/*PCI设备需要填写*/LOCALstructvxbPciIDDEVICEDevIDList[]={{DEVICE_DEVID,DEVICE_VENDORID}};/*vxBus设备注册入口*//*pci设备start*/LOCALstructvxbPciRegisterDEVICERegistration={{NULL,/*pNext*/VXB_DEVID_DEVICE,/*devID*/VXB_BUSID_PC
8、I,/*busID=PCI*/VXBUS_VERSION_4,DEVICE_CARD_VXBNAME,/*设备名称*/&DEVICEFuncs,DEVICEMethods,DEVICEProbe},NELEMENTS(DEVICEDevIDList),DEVICEDevIDList};/*pci设备end*//*plb设备start*/LOCALstructvxbPlbRegisterDEVICERegistration={{NULL,/*pNext,一般都用NULL*/VXB_DEVID_DE