基于vxBus 的设备驱动模板 vxWorks6.x 设备驱动采用了新型的vxBus 构架,该构架和原来的设备驱动有很大不同,初上手会有很多不方便。下面提供的模板有助于快速形成一个 vxBus 设备驱动 设备驱动在 3 个地方体现: 头文件,代码文件,hwconfig.c,根据下面模板,把所有DEVICE 换成自己的设备,并做相应操作即可,免去很多重复代码的苦恼,开发者仅需要关注功能即可。 这个模板处理了中断,但没有提供处理基本 IO 的方法,模板不是用来学习的,怎样完整地写一个 vxbus 的驱动,还是需要学习的。 头文件 #ifndef DEVICE_h #define DEVICE_h #define DEVICE_CARD_NAME "设备名" #define DEVICE_CARD_DESC "设备描述" #define DEVICE_CARD_VXBNAME "设备vxBus 名" #define DEVICE_CARD_INT_PIN [中断管脚] #define DEVICE_CARD_INT_CORE_PIN [核中断管脚] #define DEVICE_CARD_INT_CORE_NUM [中断处理核] #define DEVICE_INT_DESC {DEVICE_INT_PIN,DEVICE_CARD_VXBNAME,0,0} #define DEVICE_XBAR_DESC {DEVICE_INT_PIN,DEVICE_INT_CORE_PIN} #define DEVICE_ROUTE_DESC {DEVICE_INT_PIN,DEVICE_INT_CORE_NUM} #define DEVICE_UNIT0_DEVICE_ID 0 /*假如有多个同型号设备begin*/ #define DEVICE_UNIT1_DEVICE_ID 1 ..... /*假如有多个同型号设备end*/ /*其他设备宏*/ #endif/*DEVICE_h*/ 代码文件 #include /*added for vxBus*/ #include #include #include #include #include "DEVICE.h" /*其他必要的INCLUDE*/ /*设备数据结构*/ typedef struct { VXB_DEVICE_ID pDev; int nVxUnit; /*其他需要的成员变量*/ } DEVICE_STRUCT; /*总线加载函数*/ LOCAL void DEVICEInstInit (struct vxbDev * pDev); LOCAL void DEVICEInstInit2(struct vxbDev * pDev); LOCAL void DEVICEInstConnect(struct vxbDev * pDev); /*方法函数(假如有的话)*/ /*探寻函数*/ LOCAL BOOL DEVICEProbe(struct vxbDev * pDev); /*中断响应函数*/ LOCAL void DEVICEInt(DEVICE_STRUCT * pDrvCtrl); /*vxBus 注册总线加载函数*/ LOCAL struct drvBusFuncs DEVICEFuncs = { DEVICEInstInit, /* devInstanceInit */ DEVICEInstInit2, /* devI...